From 7f74d2e77ead3bdff5f8f3b06ed8ac7f154ea050 Mon Sep 17 00:00:00 2001 From: "Rogelio J. Baucells" Date: Tue, 28 Apr 2015 14:00:20 -0400 Subject: [PATCH] distribution files --- dist/math.js | 4819 +++++++++++++++++++++++----------------------- dist/math.map | 2 +- dist/math.min.js | 21 +- 3 files changed, 2455 insertions(+), 2387 deletions(-) diff --git a/dist/math.js b/dist/math.js index 81ffb6892..bbe90e3b4 100644 --- a/dist/math.js +++ b/dist/math.js @@ -135,16 +135,18 @@ return /******/ (function(modules) { // webpackBootstrap math.import(__webpack_require__(19)); // functions - algebra/decomposition - math.import(__webpack_require__(164)); + math.import(__webpack_require__(162)); // functions - algebra/solver - math.import(__webpack_require__(165)); + math.import(__webpack_require__(163)); // functions - arithmetic + math.import(__webpack_require__(29)); math.import(__webpack_require__(31)); + math.import(__webpack_require__(30)); + math.import(__webpack_require__(34)); math.import(__webpack_require__(32)); math.import(__webpack_require__(33)); - math.import(__webpack_require__(34)); math.import(__webpack_require__(35)); math.import(__webpack_require__(36)); math.import(__webpack_require__(37)); @@ -155,10 +157,10 @@ return /******/ (function(modules) { // webpackBootstrap math.import(__webpack_require__(42)); math.import(__webpack_require__(43)); math.import(__webpack_require__(44)); + math.import(__webpack_require__(47)); math.import(__webpack_require__(45)); math.import(__webpack_require__(46)); math.import(__webpack_require__(48)); - math.import(__webpack_require__(47)); math.import(__webpack_require__(49)); math.import(__webpack_require__(50)); math.import(__webpack_require__(51)); @@ -167,99 +169,99 @@ return /******/ (function(modules) { // webpackBootstrap math.import(__webpack_require__(54)); math.import(__webpack_require__(55)); math.import(__webpack_require__(56)); - math.import(__webpack_require__(57)); - math.import(__webpack_require__(58)); // functions - bitwise - math.import(__webpack_require__(59)); + math.import(__webpack_require__(57)); + math.import(__webpack_require__(58)); math.import(__webpack_require__(60)); + math.import(__webpack_require__(59)); math.import(__webpack_require__(61)); math.import(__webpack_require__(62)); math.import(__webpack_require__(63)); - math.import(__webpack_require__(64)); - math.import(__webpack_require__(65)); // functions - complex + math.import(__webpack_require__(64)); + math.import(__webpack_require__(65)); math.import(__webpack_require__(66)); math.import(__webpack_require__(67)); - math.import(__webpack_require__(68)); - math.import(__webpack_require__(69)); // functions - construction + math.import(__webpack_require__(68)); + math.import(__webpack_require__(69)); math.import(__webpack_require__(70)); math.import(__webpack_require__(71)); math.import(__webpack_require__(72)); math.import(__webpack_require__(73)); math.import(__webpack_require__(74)); math.import(__webpack_require__(75)); - math.import(__webpack_require__(76)); math.import(__webpack_require__(77)); + math.import(__webpack_require__(76)); math.import(__webpack_require__(78)); - math.import(__webpack_require__(79)); - math.import(__webpack_require__(80)); // expression parser + math.import(__webpack_require__(79)); + math.import(__webpack_require__(80)); math.import(__webpack_require__(81)); math.import(__webpack_require__(82)); - math.import(__webpack_require__(83)); - math.import(__webpack_require__(84)); // functions - logical + math.import(__webpack_require__(83)); + math.import(__webpack_require__(84)); math.import(__webpack_require__(85)); math.import(__webpack_require__(86)); - math.import(__webpack_require__(87)); - math.import(__webpack_require__(88)); // functions - matrix + math.import(__webpack_require__(87)); + math.import(__webpack_require__(88)); math.import(__webpack_require__(89)); math.import(__webpack_require__(90)); math.import(__webpack_require__(91)); math.import(__webpack_require__(92)); math.import(__webpack_require__(93)); math.import(__webpack_require__(94)); - math.import(__webpack_require__(95)); - math.import(__webpack_require__(96)); + __webpack_require__(95)(math, _config); + __webpack_require__(96)(math, _config); __webpack_require__(97)(math, _config); - __webpack_require__(98)(math, _config); - __webpack_require__(99)(math, _config); - math.import(__webpack_require__(100)); + math.import(__webpack_require__(98)); + math.import(__webpack_require__(99)); + __webpack_require__(100)(math, _config); math.import(__webpack_require__(101)); - __webpack_require__(102)(math, _config); math.import(__webpack_require__(103)); - math.import(__webpack_require__(104)); - __webpack_require__(105)(math, _config); + __webpack_require__(102)(math, _config); // functions - probability //math.import(require('./lib/function/probability/distribution')); // TODO: rethink math.distribution + math.import(__webpack_require__(104)); + math.import(__webpack_require__(105)); math.import(__webpack_require__(106)); math.import(__webpack_require__(107)); math.import(__webpack_require__(108)); math.import(__webpack_require__(109)); math.import(__webpack_require__(110)); - math.import(__webpack_require__(111)); - math.import(__webpack_require__(112)); // functions - relational + math.import(__webpack_require__(111)); + math.import(__webpack_require__(112)); math.import(__webpack_require__(113)); math.import(__webpack_require__(114)); math.import(__webpack_require__(115)); math.import(__webpack_require__(116)); math.import(__webpack_require__(117)); math.import(__webpack_require__(118)); - math.import(__webpack_require__(120)); - math.import(__webpack_require__(119)); // functions - statistics + math.import(__webpack_require__(119)); + math.import(__webpack_require__(120)); math.import(__webpack_require__(121)); math.import(__webpack_require__(122)); math.import(__webpack_require__(123)); math.import(__webpack_require__(124)); math.import(__webpack_require__(125)); math.import(__webpack_require__(126)); - math.import(__webpack_require__(127)); - math.import(__webpack_require__(128)); // functions - trigonometry + math.import(__webpack_require__(127)); + math.import(__webpack_require__(128)); math.import(__webpack_require__(129)); math.import(__webpack_require__(130)); math.import(__webpack_require__(131)); @@ -269,8 +271,8 @@ return /******/ (function(modules) { // webpackBootstrap math.import(__webpack_require__(135)); math.import(__webpack_require__(136)); math.import(__webpack_require__(137)); - math.import(__webpack_require__(138)); math.import(__webpack_require__(139)); + math.import(__webpack_require__(138)); math.import(__webpack_require__(140)); math.import(__webpack_require__(141)); math.import(__webpack_require__(142)); @@ -283,23 +285,21 @@ return /******/ (function(modules) { // webpackBootstrap math.import(__webpack_require__(149)); math.import(__webpack_require__(150)); math.import(__webpack_require__(151)); - math.import(__webpack_require__(152)); - math.import(__webpack_require__(153)); // functions - units - math.import(__webpack_require__(154)); + math.import(__webpack_require__(152)); // functions - utils + math.import(__webpack_require__(153)); + math.import(__webpack_require__(154)); math.import(__webpack_require__(155)); math.import(__webpack_require__(156)); + // note: import is already loaded by loader.js math.import(__webpack_require__(157)); math.import(__webpack_require__(158)); - // note: import is already loaded by loader.js math.import(__webpack_require__(159)); math.import(__webpack_require__(160)); math.import(__webpack_require__(161)); - math.import(__webpack_require__(162)); - math.import(__webpack_require__(163)); // attach transform functions (for converting one-based indices to zero-based) math.expression.transform = { @@ -312,12 +312,12 @@ return /******/ (function(modules) { // webpackBootstrap mean: __webpack_require__(26)(math, _config), min: __webpack_require__(27)(math, _config), range: __webpack_require__(28)(math, _config), - subset: __webpack_require__(30)(math, _config) + subset: __webpack_require__(165)(math, _config) }; // create Chain, and create proxies for all functions/constants in the math // namespace. - math.type.Chain = __webpack_require__(29)(); + math.type.Chain = __webpack_require__(164)(); math.type.Chain.createProxy(math); // apply custom options @@ -334,7 +334,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - var isFactory = __webpack_require__(170).isFactory; + var isFactory = __webpack_require__(166).isFactory; /** * Math.js loader. Creates a new, empty math.js instance @@ -358,7 +358,7 @@ return /******/ (function(modules) { // webpackBootstrap }; // create a new typed instance - var typed = __webpack_require__(171).create(math); + var typed = __webpack_require__(167).create(math); // create configuration options. These are private var _config = { @@ -414,17 +414,17 @@ return /******/ (function(modules) { // webpackBootstrap // load the import function, which can be used to load all other functions, // constants, and types - math['import'] = load(__webpack_require__(172)); + math['import'] = load(__webpack_require__(169)); // FIXME: load constants via math.import() like all functions (problem: it must be reloaded when config changes) // constants - __webpack_require__(173)(math, _config); + __webpack_require__(168)(math, _config); math._config = _config; // TODO: cleanup when everything is refactored // TODO: remove errors from the namespace as soon as all functions are refactored // errors - math.error = __webpack_require__(174); + math.error = __webpack_require__(170); return math; }; @@ -437,13 +437,13 @@ return /******/ (function(modules) { // webpackBootstrap // utility methods for arrays and matrices 'use strict'; - var util = __webpack_require__(166); - var arraySize = __webpack_require__(167).size; - var IndexError = __webpack_require__(168); - var DimensionError = __webpack_require__(169); + var util = __webpack_require__(171); + var arraySize = __webpack_require__(172).size; + var IndexError = __webpack_require__(173); + var DimensionError = __webpack_require__(174); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); var collection = {}; @@ -710,7 +710,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166), + var util = __webpack_require__(171), Unit = __webpack_require__(7), number = util.number, @@ -1189,7 +1189,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var number = util.number; var string = util.string; @@ -1488,7 +1488,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166), + var util = __webpack_require__(171), Range = __webpack_require__(4), @@ -1785,7 +1785,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var string = util.string; @@ -2024,7 +2024,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166), + var util = __webpack_require__(171), number = util.number, string = util.string, @@ -2923,7 +2923,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var object = util.object; var string = util.string; @@ -3114,7 +3114,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 10 */ /***/ function(module, exports, __webpack_require__) { - var Decimal = __webpack_require__(348); + var Decimal = __webpack_require__(350); var digits = __webpack_require__(175).digits; function factory (type, config, load, typed) { @@ -3182,8 +3182,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var smaller = load(__webpack_require__(118)); - var larger = load(__webpack_require__(116)); + var smaller = load(__webpack_require__(116)); + var larger = load(__webpack_require__(114)); var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0); @@ -3514,7 +3514,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var ArgumentsError = __webpack_require__(176); @@ -3530,8 +3530,8 @@ return /******/ (function(modules) { // webpackBootstrap var OperatorNode = __webpack_require__(184); var FunctionNode = __webpack_require__(185); var RangeNode = __webpack_require__(186); - var SymbolNode = __webpack_require__(188); - var UpdateNode = __webpack_require__(187); + var SymbolNode = __webpack_require__(187); + var UpdateNode = __webpack_require__(188); function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -5060,8 +5060,8 @@ return /******/ (function(modules) { // webpackBootstrap exports.Node = __webpack_require__(189); exports.OperatorNode = __webpack_require__(184); exports.RangeNode = __webpack_require__(186); - exports.SymbolNode = __webpack_require__(188); - exports.UpdateNode = __webpack_require__(187); + exports.SymbolNode = __webpack_require__(187); + exports.UpdateNode = __webpack_require__(188); /***/ }, @@ -5078,14 +5078,14 @@ return /******/ (function(modules) { // webpackBootstrap exports.LN10 = __webpack_require__(195); exports.LOG2E = __webpack_require__(196); exports.LOG10E = __webpack_require__(197); - exports.NaN = __webpack_require__(198); - exports['null'] = __webpack_require__(200); + exports.NaN = __webpack_require__(200); + exports['null'] = __webpack_require__(198); exports.pi = __webpack_require__(199); exports.PI = __webpack_require__(199); exports.phi = __webpack_require__(201); - exports.SQRT1_2 = __webpack_require__(202); - exports.SQRT2 = __webpack_require__(203); - exports.tau = __webpack_require__(204); + exports.SQRT1_2 = __webpack_require__(204); + exports.SQRT2 = __webpack_require__(202); + exports.tau = __webpack_require__(203); exports['true'] = __webpack_require__(205); exports.version = __webpack_require__(206); @@ -5121,8 +5121,8 @@ return /******/ (function(modules) { // webpackBootstrap // functions - bitwise exports.bitAnd = __webpack_require__(245); - exports.bitNot = __webpack_require__(246); - exports.bitOr = __webpack_require__(247); + exports.bitNot = __webpack_require__(247); + exports.bitOr = __webpack_require__(246); exports.bitXor = __webpack_require__(248); exports.leftShift = __webpack_require__(249); exports.rightArithShift = __webpack_require__(250); @@ -5137,8 +5137,8 @@ return /******/ (function(modules) { // webpackBootstrap // functions - construction exports.bignumber = __webpack_require__(256); exports['boolean'] = __webpack_require__(257); - exports.complex = __webpack_require__(258); - exports.index = __webpack_require__(259); + exports.complex = __webpack_require__(259); + exports.index = __webpack_require__(258); exports.matrix = __webpack_require__(260); exports.number = __webpack_require__(261); exports.string = __webpack_require__(262); @@ -5195,8 +5195,8 @@ return /******/ (function(modules) { // webpackBootstrap // functions - statistics exports.max = __webpack_require__(302); - exports.mean = __webpack_require__(303); - exports.median = __webpack_require__(304); + exports.mean = __webpack_require__(304); + exports.median = __webpack_require__(303); exports.min = __webpack_require__(305); exports.prod = __webpack_require__(306); exports.std = __webpack_require__(307); @@ -5241,8 +5241,8 @@ return /******/ (function(modules) { // webpackBootstrap exports.format = __webpack_require__(340); // exports.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. exports['import'] = __webpack_require__(341); - exports.sort = __webpack_require__(343); - exports['typeof'] = __webpack_require__(342); + exports.sort = __webpack_require__(342); + exports['typeof'] = __webpack_require__(343); /***/ }, @@ -5251,8 +5251,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); - var DimensionError = __webpack_require__(169); + var util = __webpack_require__(171); + var DimensionError = __webpack_require__(174); var array = util.array; var object = util.object; @@ -5267,7 +5267,7 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load) { - var equal = load(__webpack_require__(115)); + var equal = load(__webpack_require__(113)); var Index = type.Index; var BigNumber = type.BigNumber; @@ -6420,8 +6420,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); - var DimensionError = __webpack_require__(169); + var util = __webpack_require__(171); + var DimensionError = __webpack_require__(174); var string = util.string; var array = util.array; @@ -6449,23 +6449,28 @@ return /******/ (function(modules) { // webpackBootstrap // clone data & size this._data = object.clone(data._data); this._size = object.clone(data._size); + this._datatype = data._datatype; } else { // build data from existing matrix this._data = data.toArray(); this._size = data.size(); + this._datatype = data._datatype; } } else if (data && isArray(data.data) && isArray(data.size)) { // initialize fields from JSON representation this._data = data.data; this._size = data.size; + this._datatype = data.datatype; } else if (isArray(data)) { // replace nested Matrices with Arrays this._data = preprocess(data); // verify the size of the array, TODO: compute size while processing array this._size = array.size(this._data); + // data type unknown + this._datatype = undefined; } else if (data) { // unsupported type @@ -6475,6 +6480,7 @@ return /******/ (function(modules) { // webpackBootstrap // nothing provided this._data = []; this._size = [0]; + this._datatype = undefined; } } @@ -6841,7 +6847,8 @@ return /******/ (function(modules) { // webpackBootstrap DenseMatrix.prototype.clone = function () { var m = new DenseMatrix({ data: object.clone(this._data), - size: object.clone(this._size) + size: object.clone(this._size), + datatype: this._datatype }); return m; }; @@ -6949,7 +6956,8 @@ return /******/ (function(modules) { // webpackBootstrap return { mathjs: 'DenseMatrix', data: this._data, - size: this._size + size: this._size, + datatype: this._datatype }; }; @@ -7211,8 +7219,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var add = load(__webpack_require__(32)); - var equal = load(__webpack_require__(115)); + var add = load(__webpack_require__(31)); + var equal = load(__webpack_require__(113)); /** * An ordered Sparse Accumulator is a representation for a sparse vector that includes a dense array @@ -7380,10 +7388,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var errorTransform = __webpack_require__(207).transform; var isNumber = __webpack_require__(175).isNumber; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; /** * Attach a transform function to math.range @@ -7428,9 +7436,9 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var SymbolNode = __webpack_require__(188); + var SymbolNode = __webpack_require__(187); var isBoolean = __webpack_require__(208).isBoolean; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; var ArgumentsError = __webpack_require__(176); /** @@ -7550,7 +7558,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var Range = __webpack_require__(4); var Index = __webpack_require__(5); var isNumber = __webpack_require__(175).isNumber; @@ -7656,10 +7664,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var errorTransform = __webpack_require__(207).transform; var isNumber = __webpack_require__(175).isNumber; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; /** * Attach a transform function to math.max @@ -7707,10 +7715,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var errorTransform = __webpack_require__(207).transform; var isNumber = __webpack_require__(175).isNumber; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; /** * Attach a transform function to math.mean @@ -7758,10 +7766,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var errorTransform = __webpack_require__(207).transform; var isNumber = __webpack_require__(175).isNumber; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; /** * Attach a transform function to math.min @@ -7810,7 +7818,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var isBoolean = __webpack_require__(208).isBoolean; - var argsToArray = __webpack_require__(167).argsToArray; + var argsToArray = __webpack_require__(172).argsToArray; /** * Attach a transform function to math.range @@ -7844,160 +7852,6 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - // TODO: change to exports.create = function () {...} - module.exports = function () { - var string = __webpack_require__(209); - - /** - * @constructor Chain - * Wrap any value in a chain, allowing to perform chained operations on - * the value. - * - * All methods available in the math.js library can be called upon the chain, - * and then will be evaluated with the value itself as first argument. - * The chain can be closed by executing chain.done(), which will return - * the final value. - * - * The Chain has a number of special functions: - * - done() Finalize the chained operation and return the - * chain's value. - * - valueOf() The same as done() - * - toString() Returns a string representation of the chain's value. - * - * @param {*} [value] - */ - function Chain (value) { - if (!(this instanceof Chain)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (value instanceof Chain) { - this.value = value.value; - } - else { - this.value = value; - } - } - - /** - * Close the chain. Returns the final value. - * Does the same as method valueOf() - * @returns {*} value - */ - Chain.prototype.done = function () { - return this.value; - }; - - /** - * Close the chain. Returns the final value. - * Does the same as method done() - * @returns {*} value - */ - Chain.prototype.valueOf = function () { - return this.value; - }; - - /** - * Get a string representation of the value in the chain - * @returns {String} - */ - Chain.prototype.toString = function () { - return string.format(this.value); - }; - - /** - * Create a proxy method for the chain - * @param {String} name - * @param {*} value The value or function to be proxied - */ - function createProxy(name, value) { - var slice = Array.prototype.slice; - if (typeof value === 'function') { - // a function - Chain.prototype[name] = function () { - var args = [this.value].concat(slice.call(arguments, 0)); - return new Chain(value.apply(this, args)); - } - } - else { - // a constant - Chain.prototype[name] = new Chain(value); - } - } - - /** - * Create a proxy for a single method, or an object with multiple methods. - * Example usage: - * - * Chain.createProxy('add', function add (x, y) {...}); - * Chain.createProxy({ - * add: function add (x, y) {...}, - * subtract: function subtract (x, y) {...} - * } - * - * - * @param {String | Object} arg0 A function name (string), or an object with - * methods - * @param {*} [arg1] Function or value, when arg0 is a name - */ - Chain.createProxy = function (arg0, arg1) { - if (typeof arg0 === 'string') { - // createProxy(name, value) - createProxy(arg0, arg1); - } - else { - // createProxy(values) - for (var prop in arg0) { - if (arg0.hasOwnProperty(prop)) { - createProxy(prop, arg0[prop]); - } - } - } - }; - - return Chain; - }; - - -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var errorTransform = __webpack_require__(207).transform; - var isBoolean = __webpack_require__(208).isBoolean; - var argsToArray = __webpack_require__(167).argsToArray; - - /** - * Attach a transform function to math.subset - * Adds a property transform containing the transform function. - * - * This transform creates a range which includes the end value - * @param {Object} math - */ - module.exports = function (math) { - var transform = function () { - try { - return math.subset.apply(math, argsToArray(arguments)); - } - catch (err) { - throw errorTransform(err); - } - }; - - math.subset.transform = transform; - - return transform; - }; - - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -8065,21 +7919,85 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 32 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; - var DimensionError = __webpack_require__(169); + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + + /** + * Round a value towards plus infinity + * If `x` is complex, both real and imaginary part are rounded towards plus infinity. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.ceil(x) + * + * Examples: + * + * math.ceil(3.2); // returns Number 4 + * math.ceil(3.8); // returns Number 4 + * math.ceil(-4.2); // returns Number -4 + * math.ceil(-4.7); // returns Number -4 + * + * var c = math.complex(3.2, -2.7); + * math.ceil(c); // returns Complex 4 - 2i + * + * math.ceil([3.2, 3.8, -4.7]); // returns Array [4, 4, -4] + * + * See also: + * + * floor, fix, round + * + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Number to be rounded + * @return {Number | BigNumber | Complex | Array | Matrix} Rounded value + */ + var ceil = typed('ceil', { + 'number': Math.ceil, + + 'Complex': function (x) { + return new x.constructor( + Math.ceil(x.re), + Math.ceil(x.im) + ); + }, + + 'BigNumber': function (x) { + return x.ceil(); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since ceil(0) = 0 + return collection.deepMap(x, ceil, true); + } + }); + + return ceil; + } + + exports.name = 'ceil'; + exports.factory = factory; + + +/***/ }, +/* 31 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var clone = __webpack_require__(166).clone; + var DimensionError = __webpack_require__(174); function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var matrix = load(__webpack_require__(75)); - var equal = load(__webpack_require__(115)); + var matrix = load(__webpack_require__(73)); + var equal = load(__webpack_require__(113)); var sparseScatter = load(__webpack_require__(210)); - var addScalar = load(__webpack_require__(212)); + var addScalar = load(__webpack_require__(209)); var multiplyScalar = load(__webpack_require__(211)); var DenseMatrix = type.DenseMatrix, @@ -8456,6 +8374,74 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + var divideScalar = load(__webpack_require__(212)); + var multiply = load(__webpack_require__(47)); + var inv = load(__webpack_require__(94)); + + /** + * Divide two values, `x / y`. + * To divide matrices, `x` is multiplied with the inverse of `y`: `x * inv(y)`. + * + * Syntax: + * + * math.divide(x, y) + * + * Examples: + * + * math.divide(2, 3); // returns Number 0.6666666666666666 + * + * var a = math.complex(5, 14); + * var b = math.complex(4, 1); + * math.divide(a, b); // returns Complex 2 + 3i + * + * var c = [[7, -6], [13, -4]]; + * var d = [[1, 2], [4, 3]]; + * math.divide(c, d); // returns Array [[-9, 4], [-11, 6]] + * + * var e = math.unit('18 km'); + * math.divide(e, 4.5); // returns Unit 4 km + * + * See also: + * + * multiply + * + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Numerator + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} y Denominator + * @return {Number | BigNumber | Complex | Unit | Array | Matrix} Quotient, `x / y` + */ + return typed('divide', { + 'any, any': divideScalar, + + 'Array | Matrix, Array | Matrix': function (x, y) { + // TODO: implement matrix right division using pseudo inverse + // http://www.mathworks.nl/help/matlab/ref/mrdivide.html + // http://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html + // http://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour + return multiply(x, inv(y)); + }, + + 'Array | Matrix, any': function (x, y) { + return collection.deepMap2(x, y, divideScalar); + }, + + 'any, Array | Matrix': function (x, y) { + return multiply(x, inv(y)); + } + }); + } + + exports.name = 'divide'; + exports.factory = factory; + + /***/ }, /* 33 */ /***/ function(module, exports, __webpack_require__) { @@ -8464,59 +8450,42 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); + var divideScalar = load(__webpack_require__(212)); /** - * Round a value towards plus infinity - * If `x` is complex, both real and imaginary part are rounded towards plus infinity. - * For matrices, the function is evaluated element wise. + * Divide two matrices element wise. The function accepts both matrices and + * scalar values. * * Syntax: * - * math.ceil(x) + * math.dotDivide(x, y) * * Examples: * - * math.ceil(3.2); // returns Number 4 - * math.ceil(3.8); // returns Number 4 - * math.ceil(-4.2); // returns Number -4 - * math.ceil(-4.7); // returns Number -4 + * math.dotDivide(2, 4); // returns 0.5 * - * var c = math.complex(3.2, -2.7); - * math.ceil(c); // returns Complex 4 - 2i + * a = [[9, 5], [6, 1]]; + * b = [[3, 2], [5, 2]]; * - * math.ceil([3.2, 3.8, -4.7]); // returns Array [4, 4, -4] + * math.dotDivide(a, b); // returns [[3, 2.5], [1.2, 0.5]] + * math.divide(a, b); // returns [[1.75, 0.75], [-1.75, 2.25]] * * See also: * - * floor, fix, round + * divide, multiply, dotMultiply * - * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Number to be rounded - * @return {Number | BigNumber | Complex | Array | Matrix} Rounded value + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Numerator + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} y Denominator + * @return {Number | BigNumber | Complex | Unit | Array | Matrix} Quotient, `x ./ y` */ - var ceil = typed('ceil', { - 'number': Math.ceil, - - 'Complex': function (x) { - return new x.constructor( - Math.ceil(x.re), - Math.ceil(x.im) - ); - }, - - 'BigNumber': function (x) { - return x.ceil(); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since ceil(0) = 0 - return collection.deepMap(x, ceil, true); + return typed('dotDivide', { + 'any, any': function (x, y) { + return collection.deepMap2(x, y, divideScalar); } }); - - return ceil; } - exports.name = 'ceil'; + exports.name = 'dotDivide'; exports.factory = factory; @@ -8587,126 +8556,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - var divideScalar = load(__webpack_require__(213)); - var multiply = load(__webpack_require__(48)); - var inv = load(__webpack_require__(96)); - - /** - * Divide two values, `x / y`. - * To divide matrices, `x` is multiplied with the inverse of `y`: `x * inv(y)`. - * - * Syntax: - * - * math.divide(x, y) - * - * Examples: - * - * math.divide(2, 3); // returns Number 0.6666666666666666 - * - * var a = math.complex(5, 14); - * var b = math.complex(4, 1); - * math.divide(a, b); // returns Complex 2 + 3i - * - * var c = [[7, -6], [13, -4]]; - * var d = [[1, 2], [4, 3]]; - * math.divide(c, d); // returns Array [[-9, 4], [-11, 6]] - * - * var e = math.unit('18 km'); - * math.divide(e, 4.5); // returns Unit 4 km - * - * See also: - * - * multiply - * - * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Numerator - * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} y Denominator - * @return {Number | BigNumber | Complex | Unit | Array | Matrix} Quotient, `x / y` - */ - return typed('divide', { - 'any, any': divideScalar, - - 'Array | Matrix, Array | Matrix': function (x, y) { - // TODO: implement matrix right division using pseudo inverse - // http://www.mathworks.nl/help/matlab/ref/mrdivide.html - // http://www.gnu.org/software/octave/doc/interpreter/Arithmetic-Ops.html - // http://stackoverflow.com/questions/12263932/how-does-gnu-octave-matrix-division-work-getting-unexpected-behaviour - return multiply(x, inv(y)); - }, - - 'Array | Matrix, any': function (x, y) { - return collection.deepMap2(x, y, divideScalar); - }, - - 'any, Array | Matrix': function (x, y) { - return multiply(x, inv(y)); - } - }); - } - - exports.name = 'divide'; - exports.factory = factory; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var divideScalar = load(__webpack_require__(213)); - - /** - * Divide two matrices element wise. The function accepts both matrices and - * scalar values. - * - * Syntax: - * - * math.dotDivide(x, y) - * - * Examples: - * - * math.dotDivide(2, 4); // returns 0.5 - * - * a = [[9, 5], [6, 1]]; - * b = [[3, 2], [5, 2]]; - * - * math.dotDivide(a, b); // returns [[3, 2.5], [1.2, 0.5]] - * math.divide(a, b); // returns [[1.75, 0.75], [-1.75, 2.25]] - * - * See also: - * - * divide, multiply, dotMultiply - * - * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Numerator - * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} y Denominator - * @return {Number | BigNumber | Complex | Unit | Array | Matrix} Quotient, `x ./ y` - */ - return typed('dotDivide', { - 'any, any': function (x, y) { - return collection.deepMap2(x, y, divideScalar); - } - }); - } - - exports.name = 'dotDivide'; - exports.factory = factory; - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var size = __webpack_require__(167).size; - - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - var multiply = load(__webpack_require__(48)); + var multiply = load(__webpack_require__(47)); /** * Multiply two matrices element wise. The function accepts both matrices and @@ -8746,14 +8600,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 38 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var pow = load(__webpack_require__(50)); + var pow = load(__webpack_require__(48)); /** * Calculates the power of x to y element wise. @@ -8790,7 +8644,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 39 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -8854,7 +8708,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 40 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -8918,7 +8772,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 41 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -8980,7 +8834,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 42 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9089,7 +8943,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 43 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9213,14 +9067,14 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 44 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var divideScalar = load(__webpack_require__(213)); + var divideScalar = load(__webpack_require__(212)); /** * Calculate the logarithm of a value. @@ -9304,7 +9158,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 45 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9388,7 +9242,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 46 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9478,24 +9332,24 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 47 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var abs = load(__webpack_require__(31)); - var add = load(__webpack_require__(32)); - var pow = load(__webpack_require__(50)); - var sqrt = load(__webpack_require__(53)); - var multiply = load(__webpack_require__(48)); - var equal = load(__webpack_require__(115)); - var larger = load(__webpack_require__(116)); - var smaller = load(__webpack_require__(118)); - var matrix = load(__webpack_require__(75)); - var trace = load(__webpack_require__(103)); - var transpose = load(__webpack_require__(104)); + var abs = load(__webpack_require__(29)); + var add = load(__webpack_require__(31)); + var pow = load(__webpack_require__(48)); + var sqrt = load(__webpack_require__(51)); + var multiply = load(__webpack_require__(47)); + var equal = load(__webpack_require__(113)); + var larger = load(__webpack_require__(114)); + var smaller = load(__webpack_require__(116)); + var matrix = load(__webpack_require__(73)); + var trace = load(__webpack_require__(101)); + var transpose = load(__webpack_require__(103)); var complexAbs = abs.signatures['Complex']; @@ -9693,27 +9547,166 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 48 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(166); + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + + /** + * 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 + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.nthRoot(a) + * math.nthRoot(a, root) + * + * Examples: + * + * math.nthRoot(9, 2); // returns 3, as 3^2 == 9 + * math.sqrt(9); // returns 3, as 3^2 == 9 + * math.nthRoot(64, 3); // returns 4, as 4^3 == 64 + * + * See also: + * + * sqrt, pow + * + * @param {Number | BigNumber | Boolean | Array | Matrix | null} a + * Value for which to calculate the nth root + * @param {Number | BigNumber | Boolean | null} [root=2] The root. + * @return {Number | Complex | Array | Matrix} Returns the nth root of `a` + */ + var nthRoot = typed('nthRoot', { + 'number': function (x) { + return _nthRoot(x, 2); + }, + 'number, number': _nthRoot, + + 'BigNumber': function (x) { + return _bigNthRoot(x, new type.BigNumber(2)); + }, + 'BigNumber, BigNumber': _bigNthRoot, + + 'Array | Matrix': function (x) { + return collection.deepMap(x, nthRoot); + }, + + 'Array | Matrix, any': function (x, root) { + return collection.deepMap2(x, root, nthRoot); + }, + + 'any, Array | Matrix': function (x, root) { + return collection.deepMap2(x, root, nthRoot); + } + }); + + return nthRoot; + + /** + * Calculate the nth root of a for BigNumbers, solve x^root == a + * http://rosettacode.org/wiki/Nth_root#JavaScript + * @param {BigNumber} a + * @param {BigNumber} root + * @private + */ + function _bigNthRoot(a, root) { + var zero = new type.BigNumber(0); + var one = new type.BigNumber(1); + var inv = root.isNegative(); + if (inv) root = root.negated(); + + if (root.isZero()) throw new Error('Root must be non-zero'); + if (a.isNegative() && !root.abs().mod(2).equals(1)) throw new Error('Root must be odd when a is negative.'); + + // edge cases zero and infinity + if (a.isZero()) return zero; + if (!a.isFinite()) + { + return inv ? zero : a; + } + + var x = one; // Initial guess + var i = 0; + var iMax = 100; + do { + var xPrev = x; + var delta = a.div(x.pow(root.minus(1))).minus(x).div(root); + x = x.plus(delta); + i++; + } + while (!x.equals(xPrev) && i < iMax); + + return inv ? one.div(x) : x; + } + } + + /** + * Calculate the nth root of a, solve x^root == a + * http://rosettacode.org/wiki/Nth_root#JavaScript + * @param {number} a + * @param {number} root + * @private + */ + function _nthRoot(a, root) { + var inv = root < 0; + if (inv) root = -root; + + if (root === 0) throw new Error('Root must be non-zero'); + if (a < 0 && (Math.abs(root) % 2 != 1)) throw new Error('Root must be odd when a is negative.'); + + // edge cases zero and infinity + if (a == 0) return 0; + if (!Number.isFinite(a)) { + return inv ? 0 : a; + } + + var epsilon = 1e-16; + var x = 1; // Initial guess + var i = 0; + var iMax = 100; + do { + var delta = (a / Math.pow(x, root - 1) - x) / root; + x = x + delta; + i++; + } + while (Math.abs(delta) > epsilon && i < iMax); + + return inv ? 1 / x : x; + } + + exports.name = 'nthRoot'; + exports.factory = factory; + + +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(171); var array = util.array; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var addScalar = load(__webpack_require__(212)); + var matrix = load(__webpack_require__(73)); + var addScalar = load(__webpack_require__(209)); var multiplyScalar = load(__webpack_require__(211)); - var equal = load(__webpack_require__(115)); + var equal = load(__webpack_require__(113)); var collection = load(__webpack_require__(2)); var DenseMatrix = type.DenseMatrix; var SparseMatrix = type.SparseMatrix; - var Spa = type.Spa; /** * Multiply two values, `x * y`. The result is squeezed. @@ -9881,15 +9874,23 @@ return /******/ (function(modules) { // webpackBootstrap // a dense var adata = a._data; + var adt = a._datatype; // b dense var bdata = b._data; + var bdt = b._datatype; - // result - var c = 0; + // process data types + var dt = adt && bdt && adt === bdt ? adt : undefined; + // multiply & add scalar implementations + var mf = dt ? multiplyScalar.signatures[dt + ',' + dt] || multiplyScalar : multiplyScalar; + var af = dt ? addScalar.signatures[dt + ',' + dt] || addScalar : addScalar; + + // result (do not initialize it with zero) + var c = mf(adata[0], bdata[0]); // loop data - for (var i = 0; i < n; i++) { + for (var i = 1; i < n; i++) { // multiply and accumulate - c = addScalar(c, multiply(adata[i], bdata[i])); + c = af(c, mf(adata[i], bdata[i])); } return c; }; @@ -9923,24 +9924,32 @@ return /******/ (function(modules) { // webpackBootstrap // a dense var adata = a._data; var asize = a._size; + var adt = a._datatype; // b dense var bdata = b._data; var bsize = b._size; + var bdt = b._datatype; // rows & columns var alength = asize[0]; var bcolumns = bsize[1]; + // process data types + var dt = adt && bdt && adt === bdt ? adt : undefined; + // multiply & add scalar implementations + var mf = dt ? multiplyScalar.signatures[dt + ',' + dt] || multiplyScalar : multiplyScalar; + var af = dt ? addScalar.signatures[dt + ',' + dt] || addScalar : addScalar; + // result var c = new Array(bcolumns); // loop matrix columns for (var j = 0; j < bcolumns; j++) { - // sum - var sum = 0; + // sum (do not initialize it with zero) + var sum = mf(adata[0], bdata[0][j]); // loop vector - for (var i = 0; i < alength; i++) { + for (var i = 1; i < alength; i++) { // multiply & accumulate - sum = addScalar(sum, multiply(adata[i], bdata[i][j])); + sum = af(sum, mf(adata[i], bdata[i][j])); } c[j] = sum; } @@ -9952,7 +9961,8 @@ return /******/ (function(modules) { // webpackBootstrap // return matrix return new DenseMatrix({ data: c, - size: [bcolumns] + size: [bcolumns], + datatype: dt }); }; @@ -10018,12 +10028,20 @@ return /******/ (function(modules) { // webpackBootstrap // a dense var adata = a._data; var asize = a._size; + var adt = a._datatype; // b dense var bdata = b._data; + var bdt = b._datatype; // rows & columns var arows = asize[0]; var acolumns = asize[1]; + // process data types + var dt = adt && bdt && adt === bdt ? adt : undefined; + // multiply & add scalar implementations + var mf = dt ? multiplyScalar.signatures[dt + ',' + dt] || multiplyScalar : multiplyScalar; + var af = dt ? addScalar.signatures[dt + ',' + dt] || addScalar : addScalar; + // result var c = new Array(arows); @@ -10031,12 +10049,12 @@ return /******/ (function(modules) { // webpackBootstrap for (var i = 0; i < arows; i++) { // current row var row = adata[i]; - // sum - var sum = 0; + // sum (do not initialize it with zero) + var sum = mf(row[0], bdata[0]); // loop matrix a columns - for (var j = 0; j < acolumns; j++) { + for (var j = 1; j < acolumns; j++) { // multiply & accumulate - sum = addScalar(sum, multiply(row[j], bdata[j])); + sum = af(sum, mf(row[j], bdata[j])); } c[i] = sum; } @@ -10047,7 +10065,8 @@ return /******/ (function(modules) { // webpackBootstrap // return matrix return new DenseMatrix({ data: c, - size: [arows] + size: [arows], + datatype: dt }); }; @@ -10072,6 +10091,7 @@ return /******/ (function(modules) { // webpackBootstrap var arows = asize[0]; var acolumns = asize[1]; var bcolumns = bsize[1]; + // process data types var dt = adt && bdt && adt === bdt ? adt : undefined; // multiply & add scalar implementations @@ -10106,7 +10126,8 @@ return /******/ (function(modules) { // webpackBootstrap // return matrix return new DenseMatrix({ data: c, - size: [arows, bcolumns] + size: [arows, bcolumns], + datatype: dt }); }; @@ -10127,6 +10148,9 @@ return /******/ (function(modules) { // webpackBootstrap var bindex = b._index; var bptr = b._ptr; var bsize = b._size; + // validate b matrix + if (!bvalues) + throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix'); // rows & columns var arows = asize[0]; var bcolumns = bsize[1]; @@ -10179,21 +10203,34 @@ return /******/ (function(modules) { // webpackBootstrap var avalues = a._values; var aindex = a._index; var aptr = a._ptr; + var adt = a._datatype; + // validate a matrix + if (!avalues) + throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix'); // b dense var bdata = b._data; + var bdt = b._datatype; // rows & columns var arows = a._size[0]; var brows = b._size[0]; // result var cvalues = []; var cindex = []; - var cptr = []; + var cptr = new Array(2); - // create sparse accumulator - var spa = new Spa(arows); + // process data types + var dt = adt && bdt && adt === bdt ? adt : undefined; + // multiply & add scalar implementations + var mf = dt ? multiplyScalar.signatures[dt + ',' + dt] || multiplyScalar : multiplyScalar; + var af = dt ? addScalar.signatures[dt + ',' + dt] || addScalar : addScalar; + + // workspace + var x = new Array(arows); + // vector with marks indicating a value x[i] exists in a given column + var w = new Array(arows); // update ptr - cptr.push(0); + cptr[0] = 0; // rows in b for (var ib = 0; ib < brows; ib++) { // b[ib] @@ -10204,18 +10241,31 @@ return /******/ (function(modules) { // webpackBootstrap for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { // a row var ia = aindex[ka]; - // accumulate - spa.accumulate(ia, multiply(vbi, avalues[ka])); + // check value exists in current j + if (!w[ia]) { + // ia is new entry in j + w[ia] = true; + // add i to pattern of C + cindex.push(ia); + // x(ia) = A + x[ia] = mf(vbi, avalues[ka]); + } + else { + // i exists in C already + x[ia] = af(x[ia], mf(vbi, avalues[ka])); + } } } } - // process spa - spa.forEach(0, arows - 1, function (x, v) { - cindex.push(x); - cvalues.push(v); - }); + // copy values from x to column jb of c + for (var p1 = cindex.length, p = 0; p < p1; p++) { + // row + var ic = cindex[p]; + // copy value + cvalues[p] = x[ic]; + } // update ptr - cptr.push(cvalues.length); + cptr[1] = cindex.length; // check we need to squeeze the result into a scalar if (arows === 1) @@ -10226,7 +10276,8 @@ return /******/ (function(modules) { // webpackBootstrap values : cvalues, index: cindex, ptr: cptr, - size: [arows, 1] + size: [arows, 1], + datatype: dt }); }; @@ -10254,11 +10305,13 @@ return /******/ (function(modules) { // webpackBootstrap var arows = a._size[0]; var brows = b._size[0]; var bcolumns = b._size[1]; + // process data types var dt = adt && bdt && adt === bdt ? adt : undefined; // multiply & add scalar implementations var mf = dt ? multiplyScalar.signatures[dt + ',' + dt] || multiplyScalar : multiplyScalar; var af = dt ? addScalar.signatures[dt + ',' + dt] || addScalar : addScalar; + // result var cvalues = []; var cindex = []; @@ -10450,161 +10503,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - - /** - * 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 - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.nthRoot(a) - * math.nthRoot(a, root) - * - * Examples: - * - * math.nthRoot(9, 2); // returns 3, as 3^2 == 9 - * math.sqrt(9); // returns 3, as 3^2 == 9 - * math.nthRoot(64, 3); // returns 4, as 4^3 == 64 - * - * See also: - * - * sqrt, pow - * - * @param {Number | BigNumber | Boolean | Array | Matrix | null} a - * Value for which to calculate the nth root - * @param {Number | BigNumber | Boolean | null} [root=2] The root. - * @return {Number | Complex | Array | Matrix} Returns the nth root of `a` - */ - var nthRoot = typed('nthRoot', { - 'number': function (x) { - return _nthRoot(x, 2); - }, - 'number, number': _nthRoot, - - 'BigNumber': function (x) { - return _bigNthRoot(x, new type.BigNumber(2)); - }, - 'BigNumber, BigNumber': _bigNthRoot, - - 'Array | Matrix': function (x) { - return collection.deepMap(x, nthRoot); - }, - - 'Array | Matrix, any': function (x, root) { - return collection.deepMap2(x, root, nthRoot); - }, - - 'any, Array | Matrix': function (x, root) { - return collection.deepMap2(x, root, nthRoot); - } - }); - - return nthRoot; - - /** - * Calculate the nth root of a for BigNumbers, solve x^root == a - * http://rosettacode.org/wiki/Nth_root#JavaScript - * @param {BigNumber} a - * @param {BigNumber} root - * @private - */ - function _bigNthRoot(a, root) { - var zero = new type.BigNumber(0); - var one = new type.BigNumber(1); - var inv = root.isNegative(); - if (inv) root = root.negated(); - - if (root.isZero()) throw new Error('Root must be non-zero'); - if (a.isNegative() && !root.abs().mod(2).equals(1)) throw new Error('Root must be odd when a is negative.'); - - // edge cases zero and infinity - if (a.isZero()) return zero; - if (!a.isFinite()) - { - return inv ? zero : a; - } - - var x = one; // Initial guess - var i = 0; - var iMax = 100; - do { - var xPrev = x; - var delta = a.div(x.pow(root.minus(1))).minus(x).div(root); - x = x.plus(delta); - i++; - } - while (!x.equals(xPrev) && i < iMax); - - return inv ? one.div(x) : x; - } - } - - /** - * Calculate the nth root of a, solve x^root == a - * http://rosettacode.org/wiki/Nth_root#JavaScript - * @param {number} a - * @param {number} root - * @private - */ - function _nthRoot(a, root) { - var inv = root < 0; - if (inv) root = -root; - - if (root === 0) throw new Error('Root must be non-zero'); - if (a < 0 && (Math.abs(root) % 2 != 1)) throw new Error('Root must be odd when a is negative.'); - - // edge cases zero and infinity - if (a == 0) return 0; - if (!Number.isFinite(a)) { - return inv ? 0 : a; - } - - var epsilon = 1e-16; - var x = 1; // Initial guess - var i = 0; - var iMax = 100; - do { - var delta = (a / Math.pow(x, root - 1) - x) / root; - x = x + delta; - i++; - } - while (Math.abs(delta) > epsilon && i < iMax); - - return inv ? 1 / x : x; - } - - exports.name = 'nthRoot'; - exports.factory = factory; - - -/***/ }, -/* 50 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var exp = load(__webpack_require__(39)); - var eye = load(__webpack_require__(94)); - var log = load(__webpack_require__(44)); - var multiply = load(__webpack_require__(48)); - var matrix = load(__webpack_require__(75)); + var exp = load(__webpack_require__(37)); + var eye = load(__webpack_require__(92)); + var log = load(__webpack_require__(42)); + var multiply = load(__webpack_require__(47)); + var matrix = load(__webpack_require__(73)); /** * Calculates the power of x to y, `x ^ y`. @@ -10736,7 +10649,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 51 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -10854,7 +10767,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 52 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -10921,7 +10834,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 53 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11030,7 +10943,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 54 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11094,21 +11007,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 55 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; - var DimensionError = __webpack_require__(169); + var clone = __webpack_require__(166).clone; + var DimensionError = __webpack_require__(174); function factory (type, config, load, typed) { - var unaryMinus = load(__webpack_require__(56)); - var matrix = load(__webpack_require__(75)); - var equal = load(__webpack_require__(115)); + var unaryMinus = load(__webpack_require__(54)); + var matrix = load(__webpack_require__(73)); + var equal = load(__webpack_require__(113)); var sparseScatter = load(__webpack_require__(210)); - var addScalar = load(__webpack_require__(212)); + var addScalar = load(__webpack_require__(209)); var multiplyScalar = load(__webpack_require__(211)); var collection = load(__webpack_require__(2)); @@ -11571,7 +11484,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 56 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11637,7 +11550,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 57 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11705,7 +11618,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 58 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11714,7 +11627,7 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Calculate the extended greatest common divisor for two values. @@ -11840,13 +11753,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 59 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var bigBitAnd = __webpack_require__(214).and; + var bigBitAnd = __webpack_require__(213).and; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -11901,13 +11814,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 60 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var bigBitNot = __webpack_require__(214).not; + var bigBitNot = __webpack_require__(213).not; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -11958,13 +11871,74 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 61 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var bigBitOr = __webpack_require__(214).or; + var bigBitXor = __webpack_require__(213).xor; + + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + + /** + * Bitwise XOR two values, `x ^ y`. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.bitXor(x, y) + * + * Examples: + * + * math.bitXor(1, 2); // returns Number 3 + * + * math.bitXor([2, 3, 4], 4); // returns Array [6, 7, 0] + * + * See also: + * + * bitAnd, bitNot, bitOr, leftShift, rightArithShift, rightLogShift + * + * @param {Number | BigNumber | Boolean | Array | Matrix | null} x First value to xor + * @param {Number | BigNumber | Boolean | Array | Matrix | null} y Second value to xor + * @return {Number | BigNumber | Array | Matrix} XOR of `x` and `y` + */ + var bitXor = typed('bitXor', { + 'number, number': function (x, y) { + if (!isInteger(x) || !isInteger(y)) { + throw new Error('Integers expected in function bitXor'); + } + + return x ^ y; + }, + + 'BigNumber, BigNumber': bigBitXor, + + 'Array | Matrix, any': function (x, y) { + return collection.deepMap2(x, y, bitXor); + }, + + 'any, Array | Matrix': function (x, y) { + return collection.deepMap2(x, y, bitXor); + } + }); + + return bitXor; + } + + exports.name = 'bitXor'; + exports.factory = factory; + + +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var isInteger = __webpack_require__(175).isInteger; + var bigBitOr = __webpack_require__(213).or; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -12020,74 +11994,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 62 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var bigBitXor = __webpack_require__(214).xor; - - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - - /** - * Bitwise XOR two values, `x ^ y`. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.bitXor(x, y) - * - * Examples: - * - * math.bitXor(1, 2); // returns Number 3 - * - * math.bitXor([2, 3, 4], 4); // returns Array [6, 7, 0] - * - * See also: - * - * bitAnd, bitNot, bitOr, leftShift, rightArithShift, rightLogShift - * - * @param {Number | BigNumber | Boolean | Array | Matrix | null} x First value to xor - * @param {Number | BigNumber | Boolean | Array | Matrix | null} y Second value to xor - * @return {Number | BigNumber | Array | Matrix} XOR of `x` and `y` - */ - var bitXor = typed('bitXor', { - 'number, number': function (x, y) { - if (!isInteger(x) || !isInteger(y)) { - throw new Error('Integers expected in function bitXor'); - } - - return x ^ y; - }, - - 'BigNumber, BigNumber': bigBitXor, - - 'Array | Matrix, any': function (x, y) { - return collection.deepMap2(x, y, bitXor); - }, - - 'any, Array | Matrix': function (x, y) { - return collection.deepMap2(x, y, bitXor); - } - }); - - return bitXor; - } - - exports.name = 'bitXor'; - exports.factory = factory; - - -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var isInteger = __webpack_require__(175).isInteger; - var bigLeftShift = __webpack_require__(214).leftShift; + var bigLeftShift = __webpack_require__(213).leftShift; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -12143,13 +12056,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 64 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var isInteger = __webpack_require__(175).isInteger; - var bigRightArithShift = __webpack_require__(214).rightArithShift; + var bigRightArithShift = __webpack_require__(213).rightArithShift; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -12205,7 +12118,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12267,7 +12180,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12327,7 +12240,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 67 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12386,7 +12299,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12447,7 +12360,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12508,7 +12421,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 70 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12573,7 +12486,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 71 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12657,7 +12570,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 72 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12714,7 +12627,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 73 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12816,7 +12729,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 74 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12890,7 +12803,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 75 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -12968,7 +12881,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 76 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13043,7 +12956,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 77 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13107,58 +13020,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 78 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - function factory (type, config, load, typed) { - - var SparseMatrix = type.SparseMatrix; - - /** - * Create a Sparse Matrix. The function creates a new `math.type.Matrix` object from - * an `Array`. A Matrix has utility functions to manipulate the data in the - * matrix, like getting the size and getting or setting values in the matrix. - * - * Syntax: - * - * math.sparse() // creates an empty sparse matrix. - * math.sparse(data) // creates a sparse matrix with initial data. - * - * Examples: - * - * var m = math.sparse([[1, 2], [3, 4]]); - * m.size(); // Array [2, 2] - * m.resize([3, 2], 5); - * m.valueOf(); // Array [[1, 2], [3, 4], [5, 5]] - * m.get([1, 0]) // number 3 - * - * See also: - * - * bignumber, boolean, complex, index, number, string, unit, matrix - * - * @param {Array | Matrix} [data] A two dimensional array - * - * @return {Matrix} The created matrix - */ - return typed('sparse', { - '': function () { - return new SparseMatrix([]); - }, - - 'Array | Matrix': function (data) { - return new SparseMatrix(data); - } - }); - } - - exports.name = 'sparse'; - exports.factory = factory; - - -/***/ }, -/* 79 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13225,7 +13087,58 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 80 */ +/* 77 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + function factory (type, config, load, typed) { + + var SparseMatrix = type.SparseMatrix; + + /** + * Create a Sparse Matrix. The function creates a new `math.type.Matrix` object from + * an `Array`. A Matrix has utility functions to manipulate the data in the + * matrix, like getting the size and getting or setting values in the matrix. + * + * Syntax: + * + * math.sparse() // creates an empty sparse matrix. + * math.sparse(data) // creates a sparse matrix with initial data. + * + * Examples: + * + * var m = math.sparse([[1, 2], [3, 4]]); + * m.size(); // Array [2, 2] + * m.resize([3, 2], 5); + * m.valueOf(); // Array [[1, 2], [3, 4], [5, 5]] + * m.get([1, 0]) // number 3 + * + * See also: + * + * bignumber, boolean, complex, index, number, string, unit, matrix + * + * @param {Array | Matrix} [data] A two dimensional array + * + * @return {Matrix} The created matrix + */ + return typed('sparse', { + '': function () { + return new SparseMatrix([]); + }, + + 'Array | Matrix': function (data) { + return new SparseMatrix(data); + } + }); + } + + exports.name = 'sparse'; + exports.factory = factory; + + +/***/ }, +/* 78 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13296,7 +13209,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 81 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13358,7 +13271,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 82 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13426,7 +13339,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 83 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13496,7 +13409,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 84 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13547,7 +13460,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 85 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13617,7 +13530,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 86 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13680,7 +13593,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 87 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13750,7 +13663,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 88 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13820,19 +13733,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 89 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; + var clone = __webpack_require__(166).clone; var isInteger = __webpack_require__(175).isInteger; - var array = __webpack_require__(167); - var IndexError = __webpack_require__(168); - var DimensionError = __webpack_require__(169); + var array = __webpack_require__(172); + var IndexError = __webpack_require__(173); + var DimensionError = __webpack_require__(174); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Concatenate two or more matrices. @@ -13965,17 +13878,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 90 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var subtract = load(__webpack_require__(55)); - var multiply = load(__webpack_require__(48)); + var matrix = load(__webpack_require__(73)); + var subtract = load(__webpack_require__(53)); + var multiply = load(__webpack_require__(47)); /** * Calculate the cross product for two vectors in three dimensional space. @@ -14051,22 +13964,22 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 91 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var object = util.object; var string = util.string; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var matrix = load(__webpack_require__(75)); - var add = load(__webpack_require__(32)); - var subtract = load(__webpack_require__(55)); - var multiply = load(__webpack_require__(48)); - var unaryMinus = load(__webpack_require__(56)); + var matrix = load(__webpack_require__(73)); + var add = load(__webpack_require__(31)); + var subtract = load(__webpack_require__(53)); + var multiply = load(__webpack_require__(47)); + var unaryMinus = load(__webpack_require__(54)); /** * Calculate the determinant of a matrix. @@ -14222,18 +14135,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 92 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var array = __webpack_require__(167); - var clone = __webpack_require__(170).clone; + var array = __webpack_require__(172); + var clone = __webpack_require__(166).clone; var isInteger = __webpack_require__(175).isInteger; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Create a diagonal matrix or retrieve the diagonal of a matrix @@ -14394,16 +14307,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 93 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { - var add = load(__webpack_require__(32)); - var multiply = load(__webpack_require__(48)); + var add = load(__webpack_require__(31)); + var multiply = load(__webpack_require__(47)); /** * Calculate the dot product of two vectors. The dot product of @@ -14475,17 +14388,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var array = __webpack_require__(167); + var array = __webpack_require__(172); var isInteger = __webpack_require__(175).isInteger; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Create a 2-dimensional identity matrix with size m x n or n x n. @@ -14620,16 +14533,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 95 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; - var _flatten = __webpack_require__(167).flatten; + var clone = __webpack_require__(166).clone; + var _flatten = __webpack_require__(172).flatten; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Flatten a multi dimensional matrix into a single dimensional matrix. @@ -14667,22 +14580,22 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var matrix = load(__webpack_require__(75)); - var divideScalar = load(__webpack_require__(213)); - var add = load(__webpack_require__(32)); - var multiply = load(__webpack_require__(48)); - var unaryMinus = load(__webpack_require__(56)); - var det = load(__webpack_require__(91)); - var eye = load(__webpack_require__(94)); + var matrix = load(__webpack_require__(73)); + var divideScalar = load(__webpack_require__(212)); + var add = load(__webpack_require__(31)); + var multiply = load(__webpack_require__(47)); + var unaryMinus = load(__webpack_require__(54)); + var det = load(__webpack_require__(89)); + var eye = load(__webpack_require__(92)); /** * Calculate the inverse of a square matrix. @@ -14879,13 +14792,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 97 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(166), + var util = __webpack_require__(171), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -14996,13 +14909,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 98 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(166), + var util = __webpack_require__(171), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -15322,13 +15235,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 99 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(166), + var util = __webpack_require__(171), BigNumber = math.type.BigNumber, Matrix = math.type.Matrix, @@ -15461,15 +15374,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 100 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var array = __webpack_require__(167); + var array = __webpack_require__(172); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Calculate the size of a matrix or scalar. @@ -15518,16 +15431,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 101 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var object = __webpack_require__(170); - var array = __webpack_require__(167); + var object = __webpack_require__(166); + var array = __webpack_require__(172); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Squeeze a matrix, remove inner and outer singleton dimensions from a matrix. @@ -15581,14 +15494,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 102 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(166), + var util = __webpack_require__(171), Matrix = math.type.Matrix, Index = __webpack_require__(5), @@ -15799,18 +15712,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 103 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; - var format = __webpack_require__(209).format; + var clone = __webpack_require__(166).clone; + var format = __webpack_require__(214).format; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var add = load(__webpack_require__(32)); + var matrix = load(__webpack_require__(73)); + var add = load(__webpack_require__(31)); /** * Calculate the trace of a matrix: the sum of the elements on the main @@ -15950,17 +15863,132 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 104 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var clone = __webpack_require__(170).clone; - var format = __webpack_require__(209).format; + module.exports = function (math, config) { + var util = __webpack_require__(171), + + BigNumber = math.type.BigNumber, + Matrix = math.type.Matrix, + collection = math.collection, + + array = util.array, + isNumber = util.number.isNumber, + isInteger = util.number.isInteger, + isString = util.string.isString, + isArray = Array.isArray; + + /** + * Create a matrix filled with zeros. The created matrix can have one or + * multiple dimensions. + * + * Syntax: + * + * math.zeros(m) + * math.zeros(m, format) + * math.zeros(m, n) + * math.zeros(m, n, format) + * math.zeros([m, n]) + * math.zeros([m, n], format) + * + * Examples: + * + * math.zeros(3); // returns [0, 0, 0] + * math.zeros(3, 2); // returns [[0, 0], [0, 0], [0, 0]] + * math.zeros(3, 'dense'); // returns [0, 0, 0] + * + * var A = [[1, 2, 3], [4, 5, 6]]; + * math.zeros(math.size(A)); // returns [[0, 0, 0], [0, 0, 0]] + * + * See also: + * + * ones, eye, size, range + * + * @param {...Number | Array} size The size of each dimension of the matrix + * @param {string} [format] The Matrix storage format + * + * @return {Array | Matrix} A matrix filled with zeros + */ + math.zeros = function zeros (size) { + // process arguments + var args = collection.argsToArray(arguments); + // matrix storage format + var f; + // check format was provided + if (args.length > 0 && isString(args[args.length - 1])) { + // set format + f = args[args.length - 1]; + // re-process arguments, ignore last one + args = collection.argsToArray(args.slice(0, args.length - 1)); + } + else if (size instanceof Matrix) { + // use matrix format + f = size.storage(); + } + else if (!isArray(size) && config.matrix === 'matrix') { + // use default matrix format + f = 'default'; + } + + // convert arguments from bignumber to numbers if needed + var asBigNumber = false; + // map arguments & validate + args = args.map(function (value) { + // check it is a big number + if (value instanceof BigNumber) { + // set flag + asBigNumber = true; + // convert it + value = value.toNumber(); + } + // validate arguments + if (!isNumber(value) || !isInteger(value) || value < 0) { + throw new Error('Parameters in function eye must be positive integers'); + } + return value; + }); + + // default value + var defaultValue = asBigNumber ? new BigNumber(0) : 0; + + // check we need to return a matrix + if (f) { + // create empty matrix + var m = math.matrix(f); + // check we need to resize matrix + if (args.length > 0) { + // resize it to correct size + return m.resize(args, defaultValue); + } + return m; + } + // empty array + var res = []; + // check we need to resize array + if (args.length > 0) { + // resize array + return array.resize(res, args, defaultValue); + } + return res; + }; + }; + + +/***/ }, +/* 103 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var clone = __webpack_require__(166).clone; + var format = __webpack_require__(214).format; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); var DenseMatrix = type.DenseMatrix, SparseMatrix = type.SparseMatrix; @@ -16125,122 +16153,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - module.exports = function (math, config) { - var util = __webpack_require__(166), - - BigNumber = math.type.BigNumber, - Matrix = math.type.Matrix, - collection = math.collection, - - array = util.array, - isNumber = util.number.isNumber, - isInteger = util.number.isInteger, - isString = util.string.isString, - isArray = Array.isArray; - - /** - * Create a matrix filled with zeros. The created matrix can have one or - * multiple dimensions. - * - * Syntax: - * - * math.zeros(m) - * math.zeros(m, format) - * math.zeros(m, n) - * math.zeros(m, n, format) - * math.zeros([m, n]) - * math.zeros([m, n], format) - * - * Examples: - * - * math.zeros(3); // returns [0, 0, 0] - * math.zeros(3, 2); // returns [[0, 0], [0, 0], [0, 0]] - * math.zeros(3, 'dense'); // returns [0, 0, 0] - * - * var A = [[1, 2, 3], [4, 5, 6]]; - * math.zeros(math.size(A)); // returns [[0, 0, 0], [0, 0, 0]] - * - * See also: - * - * ones, eye, size, range - * - * @param {...Number | Array} size The size of each dimension of the matrix - * @param {string} [format] The Matrix storage format - * - * @return {Array | Matrix} A matrix filled with zeros - */ - math.zeros = function zeros (size) { - // process arguments - var args = collection.argsToArray(arguments); - // matrix storage format - var f; - // check format was provided - if (args.length > 0 && isString(args[args.length - 1])) { - // set format - f = args[args.length - 1]; - // re-process arguments, ignore last one - args = collection.argsToArray(args.slice(0, args.length - 1)); - } - else if (size instanceof Matrix) { - // use matrix format - f = size.storage(); - } - else if (!isArray(size) && config.matrix === 'matrix') { - // use default matrix format - f = 'default'; - } - - // convert arguments from bignumber to numbers if needed - var asBigNumber = false; - // map arguments & validate - args = args.map(function (value) { - // check it is a big number - if (value instanceof BigNumber) { - // set flag - asBigNumber = true; - // convert it - value = value.toNumber(); - } - // validate arguments - if (!isNumber(value) || !isInteger(value) || value < 0) { - throw new Error('Parameters in function eye must be positive integers'); - } - return value; - }); - - // default value - var defaultValue = asBigNumber ? new BigNumber(0) : 0; - - // check we need to return a matrix - if (f) { - // create empty matrix - var m = math.matrix(f); - // check we need to resize matrix - if (args.length > 0) { - // resize it to correct size - return m.resize(args, defaultValue); - } - return m; - } - // empty array - var res = []; - // check we need to resize array - if (args.length > 0) { - // resize array - return array.resize(res, args, defaultValue); - } - return res; - }; - }; - - -/***/ }, -/* 106 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16330,16 +16243,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bignumber = __webpack_require__(214); + var bignumber = __webpack_require__(213); function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var gamma = load(__webpack_require__(108)); + var gamma = load(__webpack_require__(106)); /** * Compute the factorial of a value @@ -16393,7 +16306,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16402,8 +16315,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var multiply = load(__webpack_require__(48)); - var pow = load(__webpack_require__(50)); + var multiply = load(__webpack_require__(47)); + var pow = load(__webpack_require__(48)); /** * Compute the gamma function of a value using Lanczos approximation for @@ -16645,7 +16558,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16653,7 +16566,7 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(175).isInteger; function factory (type, config, load, typed) { - var factorial = load(__webpack_require__(107)); + var factorial = load(__webpack_require__(105)); /** * Compute the number of ways of obtaining an ordered subset of `k` elements @@ -16741,7 +16654,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16777,7 +16690,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16824,7 +16737,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16871,7 +16784,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16959,14 +16872,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var equal = load(__webpack_require__(115)); + var equal = load(__webpack_require__(113)); /** * Test element wise whether two matrices are equal. @@ -17043,7 +16956,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17153,7 +17066,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17238,7 +17151,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17319,7 +17232,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17404,7 +17317,87 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 117 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var nearlyEqual = __webpack_require__(175).nearlyEqual; + + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + + /** + * Test whether value x is smaller or equal to y. + * + * The function returns true when x is smaller than y or the relative + * difference between x and y is smaller than the configured epsilon. The + * function cannot be used to compare values smaller than approximately 2.22e-16. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.smallerEq(x, y) + * + * Examples: + * + * math.smaller(1 + 2, 3); // returns false + * math.smallerEq(1 + 2, 3); // returns true + * + * See also: + * + * equal, unequal, smaller, larger, largerEq, compare + * + * @param {Number | BigNumber | Boolean | Unit | String | Array | Matrix | null} x First value to compare + * @param {Number | BigNumber | Boolean | Unit | String | Array | Matrix | null} y Second value to compare + * @return {Boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false + */ + var smallerEq = typed('smallerEq', { + 'boolean, boolean': function (x, y) { + return x <= y; + }, + + 'number, number': function (x, y) { + return x <= y || nearlyEqual(x, y, config.epsilon); + }, + + 'BigNumber, BigNumber': function (x, y) { + return x.lte(y); + }, + + 'Complex, Complex': function (x, y) { + throw new TypeError('No ordering relation is defined for complex numbers'); + }, + + 'Unit, Unit': function (x, y) { + if (!x.equalBase(y)) { + throw new Error('Cannot compare units with different base'); + } + return x.value <= y.value || nearlyEqual(x.value, y.value, config.epsilon); + }, + + 'string, string': function (x, y) { + return x <= y; + }, + + 'Array | Matrix, any': function (x, y) { + return collection.deepMap2(x, y, smallerEq); + }, + + 'any, Array | Matrix': function (x, y) { + return collection.deepMap2(x, y, smallerEq); + } + }); + + return smallerEq; + } + + exports.name = 'smallerEq'; + exports.factory = factory; + + +/***/ }, +/* 118 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -17514,94 +17507,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var nearlyEqual = __webpack_require__(175).nearlyEqual; - - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - - /** - * Test whether value x is smaller or equal to y. - * - * The function returns true when x is smaller than y or the relative - * difference between x and y is smaller than the configured epsilon. The - * function cannot be used to compare values smaller than approximately 2.22e-16. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.smallerEq(x, y) - * - * Examples: - * - * math.smaller(1 + 2, 3); // returns false - * math.smallerEq(1 + 2, 3); // returns true - * - * See also: - * - * equal, unequal, smaller, larger, largerEq, compare - * - * @param {Number | BigNumber | Boolean | Unit | String | Array | Matrix | null} x First value to compare - * @param {Number | BigNumber | Boolean | Unit | String | Array | Matrix | null} y Second value to compare - * @return {Boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false - */ - var smallerEq = typed('smallerEq', { - 'boolean, boolean': function (x, y) { - return x <= y; - }, - - 'number, number': function (x, y) { - return x <= y || nearlyEqual(x, y, config.epsilon); - }, - - 'BigNumber, BigNumber': function (x, y) { - return x.lte(y); - }, - - 'Complex, Complex': function (x, y) { - throw new TypeError('No ordering relation is defined for complex numbers'); - }, - - 'Unit, Unit': function (x, y) { - if (!x.equalBase(y)) { - throw new Error('Cannot compare units with different base'); - } - return x.value <= y.value || nearlyEqual(x.value, y.value, config.epsilon); - }, - - 'string, string': function (x, y) { - return x <= y; - }, - - 'Array | Matrix, any': function (x, y) { - return collection.deepMap2(x, y, smallerEq); - }, - - 'any, Array | Matrix': function (x, y) { - return collection.deepMap2(x, y, smallerEq); - } - }); - - return smallerEq; - } - - exports.name = 'smallerEq'; - exports.factory = factory; - - -/***/ }, -/* 121 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var larger = load(__webpack_require__(116)); + var larger = load(__webpack_require__(114)); /** * Compute the maximum value of a matrix or a list with values. @@ -17688,17 +17601,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var add = load(__webpack_require__(32)); - var divide = load(__webpack_require__(35)); + var add = load(__webpack_require__(31)); + var divide = load(__webpack_require__(32)); /** * Compute the mean value of matrix or a list with values. @@ -17782,17 +17695,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var flatten = __webpack_require__(167).flatten; + var flatten = __webpack_require__(172).flatten; function factory (type, config, load, typed) { - var add = load(__webpack_require__(32)); - var divide = load(__webpack_require__(35)); - var compare = load(__webpack_require__(113)); + var add = load(__webpack_require__(31)); + var divide = load(__webpack_require__(32)); + var compare = load(__webpack_require__(111)); /** * Compute the median of a matrix or a list with values. The values are @@ -17882,14 +17795,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var smaller = load(__webpack_require__(118)); + var smaller = load(__webpack_require__(116)); /** * Compute the maximum value of a matrix or a list of values. @@ -17976,14 +17889,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var multiply = load(__webpack_require__(48)); + var multiply = load(__webpack_require__(47)); /** * Compute the product of a matrix or a list with values. @@ -18053,15 +17966,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var sqrt = load(__webpack_require__(53)); - var variance = load(__webpack_require__(128)); + var sqrt = load(__webpack_require__(51)); + var variance = load(__webpack_require__(126)); /** * Compute the standard deviation of a matrix or a list with values. @@ -18130,14 +18043,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var add = load(__webpack_require__(32)); + var add = load(__webpack_require__(31)); /** * Compute the sum of a matrix or a list with values. @@ -18205,7 +18118,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18214,10 +18127,10 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var add = load(__webpack_require__(32)); - var subtract = load(__webpack_require__(55)); - var multiply = load(__webpack_require__(48)); - var divide = load(__webpack_require__(35)); + var add = load(__webpack_require__(31)); + var subtract = load(__webpack_require__(53)); + var multiply = load(__webpack_require__(47)); + var divide = load(__webpack_require__(32)); /** * Compute the variance of a matrix or a list with values. @@ -18334,17 +18247,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcCos = __webpack_require__(214).arccos_arcsec; + var bigArcCos = __webpack_require__(213).arccos_arcsec; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexSqrt = load(__webpack_require__(53)).signatures['Complex']; - var complexLog = load(__webpack_require__(44)).signatures['Complex']; + var complexSqrt = load(__webpack_require__(51)).signatures['Complex']; + var complexLog = load(__webpack_require__(42)).signatures['Complex']; /** * Calculate the inverse cosine of a value. @@ -18424,16 +18337,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAcosh = __webpack_require__(214).acosh_asinh_asech_acsch; + var bigAcosh = __webpack_require__(213).acosh_asinh_asech_acsch; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexAcos = load(__webpack_require__(129)).signatures['Complex']; + var complexAcos = load(__webpack_require__(127)).signatures['Complex']; /** * Calculate the hyperbolic arccos of a value, @@ -18510,18 +18423,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 129 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcCot = __webpack_require__(214).arctan_arccot; + var bigArcCot = __webpack_require__(213).arctan_arccot; var HALF_PI = 1.5707963267948966; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexAtan = load(__webpack_require__(139)).signatures['Complex']; + var complexAtan = load(__webpack_require__(137)).signatures['Complex']; /** * Calculate the inverse cotangent of a value. @@ -18585,17 +18498,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 132 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAcoth = __webpack_require__(214).atanh_acoth; + var bigAcoth = __webpack_require__(213).atanh_acoth; var HALF_PI = 1.5707963267948966; function factory (type, config, load, typed) { - var atanh = load(__webpack_require__(141)).signatures['Complex']; + var atanh = load(__webpack_require__(138)).signatures['Complex']; var collection = load(__webpack_require__(2)); /** @@ -18672,18 +18585,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcCsc = __webpack_require__(214).arcsin_arccsc; + var bigArcCsc = __webpack_require__(213).arcsin_arccsc; var HALF_PI = 1.5707963267948966; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexAsin = load(__webpack_require__(137)).signatures['Complex']; + var complexAsin = load(__webpack_require__(135)).signatures['Complex']; /** * Calculate the inverse cosecant of a value. @@ -18758,16 +18671,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 134 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAcsch = __webpack_require__(214).acosh_asinh_asech_acsch; + var bigAcsch = __webpack_require__(213).acosh_asinh_asech_acsch; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var asinh = load(__webpack_require__(138)).signatures['Complex']; + var asinh = load(__webpack_require__(136)).signatures['Complex']; /** * Calculate the hyperbolic arccosecant of a value, @@ -18836,16 +18749,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcSec = __webpack_require__(214).arccos_arcsec; + var bigArcSec = __webpack_require__(213).arccos_arcsec; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexAcos = load(__webpack_require__(129)).signatures['Complex']; + var complexAcos = load(__webpack_require__(127)).signatures['Complex']; /** * Calculate the inverse secant of a value. @@ -18920,16 +18833,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 136 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAsech = __webpack_require__(214).acosh_asinh_asech_acsch; + var bigAsech = __webpack_require__(213).acosh_asinh_asech_acsch; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var acosh = load(__webpack_require__(130)).signatures['Complex']; + var acosh = load(__webpack_require__(128)).signatures['Complex']; /** * Calculate the hyperbolic arcsecant of a value, @@ -19013,17 +18926,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 137 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcSin = __webpack_require__(214).arcsin_arccsc; + var bigArcSin = __webpack_require__(213).arcsin_arccsc; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexSqrt = load(__webpack_require__(53)).signatures['Complex']; - var complexLog = load(__webpack_require__(44)).signatures['Complex']; + var complexSqrt = load(__webpack_require__(51)).signatures['Complex']; + var complexLog = load(__webpack_require__(42)).signatures['Complex']; /** * Calculate the inverse sine of a value. @@ -19102,16 +19015,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 138 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAsinh = __webpack_require__(214).acosh_asinh_asech_acsch; + var bigAsinh = __webpack_require__(213).acosh_asinh_asech_acsch; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexAsin = load(__webpack_require__(137)).signatures['Complex']; + var complexAsin = load(__webpack_require__(135)).signatures['Complex']; /** * Calculate the hyperbolic arcsine of a value, @@ -19176,16 +19089,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 139 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigArcTan = __webpack_require__(214).arctan_arccot; + var bigArcTan = __webpack_require__(213).arctan_arccot; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var complexLog = load(__webpack_require__(44)).signatures['Complex']; + var complexLog = load(__webpack_require__(42)).signatures['Complex']; /** * Calculate the inverse tangent of a value. @@ -19260,77 +19173,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 140 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigAtan2 = __webpack_require__(214).arctan2; - - function factory (type, config, load, typed) { - var collection = load(__webpack_require__(2)); - - /** - * Calculate the inverse tangent function with two arguments, y/x. - * By providing two arguments, the right quadrant of the computed angle can be - * determined. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.atan2(y, x) - * - * Examples: - * - * math.atan2(2, 2) / math.pi; // returns number 0.25 - * - * var angle = math.unit(60, 'deg'); // returns Unit 60 deg - * var x = math.cos(angle); - * var y = math.sin(angle); - * - * math.atan(2); // returns Complex 1.5707963267948966 -1.3169578969248166 i - * - * See also: - * - * tan, atan, sin, cos - * - * @param {Number | Boolean | Array | Matrix | null} y Second dimension - * @param {Number | Boolean | Array | Matrix | null} x First dimension - * @return {Number | Array | Matrix} Four-quadrant inverse tangent - */ - var atan2 = typed('atan2', { - 'number, number': Math.atan2, - - // TODO: implement atan2 for complex numbers - - 'BigNumber, BigNumber': function (y, x) { - return bigAtan2(y, x, type.BigNumber); - }, - - 'Array | Matrix, any': function (y, x) { - return collection.deepMap2(y, x, atan2); - }, - - 'any, Array | Matrix': function (y, x) { - return collection.deepMap2(y, x, atan2); - } - }); - - return atan2; - } - - exports.name = 'atan2'; - exports.factory = factory; - - -/***/ }, -/* 141 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var bigAtanh = __webpack_require__(214).atanh_acoth; + var bigAtanh = __webpack_require__(213).atanh_acoth; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19417,17 +19265,82 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 142 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCos = __webpack_require__(214).cos_sin_sec_csc; + var bigAtan2 = __webpack_require__(213).arctan2; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var cosh = load(__webpack_require__(143)).signatures['number']; - var sinh = load(__webpack_require__(151)).signatures['number']; + + /** + * Calculate the inverse tangent function with two arguments, y/x. + * By providing two arguments, the right quadrant of the computed angle can be + * determined. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.atan2(y, x) + * + * Examples: + * + * math.atan2(2, 2) / math.pi; // returns number 0.25 + * + * var angle = math.unit(60, 'deg'); // returns Unit 60 deg + * var x = math.cos(angle); + * var y = math.sin(angle); + * + * math.atan(2); // returns Complex 1.5707963267948966 -1.3169578969248166 i + * + * See also: + * + * tan, atan, sin, cos + * + * @param {Number | Boolean | Array | Matrix | null} y Second dimension + * @param {Number | Boolean | Array | Matrix | null} x First dimension + * @return {Number | Array | Matrix} Four-quadrant inverse tangent + */ + var atan2 = typed('atan2', { + 'number, number': Math.atan2, + + // TODO: implement atan2 for complex numbers + + 'BigNumber, BigNumber': function (y, x) { + return bigAtan2(y, x, type.BigNumber); + }, + + 'Array | Matrix, any': function (y, x) { + return collection.deepMap2(y, x, atan2); + }, + + 'any, Array | Matrix': function (y, x) { + return collection.deepMap2(y, x, atan2); + } + }); + + return atan2; + } + + exports.name = 'atan2'; + exports.factory = factory; + + +/***/ }, +/* 140 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var bigCos = __webpack_require__(213).cos_sin_sec_csc; + + function factory (type, config, load, typed) { + var collection = load(__webpack_require__(2)); + var cosh = load(__webpack_require__(141)).signatures['number']; + var sinh = load(__webpack_require__(149)).signatures['number']; /** * Calculate the cosine of a value. @@ -19490,12 +19403,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 143 */ +/* 141 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCosh = __webpack_require__(214).cosh_sinh_csch_sech; + var bigCosh = __webpack_require__(213).cosh_sinh_csch_sech; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19564,12 +19477,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCot = __webpack_require__(214).tan_cot; + var bigCot = __webpack_require__(213).tan_cot; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19635,12 +19548,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 145 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCoth = __webpack_require__(214).tanh_coth; + var bigCoth = __webpack_require__(213).tanh_coth; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19717,12 +19630,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCsc = __webpack_require__(214).cos_sin_sec_csc; + var bigCsc = __webpack_require__(213).cos_sin_sec_csc; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19789,12 +19702,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 145 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigCsch = __webpack_require__(214).cosh_sinh_csch_sech; + var bigCsch = __webpack_require__(213).cosh_sinh_csch_sech; var sign = __webpack_require__(175).sign; function factory (type, config, load, typed) { @@ -19875,12 +19788,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigSec = __webpack_require__(214).cos_sin_sec_csc; + var bigSec = __webpack_require__(213).cos_sin_sec_csc; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -19947,12 +19860,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 149 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigSech = __webpack_require__(214).cosh_sinh_csch_sech; + var bigSech = __webpack_require__(213).cosh_sinh_csch_sech; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -20026,16 +19939,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 150 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigSin = __webpack_require__(214).cos_sin_sec_csc; + var bigSin = __webpack_require__(213).cos_sin_sec_csc; function factory (type, config, load, typed) { - var cosh = load(__webpack_require__(143)).signatures['number']; - var sinh = load(__webpack_require__(151)).signatures['number']; + var cosh = load(__webpack_require__(141)).signatures['number']; + var sinh = load(__webpack_require__(149)).signatures['number']; var collection = load(__webpack_require__(2)); /** @@ -20099,12 +20012,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigSinh = __webpack_require__(214).cosh_sinh_csch_sech; + var bigSinh = __webpack_require__(213).cosh_sinh_csch_sech; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -20180,12 +20093,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 152 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigTan = __webpack_require__(214).tan_cot; + var bigTan = __webpack_require__(213).tan_cot; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -20253,12 +20166,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 153 */ +/* 151 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var bigTanh = __webpack_require__(214).tanh_coth; + var bigTanh = __webpack_require__(213).tanh_coth; function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); @@ -20337,7 +20250,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 154 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20391,12 +20304,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 155 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var object= __webpack_require__(170); + var object= __webpack_require__(166); function factory (type, config, load, typed) { /** @@ -20427,12 +20340,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 156 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var object = __webpack_require__(170); + var object = __webpack_require__(166); function factory (type, config, load, typed, math) { /** @@ -20461,7 +20374,7 @@ return /******/ (function(modules) { // webpackBootstrap // reload the constants (they depend on option number and precision) // this must be done after math.type.BigNumber.config is applied // TODO: this is an ugly solution, refreshing the constants like this - __webpack_require__(173)(math, config); + __webpack_require__(168)(math, config); } // return a clone of the settings @@ -20475,15 +20388,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 157 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(73)); /** * Sort the items in a matrix. @@ -20566,12 +20479,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 158 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var string = __webpack_require__(209); + var string = __webpack_require__(214); function factory (type, config, load, typed) { /** @@ -20649,7 +20562,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 159 */ +/* 157 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20716,13 +20629,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 160 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var isString = __webpack_require__(209).isString; - var format = __webpack_require__(209).format; + var isString = __webpack_require__(214).isString; + var format = __webpack_require__(214).format; function factory (type, config, load, typed) { /** @@ -20802,16 +20715,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 161 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(167).size; + var size = __webpack_require__(172).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var asc = load(__webpack_require__(113)); + var matrix = load(__webpack_require__(73)); + var asc = load(__webpack_require__(111)); var desc = function (a, b) { return -asc(a, b); }; @@ -20924,7 +20837,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 162 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21000,7 +20913,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 163 */ +/* 161 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21064,26 +20977,26 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 164 */ +/* 162 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var object = util.object; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var abs = load(__webpack_require__(31)); - var add = load(__webpack_require__(32)); - var divideScalar = load(__webpack_require__(213)); - var multiply = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(55)); - var larger = load(__webpack_require__(116)); - var equal = load(__webpack_require__(115)); - var unaryMinus = load(__webpack_require__(56)); + var matrix = load(__webpack_require__(73)); + var abs = load(__webpack_require__(29)); + var add = load(__webpack_require__(31)); + var divideScalar = load(__webpack_require__(212)); + var multiply = load(__webpack_require__(47)); + var subtract = load(__webpack_require__(53)); + var larger = load(__webpack_require__(114)); + var equal = load(__webpack_require__(113)); + var unaryMinus = load(__webpack_require__(54)); var SparseMatrix = type.SparseMatrix; var DenseMatrix = type.DenseMatrix; @@ -21453,7 +21366,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 165 */ +/* 163 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21462,9 +21375,9 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var lup = load(__webpack_require__(164)); - var multiply = load(__webpack_require__(48)); + var matrix = load(__webpack_require__(73)); + var lup = load(__webpack_require__(162)); + var multiply = load(__webpack_require__(47)); var backwardSubstitution = load(__webpack_require__(344)); var forwardSubstitution = load(__webpack_require__(345)); @@ -21551,35 +21464,811 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; +/***/ }, +/* 164 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + // TODO: change to exports.create = function () {...} + module.exports = function () { + var string = __webpack_require__(214); + + /** + * @constructor Chain + * Wrap any value in a chain, allowing to perform chained operations on + * the value. + * + * All methods available in the math.js library can be called upon the chain, + * and then will be evaluated with the value itself as first argument. + * The chain can be closed by executing chain.done(), which will return + * the final value. + * + * The Chain has a number of special functions: + * - done() Finalize the chained operation and return the + * chain's value. + * - valueOf() The same as done() + * - toString() Returns a string representation of the chain's value. + * + * @param {*} [value] + */ + function Chain (value) { + if (!(this instanceof Chain)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (value instanceof Chain) { + this.value = value.value; + } + else { + this.value = value; + } + } + + /** + * Close the chain. Returns the final value. + * Does the same as method valueOf() + * @returns {*} value + */ + Chain.prototype.done = function () { + return this.value; + }; + + /** + * Close the chain. Returns the final value. + * Does the same as method done() + * @returns {*} value + */ + Chain.prototype.valueOf = function () { + return this.value; + }; + + /** + * Get a string representation of the value in the chain + * @returns {String} + */ + Chain.prototype.toString = function () { + return string.format(this.value); + }; + + /** + * Create a proxy method for the chain + * @param {String} name + * @param {*} value The value or function to be proxied + */ + function createProxy(name, value) { + var slice = Array.prototype.slice; + if (typeof value === 'function') { + // a function + Chain.prototype[name] = function () { + var args = [this.value].concat(slice.call(arguments, 0)); + return new Chain(value.apply(this, args)); + } + } + else { + // a constant + Chain.prototype[name] = new Chain(value); + } + } + + /** + * Create a proxy for a single method, or an object with multiple methods. + * Example usage: + * + * Chain.createProxy('add', function add (x, y) {...}); + * Chain.createProxy({ + * add: function add (x, y) {...}, + * subtract: function subtract (x, y) {...} + * } + * + * + * @param {String | Object} arg0 A function name (string), or an object with + * methods + * @param {*} [arg1] Function or value, when arg0 is a name + */ + Chain.createProxy = function (arg0, arg1) { + if (typeof arg0 === 'string') { + // createProxy(name, value) + createProxy(arg0, arg1); + } + else { + // createProxy(values) + for (var prop in arg0) { + if (arg0.hasOwnProperty(prop)) { + createProxy(prop, arg0[prop]); + } + } + } + }; + + return Chain; + }; + + +/***/ }, +/* 165 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var errorTransform = __webpack_require__(207).transform; + var isBoolean = __webpack_require__(208).isBoolean; + var argsToArray = __webpack_require__(172).argsToArray; + + /** + * Attach a transform function to math.subset + * Adds a property transform containing the transform function. + * + * This transform creates a range which includes the end value + * @param {Object} math + */ + module.exports = function (math) { + var transform = function () { + try { + return math.subset.apply(math, argsToArray(arguments)); + } + catch (err) { + throw errorTransform(err); + } + }; + + math.subset.transform = transform; + + return transform; + }; + + /***/ }, /* 166 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - exports.array = __webpack_require__(167); - exports['boolean'] = __webpack_require__(208); - exports['function'] = __webpack_require__(347); - exports.number = __webpack_require__(175); - exports.bignumber = __webpack_require__(214); - exports.object = __webpack_require__(170); - exports.string = __webpack_require__(209); - exports.types = __webpack_require__(216); + var BigNumber = __webpack_require__(350); + + /** + * Clone an object + * + * clone(x) + * + * Can clone any primitive type, array, and object. + * If x has a function clone, this function will be invoked to clone the object. + * + * @param {*} x + * @return {*} clone + */ + exports.clone = function clone(x) { + var type = typeof x; + + // immutable primitive types + if (type === 'number' || type === 'string' || type === 'boolean' || + x === null || x === undefined) { + return x; + } + + // use clone function of the object when available + if (typeof x.clone === 'function') { + return x.clone(); + } + + // array + if (Array.isArray(x)) { + return x.map(function (value) { + return clone(value); + }); + } + + if (x instanceof Number) return new Number(x.valueOf()); + if (x instanceof String) return new String(x.valueOf()); + if (x instanceof Boolean) return new Boolean(x.valueOf()); + if (x instanceof Date) return new Date(x.valueOf()); + if (x instanceof BigNumber) return x; // bignumbers are immutable + if (x instanceof RegExp) throw new TypeError('Cannot clone ' + x); // TODO: clone a RegExp + + // object + var m = {}; + for (var key in x) { + if (x.hasOwnProperty(key)) { + m[key] = clone(x[key]); + } + } + return m; + }; + + /** + * Extend object a with the properties of object b + * @param {Object} a + * @param {Object} b + * @return {Object} a + */ + exports.extend = function(a, b) { + for (var prop in b) { + if (b.hasOwnProperty(prop)) { + a[prop] = b[prop]; + } + } + return a; + }; + + /** + * Deep extend an object a with the properties of object b + * @param {Object} a + * @param {Object} b + * @returns {Object} + */ + exports.deepExtend = function deepExtend (a, b) { + // TODO: add support for Arrays to deepExtend + if (Array.isArray(b)) { + throw new TypeError('Arrays are not supported by deepExtend'); + } + + for (var prop in b) { + if (b.hasOwnProperty(prop)) { + if (b[prop] && b[prop].constructor === Object) { + if (a[prop] === undefined) { + a[prop] = {}; + } + if (a[prop].constructor === Object) { + deepExtend(a[prop], b[prop]); + } + else { + a[prop] = b[prop]; + } + } else if (Array.isArray(b[prop])) { + throw new TypeError('Arrays are not supported by deepExtend'); + } else { + a[prop] = b[prop]; + } + } + } + return a; + }; + + /** + * Deep test equality of all fields in two pairs of arrays or objects. + * @param {Array | Object} a + * @param {Array | Object} b + * @returns {boolean} + */ + exports.deepEqual = function deepEqual (a, b) { + var prop, i, len; + if (Array.isArray(a)) { + if (!Array.isArray(b)) { + return false; + } + + if (a.length != b.length) { + return false; + } + + for (i = 0, len = a.length; i < len; i++) { + if (!exports.deepEqual(a[i], b[i])) { + return false; + } + } + return true; + } + else if (a instanceof Object) { + if (Array.isArray(b) || !(b instanceof Object)) { + return false; + } + + for (prop in a) { + //noinspection JSUnfilteredForInLoop + if (!exports.deepEqual(a[prop], b[prop])) { + return false; + } + } + for (prop in b) { + //noinspection JSUnfilteredForInLoop + if (!exports.deepEqual(a[prop], b[prop])) { + return false; + } + } + return true; + } + else { + return (typeof a === typeof b) && (a == b); + } + }; + + /** + * Test whether the current JavaScript engine supports Object.defineProperty + * @returns {boolean} returns true if supported + */ + exports.canDefineProperty = function () { + // test needed for broken IE8 implementation + try { + if (Object.defineProperty) { + Object.defineProperty({}, 'x', {}); + return true; + } + } catch (e) {} + + return false; + }; + + /** + * Attach a lazy loading property to a constant. + * The given function `fn` is called once when the property is first requested. + * On older browsers (15 digits + if (digits(x) > 15) { + throw new TypeError('Cannot implicitly convert a number with >15 significant digits to BigNumber ' + + '(value: ' + x + '). ' + + 'Use function bignumber(x) to convert to BigNumber.'); + } + return new math.type.BigNumber(x); + } + }, { + from: 'number', + to: 'Complex', + convert: function (x) { + return new math.type.Complex(x, 0); + } + }, { + from: 'number', + to: 'string', + convert: function (x) { + return x + ''; + } + }, { + from: 'BigNumber', + to: 'Complex', + convert: function (x) { + return new math.type.Complex(x.toNumber(), 0); + } + }, { + from: 'boolean', + to: 'number', + convert: function (x) { + return +x; + } + }, { + from: 'boolean', + to: 'BigNumber', + convert: function (x) { + return new math.type.BigNumber(+x); + } + }, { + from: 'boolean', + to: 'string', + convert: function (x) { + return +x; + } + }, { + from: 'null', + to: 'number', + convert: function () { + return 0; + } + }, { + from: 'null', + to: 'string', + convert: function () { + return 'null'; + } + }, { + from: 'null', + to: 'BigNumber', + convert: function () { + return new math.type.BigNumber(0); + } + }, { + from: 'Array', + to: 'Matrix', + convert: function (array) { + return new math.type.Matrix(array); + } + } + ]; + + return typed; + }; + + +/***/ }, +/* 168 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = function (math, config) { + var object = __webpack_require__(166); + var bignumber = __webpack_require__(213); + var Complex = __webpack_require__(3); + var BigNumber = math.type.BigNumber; + + math['true'] = true; + math['false'] = false; + math['null'] = null; + math['uninitialized'] = __webpack_require__(172).UNINITIALIZED; + + if (config.number === 'bignumber') { + math['Infinity'] = new BigNumber(Infinity); + math['NaN'] = new BigNumber(NaN); + + object.lazy(math, 'pi', function () {return bignumber.pi(config.precision)}); + object.lazy(math, 'tau', function () {return bignumber.tau(config.precision)}); + object.lazy(math, 'e', function () {return bignumber.e(config.precision)}); + object.lazy(math, 'phi', function () {return bignumber.phi(config.precision)}); // golden ratio, (1+sqrt(5))/2 + + // uppercase constants (for compatibility with built-in Math) + object.lazy(math, 'E', function () {return math.e;}); + object.lazy(math, 'LN2', function () {return new BigNumber(2).ln();}); + object.lazy(math, 'LN10', function () {return new BigNumber(10).ln()}); + object.lazy(math, 'LOG2E', function () {return new BigNumber(1).div(new BigNumber(2).ln());}); + object.lazy(math, 'LOG10E', function () {return new BigNumber(1).div(new BigNumber(10).ln())}); + object.lazy(math, 'PI', function () {return math.pi}); + object.lazy(math, 'SQRT1_2', function () {return new BigNumber('0.5').sqrt()}); + object.lazy(math, 'SQRT2', function () {return new BigNumber(2).sqrt()}); + } + else { + math['Infinity'] = Infinity; + math['NaN'] = NaN; + + math.pi = Math.PI; + math.tau = Math.PI * 2; + math.e = Math.E; + math.phi = 1.61803398874989484820458683436563811772030917980576286213545; // golden ratio, (1+sqrt(5))/2 + + // uppercase constants (for compatibility with built-in Math) + math.E = math.e; + math.LN2 = Math.LN2; + math.LN10 = Math.LN10; + math.LOG2E = Math.LOG2E; + math.LOG10E = Math.LOG10E; + math.PI = math.pi; + math.SQRT1_2 = Math.SQRT1_2; + math.SQRT2 = Math.SQRT2; + } + + // complex i + math.i = new Complex(0, 1); + + // meta information + math.version = __webpack_require__(348); + }; + + +/***/ }, +/* 169 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var isFactory = __webpack_require__(166).isFactory; + var traverse = __webpack_require__(166).traverse; + + // TODO: rework the import function to a typed function + + function factory (type, config, load, typed, math) { + /** + * Import functions from an object or a module + * + * Syntax: + * + * math.import(object) + * math.import(object, options) + * + * Where: + * + * - `object: Object` + * An object with functions to be imported. + * - `options: Object` An object with import options. Available options: + * - `override: boolean` + * If true, existing functions will be overwritten. False by default. + * - `wrap: boolean` + * If true, the functions will be wrapped in a wrapper function + * which converts data types like Matrix to primitive data types like Array. + * The wrapper is needed when extending math.js with libraries which do not + * support these data type. False by default. + * + * Examples: + * + * // define new functions and variables + * math.import({ + * myvalue: 42, + * hello: function (name) { + * return 'hello, ' + name + '!'; + * } + * }); + * + * // use the imported function and variable + * math.myvalue * 2; // 84 + * math.hello('user'); // 'hello, user!' + * + * // import the npm module numbers + * // (must be installed first with `npm install numbers`) + * math.import('numbers', {wrap: true}); + * + * math.fibonacci(7); // returns 13 + * + * @param {String | Object} object Object with functions to be imported. + * @param {Object} [options] Import options. + * @return {Object} Returns the imported objects + */ + function math_import(object, options) { + var num = arguments.length; + if (num != 1 && num != 2) { + throw new math.error.ArgumentsError('import', num, 1, 2); + } + + var name; + var opts = { + override: options && options.override || false, + wrap: options && options.wrap || false + }; + + if (typeof object === 'string') { + // a string with a module name + + if (false) { + throw new Error('Cannot load module: require not available.'); + } + + // load the module using require + var _module = __webpack_require__(346)(object); + return math_import(_module, options); + } + else if (isFactory(object)) { + return _importFactory(object); + } + else if (typeof object === 'object') { + // a map with functions + var imported = {}; + + for (name in object) { + if (object.hasOwnProperty(name)) { + var value = object[name]; + if (isSupportedType(value)) { + imported[name] = _import(name, value, opts); + } + else if (isFactory(object)) { + imported[name] = _importFactory(object); + } + else { + imported[name] = math_import(value, options); + } + } + } + + return imported; + } + else { + throw new TypeError('Object or module name expected'); + } + } + + /** + * Add a property to the math namespace and create a chain proxy for it. + * @param {String} name + * @param {*} value + * @param {Object} options See import for a description of the options + * @return {*} Returns the imported value + * @private + */ + function _import(name, value, options) { + // TODO: throw an error when override == false and the name is already defined + if (options.override || math[name] === undefined) { + // add to math namespace + if (options.wrap && typeof value === 'function') { + // create a wrapper around the function + math[name] = function () { + var args = []; + for (var i = 0, len = arguments.length; i < len; i++) { + var arg = arguments[i]; + args[i] = arg && arg.valueOf(); + } + return value.apply(math, args); + }; + if (value && value.transform) { + math[name].transform = value.transform; + } + } + else { + // just create a link to the function or value + math[name] = value; + } + + // register the transform function if any + if (value && value.transform) { + math.expression.transform[name] = value.transform; + } + + // create a proxy for the chain + math.type.Chain.createProxy(name, value); + + return value; + } + } + + /** + * Import an instance of a factory into math.js + * @param {{name: string, factory: function}} factory + * @returns {*} Returns the created and imported instance + * @private + */ + function _importFactory(factory) { + var instance = load(factory); + var namespace = factory.path ? traverse(math, factory.path) : math; + + if (namespace[factory.name]) { + // TODO: add support for merging typed-functions + throw new Error('"' + factory.name + '" already exists'); + } + namespace[factory.name] = instance; + + return instance; + } + + /** + * Check whether given object is a supported type + * @param object + * @return {Boolean} + * @private + */ + function isSupportedType(object) { + return typeof object == 'function' + || typeof object === 'number' + || typeof object === 'string' + || typeof object === 'boolean' + || object === null + || object instanceof type.Unit + || object instanceof type.Complex + } + + return math_import; + } + + exports.math = true; // request access to the math namespace as 5th argument of the factory function + exports.name = 'import'; + exports.factory = factory; + + +/***/ }, +/* 170 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.ArgumentsError = __webpack_require__(176); + exports.DimensionError = __webpack_require__(174); + exports.IndexError = __webpack_require__(173); + exports.UnsupportedTypeError = __webpack_require__(347); + + // TODO: implement an InvalidValueError? + + +/***/ }, +/* 171 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.array = __webpack_require__(172); + exports['boolean'] = __webpack_require__(208); + exports['function'] = __webpack_require__(349); + exports.number = __webpack_require__(175); + exports.bignumber = __webpack_require__(213); + exports.object = __webpack_require__(166); + exports.string = __webpack_require__(214); + exports.types = __webpack_require__(216); + + +/***/ }, +/* 172 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var number = __webpack_require__(175); - var string = __webpack_require__(209); - var object = __webpack_require__(170); + var string = __webpack_require__(214); + var object = __webpack_require__(166); var types = __webpack_require__(216); - var DimensionError = __webpack_require__(169); - var IndexError = __webpack_require__(168); + var DimensionError = __webpack_require__(174); + var IndexError = __webpack_require__(173); var isArray = Array.isArray; @@ -21949,7 +22638,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.isArray = isArray; /***/ }, -/* 168 */ +/* 173 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22000,7 +22689,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 169 */ +/* 174 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -22039,628 +22728,6 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DimensionError; -/***/ }, -/* 170 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var BigNumber = __webpack_require__(348); - - /** - * Clone an object - * - * clone(x) - * - * Can clone any primitive type, array, and object. - * If x has a function clone, this function will be invoked to clone the object. - * - * @param {*} x - * @return {*} clone - */ - exports.clone = function clone(x) { - var type = typeof x; - - // immutable primitive types - if (type === 'number' || type === 'string' || type === 'boolean' || - x === null || x === undefined) { - return x; - } - - // use clone function of the object when available - if (typeof x.clone === 'function') { - return x.clone(); - } - - // array - if (Array.isArray(x)) { - return x.map(function (value) { - return clone(value); - }); - } - - if (x instanceof Number) return new Number(x.valueOf()); - if (x instanceof String) return new String(x.valueOf()); - if (x instanceof Boolean) return new Boolean(x.valueOf()); - if (x instanceof Date) return new Date(x.valueOf()); - if (x instanceof BigNumber) return x; // bignumbers are immutable - if (x instanceof RegExp) throw new TypeError('Cannot clone ' + x); // TODO: clone a RegExp - - // object - var m = {}; - for (var key in x) { - if (x.hasOwnProperty(key)) { - m[key] = clone(x[key]); - } - } - return m; - }; - - /** - * Extend object a with the properties of object b - * @param {Object} a - * @param {Object} b - * @return {Object} a - */ - exports.extend = function(a, b) { - for (var prop in b) { - if (b.hasOwnProperty(prop)) { - a[prop] = b[prop]; - } - } - return a; - }; - - /** - * Deep extend an object a with the properties of object b - * @param {Object} a - * @param {Object} b - * @returns {Object} - */ - exports.deepExtend = function deepExtend (a, b) { - // TODO: add support for Arrays to deepExtend - if (Array.isArray(b)) { - throw new TypeError('Arrays are not supported by deepExtend'); - } - - for (var prop in b) { - if (b.hasOwnProperty(prop)) { - if (b[prop] && b[prop].constructor === Object) { - if (a[prop] === undefined) { - a[prop] = {}; - } - if (a[prop].constructor === Object) { - deepExtend(a[prop], b[prop]); - } - else { - a[prop] = b[prop]; - } - } else if (Array.isArray(b[prop])) { - throw new TypeError('Arrays are not supported by deepExtend'); - } else { - a[prop] = b[prop]; - } - } - } - return a; - }; - - /** - * Deep test equality of all fields in two pairs of arrays or objects. - * @param {Array | Object} a - * @param {Array | Object} b - * @returns {boolean} - */ - exports.deepEqual = function deepEqual (a, b) { - var prop, i, len; - if (Array.isArray(a)) { - if (!Array.isArray(b)) { - return false; - } - - if (a.length != b.length) { - return false; - } - - for (i = 0, len = a.length; i < len; i++) { - if (!exports.deepEqual(a[i], b[i])) { - return false; - } - } - return true; - } - else if (a instanceof Object) { - if (Array.isArray(b) || !(b instanceof Object)) { - return false; - } - - for (prop in a) { - //noinspection JSUnfilteredForInLoop - if (!exports.deepEqual(a[prop], b[prop])) { - return false; - } - } - for (prop in b) { - //noinspection JSUnfilteredForInLoop - if (!exports.deepEqual(a[prop], b[prop])) { - return false; - } - } - return true; - } - else { - return (typeof a === typeof b) && (a == b); - } - }; - - /** - * Test whether the current JavaScript engine supports Object.defineProperty - * @returns {boolean} returns true if supported - */ - exports.canDefineProperty = function () { - // test needed for broken IE8 implementation - try { - if (Object.defineProperty) { - Object.defineProperty({}, 'x', {}); - return true; - } - } catch (e) {} - - return false; - }; - - /** - * Attach a lazy loading property to a constant. - * The given function `fn` is called once when the property is first requested. - * On older browsers (15 digits - if (digits(x) > 15) { - throw new TypeError('Cannot implicitly convert a number with >15 significant digits to BigNumber ' + - '(value: ' + x + '). ' + - 'Use function bignumber(x) to convert to BigNumber.'); - } - return new math.type.BigNumber(x); - } - }, { - from: 'number', - to: 'Complex', - convert: function (x) { - return new math.type.Complex(x, 0); - } - }, { - from: 'number', - to: 'string', - convert: function (x) { - return x + ''; - } - }, { - from: 'BigNumber', - to: 'Complex', - convert: function (x) { - return new math.type.Complex(x.toNumber(), 0); - } - }, { - from: 'boolean', - to: 'number', - convert: function (x) { - return +x; - } - }, { - from: 'boolean', - to: 'BigNumber', - convert: function (x) { - return new math.type.BigNumber(+x); - } - }, { - from: 'boolean', - to: 'string', - convert: function (x) { - return +x; - } - }, { - from: 'null', - to: 'number', - convert: function () { - return 0; - } - }, { - from: 'null', - to: 'string', - convert: function () { - return 'null'; - } - }, { - from: 'null', - to: 'BigNumber', - convert: function () { - return new math.type.BigNumber(0); - } - }, { - from: 'Array', - to: 'Matrix', - convert: function (array) { - return new math.type.Matrix(array); - } - } - ]; - - return typed; - }; - - -/***/ }, -/* 172 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var isFactory = __webpack_require__(170).isFactory; - var traverse = __webpack_require__(170).traverse; - - // TODO: rework the import function to a typed function - - function factory (type, config, load, typed, math) { - /** - * Import functions from an object or a module - * - * Syntax: - * - * math.import(object) - * math.import(object, options) - * - * Where: - * - * - `object: Object` - * An object with functions to be imported. - * - `options: Object` An object with import options. Available options: - * - `override: boolean` - * If true, existing functions will be overwritten. False by default. - * - `wrap: boolean` - * If true, the functions will be wrapped in a wrapper function - * which converts data types like Matrix to primitive data types like Array. - * The wrapper is needed when extending math.js with libraries which do not - * support these data type. False by default. - * - * Examples: - * - * // define new functions and variables - * math.import({ - * myvalue: 42, - * hello: function (name) { - * return 'hello, ' + name + '!'; - * } - * }); - * - * // use the imported function and variable - * math.myvalue * 2; // 84 - * math.hello('user'); // 'hello, user!' - * - * // import the npm module numbers - * // (must be installed first with `npm install numbers`) - * math.import('numbers', {wrap: true}); - * - * math.fibonacci(7); // returns 13 - * - * @param {String | Object} object Object with functions to be imported. - * @param {Object} [options] Import options. - * @return {Object} Returns the imported objects - */ - function math_import(object, options) { - var num = arguments.length; - if (num != 1 && num != 2) { - throw new math.error.ArgumentsError('import', num, 1, 2); - } - - var name; - var opts = { - override: options && options.override || false, - wrap: options && options.wrap || false - }; - - if (typeof object === 'string') { - // a string with a module name - - if (false) { - throw new Error('Cannot load module: require not available.'); - } - - // load the module using require - var _module = __webpack_require__(346)(object); - return math_import(_module, options); - } - else if (isFactory(object)) { - return _importFactory(object); - } - else if (typeof object === 'object') { - // a map with functions - var imported = {}; - - for (name in object) { - if (object.hasOwnProperty(name)) { - var value = object[name]; - if (isSupportedType(value)) { - imported[name] = _import(name, value, opts); - } - else if (isFactory(object)) { - imported[name] = _importFactory(object); - } - else { - imported[name] = math_import(value, options); - } - } - } - - return imported; - } - else { - throw new TypeError('Object or module name expected'); - } - } - - /** - * Add a property to the math namespace and create a chain proxy for it. - * @param {String} name - * @param {*} value - * @param {Object} options See import for a description of the options - * @return {*} Returns the imported value - * @private - */ - function _import(name, value, options) { - // TODO: throw an error when override == false and the name is already defined - if (options.override || math[name] === undefined) { - // add to math namespace - if (options.wrap && typeof value === 'function') { - // create a wrapper around the function - math[name] = function () { - var args = []; - for (var i = 0, len = arguments.length; i < len; i++) { - var arg = arguments[i]; - args[i] = arg && arg.valueOf(); - } - return value.apply(math, args); - }; - if (value && value.transform) { - math[name].transform = value.transform; - } - } - else { - // just create a link to the function or value - math[name] = value; - } - - // register the transform function if any - if (value && value.transform) { - math.expression.transform[name] = value.transform; - } - - // create a proxy for the chain - math.type.Chain.createProxy(name, value); - - return value; - } - } - - /** - * Import an instance of a factory into math.js - * @param {{name: string, factory: function}} factory - * @returns {*} Returns the created and imported instance - * @private - */ - function _importFactory(factory) { - var instance = load(factory); - var namespace = factory.path ? traverse(math, factory.path) : math; - - if (namespace[factory.name]) { - // TODO: add support for merging typed-functions - throw new Error('"' + factory.name + '" already exists'); - } - namespace[factory.name] = instance; - - return instance; - } - - /** - * Check whether given object is a supported type - * @param object - * @return {Boolean} - * @private - */ - function isSupportedType(object) { - return typeof object == 'function' - || typeof object === 'number' - || typeof object === 'string' - || typeof object === 'boolean' - || object === null - || object instanceof type.Unit - || object instanceof type.Complex - } - - return math_import; - } - - exports.math = true; // request access to the math namespace as 5th argument of the factory function - exports.name = 'import'; - exports.factory = factory; - - -/***/ }, -/* 173 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - module.exports = function (math, config) { - var object = __webpack_require__(170); - var bignumber = __webpack_require__(214); - var Complex = __webpack_require__(3); - var BigNumber = math.type.BigNumber; - - math['true'] = true; - math['false'] = false; - math['null'] = null; - math['uninitialized'] = __webpack_require__(167).UNINITIALIZED; - - if (config.number === 'bignumber') { - math['Infinity'] = new BigNumber(Infinity); - math['NaN'] = new BigNumber(NaN); - - object.lazy(math, 'pi', function () {return bignumber.pi(config.precision)}); - object.lazy(math, 'tau', function () {return bignumber.tau(config.precision)}); - object.lazy(math, 'e', function () {return bignumber.e(config.precision)}); - object.lazy(math, 'phi', function () {return bignumber.phi(config.precision)}); // golden ratio, (1+sqrt(5))/2 - - // uppercase constants (for compatibility with built-in Math) - object.lazy(math, 'E', function () {return math.e;}); - object.lazy(math, 'LN2', function () {return new BigNumber(2).ln();}); - object.lazy(math, 'LN10', function () {return new BigNumber(10).ln()}); - object.lazy(math, 'LOG2E', function () {return new BigNumber(1).div(new BigNumber(2).ln());}); - object.lazy(math, 'LOG10E', function () {return new BigNumber(1).div(new BigNumber(10).ln())}); - object.lazy(math, 'PI', function () {return math.pi}); - object.lazy(math, 'SQRT1_2', function () {return new BigNumber('0.5').sqrt()}); - object.lazy(math, 'SQRT2', function () {return new BigNumber(2).sqrt()}); - } - else { - math['Infinity'] = Infinity; - math['NaN'] = NaN; - - math.pi = Math.PI; - math.tau = Math.PI * 2; - math.e = Math.E; - math.phi = 1.61803398874989484820458683436563811772030917980576286213545; // golden ratio, (1+sqrt(5))/2 - - // uppercase constants (for compatibility with built-in Math) - math.E = math.e; - math.LN2 = Math.LN2; - math.LN10 = Math.LN10; - math.LOG2E = Math.LOG2E; - math.LOG10E = Math.LOG10E; - math.PI = math.pi; - math.SQRT1_2 = Math.SQRT1_2; - math.SQRT2 = Math.SQRT2; - } - - // complex i - math.i = new Complex(0, 1); - - // meta information - math.version = __webpack_require__(349); - }; - - -/***/ }, -/* 174 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.ArgumentsError = __webpack_require__(176); - exports.DimensionError = __webpack_require__(169); - exports.IndexError = __webpack_require__(168); - exports.UnsupportedTypeError = __webpack_require__(350); - - // TODO: implement an InvalidValueError? - - /***/ }, /* 175 */ /***/ function(module, exports, __webpack_require__) { @@ -22972,7 +23039,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Node = __webpack_require__(189), - string = __webpack_require__(209), + string = __webpack_require__(214), isArray = Array.isArray, isNode = Node.isNode; @@ -23244,7 +23311,7 @@ return /******/ (function(modules) { // webpackBootstrap operators = __webpack_require__(354), latex = __webpack_require__(353), - isString = __webpack_require__(209).isString; + isString = __webpack_require__(214).isString; /** * @constructor AssignmentNode @@ -23352,10 +23419,10 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(189); var latex = __webpack_require__(353); - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var Complex = __webpack_require__(3); var Unit = __webpack_require__(7); - var util = __webpack_require__(166); + var util = __webpack_require__(171); var operators = __webpack_require__(354); var isString = util.string.isString; var isNumber = util.number.isNumber; @@ -23522,9 +23589,9 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Node = __webpack_require__(189); - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var type = __webpack_require__(216).type; - var isString = __webpack_require__(209).isString; + var isString = __webpack_require__(214).isString; /** * A ConstantNode holds a constant value like a number or string. A ConstantNode @@ -23713,7 +23780,7 @@ return /******/ (function(modules) { // webpackBootstrap var keywords = __webpack_require__(352); var latex = __webpack_require__(353); var operators = __webpack_require__(354); - var isString = __webpack_require__(209).isString; + var isString = __webpack_require__(214).isString; var isArray = Array.isArray; /** @@ -23847,9 +23914,9 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(189); var RangeNode = __webpack_require__(186); - var SymbolNode = __webpack_require__(188); + var SymbolNode = __webpack_require__(187); - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var Range = __webpack_require__(4); var isNode = Node.isNode; @@ -24077,7 +24144,7 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(189), ConstantNode = __webpack_require__(181), - SymbolNode = __webpack_require__(188), + SymbolNode = __webpack_require__(187), FunctionNode = __webpack_require__(185), latex = __webpack_require__(353), operators = __webpack_require__(354), @@ -24439,7 +24506,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var Node = __webpack_require__(189); - var SymbolNode = __webpack_require__(188); + var SymbolNode = __webpack_require__(187); var latex = __webpack_require__(353); var isNode = Node.isNode; @@ -24718,116 +24785,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Node = __webpack_require__(189), - IndexNode = __webpack_require__(183); - - /** - * @constructor UpdateNode - * @extends {Node} - * Update a matrix subset, like A[2,3] = 4.5 - * - * @param {IndexNode} index IndexNode containing symbol and ranges - * @param {Node} expr The expression defining the symbol - */ - function UpdateNode(index, expr) { - if (!(this instanceof UpdateNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (!(index instanceof IndexNode)) { - throw new TypeError('Expected IndexNode for parameter "index"'); - } - if (!(expr instanceof Node)) { - throw new TypeError('Expected Node for parameter "expr"'); - } - - this.index = index; - this.expr = expr; - } - - UpdateNode.prototype = new Node(); - - UpdateNode.prototype.type = 'UpdateNode'; - - /** - * Compile the node to javascript code - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @return {String} js - * @private - */ - UpdateNode.prototype._compile = function (defs) { - var lhs = (this.index.objectName() in defs.args) - ? this.name + ' = ' // this is a FunctionAssignment argument - : 'scope["' + this.index.objectName() + '\"]'; - - var rhs = this.index.compileSubset(defs, this.expr._compile(defs)); - - return lhs + ' = ' + rhs; - }; - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - UpdateNode.prototype.forEach = function (callback) { - callback(this.index, 'index', this); - callback(this.expr, 'expr', this); - }; - - /** - * Create a new UpdateNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {UpdateNode} Returns a transformed copy of the node - */ - UpdateNode.prototype.map = function (callback) { - return new UpdateNode( - this._ifNode(callback(this.index, 'index', this)), - this._ifNode(callback(this.expr, 'expr', this)) - ); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {UpdateNode} - */ - UpdateNode.prototype.clone = function() { - return new UpdateNode(this.index, this.expr); - }; - - /** - * Get string representation - * @return {String} - */ - UpdateNode.prototype.toString = function() { - return this.index.toString() + ' = ' + this.expr.toString(); - }; - - /** - * Get LaTeX representation - * @param {Object|function} callback(s) - * @return {String} - */ - UpdateNode.prototype._toTex = function(callbacks) { - return this.index.toTex(callbacks) + ':=' + this.expr.toTex(callbacks); - }; - - module.exports = UpdateNode; - - -/***/ }, -/* 188 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - var Node = __webpack_require__(189), Unit = __webpack_require__(7), latex = __webpack_require__(353), - isString = __webpack_require__(209).isString; + isString = __webpack_require__(214).isString; /** * @constructor SymbolNode @@ -24944,6 +24906,111 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = SymbolNode; +/***/ }, +/* 188 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(189), + IndexNode = __webpack_require__(183); + + /** + * @constructor UpdateNode + * @extends {Node} + * Update a matrix subset, like A[2,3] = 4.5 + * + * @param {IndexNode} index IndexNode containing symbol and ranges + * @param {Node} expr The expression defining the symbol + */ + function UpdateNode(index, expr) { + if (!(this instanceof UpdateNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (!(index instanceof IndexNode)) { + throw new TypeError('Expected IndexNode for parameter "index"'); + } + if (!(expr instanceof Node)) { + throw new TypeError('Expected Node for parameter "expr"'); + } + + this.index = index; + this.expr = expr; + } + + UpdateNode.prototype = new Node(); + + UpdateNode.prototype.type = 'UpdateNode'; + + /** + * Compile the node to javascript code + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @return {String} js + * @private + */ + UpdateNode.prototype._compile = function (defs) { + var lhs = (this.index.objectName() in defs.args) + ? this.name + ' = ' // this is a FunctionAssignment argument + : 'scope["' + this.index.objectName() + '\"]'; + + var rhs = this.index.compileSubset(defs, this.expr._compile(defs)); + + return lhs + ' = ' + rhs; + }; + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + UpdateNode.prototype.forEach = function (callback) { + callback(this.index, 'index', this); + callback(this.expr, 'expr', this); + }; + + /** + * Create a new UpdateNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {UpdateNode} Returns a transformed copy of the node + */ + UpdateNode.prototype.map = function (callback) { + return new UpdateNode( + this._ifNode(callback(this.index, 'index', this)), + this._ifNode(callback(this.expr, 'expr', this)) + ); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {UpdateNode} + */ + UpdateNode.prototype.clone = function() { + return new UpdateNode(this.index, this.expr); + }; + + /** + * Get string representation + * @return {String} + */ + UpdateNode.prototype.toString = function() { + return this.index.toString() + ' = ' + this.expr.toString(); + }; + + /** + * Get LaTeX representation + * @param {Object|function} callback(s) + * @return {String} + */ + UpdateNode.prototype._toTex = function(callbacks) { + return this.index.toTex(callbacks) + ':=' + this.expr.toTex(callbacks); + }; + + module.exports = UpdateNode; + + /***/ }, /* 189 */ /***/ function(module, exports, __webpack_require__) { @@ -25445,17 +25512,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { module.exports = { - 'name': 'NaN', + 'name': 'null', 'category': 'Constants', 'syntax': [ - 'NaN' + 'null' ], - 'description': 'Not a number', + 'description': 'Value null', 'examples': [ - 'NaN', - '0 / 0' + 'null' ], - 'seealso': [] + 'seealso': ['true', 'false'] }; @@ -25483,16 +25549,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { module.exports = { - 'name': 'null', + 'name': 'NaN', 'category': 'Constants', 'syntax': [ - 'null' + 'NaN' ], - 'description': 'Value null', + 'description': 'Not a number', 'examples': [ - 'null' + 'NaN', + '0 / 0' ], - 'seealso': ['true', 'false'] + 'seealso': [] }; @@ -25516,25 +25583,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 202 */ -/***/ function(module, exports, __webpack_require__) { - - module.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': [] - }; - - -/***/ }, -/* 203 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25553,7 +25601,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 204 */ +/* 203 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25571,6 +25619,25 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 204 */ +/***/ function(module, exports, __webpack_require__) { + + module.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': [] + }; + + /***/ }, /* 205 */ /***/ function(module, exports, __webpack_require__) { @@ -25611,8 +25678,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 207 */ /***/ function(module, exports, __webpack_require__) { - var DimensionError = __webpack_require__(169); - var IndexError = __webpack_require__(168); + var DimensionError = __webpack_require__(174); + var IndexError = __webpack_require__(173); /** * Transform zero-based indices to one-based indices in errors @@ -25650,113 +25717,59 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var number = __webpack_require__(175); - var bignumber = __webpack_require__(214); - var BigNumber = __webpack_require__(348); + function factory(type, config, load, typed) { - /** - * Test whether value is a String - * @param {*} value - * @return {Boolean} isString - */ - exports.isString = function(value) { - return (value instanceof String) || (typeof value == 'string'); - }; + /** + * Add two scalar values, `x + y`. + * This function is meant for internal use: it is used by the public function + * `add` + * + * This function does not support collections (Array or Matrix), and does + * not validate the number of of inputs. + * + * @param {Number | BigNumber | Boolean | Complex | Unit | null} x First value to add + * @param {Number | BigNumber | Boolean | Complex | null} y Second value to add + * @return {Number | BigNumber | Complex | Unit} Sum of `x` and `y` + * @private + */ + var addScalar = typed('addScalar', { - /** - * Check if a text ends with a certain string. - * @param {String} text - * @param {String} search - */ - exports.endsWith = function(text, search) { - var start = text.length - search.length; - var end = text.length; - return (text.substring(start, end) === search); - }; + 'number, number': function (x, y) { + return x + y; + }, - /** - * Format a value of any type into a string. - * - * Usage: - * math.format(value) - * math.format(value, precision) - * - * If value is a function, the returned string is 'function' unless the function - * has a property `description`, in that case this properties value is returned. - * - * Example usage: - * math.format(2/7); // '0.2857142857142857' - * math.format(math.pi, 3); // '3.14' - * math.format(new Complex(2, 3)); // '2 + 3i' - * math.format('hello'); // '"hello"' - * - * @param {*} value Value to be stringified - * @param {Object | Number | Function} [options] Formatting options. See - * lib/util/number:format for a - * description of the available - * options. - * @return {String} str - */ - exports.format = function(value, options) { - if (number.isNumber(value)) { - return number.format(value, options); - } + 'Complex, Complex': function (x, y) { + return new type.Complex( + x.re + y.re, + x.im + y.im + ); + }, - if (value instanceof BigNumber) { - return bignumber.format(value, options); - } + 'BigNumber, BigNumber': function (x, y) { + return x.plus(y); + }, - if (Array.isArray(value)) { - return formatArray(value, options); - } + 'Unit, Unit': function (x, y) { + if (x.value == null) throw new Error('Parameter x contains a unit with undefined value'); + if (y.value == null) throw new Error('Parameter y contains a unit with undefined value'); + if (!x.equalBase(y)) throw new Error('Units do not match'); - if (exports.isString(value)) { - return '"' + value + '"'; - } - - if (typeof value === 'function') { - return value.syntax ? value.syntax + '' : 'function'; - } - - if (value instanceof Object) { - if (typeof value.format === 'function') { - return value.format(options); + var res = x.clone(); + res.value += y.value; + res.fixPrefix = false; + return res; + }, + + 'string, string': function (x, y) { + return x + y; } - else { - return value.toString(); - } - } + }); - return String(value); - }; - - /** - * Recursively format an n-dimensional matrix - * Example output: "[[1, 2], [3, 4]]" - * @param {Array} array - * @param {Object | Number | Function} [options] Formatting options. See - * lib/util/number:format for a - * description of the available - * options. - * @returns {String} str - */ - function formatArray (array, options) { - if (Array.isArray(array)) { - var str = '['; - var len = array.length; - for (var i = 0; i < len; i++) { - if (i != 0) { - str += ', '; - } - str += formatArray(array[i], options); - } - str += ']'; - return str; - } - else { - return exports.format(array, options); - } + return addScalar; } + + exports.name = 'addScalar'; + exports.factory = factory; /***/ }, @@ -25899,67 +25912,6 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - function factory(type, config, load, typed) { - - /** - * Add two scalar values, `x + y`. - * This function is meant for internal use: it is used by the public function - * `add` - * - * This function does not support collections (Array or Matrix), and does - * not validate the number of of inputs. - * - * @param {Number | BigNumber | Boolean | Complex | Unit | null} x First value to add - * @param {Number | BigNumber | Boolean | Complex | null} y Second value to add - * @return {Number | BigNumber | Complex | Unit} Sum of `x` and `y` - * @private - */ - var addScalar = typed('addScalar', { - - 'number, number': function (x, y) { - return x + y; - }, - - 'Complex, Complex': function (x, y) { - return new type.Complex( - x.re + y.re, - x.im + y.im - ); - }, - - 'BigNumber, BigNumber': function (x, y) { - return x.plus(y); - }, - - 'Unit, Unit': function (x, y) { - if (x.value == null) throw new Error('Parameter x contains a unit with undefined value'); - if (y.value == null) throw new Error('Parameter y contains a unit with undefined value'); - if (!x.equalBase(y)) throw new Error('Units do not match'); - - var res = x.clone(); - res.value += y.value; - res.fixPrefix = false; - return res; - }, - - 'string, string': function (x, y) { - return x + y; - } - }); - - return addScalar; - } - - exports.name = 'addScalar'; - exports.factory = factory; - - -/***/ }, -/* 213 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - function factory(type, config, load, typed) { /** * Divide two scalar values, `x / y`. @@ -26024,15 +25976,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 214 */ +/* 213 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(348); + var BigNumber = __webpack_require__(350); var isNumber = __webpack_require__(175).isNumber; var digits = __webpack_require__(175).digits; - var memoize = __webpack_require__(347).memoize; + var memoize = __webpack_require__(349).memoize; /** * Test whether value is a BigNumber @@ -27453,6 +27405,121 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 214 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var number = __webpack_require__(175); + var bignumber = __webpack_require__(213); + var BigNumber = __webpack_require__(350); + + /** + * Test whether value is a String + * @param {*} value + * @return {Boolean} isString + */ + exports.isString = function(value) { + return (value instanceof String) || (typeof value == 'string'); + }; + + /** + * Check if a text ends with a certain string. + * @param {String} text + * @param {String} search + */ + exports.endsWith = function(text, search) { + var start = text.length - search.length; + var end = text.length; + return (text.substring(start, end) === search); + }; + + /** + * Format a value of any type into a string. + * + * Usage: + * math.format(value) + * math.format(value, precision) + * + * If value is a function, the returned string is 'function' unless the function + * has a property `description`, in that case this properties value is returned. + * + * Example usage: + * math.format(2/7); // '0.2857142857142857' + * math.format(math.pi, 3); // '3.14' + * math.format(new Complex(2, 3)); // '2 + 3i' + * math.format('hello'); // '"hello"' + * + * @param {*} value Value to be stringified + * @param {Object | Number | Function} [options] Formatting options. See + * lib/util/number:format for a + * description of the available + * options. + * @return {String} str + */ + exports.format = function(value, options) { + if (number.isNumber(value)) { + return number.format(value, options); + } + + if (value instanceof BigNumber) { + return bignumber.format(value, options); + } + + if (Array.isArray(value)) { + return formatArray(value, options); + } + + if (exports.isString(value)) { + return '"' + value + '"'; + } + + if (typeof value === 'function') { + return value.syntax ? value.syntax + '' : 'function'; + } + + if (value instanceof Object) { + if (typeof value.format === 'function') { + return value.format(options); + } + else { + return value.toString(); + } + } + + return String(value); + }; + + /** + * Recursively format an n-dimensional matrix + * Example output: "[[1, 2], [3, 4]]" + * @param {Array} array + * @param {Object | Number | Function} [options] Formatting options. See + * lib/util/number:format for a + * description of the available + * options. + * @returns {String} str + */ + function formatArray (array, options) { + if (Array.isArray(array)) { + var str = '['; + var len = array.length; + for (var i = 0; i < len; i++) { + if (i != 0) { + str += ', '; + } + str += formatArray(array[i], options); + } + str += ']'; + return str; + } + else { + return exports.format(array, options); + } + } + + /***/ }, /* 215 */ /***/ function(module, exports, __webpack_require__) { @@ -27465,8 +27532,8 @@ return /******/ (function(modules) { // webpackBootstrap // TODO: rework to a typed function function factory (type, config, load, typed) { var collection = load(__webpack_require__(2)); - var matrix = load(__webpack_require__(75)); - var array = __webpack_require__(167); + var matrix = load(__webpack_require__(73)); + var array = __webpack_require__(172); var isCollection = collection.isCollection; @@ -28395,6 +28462,28 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 246 */ +/***/ function(module, exports, __webpack_require__) { + + module.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' + ] + }; + + +/***/ }, +/* 247 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28416,28 +28505,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 247 */ -/***/ function(module, exports, __webpack_require__) { - - module.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' - ] - }; - - /***/ }, /* 248 */ /***/ function(module, exports, __webpack_require__) { @@ -28685,31 +28752,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 258 */ -/***/ function(module, exports, __webpack_require__) { - - module.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' - ] - }; - - -/***/ }, -/* 259 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28739,6 +28781,31 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 259 */ +/***/ function(module, exports, __webpack_require__) { + + module.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' + ] + }; + + /***/ }, /* 260 */ /***/ function(module, exports, __webpack_require__) { @@ -29802,6 +29869,34 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 303 */ +/***/ function(module, exports, __webpack_require__) { + + module.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' + ] + }; + + +/***/ }, +/* 304 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -29833,34 +29928,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 304 */ -/***/ function(module, exports, __webpack_require__) { - - module.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' - ] - }; - - /***/ }, /* 305 */ /***/ function(module, exports, __webpack_require__) { @@ -30735,27 +30802,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 342 */ -/***/ function(module, exports, __webpack_require__) { - - module.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': [] - }; - - -/***/ }, -/* 343 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -30776,6 +30822,27 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 343 */ +/***/ function(module, exports, __webpack_require__) { + + module.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': [] + }; + + /***/ }, /* 344 */ /***/ function(module, exports, __webpack_require__) { @@ -30784,11 +30851,11 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var divideScalar = load(__webpack_require__(213)); - var multiply = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(55)); - var equal = load(__webpack_require__(115)); + var matrix = load(__webpack_require__(73)); + var divideScalar = load(__webpack_require__(212)); + var multiply = load(__webpack_require__(47)); + var subtract = load(__webpack_require__(53)); + var equal = load(__webpack_require__(113)); var substitutionValidation = load(__webpack_require__(355)); @@ -30964,11 +31031,11 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(75)); - var divideScalar = load(__webpack_require__(213)); - var multiply = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(55)); - var equal = load(__webpack_require__(115)); + var matrix = load(__webpack_require__(73)); + var divideScalar = load(__webpack_require__(212)); + var multiply = load(__webpack_require__(47)); + var subtract = load(__webpack_require__(53)); + var equal = load(__webpack_require__(113)); var substitutionValidation = load(__webpack_require__(355)); @@ -31140,26 +31207,26 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var map = { - "./clone": 155, - "./clone.js": 155, - "./config": 156, - "./config.js": 156, - "./filter": 157, - "./filter.js": 157, - "./forEach": 163, - "./forEach.js": 163, - "./format": 158, - "./format.js": 158, - "./import": 172, - "./import.js": 172, - "./map": 159, - "./map.js": 159, - "./print": 160, - "./print.js": 160, - "./sort": 161, - "./sort.js": 161, - "./typeof": 162, - "./typeof.js": 162 + "./clone": 153, + "./clone.js": 153, + "./config": 154, + "./config.js": 154, + "./filter": 155, + "./filter.js": 155, + "./forEach": 161, + "./forEach.js": 161, + "./format": 156, + "./format.js": 156, + "./import": 169, + "./import.js": 169, + "./map": 157, + "./map.js": 157, + "./print": 158, + "./print.js": 158, + "./sort": 159, + "./sort.js": 159, + "./typeof": 160, + "./typeof.js": 160 }; function webpackContext(req) { return __webpack_require__(webpackContextResolve(req)); @@ -31177,6 +31244,58 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 347 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Create a TypeError with message: + * 'Function does not support a parameter of type '; + * @param {String} fn Function name + * @param {*...} [types] The types of the function arguments + * @extends TypeError + */ + function UnsupportedTypeError(fn, types) { + if (!(this instanceof UnsupportedTypeError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.fn = fn; + this.types = Array.prototype.splice.call(arguments, 1); + + if (!fn) { + this.message = 'Unsupported type of argument'; + } + else { + if (this.types.length == 0) { + this.message = 'Unsupported type of argument in function ' + fn; + } + else { + this.message = 'Function ' + fn + '(' + this.types.join(', ') + ') not supported'; + } + } + + this.stack = (new Error()).stack; + } + + UnsupportedTypeError.prototype = new TypeError(); + UnsupportedTypeError.prototype.constructor = TypeError; + UnsupportedTypeError.prototype.name = 'UnsupportedTypeError'; + + module.exports = UnsupportedTypeError; + + +/***/ }, +/* 348 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = '2.0.0-SNAPSHOT'; + // Note: This file is automatically generated when building math.js. + // Changes made in this file will be overwritten. + + +/***/ }, +/* 349 */ /***/ function(module, exports, __webpack_require__) { // function utils @@ -31205,7 +31324,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 348 */ +/* 350 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v4.0.2 https://github.com/MikeMcl/decimal.js/LICENCE */ @@ -35270,58 +35389,6 @@ return /******/ (function(modules) { // webpackBootstrap })(this); -/***/ }, -/* 349 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = '2.0.0-SNAPSHOT'; - // Note: This file is automatically generated when building math.js. - // Changes made in this file will be overwritten. - - -/***/ }, -/* 350 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create a TypeError with message: - * 'Function does not support a parameter of type '; - * @param {String} fn Function name - * @param {*...} [types] The types of the function arguments - * @extends TypeError - */ - function UnsupportedTypeError(fn, types) { - if (!(this instanceof UnsupportedTypeError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.fn = fn; - this.types = Array.prototype.splice.call(arguments, 1); - - if (!fn) { - this.message = 'Unsupported type of argument'; - } - else { - if (this.types.length == 0) { - this.message = 'Unsupported type of argument in function ' + fn; - } - else { - this.message = 'Function ' + fn + '(' + this.types.join(', ') + ') not supported'; - } - } - - this.stack = (new Error()).stack; - } - - UnsupportedTypeError.prototype = new TypeError(); - UnsupportedTypeError.prototype.constructor = TypeError; - UnsupportedTypeError.prototype.name = 'UnsupportedTypeError'; - - module.exports = UnsupportedTypeError; - - /***/ }, /* 351 */ /***/ function(module, exports, __webpack_require__) { @@ -36221,7 +36288,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(166); + var util = __webpack_require__(171); var string = util.string; var array = util.array; diff --git a/dist/math.map b/dist/math.map index 61effc26e..91984b355 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","math","loader","_config","expression","node","docs","type","Complex","Range","Index","Unit","Help","ResultSet","transform","concat","filter","forEach","index","map","max","mean","min","range","subset","Chain","createProxy","isFactory","load","Error","instance","factories","indexOf","typed","push","instances","Object","matrix","number","precision","epsilon","error","_reduce","mat","dim","callback","i","ret","val","tran","Array","isArray","_switch","length","j","I","J","tmp","collection","argsToArray","args","array","Matrix","valueOf","util","isCollection","x","deepMap","skipZeros","deepMap2","array1","array2","res","len","DimensionError","reduce","size","arraySize","IndexError","deepForEach","ii","value","name","re","im","SyntaxError","arguments","arg","construct","fromPolar","r","phi","isNumber","TypeError","skipWhitespace","next","isDigitDot","isDigit","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","isUnit","isString","string","isComplex","parse","str","first","Number","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","Math","cos","sin","prototype","toPolar","sqrt","atan2","clone","equals","other","format","options","strRe","strIm","pow","abs","toString","toJSON","mathjs","fromJSON","json","start","end","step","parseFloat","split","nums","invalid","some","num","isNaN","isRange","object","diff","sign","ceil","undefined","obj","toArray","ranges","_ranges","_isScalar","_createRange","primitive","isInteger","isIndex","apply","values","isScalar","row","strings","join","isMatrix","storage","constructor","_storage","replacement","defaultValue","get","set","resize","path","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","hasOwnProperty","endsWith","prefixLen","prefixName","prefixes","err","offset","_denormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","LN10","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","E","Z","Y","d","u","n","f","a","z","y","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","b","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","e","seealso","prop","entries","BigNumber","Decimal","convert","digits","FibonacciHeap","_minimum","_size","smaller","larger","oneOverLogPhi","insert","key","degree","minimum","left","right","clear","isEmpty","extractMinimum","numberOfChildren","child","tempRight","parent","_findMinimumNode","remove","_decreaseKey","_cut","_cascadingCut","mark","_linkNodes","floor","numRoots","temp","ArgumentsError","extra_nodes","nodes","parseStart","elem","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","ConstantNode","parseFunctionAssignment","BlockNode","parseAssignment","valid","parseConditional","SymbolNode","AssignmentNode","IndexNode","UpdateNode","FunctionNode","FunctionAssignmentNode","parseLogicalOr","prev","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","fn","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","ArrayNode","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","Parser","scope","_parse","compile","Node","LN2","LOG2E","LOG10E","NaN","pi","PI","SQRT1_2","SQRT2","tau","version","add","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","gcd","lcm","log10","multiply","norm","nthRoot","round","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","bignumber","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","trace","transpose","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","deepEqual","largerEq","smallerEq","unequal","median","prod","std","sum","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","SparseMatrix","data","_createFromMatrix","ptr","_values","_index","_ptr","_datatype","datatype","_createFromArray","types","equal","source","columns","v","_getsubset","_setsubset","validateIndex","_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","diagonal","kSuper","kSub","_value","ms","swapRows","_swapRows","_forEachRow","kx","ky","vx","vy","sparse","DenseMatrix","_data","preprocess","_get","_getSubmatrix","dims","last","_set","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","index_i","recurse","vi","dense","Spa","_heap","accumulate","from","heap","swap","nodei","nodej","errorTransform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","UnsupportedTypeError","_mapArray","arrayIn","slice","done","arg0","arg1","Array | Matrix","sparseScatter","addScalar","multiplyScalar","any, any","Matrix, Matrix","xsize","ysize","_addSparseMatrixSparseMatrix","_addSparseMatrixMatrix","_addMatrixSparseMatrix","_addMatrixMatrix","Array, Array","Array, Matrix","Matrix, Array","Matrix, any","_addSparseMatrixScalar","any, Matrix","Array, any","any, Array","asize","avalues","aindex","aptr","cvalues","cindex","cptr","bsize","RangeError","adt","bvalues","bdt","dt","mf","signatures","af","w","p0","p1","bindex","bptr","cdata","complexMultiply","times","divideScalar","Array | Matrix, Array | Matrix","Array | Matrix, any","any, Array | Matrix","isNegative","_gcdBigNumber","isInt","zero","isZero","neg","number, number","_gcd","BigNumber, BigNumber","Array | Matrix, Array | Matrix | number | BigNumber","number | BigNumber, Array | Matrix","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","_lcmBigNumber","t","div","_lcm","_logNumber","ln","_log10Complex","_mod","_norm","sizeX","POSITIVE_INFINITY","pinf","NEGATIVE_INFINITY","ninf","maxc","cj","maxr","ri","complexAbs","boolean | null","number | Complex | BigNumber | boolean | null, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","_validateMatrixDimensions","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","size1","size2","adata","bdata","_multiplyVectorDenseMatrix","alength","bcolumns","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","brows","spa","ib","vbi","ka0","ka1","ka","ia","jb","vbij","ic","kb","kb0","kb1","_bigNthRoot","one","negated","isFinite","iMax","xPrev","delta","plus","_nthRoot","_powComplex","_powArray","px","_powMatrix","Complex, Complex","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","_round","Complex, number","Complex, BigNumber","_n","toDecimalPlaces","Array | Matrix, number | BigNumber","number | Complex | BigNumber, Array | Matrix","decimals","toFixed","cmp","_sqrtNumber","_sqrtComplex","Unit, Unit","_subtractSparseMatrixSparseMatrix","_subtractSparseMatrixMatrix","_subtractMatrixSparseMatrix","_subtractMatrixMatrix","_subtractSparseMatrixScalar","_subtractScalarSparseMatrix","boolean | string | null","_xgcd","q","lastx","lasty","_xgcdBigNumber","bigBitAnd","bigBitNot","bigBitOr","bigBitXor","bigLeftShift","bigRightArithShift","bool","boolean","lcase","toLowerCase","any","...number | BigNumber | Range | Array","_create","Array | Matrix, string","Unit, string | Unit","null","String","number, string","BigNumber, string","entry","string, Object","Array | Matrix, Object","search","string | Array | Matrix","string | Array | Matrix, Object","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","shift","_concat","concatDim","_cross","xSize","ySize","_det","compute_mu","mu","fa","_diag","_createDiagonalMatrix","_getDiagonal","F","dm","vector","Array, string","Array, number, string","Array, BigNumber, string","Matrix, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_eyeVector","_eye","Big","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","_flatten","flat","_inv","Ac","Bc","Ar","Br","asBigNumber","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","number | Complex | BigNumber | Unit | boolean | null","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","_denseTrace","_sparseTrace","_denseTranspose","_sparseTranspose","transposedRow","transposed","result","isPositiveInteger","dividedBy","bigFactorial","preciseFacs","smallBigFacs","toSD","bigBigFacs","toPrecision","Infinity","twoN","threeN","fourN","fiveN","real","den","twoPiSqrt","distribution","boolean, boolean","nearlyEqual","string, string","_deepEqual","_equal","_unequal","_largest","_max","...","_nmean","_mean","_median","middle2","middle","_smallest","_min","_prod","_std","normalization","variance","_sum","_var","DEFAULT_NORMALIZATION","_complexAcos","temp1","temp2","complexSqrt","temp3","temp4","complexLog","bigArcCos","arccos_arcsec","_complexAcosh","complexAcos","bigAcosh","acosh_asinh_asech_acsch","complexAtan","HALF_PI","bigArcCot","arctan_arccot","_complexAcoth","bigAcoth","atanh_acoth","_complexAcsc","complexAsin","bigArcCsc","arcsin_arccsc","bigAcsch","_complexAsec","bigArcSec","_complexAsech","bigAsech","_complexAsin","bigArcSin","bigAsinh","bigArcTan","bigAtan2","arctan2","_complexAtanh","noIM","oneMinus","onePlus","bigAtanh","bigCos","cos_sin_sec_csc","_cosh","ep","en","bigCosh","cosh_sinh_csch_sech","bigCot","tan_cot","_coth","bigCoth","tanh_coth","bigCsc","_csch","bigCsch","bigSec","_sech","bigSech","bigSin","_sinh","cim","sim","bigSinh","bigTan","_tanh","bigTanh","Unit, Unit | string","deepExtend","Array, function","_filterCallback","Array, RegExp","_filterRegExp","Matrix, function","Matrix, RegExp","regexp","any, Object | function | number","_print","string, Object, number","template","replace","original","keys","_comparator","order","asc","_arrayIsVector","_matrixIsVector","_forEach","lup","_denseLUP","_sparseLUP","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","lvalues","lindex","lptr","uvalues","uindex","uptr","pvalues","pindex","pptr","psize","pv_co","pv_oc","swapIndeces","vkj","vik","backwardSubstitution","forwardSubstitution","lusolve","Array, Array | Matrix","_lusolve","Matrix, Array | Matrix","Object, Array | Matrix","_toMatrix","_validate","dimNext","oldLen","newLen","minLen","UNINITIALIZED","_squeeze","_unsqueeze","validate","_defaultValue","unshift","stack","actual","expected","relation","Boolean","Date","RegExp","extend","canDefineProperty","defineProperty","lazy","_uninitialized","configurable","traverse","names","conversions","math_import","opts","override","wrap","_module","_importFactory","imported","isSupportedType","_import","namespace","NumberFormatter","notation","toExponential","exponential","DBL_EPSILON","EPSILON","count","every","isNode","_compile","defs","_ifNode","_toTex","callbacks","latexType","childNode","toTex","block","param","js","keywords","latex","precedence","getPrecedence","exprPrecedence","toSymbol","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","SUPPORTED_TYPES","match","variable","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","op","calculateNecessaryParentheses","associativity","getAssociativity","operandPrecedence","operandIdentifier","getIdentifier","rootIdentifier","properties","latexLeftParens","latexParens","lhsParens","lhsPrecedence","assocWithLhs","isAssociativeWith","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","latexRightParens","parens","assoc","operand","lhs","rhs","lhsTex","rhsTex","isRaw","paramsName","toFunction","startPrecedence","stepPrecedence","endPrecedence","undef","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","_traverse","find","customTex","formatArray","number, Unit","Unit, number","_divideComplex","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","toBigNumber","pi4th","negOne","reciprocal","absX","halfPi","wasReduced","x2PlusOrMinus","isNeg","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","posExp","negExp","lower","upper","toExpNeg","toExpPos","toSignificantDigits","distributions","randFunctions","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","substitutionValidation","_denseBackwardSubstitution","_sparseBackwardSubstitution","xj","bj","xvalues","xindex","xptr","_denseForwardSubstitution","_sparseForwardSubstitution","webpackContext","req","webpackContextResolve","./clone","./clone.js","./config","./config.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","cache","hash","JSON","stringify","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","outOfRange","parseInt","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","coefficients","exponent","rounded","roundDigits","pp","removed","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","print","typeof","units","latexConverter","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","msize","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","getTypeTest","hint","argCount","actualType","getTypeOf","_expected","anyType","contains","Refs","categories","Param","varArgs","_types","_varArgs","Signature","_params","signature","childs","parseSignatures","rawSignatures","expanded","expand","signature_i","existing","mapSignatures","normalized","parseTree","nodeSignature","filtered","overlapping","getArgs","_typed","refs","_signatures","_name","_args","maxParams","toCode","body","cat","hasConversions","ac","bc","toConversion","conversion","newParam","ref","comment","getTests","tests","bind","allTypes","exactTypes","conversion_i","_innerCode","nextAnyType","exceptions","_exceptions","function","string, function","string, string, function","...function","fns"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;CA2BA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAc,KAAID,IAElBD,EAAW,KAAIC,KACdK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAgB/B,QAASS,GAAQC,GAEf,GAAIC,GAAOC,EAAOH,QAClBE,GAAKF,OAASA,CAEd,IAAII,GAAUF,EAAKE,OA+NnB,OA5NAF,GAAAA,UAAYX,EAAoB,IAGhCW,EAAKG,cACLH,EAAKG,WAAWC,KAAOf,EAAoB,IAC3CW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAKG,WAAWE,KAAOhB,EAAoB,IAG3CW,EAAKM,KAAKC,QAAUlB,EAAoB,GACxCW,EAAKM,KAAKE,MAAQnB,EAAoB,GACtCW,EAAKM,KAAKG,MAAQpB,EAAoB,GACtCW,EAAAA,UAAYX,EAAoB,IAChCW,EAAKM,KAAKI,KAAOrB,EAAoB,GACrCW,EAAKM,KAAKK,KAAOtB,EAAoB,GACrCW,EAAKM,KAAKM,UAAYvB,EAAoB,GAC1CW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAIhCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,MAGhCW,EAAAA,UAAYX,EAAoB,MAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX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AASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,UACA,cAEFD,YAAe,oDACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAAS9c,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,aACA,oBAEFD,YAAe,qJAGfE,UACE,QACA,iBACA,gBACA,WAEFK,SACE,OACA,SAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFK,SAAa,cAMV,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFK,SAAY,OAAQ,QAAS,SAM1B,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFK,SACE,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFK,SACE,SACA,cAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFK,SACE,WACA,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,WACR0W,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,cACA,QACA,YACA,YACA,iBAEFK,SACE,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,aACR0W,SAAY,YACZE,QACE,KACA,iBAEFD,YACI,yEACJE,UACE,OACA,UACA,SAEFK,SACE,MAAO,WAAY,eAOlB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,YACZE,QACE,KACA,gBAEFD,YACI,4CACJE,UACE,QACA,QAEFK,SACE,MAAO,WAAY,gBAOlB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,cAEFD,YAAe,gEACfE,UACE,cACA,aACA,sBAEFK,SAAa,MAAO,SAMjB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,UACZE,QACE,QACA,gBAEFD,YAAe,6QACfE,UACE,QACA,kBACA,oBAEFK,SACE,SAAU,QAAS,SAAU,YAAa,kBAAmB,mBAO5D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,UACZE,QACE,KACA,aAEFD,YAAe,8IACfE,UACE,KACA,KACA,sBAEFK,SACE,SAAU,QAAS,SAAU,YAAa,kBAAmB,mBAO5D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,UACZE,QACE,QACA,eAEFD,YAAe;AACfE,UACE,QACA,uBAEFK,SACE,SAAU,SAAU,SAAU,YAAa,kBAAmB,mBAO7D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,UACZE,QACE,gBAEFD,YAAe,mRACfE,UACE,cACA,wBAEFK,SACE,SAAU,SAAU,QAAS,YAAa,kBAAmB,mBAO5D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,+DACfE,UACE,SACA,UAEFK,SACE,SAAU,SAAU,QAAS,SAAU,kBAAmB,mBAOzD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,kBACR0W,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,mEACfE,UACE,SACA,SACA,YAEFK,SACE,SAAU,SAAU,QAAS,SAAU,YAAa,mBAOnD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,gBACR0W,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,gEACfE,UACE,UACA,SACA,aAEFK,SACE,SAAU,SAAU,QAAS,SAAU,YAAa,qBAOnD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,UACZE,QACE,UAEFD,YACI,iGACJE,UACE,cACA,cACA,eAEFK,SACE,KACA,KACA,OACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,UACZE,QACE,WAEFD,YACI,gGACJE,UACE,eACA,eACA,eAEFK,SACE,KACA,KACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,KACR0W,SAAY,UACZE,QACE,SAEFD,YAAe,yCACfE,UACE,aACA,aACA,YACA,WAEFK,SACE,KACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,KACR0W,SAAY,UACZE,QACE,SAEFD,YAAe,8CACfE,UACE,aACA,aACA,YACA,WAEFK,SACE,KACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,OACZE,QACE,gBAEFD,YACI,+CACJE,UACE,YACA,kCACA,mBACA,uBACA,8BAEFK,SACE,UAAW,UAAW,QAAS,SAAU,SAAU,UAOlD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,OACZE,QACE,IACA,cAEFD,YACI,6CACJE,UACE,aACA,aACA,aACA,kBACA,mBACA,yBAEFK,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,OACZE,QACE,YACA,kBACA,mBAEFD,YACI,2BACJE,UACE,YACA,gBACA,qBAEFK,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,OACZE,QACE,UACA,cACA,mBACA,yBACA,kCACA,+CAEFD,YACI,yDACJE,UACE,KACA,YACA,yBACA,UACA,eACA,4BAEFK,SACE,YAAa,UAAW,UAAW,UAAW,SAAU,QAAS,SAAU,UAO1E,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,OACZE,QACE,KACA,6BACA,WACA,iBAEFD,YACI,mBACJE,UACE,KACA,YACA,qBACA,WACA,kBAEFK,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,OACZE,QACE,IACA,aAEFD,YACI,gEACJE,UACE,IACA,MACA,OACA,YACA,gBACA,eACA,oCACA,uBAEFK,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,OACZE,QACE,SACA,aAEFD,YACI,iDACJE,UACE,iBACA,cACA,kBAEFK,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,OACZE,QACE,aACA,oBACA,gBAEFD,YACI,iBACJE,UACE,SACA,SACA,wBACA,kBAEFK,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,YAO/D,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,mBACA,oCAEFD,YAAe,uDACfE,UACE,gBACA,2BAEFK,aAMG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,eACA,gBAEFD,YAAe,oDACfE,UACE,aACA,mBAEFK,aAMG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,UACZE,QACE,UACA,aAEFD,YAAe,uFACfE,UACE,iBACA,gBACA,WAEFK,SACE,MAAO,KAAM,SAOZ,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,UACZE,QACE,KACA,QACA,UAEFD,YAAe,0DACfE,UACE,QACA,YACA,KACA,MAEFK,SACE,MAAO,KAAM,SAOZ,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,KACR0W,SAAY,UACZE,QACE,SACA,YAEFD,YAAe,mFACfE,UACE,gBACA,iBACA,UAEFK,SACE,MAAO,MAAO,SAOb,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,UACZE,QACE,SACA,YAEFD,YAAe,2GACfE,UACE,iBACA,kBACA,gBACA,UAEFK,SACE,MAAO,MAAO,QAOb,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,SACZE,QACE,uBACA,6BAEFD,YAAe,iKACfE,UACE,mBACA,mBACA,eACA,kBACA,mBAEFK,SACE,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOhG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,SACZE,QACE,eAEFD,YAAe,0EACfE,UACE,+BACA,+BACA,gCAEFK,SACE,WACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,SACZE,QACE,UAEFD,YAAe,wCACfE,UACE,oBACA,uCAEFK,SACE,SAAU,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,SACZE,QACE,UACA,cAEFD,YAAe,4aACfE,UACE,YACA,eACA,kCACA,WAEFK,SACE,SAAU,MAAO,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,SACZE,QACE,aAEFD,YAAe,6LAGfE,UACE,4BACA,yBAEFK,SACE,WACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,SACZE,QACE,SACA,YACA,cACA,OAEFD,YAAe,yGACfE,UACE,SACA,YACA,yBACA,gBAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,SACZE,QACE,cAEFD,YAAe,uEACfE,UACE,yBACA,UACA,iBACA,WAEFK,SACE,SAAU,SAAU,OAAQ,aAO3B,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,SACZE,QACE,UAEFD,YAAe,oCACfE,UACE,oBACA,SACA,SAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,SACZE,QACE,UACA,aACA,qBACA,YACA,eACA,uBACA,QAEFD,YAAe,mCACfE,UACE,UACA,aACA,oBACA,yBACA,iBAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,OACZE,QACE,YACA,iBACA,oBACA,0BACA,iBAEFD,YACI,iFACJE,UACE,MACA,UACA,cACA,kBACA,gBACA,+BACA,eAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOjG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,SACZE,QACE,kBACA,iCAEFD,YAAe,mBACfE,UACE,2BACA,uBACA,2BACA,oBACA,6BAEFK,SACE,OAAQ,SAAU,aAOjB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,SACZE,QACE,WAEFD,YAAe,kCACfE,UACE,YACA,sBACA,yBACA,UACA,aAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,UAAW,SAAU,QAAS,YAAa,WAOlG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,SACZE,QACE,cAEFD,YAAe,6DACfE,UACE,mBACA,mBACA,mBACA,oBAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,SAAU,QAAS,YAAa,WAO/F,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,SACZE,QACE,eACA,6BACA,yBACA,uCAEFD,YAAe,8HAGfE,UACE,mBACA,SACA,qBACA,mBACA,YACA,UACA,WAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,QAAS,YAAa,WAOhG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,SACZE,QACE,YAEFD,YAAe,oGACfE,UACE,mCACA,YAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,YAAa,WAOjG,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,SACZE,QACE,KACA,gBAEFD,YAAe,qBACfE,UACE,yBACA,KACA,gBAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,WAO7F,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,SACZE,QACE,WACA,cACA,sBACA,aACA,gBACA,wBACA,SAEFD,YAAe,oCACfE,UACE,WACA,cACA,yBACA,kBAEFK,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,eAO7F,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,eACR0W,SAAY,cACZE,QACE,sBAEFD,YAAe,kEACfE,UACE,sBAEFK,SAAY,eAAgB,eAMzB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,cACZE,QACE,KACA,gBAEFD,YAAe,mCACfE,UACE,KACA,oBACA,MAEFK,SAAY,eAAgB,eAAgB,WAMzC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,cACZE,QACE,YAEFD,YAAe,6IACfE,UACE,WACA,KACA,aACA,YAEFK,SAAY,eAMT,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,eACR0W,SAAY,cACZE,QACE,kBACA,sBAEFD,YAAe,kEACfE,UACE,kBACA,sBAEFK,SAAY,eAAgB,eAMzB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,aACR0W,SAAY,cACZE,QACE,qBAEFD,YACI,0CACJE,UACE,mBACA,4BAEFK,SAAY,SAAU,eAMnB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,cACZE,QACE,WACA,cACA,mBACA,eACA,oBACA,0BAEFD,YACI,0BACJE,UACE,WACA,iBACA,kBAEFK,SAAY,aAAc,eAMvB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,cACZE,QACE,YACA,eACA,oBACA,gBACA,qBACA,2BAEFD,YACI,iCACJE,UACE,YACA,kBACA,uBAEFK,SAAY,aAAc,YAKvB,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,iBAEFD,YACI,8GACJE,UACE,gBACA,gBACA,gBACA,qBACA,yBAEFK,SACE,QAAS,UAAW,UAAW,YAAa,cAO3C,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,aACZE,QACE,mBAEFD,YACI,+IACJE,UACE,qBACA,oBAEFK,SACE,QAAS,UAAW,UAAW,SAAU,YAAa,WAAY,aAOjE,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,aACZE,QACE,SACA,eAEFD,YACI,wFACJE,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFK,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOnE,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,QACA,gBAEFD,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFK,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,WACR0W,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFK,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFK,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFK,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFK,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFK,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFK,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFK,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFK,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFK,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFK,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFK,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFK,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,6FACfE,UACE,cAEFK,SACE,OACA,QACA,WAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,8CACfE,UACE,YACA,iBACA,WAEFK,SACE,MACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,6GACfE,UACE,cAEFK,SACE,QACA,WAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,8CACfE,UACE,YACA,iBACA,WAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,sGACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,2CACfE,UACE,YACA,iBACA,WAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,2CACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,kDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,8FACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,qDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,mGACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,eAEFD,YACI,qEACJE,UACE,mBACA,wBACA,iBACA,iBACA,eAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,sCACfE,UACE,SACA,kBACA,eACA,cACA,2BAEFK,SACE,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,iDACfE,UACE,aAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,6DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,UACA,eAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,4DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,wEACfE,UACE,UACA,eAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,0DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,sEACfE,UACE,UACA,eAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,oCACfE,UACE,SACA,kBACA,cACA,cACA,2BAEFK,SACE,OACA,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","math","loader","_config","expression","node","docs","type","Complex","Range","Index","Unit","Help","ResultSet","transform","concat","filter","forEach","index","map","max","mean","min","range","subset","Chain","createProxy","isFactory","load","Error","instance","factories","indexOf","typed","push","instances","Object","matrix","number","precision","epsilon","error","_reduce","mat","dim","callback","i","ret","val","tran","Array","isArray","_switch","length","j","I","J","tmp","collection","argsToArray","args","array","Matrix","valueOf","util","isCollection","x","deepMap","skipZeros","deepMap2","array1","array2","res","len","DimensionError","reduce","size","arraySize","IndexError","deepForEach","ii","value","name","re","im","SyntaxError","arguments","arg","construct","fromPolar","r","phi","isNumber","TypeError","skipWhitespace","next","isDigitDot","isDigit","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","isUnit","isString","string","isComplex","parse","str","first","Number","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","Math","cos","sin","prototype","toPolar","sqrt","atan2","clone","equals","other","format","options","strRe","strIm","pow","abs","toString","toJSON","mathjs","fromJSON","json","start","end","step","parseFloat","split","nums","invalid","some","num","isNaN","isRange","object","diff","sign","ceil","undefined","obj","toArray","ranges","_ranges","_isScalar","_createRange","primitive","isInteger","isIndex","apply","values","isScalar","row","strings","join","isMatrix","storage","constructor","_storage","replacement","defaultValue","get","set","resize","path","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","hasOwnProperty","endsWith","prefixLen","prefixName","prefixes","err","offset","_denormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","LN10","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","E","Z","Y","d","u","n","f","a","z","y","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","b","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","e","seealso","prop","entries","BigNumber","Decimal","convert","digits","FibonacciHeap","_minimum","_size","smaller","larger","oneOverLogPhi","insert","key","degree","minimum","left","right","clear","isEmpty","extractMinimum","numberOfChildren","child","tempRight","parent","_findMinimumNode","remove","_decreaseKey","_cut","_cascadingCut","mark","_linkNodes","floor","numRoots","temp","ArgumentsError","extra_nodes","nodes","parseStart","elem","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","ConstantNode","parseFunctionAssignment","BlockNode","parseAssignment","valid","parseConditional","SymbolNode","AssignmentNode","IndexNode","UpdateNode","FunctionNode","FunctionAssignmentNode","parseLogicalOr","prev","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","fn","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","ArrayNode","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","Parser","scope","_parse","compile","Node","LN2","LOG2E","LOG10E","NaN","pi","PI","SQRT1_2","SQRT2","tau","version","add","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","gcd","lcm","log10","multiply","norm","nthRoot","round","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","bignumber","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","trace","transpose","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","deepEqual","largerEq","smallerEq","unequal","median","prod","std","sum","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","SparseMatrix","data","_createFromMatrix","ptr","_values","_index","_ptr","_datatype","datatype","_createFromArray","types","equal","source","columns","v","_getsubset","_setsubset","validateIndex","_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","diagonal","kSuper","kSub","_value","ms","swapRows","_swapRows","_forEachRow","kx","ky","vx","vy","sparse","DenseMatrix","_data","preprocess","_get","_getSubmatrix","dims","last","_set","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","index_i","recurse","vi","dense","Spa","_heap","accumulate","from","heap","swap","nodei","nodej","errorTransform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","UnsupportedTypeError","_mapArray","arrayIn","Array | Matrix","sparseScatter","addScalar","multiplyScalar","any, any","Matrix, Matrix","xsize","ysize","_addSparseMatrixSparseMatrix","_addSparseMatrixMatrix","_addMatrixSparseMatrix","_addMatrixMatrix","Array, Array","Array, Matrix","Matrix, Array","Matrix, any","_addSparseMatrixScalar","any, Matrix","Array, any","any, Array","asize","avalues","aindex","aptr","cvalues","cindex","cptr","bsize","RangeError","adt","bvalues","bdt","dt","mf","signatures","af","w","p0","p1","bindex","bptr","cdata","divideScalar","Array | Matrix, Array | Matrix","Array | Matrix, any","any, Array | Matrix","complexMultiply","times","isNegative","_gcdBigNumber","isInt","zero","isZero","neg","number, number","_gcd","BigNumber, BigNumber","Array | Matrix, Array | Matrix | number | BigNumber","number | BigNumber, Array | Matrix","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","_lcmBigNumber","t","div","_lcm","_logNumber","ln","_log10Complex","_mod","_norm","sizeX","POSITIVE_INFINITY","pinf","NEGATIVE_INFINITY","ninf","maxc","cj","maxr","ri","complexAbs","boolean | null","number | Complex | BigNumber | boolean | null, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","_bigNthRoot","one","negated","isFinite","iMax","xPrev","delta","plus","_nthRoot","_validateMatrixDimensions","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","size1","size2","adata","bdata","_multiplyVectorDenseMatrix","alength","bcolumns","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","brows","ib","vbi","ka0","ka1","ka","ia","ic","jb","vbij","kb","kb0","kb1","_powComplex","_powArray","px","_powMatrix","Complex, Complex","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","_round","Complex, number","Complex, BigNumber","_n","toDecimalPlaces","Array | Matrix, number | BigNumber","number | Complex | BigNumber, Array | Matrix","decimals","toFixed","cmp","_sqrtNumber","_sqrtComplex","Unit, Unit","_subtractSparseMatrixSparseMatrix","_subtractSparseMatrixMatrix","_subtractMatrixSparseMatrix","_subtractMatrixMatrix","_subtractSparseMatrixScalar","_subtractScalarSparseMatrix","boolean | string | null","_xgcd","q","lastx","lasty","_xgcdBigNumber","bigBitAnd","bigBitNot","bigBitXor","bigBitOr","bigLeftShift","bigRightArithShift","bool","boolean","lcase","toLowerCase","any","...number | BigNumber | Range | Array","_create","Array | Matrix, string","Unit, string | Unit","null","String","number, string","BigNumber, string","entry","string, Object","Array | Matrix, Object","search","string | Array | Matrix","string | Array | Matrix, Object","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","shift","_concat","concatDim","_cross","xSize","ySize","_det","compute_mu","mu","fa","_diag","_createDiagonalMatrix","_getDiagonal","F","dm","vector","Array, string","Array, number, string","Array, BigNumber, string","Matrix, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_eyeVector","_eye","Big","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","_flatten","flat","_inv","Ac","Bc","Ar","Br","slice","asBigNumber","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","number | Complex | BigNumber | Unit | boolean | null","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","_denseTrace","_sparseTrace","_denseTranspose","_sparseTranspose","transposedRow","transposed","result","isPositiveInteger","dividedBy","bigFactorial","preciseFacs","smallBigFacs","toSD","bigBigFacs","toPrecision","Infinity","twoN","threeN","fourN","fiveN","real","den","twoPiSqrt","distribution","boolean, boolean","nearlyEqual","string, string","_deepEqual","_equal","_unequal","_largest","_max","...","_nmean","_mean","_median","middle2","middle","_smallest","_min","_prod","_std","normalization","variance","_sum","_var","DEFAULT_NORMALIZATION","_complexAcos","temp1","temp2","complexSqrt","temp3","temp4","complexLog","bigArcCos","arccos_arcsec","_complexAcosh","complexAcos","bigAcosh","acosh_asinh_asech_acsch","complexAtan","HALF_PI","bigArcCot","arctan_arccot","_complexAcoth","bigAcoth","atanh_acoth","_complexAcsc","complexAsin","bigArcCsc","arcsin_arccsc","bigAcsch","_complexAsec","bigArcSec","_complexAsech","bigAsech","_complexAsin","bigArcSin","bigAsinh","bigArcTan","_complexAtanh","noIM","oneMinus","onePlus","bigAtanh","bigAtan2","arctan2","bigCos","cos_sin_sec_csc","_cosh","ep","en","bigCosh","cosh_sinh_csch_sech","bigCot","tan_cot","_coth","bigCoth","tanh_coth","bigCsc","_csch","bigCsch","bigSec","_sech","bigSech","bigSin","_sinh","cim","sim","bigSinh","bigTan","_tanh","bigTanh","Unit, Unit | string","deepExtend","Array, function","_filterCallback","Array, RegExp","_filterRegExp","Matrix, function","Matrix, RegExp","regexp","any, Object | function | number","_print","string, Object, number","template","replace","original","keys","_comparator","order","asc","_arrayIsVector","_matrixIsVector","_forEach","lup","_denseLUP","_sparseLUP","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","lvalues","lindex","lptr","uvalues","uindex","uptr","pvalues","pindex","pptr","psize","pv_co","pv_oc","swapIndeces","spa","vkj","vik","backwardSubstitution","forwardSubstitution","lusolve","Array, Array | Matrix","_lusolve","Matrix, Array | Matrix","Object, Array | Matrix","_toMatrix","done","arg0","arg1","Boolean","Date","RegExp","extend","canDefineProperty","defineProperty","lazy","_uninitialized","configurable","traverse","names","conversions","UNINITIALIZED","math_import","opts","override","wrap","_module","_importFactory","imported","isSupportedType","_import","namespace","_validate","dimNext","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","stack","actual","expected","relation","NumberFormatter","notation","toExponential","exponential","DBL_EPSILON","EPSILON","count","every","isNode","_compile","defs","_ifNode","_toTex","callbacks","latexType","childNode","toTex","block","param","js","keywords","latex","precedence","getPrecedence","exprPrecedence","toSymbol","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","SUPPORTED_TYPES","match","variable","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","op","calculateNecessaryParentheses","associativity","getAssociativity","operandPrecedence","operandIdentifier","getIdentifier","rootIdentifier","properties","latexLeftParens","latexParens","lhsParens","lhsPrecedence","assocWithLhs","isAssociativeWith","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","latexRightParens","parens","assoc","operand","lhs","rhs","lhsTex","rhsTex","isRaw","paramsName","toFunction","startPrecedence","stepPrecedence","endPrecedence","undef","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","_traverse","find","customTex","number, Unit","Unit, number","_divideComplex","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","toBigNumber","pi4th","negOne","reciprocal","absX","halfPi","wasReduced","x2PlusOrMinus","isNeg","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","posExp","negExp","lower","upper","toExpNeg","toExpPos","toSignificantDigits","formatArray","distributions","randFunctions","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","substitutionValidation","_denseBackwardSubstitution","_sparseBackwardSubstitution","xj","bj","xvalues","xindex","xptr","_denseForwardSubstitution","_sparseForwardSubstitution","webpackContext","req","webpackContextResolve","./clone","./clone.js","./config","./config.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","cache","hash","JSON","stringify","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","outOfRange","parseInt","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","coefficients","exponent","rounded","roundDigits","pp","removed","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","print","typeof","units","latexConverter","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","msize","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","getTypeTest","hint","argCount","actualType","getTypeOf","_expected","anyType","contains","Refs","categories","Param","varArgs","_types","_varArgs","Signature","_params","signature","childs","parseSignatures","rawSignatures","expanded","expand","signature_i","existing","mapSignatures","normalized","parseTree","nodeSignature","filtered","overlapping","getArgs","_typed","refs","_signatures","_name","_args","maxParams","toCode","body","cat","hasConversions","ac","bc","toConversion","conversion","newParam","ref","comment","getTests","tests","bind","allTypes","exactTypes","conversion_i","_innerCode","nextAnyType","exceptions","_exceptions","function","string, function","string, string, function","...function","fns"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;CA2BA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAc,KAAID,IAElBD,EAAW,KAAIC,KACdK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAgB/B,QAASS,GAAQC,GAEf,GAAIC,GAAOC,EAAOH,QAClBE,GAAKF,OAASA,CAEd,IAAII,GAAUF,EAAKE,OA+NnB,OA5NAF,GAAAA,UAAYX,EAAoB,IAGhCW,EAAKG,cACLH,EAAKG,WAAWC,KAAOf,EAAoB,IAC3CW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAKG,WAAWE,KAAOhB,EAAoB,IAG3CW,EAAKM,KAAKC,QAAUlB,EAAoB,GACxCW,EAAKM,KAAKE,MAAQnB,EAAoB,GACtCW,EAAKM,KAAKG,MAAQpB,EAAoB,GACtCW,EAAAA,UAAYX,EAAoB,IAChCW,EAAKM,KAAKI,KAAOrB,EAAoB,GACrCW,EAAKM,KAAKK,KAAOtB,EAAoB,GACrCW,EAAKM,KAAKM,UAAYvB,EAAoB,GAC1CW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAIhCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,MAGhCW,EAAAA,UAAYX,EAAoB,MAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAGhCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX,EAAoB,KAChCW,EAAAA,UAAYX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CE,QACA,UACA,aAEFD,YACI,gEACJE,UACE,QACA,SACA,WACA,4BACA,WACA,YAEFK,SAAY,YAMT,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,WACR0W,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,gBACA,UACA,YACA,cACA,cAEFK,SACE,YAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,UACA,cAEFD,YAAe,oDACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAAS9c,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,aACA,oBAEFD,YAAe,qJAGfE,UACE,QACA,iBACA,gBACA,WAEFK,SACE,OACA,SAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFK,SAAa,cAMV,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFK,SAAY,OAAQ,QAAS,SAM1B,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFK,SACE,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFK,SACE,SACA,cAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFK,SACE,WACA,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,WACR0W,SAAY,YACZE,QAC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ASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,aACZE,QACE,SACA,eAEFD,YACI,wFACJE,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFK,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOnE,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,QACA,gBAEFD,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFK,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,WACR0W,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFK,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFK,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,YACR0W,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFK,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,UACR0W,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFK,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFK,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,SACR0W,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFK,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFK,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFK,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFK,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFK,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFK,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFK,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,6FACfE,UACE,cAEFK,SACE,OACA,QACA,WAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,8CACfE,UACE,YACA,iBACA,WAEFK,SACE,MACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,6GACfE,UACE,cAEFK,SACE,QACA,WAMC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,8CACfE,UACE,YACA,iBACA,WAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,sGACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,2CACfE,UACE,YACA,iBACA,WAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,2CACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,kDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,8FACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,qDACfE,UACE,YACA,kBAEFK,SACE,MACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,YAEFD,YAAe,mGACfE,UACE,cAEFK,SACE,QACA,WAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,QACR0W,SAAY,eACZE,QACE,eAEFD,YACI,qEACJE,UACE,mBACA,wBACA,iBACA,iBACA,eAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,sCACfE,UACE,SACA,kBACA,eACA,cACA,2BAEFK,SACE,OACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,iDACfE,UACE,aAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,6DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,UACA,eAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,4DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,OACR0W,SAAY,eACZE,QACE,WAEFD,YAAe,wEACfE,UACE,UACA,eAEFK,SACE,OACA,OACA,UAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAAOD,SACLkG,KAAQ,MACR0W,SAAY,eACZE,QACE,UAEFD,YAAe,0DACfE,UACE,SACA,cAEFK,SACE,MACA,MACA,SAOC,SAASnd,EAAQD,EAASM,GAE/BL,EAA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"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index bf12704ba..370f59cad 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -24,17 +24,18 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.math=t():e.math=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){function n(e){var t=i.create();t.create=n;var o=t._config;return t["import"](r(2)),t.expression={},t.expression.node=r(14),t["import"](r(12)),t["import"](r(13)),t.expression.docs=r(15),t.type.Complex=r(3),t.type.Range=r(4),t.type.Index=r(5),t["import"](r(6)),t.type.Unit=r(7),t.type.Help=r(8),t.type.ResultSet=r(9),t["import"](r(10)),t["import"](r(11)),t["import"](r(16)),t["import"](r(17)),t["import"](r(18)),t["import"](r(19)),t["import"](r(164)),t["import"](r(165)),t["import"](r(31)),t["import"](r(32)),t["import"](r(33)),t["import"](r(34)),t["import"](r(35)),t["import"](r(36)),t["import"](r(37)),t["import"](r(38)),t["import"](r(39)),t["import"](r(40)),t["import"](r(41)),t["import"](r(42)),t["import"](r(43)),t["import"](r(44)),t["import"](r(45)),t["import"](r(46)),t["import"](r(48)),t["import"](r(47)),t["import"](r(49)),t["import"](r(50)),t["import"](r(51)),t["import"](r(52)),t["import"](r(53)),t["import"](r(54)),t["import"](r(55)),t["import"](r(56)),t["import"](r(57)),t["import"](r(58)),t["import"](r(59)),t["import"](r(60)),t["import"](r(61)),t["import"](r(62)),t["import"](r(63)),t["import"](r(64)),t["import"](r(65)),t["import"](r(66)),t["import"](r(67)),t["import"](r(68)),t["import"](r(69)),t["import"](r(70)),t["import"](r(71)),t["import"](r(72)),t["import"](r(73)),t["import"](r(74)),t["import"](r(75)),t["import"](r(76)),t["import"](r(77)),t["import"](r(78)),t["import"](r(79)),t["import"](r(80)),t["import"](r(81)),t["import"](r(82)),t["import"](r(83)),t["import"](r(84)),t["import"](r(85)),t["import"](r(86)),t["import"](r(87)),t["import"](r(88)),t["import"](r(89)),t["import"](r(90)),t["import"](r(91)),t["import"](r(92)),t["import"](r(93)),t["import"](r(94)),t["import"](r(95)),t["import"](r(96)),r(97)(t,o),r(98)(t,o),r(99)(t,o),t["import"](r(100)),t["import"](r(101)),r(102)(t,o),t["import"](r(103)),t["import"](r(104)),r(105)(t,o),t["import"](r(106)),t["import"](r(107)),t["import"](r(108)),t["import"](r(109)),t["import"](r(110)),t["import"](r(111)),t["import"](r(112)),t["import"](r(113)),t["import"](r(114)),t["import"](r(115)),t["import"](r(116)),t["import"](r(117)),t["import"](r(118)),t["import"](r(120)),t["import"](r(119)),t["import"](r(121)),t["import"](r(122)),t["import"](r(123)),t["import"](r(124)),t["import"](r(125)),t["import"](r(126)),t["import"](r(127)),t["import"](r(128)),t["import"](r(129)),t["import"](r(130)),t["import"](r(131)),t["import"](r(132)),t["import"](r(133)),t["import"](r(134)),t["import"](r(135)),t["import"](r(136)),t["import"](r(137)),t["import"](r(138)),t["import"](r(139)),t["import"](r(140)),t["import"](r(141)),t["import"](r(142)),t["import"](r(143)),t["import"](r(144)),t["import"](r(145)),t["import"](r(146)),t["import"](r(147)),t["import"](r(148)),t["import"](r(149)),t["import"](r(150)),t["import"](r(151)),t["import"](r(152)),t["import"](r(153)),t["import"](r(154)),t["import"](r(155)),t["import"](r(156)),t["import"](r(157)),t["import"](r(158)),t["import"](r(159)),t["import"](r(160)),t["import"](r(161)),t["import"](r(162)),t["import"](r(163)),t.expression.transform={concat:r(20)(t,o),filter:r(21)(t,o),forEach:r(22)(t,o),index:r(23)(t,o),map:r(24)(t,o),max:r(25)(t,o),mean:r(26)(t,o),min:r(27)(t,o),range:r(28)(t,o),subset:r(30)(t,o)},t.type.Chain=r(29)(),t.type.Chain.createProxy(t),t.config(e),t}var i=r(1);e.exports=n()},function(e,t,r){var n=r(170).isFactory;t.create=function(){function e(r){if(!n(r))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var u,c=t.indexOf(r);return-1===c?(u=r.math?r.factory(o.type,s,e,a,o):r.factory(o.type,s,e,a),t.push(r),i.push(u)):u=i[c],u}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 t=[],i=[],o={type:{}},a=r(171).create(o),s={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};return o["import"]=e(r(172)),r(173)(o,s),o._config=s,o.error=r(174),o}},function(e,t,r){"use strict";function n(e,t,n,u){function c(e,t,r){var n,i,o,a;if(0>=t){if(Array.isArray(e[0])){for(a=f(e),i=[],n=0;nr;r++){var a=[];for(t=0;n>t;t++)a.push(e[t][r]);o.push(a)}return o}var l=n(r(75)),p={};return p.argsToArray=function(t){if(0===t.length)return[];if(1==t.length){var r=t[0];return r instanceof e.Matrix&&(r=r.valueOf()),Array.isArray(r)||(r=[r]),r}return i.array.argsToArray(t)},p.isCollection=function(t){return Array.isArray(t)||t instanceof e.Matrix},p.deepMap=function m(e,t,r){return e&&"function"==typeof e.map?e.map(function(e){return m(e,t,r)}):t(e)},p.deepMap2=function h(t,r,n){var i,o,a;if(Array.isArray(t))if(Array.isArray(r)){if(t.length!=r.length)throw new s(t.length,r.length);for(i=[],o=t.length,a=0;o>a;a++)i[a]=h(t[a],r[a],n)}else{if(r instanceof e.Matrix)return i=h(t,r.valueOf(),n),l(i);for(i=[],o=t.length,a=0;o>a;a++)i[a]=h(t[a],r,n)}else{if(t instanceof e.Matrix)return r instanceof e.Matrix?(i=h(t.valueOf(),r.valueOf(),n),l(i)):(i=h(t.valueOf(),r,n),l(i));if(Array.isArray(r))for(i=[],o=r.length,a=0;o>a;a++)i[a]=h(t,r[a],n);else{if(r instanceof e.Matrix)return i=h(t,r.valueOf(),n),l(i);i=n(t,r)}}return i},p.reduce=function(t,r,n){var i=Array.isArray(t)?o(t):t.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return t instanceof e.Matrix?l(c(t.valueOf(),r,n)):c(t,r,n)},p.deepForEach=function g(t,r){t instanceof e.Matrix&&(t=t.valueOf());for(var n=0,i=t.length;i>n;n++){var o=t[n];Array.isArray(o)?g(o,r):r(o)}},p}var i=r(166),o=r(167).size,a=r(168),s=r(169);t.name="collection",t.factory=n},function(e,t,r){"use strict";function n(e,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");switch(arguments.length){case 0:this.re=0,this.im=0;break;case 1:var r=arguments[0];if("object"==typeof r){if("re"in r&&"im"in r){var i=new n(r.re,r.im);this.re=i.re,this.im=i.im;break}if("r"in r&&"phi"in r){var i=n.fromPolar(r.r,r.phi);this.re=i.re,this.im=i.im;break}}throw new SyntaxError("Object with the re and im or r and phi properties expected.");case 2:if(!h(e)||!h(t))throw new TypeError("Two numbers expected in Complex constructor");this.re=e,this.im=t;break;default:throw new SyntaxError("One, two or three arguments expected in Complex constructor")}}function i(){for(;" "==y||" "==y;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){x++,y=d.charAt(x)}function u(e){x=e,y=d.charAt(x)}function c(){var e,t="";if(e=x,"+"==y?s():"-"==y&&(t+=y,s()),!o(y))return u(e),null;if("."==y){if(t+=y,s(),!a(y))return u(e),null}else{for(;a(y);)t+=y,s();"."==y&&(t+=y,s())}for(;a(y);)t+=y,s();if("E"==y||"e"==y){if(t+=y,s(),("+"==y||"-"==y)&&(t+=y,s()),!a(y))return u(e),null;for(;a(y);)t+=y,s()}return t}function f(){var e=d.charAt(x+1);if("I"==y||"i"==y)return s(),"1";if(!("+"!=y&&"-"!=y||"I"!=e&&"i"!=e)){var t="+"==y?"1":"-1";return s(),s(),t}return null}var l=r(166),p=r(7),m=l.number,h=l.number.isNumber,g=p.isUnit,v=l.string.isString;n.isComplex=function(e){return e instanceof n};var d,x,y;n.parse=function(e){if(d=e,x=-1,y="",!v(d))return null;s(),i();var t=c();if(t){if("I"==y||"i"==y)return s(),i(),y?null:new n(0,Number(t));i();var r=y;if("+"!=r&&"-"!=r)return i(),y?null:new n(Number(t),0);s(),i();var o=c();if(o){if("I"!=y&&"i"!=y)return null;s()}else if(o=f(),!o)return null;return"-"==r&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),y?null:new n(Number(t),Number(o))}return(t=f())?(i(),y?null:new n(0,Number(t))):null},n.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if("object"==typeof t)return n.fromPolar(t.r,t.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],i=arguments[1];if(h(r)){if(g(i)&&i.hasBase(p.BASE_UNITS.ANGLE)&&(i=i.toNumber("rad")),h(i))return new n(r*Math.cos(i),r*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 t="",r=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/r)0?1==r?i+" + i":i+" + "+o+"i":-1==r?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,t,r){"use strict";function n(e,t,r){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!=t&&!o.isNumber(t))throw new TypeError("Parameter end must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=t?parseFloat(t):0,this.step=null!=r?parseFloat(r):1}{var i=r(166),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var t=e.split(":"),r=t.map(function(e){return parseFloat(e)}),i=r.some(function(e){return isNaN(e)});if(i)return null;switch(r.length){case 2:return new n(r[0],r[1]);case 3:return new n(r[0],r[2],r[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,t=this.start,r=this.step,n=this.end,i=n-t;return o.sign(r)==o.sign(i)?e=Math.ceil(i/r):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 t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;n>t;)e(t,i,this),t+=r,i++;else if(0>r)for(;t>n;)e(t,i,this),t+=r,i++},n.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n]=e(r,n,i)}),t},n.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r]=t}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var t=o.format(this.start,e);return 1!=this.step&&(t+=":"+o.format(this.step,e)),t+=":"+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,t,r){"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 t=0,r=arguments.length;r>t;t++){var o=arguments[t];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 t=e.length,r=0;t>r;r++)if(!u(e[r])||!c(e[r]))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=r(166),a=r(4),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 t=new n;return n.apply(t,e),t},n.prototype.size=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.max()}return e},n.prototype.min=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.min()}return e},n.prototype.forEach=function(e){for(var t=0,r=this._ranges.length;r>t;t++)e(this._ranges[t],t,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=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t],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=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t],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,t,r){"use strict";function n(e,t,r,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator")}return i.isMatrix=function(e){return e instanceof i},i.storage=function(e){if(!a(e))throw new TypeError("format must be a string value");var t=i._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},i._storage={},i.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},i.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},i.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},i.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},i.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},i.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},i.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},i.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},i.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},i.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},i.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},i.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},i.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},i}var i=r(166),o=i.string,a=o.isString;t.name="Matrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t){if(!(this instanceof n))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!x(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=t&&(!y(t)||""==t))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=t){var r=l(t);if(!r)throw new SyntaxError('Unknown unit "'+t+'"');this.unit=r.unit,this.prefix=r.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,t="";if(e=m,"+"==h?s():"-"==h&&(t+=h,s()),!o(h))return u(e),null;if("."==h){if(t+=h,s(),!a(h))return u(e),null}else{for(;a(h);)t+=h,s();"."==h&&(t+=h,s())}for(;a(h);)t+=h,s();if("E"==h||"e"==h){if(t+=h,s(),("+"==h||"-"==h)&&(t+=h,s()),!a(h))return u(e),null;for(;a(h);)t+=h,s()}return t}function f(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var t in A)if(A.hasOwnProperty(t)&&d.endsWith(e,t)){var r=A[t],n=e.length-t.length,i=e.substring(0,n),o=r.prefixes[i];if(void 0!==o)return{unit:r,prefix:o}}return null}var p,m,h,g=r(166),v=g.number,d=g.string,x=g.number.isNumber,y=g.string.isString;n.parse=function(e){if(p=e,m=-1,h="",!y(p))return null;s(),i();var t,r=c();if(r){if(t=f(),s(),i(),h)return null;if(r&&t)try{return new n(Number(r),t)}catch(o){}}else{if(t=f(),s(),i(),h)return null;if(t)try{return new n(null,t)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var t in this)this.hasOwnProperty(t)&&(e[t]=this[t]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._denormalize=function(e,t){return void 0==t?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/t-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 t,r=null==this.value?this._normalize(1):this.value;if(y(e)){if(t=new n(null,e),!this.equalBase(t))throw new Error("Units do not match");return t.value=r,t.fixPrefix=!0,t}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 t=e.clone(),t.value=r,t.fixPrefix=!0,t}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var t=this.to(e);return t._denormalize(t.value,t.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 t=new n(e.value,e.unit);return t.fixPrefix=e.fixPrefix||!1,t},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var t,r;if(null===this.value||this.fixPrefix)t=this._denormalize(this.value),r=null!==this.value?v.format(t,e)+" ":"",r+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();t=this._denormalize(this.value,n.value),r=v.format(t,e)+" ",r+=n.name+this.unit.name}return r},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),t=b,r=Math.abs(Math.log(e/t.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);r>a&&(t=o,r=a)}}return t};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},N={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},E={},M={name:"",base:E,value:1,offset:0},A={meter:{name:"meter",base:N.LENGTH,prefixes:w.LONG,value:1,offset:0},inch:{name:"inch",base:N.LENGTH,prefixes:w.NONE,value:.0254,offset:0},foot:{name:"foot",base:N.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yard:{name:"yard",base:N.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mile:{name:"mile",base:N.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},link:{name:"link",base:N.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rod:{name:"rod",base:N.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},chain:{name:"chain",base:N.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:N.LENGTH,prefixes:w.NONE,value:1e-10,offset:0},m:{name:"m",base:N.LENGTH,prefixes:w.SHORT,value:1,offset:0},"in":{name:"in",base:N.LENGTH,prefixes:w.NONE,value:.0254,offset:0},ft:{name:"ft",base:N.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yd:{name:"yd",base:N.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mi:{name:"mi",base:N.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},li:{name:"li",base:N.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rd:{name:"rd",base:N.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},ch:{name:"ch",base:N.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},mil:{name:"mil",base:N.LENGTH,prefixes:w.NONE,value:254e-7,offset:0},m2:{name:"m2",base:N.SURFACE,prefixes:w.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:N.SURFACE,prefixes:w.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:N.SURFACE,prefixes:w.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:N.SURFACE,prefixes:w.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:N.SURFACE,prefixes:w.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:N.SURFACE,prefixes:w.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:N.SURFACE,prefixes:w.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:N.SURFACE,prefixes:w.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:N.VOLUME,prefixes:w.CUBIC,value:1,offset:0},L:{name:"L",base:N.VOLUME,prefixes:w.SHORT,value:.001,offset:0},l:{name:"l",base:N.VOLUME,prefixes:w.SHORT,value:.001,offset:0},litre:{name:"litre",base:N.VOLUME,prefixes:w.LONG,value:.001,offset:0},cuin:{name:"cuin",base:N.VOLUME,prefixes:w.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:N.VOLUME,prefixes:w.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:N.VOLUME,prefixes:w.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:N.VOLUME,prefixes:w.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:N.VOLUME,prefixes:w.NONE,value:15e-6,offset:0},drop:{name:"drop",base:N.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:N.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},minim:{name:"minim",base:N.VOLUME,prefixes:w.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:N.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:N.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:N.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:N.VOLUME,prefixes:w.NONE,value:1e-6,offset:0},cup:{name:"cup",base:N.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:N.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:N.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:N.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:N.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:N.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:N.VOLUME,prefixes:w.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:N.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:N.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:N.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:N.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:N.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:N.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:N.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:N.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},obl:{name:"obl",base:N.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},g:{name:"g",base:N.MASS,prefixes:w.SHORT,value:.001,offset:0},gram:{name:"gram",base:N.MASS,prefixes:w.LONG,value:.001,offset:0},ton:{name:"ton",base:N.MASS,prefixes:w.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:N.MASS,prefixes:w.SHORT,value:1e3,offset:0},grain:{name:"grain",base:N.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:N.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:N.MASS,prefixes:w.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:N.MASS,prefixes:w.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:N.MASS,prefixes:w.NONE,value:45.359237,offset:0},stick:{name:"stick",base:N.MASS,prefixes:w.NONE,value:.115,offset:0},stone:{name:"stone",base:N.MASS,prefixes:w.NONE,value:6350,offset:0},gr:{name:"gr",base:N.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:N.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:N.MASS,prefixes:w.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:N.MASS,prefixes:w.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:N.MASS,prefixes:w.NONE,value:45.359237,offset:0},s:{name:"s",base:N.TIME,prefixes:w.SHORT,value:1,offset:0},min:{name:"min",base:N.TIME,prefixes:w.NONE,value:60,offset:0},h:{name:"h",base:N.TIME,prefixes:w.NONE,value:3600,offset:0},second:{name:"second",base:N.TIME,prefixes:w.LONG,value:1,offset:0},sec:{name:"sec",base:N.TIME,prefixes:w.LONG,value:1,offset:0},minute:{name:"minute",base:N.TIME,prefixes:w.NONE,value:60,offset:0},hour:{name:"hour",base:N.TIME,prefixes:w.NONE,value:3600,offset:0},day:{name:"day",base:N.TIME,prefixes:w.NONE,value:86400,offset:0},rad:{name:"rad",base:N.ANGLE,prefixes:w.NONE,value:1,offset:0},deg:{name:"deg",base:N.ANGLE,prefixes:w.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:N.ANGLE,prefixes:w.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:N.ANGLE,prefixes:w.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:N.CURRENT,prefixes:w.SHORT,value:1,offset:0},ampere:{name:"ampere",base:N.CURRENT,prefixes:w.LONG,value:1,offset:0},K:{name:"K",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},degC:{name:"degC",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},degF:{name:"degF",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},celsius:{name:"celsius",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:N.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},mole:{name:"mole",base:N.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},cd:{name:"cd",base:N.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},candela:{name:"candela",base:N.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},N:{name:"N",base:N.FORCE,prefixes:w.SHORT,value:1,offset:0},newton:{name:"newton",base:N.FORCE,prefixes:w.LONG,value:1,offset:0},lbf:{name:"lbf",base:N.FORCE, -prefixes:w.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:N.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:N.BIT,prefixes:w.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:N.BIT,prefixes:w.BINARY_LONG,value:1,offset:0},B:{name:"B",base:N.BIT,prefixes:w.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:N.BIT,prefixes:w.BINARY_LONG,value:8,offset:0}},_={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 O in _)if(_.hasOwnProperty(O)){var C=A[_[O]],S=Object.create(C);S.name=O,A[O]=S}A.lt=A.l,A.liter=A.litre,A.liters=A.litres,A.lb=A.lbm,A.lbs=A.lbm,n.PREFIXES=w,n.BASE_UNITS=N,n.UNITS=A,e.exports=n},function(e,t,r){"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=r(166),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toText=function(e){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){var i=e&&e.parser();r+="Examples:\n";for(var o=0;o15?e:new a(e)},a}var i=r(348),o=r(175).digits;t.name="BigNumber",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}var a=n(r(118)),s=n(r(116)),u=1/Math.log((1+Math.sqrt(5))/2);o.prototype.insert=function(e,t){var r={key:e,value:t,degree:0};if(this._minimum){var n=this._minimum;r.left=n,r.right=n.right,n.right=r,r.right.left=r,a(e,n.key)&&(this._minimum=r)}else r.left=r,r.right=r,this._minimum=r;return this._size++,r},o.prototype.size=function(){return this._size},o.prototype.clear=function(){this._minimum=null,this._size=0},o.prototype.isEmpty=function(){return!!this._minimum},o.prototype.extractMinimum=function(){var e=this._minimum;if(null===e)return e;for(var t=this._minimum,r=e.degree,n=e.child;r>0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=m(t,this._size)),this._size--,this._minimum=t,e},o.prototype.remove=function(e){this._minimum=c(this._minimum,e,null),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&a(t.key,n.key)&&(f(e,t,n),l(e,n)),a(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){e.left.right=e.right,e.right.left=e.left,e.parent=t,t.child?(e.left=t.child,e.right=t.child.right,t.child.right=e,e.right.left=e):(t.child=e,e.right=e,e.left=e),t.degree++,e.mark=!1},m=function(e,t){var r=Math.floor(Math.log(t)*u)+1,n=new Array(r),i=0,o=e;if(o)for(i++,o=o.right;o!==e;)i++,o=o.right;for(var c;i>0;){for(var f=o.degree,l=o.right;;){if(c=n[f],!c)break;if(s(o.key,c.key)){var m=c;c=o,o=m}p(c,o),n[f]=null,f++}n[f]=o,o=l,i--}e=null;for(var h=0;r>h;h++)c=n[h],c&&(e?(c.left.right=c.right,c.right.left=c.left,c.left=e,c.right=e.right,e.right=c,c.right.left=c,a(c.key,e.key)&&(e=c)):e=c);return e};return o}t.name="FibonacciHeap",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function y(t,r){if(1!=arguments.length&&2!=arguments.length)throw new o("parse",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},a(t))return ge=t,T();if(Array.isArray(t)||t instanceof e.Matrix)return fe.deepMap(t,function(e){if(!a(e))throw new TypeError("String expected");return ge=e,T()});throw new TypeError("String or matrix expected")}function w(){ve=0,de=ge.charAt(0),we=0,be=null}function b(){ve++,de=ge.charAt(ve)}function N(){return ge.charAt(ve+1)}function E(){return ge.charAt(ve+2)}function M(){for(ye=le.NULL,xe="";" "==de||" "==de||"\n"==de&&we;)b();if("#"==de)for(;"\n"!=de&&""!=de;)b();if(""==de)return void(ye=le.DELIMITER);if("\n"==de&&!we)return ye=le.DELIMITER,xe=de,void b();var e=de+N(),t=e+E();if(3==t.length&&pe[t])return ye=le.DELIMITER,xe=t,b(),b(),void b();if(2==e.length&&pe[e])return ye=le.DELIMITER,xe=e,b(),void b();if(pe[de])return ye=le.DELIMITER,xe=de,void b();if(!S(de)){if(C(de)){for(;C(de)||z(de);)xe+=de,b();return void(ye=me[xe]?le.DELIMITER:le.SYMBOL)}for(ye=le.UNKNOWN;""!=de;)xe+=de,b();throw ue('Syntax error in part "'+xe+'"')}if(ye=le.NUMBER,"."==de)xe+=de,b(),z(de)||(ye=le.UNKNOWN);else{for(;z(de);)xe+=de,b();"."==de&&(xe+=de,b())}for(;z(de);)xe+=de,b();if(e=N(),("E"==de||"e"==de)&&(z(e)||"-"==e||"+"==e))for(xe+=de,b(),("+"==de||"-"==de)&&(xe+=de,b()),z(de)||(ye=le.UNKNOWN);z(de);)xe+=de,b()}function A(){do M();while("\n"==xe)}function _(){we++}function O(){we--}function C(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function S(e){return e>="0"&&"9">=e||"."==e}function z(e){return e>="0"&&"9">=e}function T(){w(),M();var e=B();if(""!=xe)throw ye==le.DELIMITER?ce("Unexpected operator "+xe):ue('Unexpected part "'+xe+'"');return e}function B(){var e,t,r=[];if(""==xe)return new l("undefined","undefined");for("\n"!=xe&&";"!=xe&&(e=I());"\n"==xe||";"==xe;)0==r.length&&e&&(t=";"!=xe,r.push({node:e,visible:t})),M(),"\n"!=xe&&";"!=xe&&""!=xe&&(e=I(),t=";"!=xe,r.push({node:e,visible:t}));return r.length>0?new c(r):e}function I(){if(ye==le.SYMBOL&&"function"==xe)throw ue('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return q()}function q(){var e,t,r,n,i=P();if("="==xe){if(i instanceof d)return e=i.name,A(),r=q(),new u(e,r);if(i instanceof m)return A(),r=q(),new x(i,r);if(i instanceof g&&(n=!0,t=[],e=i.name,i.args.forEach(function(e,r){e instanceof d?t[r]=e.name:n=!1}),n))return A(),r=q(),new p(e,t,r);throw ue("Invalid left hand side of assignment operator =")}return i}function P(){for(var e=U();"?"==xe;){var t=be;be=we,A();var r=e,n=U();if(":"!=xe)throw ue("False part of conditional expression expected");be=null,A();var i=P();e=new f(r,n,i),be=t}return e}function U(){for(var e=R();"or"==xe;)A(),e=new h("or","or",[e,R()]);return e}function R(){for(var e=L();"xor"==xe;)A(),e=new h("xor","xor",[e,L()]);return e}function L(){for(var e=k();"and"==xe;)A(),e=new h("and","and",[e,k()]);return e}function k(){for(var e=j();"|"==xe;)A(),e=new h("|","bitOr",[e,j()]);return e}function j(){for(var e=F();"^|"==xe;)A(),e=new h("^|","bitXor",[e,F()]);return e}function F(){for(var e=D();"&"==xe;)A(),e=new h("&","bitAnd",[e,D()]);return e}function D(){var e,t,r,n,i;for(e=G(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};xe in t;)r=xe,n=t[r],A(),i=[e,G()],e=new h(r,n,i);return e}function G(){var e,t,r,n,i;for(e=V(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};xe in t;)r=xe,n=t[r],A(),i=[e,V()],e=new h(r,n,i);return e}function V(){var e,t,r,n,i;for(e=Z(),t={to:"to","in":"to"};xe in t;)r=xe,n=t[r],A(),i=[e,Z()],e=new h(r,n,i);return e}function Z(){var e,t=[];if(e=":"==xe?new l("1","number"):W(),":"==xe&&be!==we){for(t.push(e);":"==xe&&t.length<3;)A(),t.push(")"==xe||"]"==xe||","==xe||""==xe?new d("end"):W());e=3==t.length?new v(t[0],t[2],t[1]):new v(t[0],t[1])}return e}function W(){var e,t,r,n,i;for(e=H(),t={"+":"add","-":"subtract"};xe in t;)r=xe,n=t[r],A(),i=[e,H()],e=new h(r,n,i);return e}function H(){var e,t,r,n,i;if(e=Y(),t={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},xe in t)for(;xe in t;)r=xe,n=t[r],A(),i=[e,Y()],e=new h(r,n,i);return(ye==le.SYMBOL||"in"==xe&&e instanceof l||ye==le.NUMBER&&!(e instanceof l)||"("==xe||"["==xe)&&(e=new h("*","multiply",[e,H()])),e}function Y(){var e,t,r={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[xe];return r?(e=xe,A(),t=[Y()],new h(e,r,t)):X()}function X(){var e,t,r,n;return e=J(),("^"==xe||".^"==xe)&&(t=xe,r="^"==t?"pow":"dotPow",A(),n=[e,Y()],e=new h(t,r,n)),e}function J(){var e,t,r,n,i;for(e=Q(),t={"!":"factorial","'":"transpose"};xe in t;)r=xe,n=t[r],M(),i=[e],e=new h(r,n,i);return e}function Q(){var e,t=[];if(ye==le.SYMBOL&&he[xe]){if(e=he[xe],M(),"("==xe){if(t=[],_(),M(),")"!=xe)for(t.push(P());","==xe;)M(),t.push(P());if(")"!=xe)throw ue("Parenthesis ) expected");O(),M()}return new e(t)}return $()}function $(){var e,t;return ye==le.SYMBOL||ye==le.DELIMITER&&xe in me?(t=xe,M(),e=K(t),e=ee(e)):te()}function K(e){var t;if("("==xe){if(t=[],_(),M(),")"!=xe)for(t.push(P());","==xe;)M(),t.push(P());if(")"!=xe)throw ue("Parenthesis ) expected");return O(),M(),new g(e,t)}return new d(e)}function ee(e){for(var t;"["==xe;){if(t=[],_(),M(),"]"!=xe)for(t.push(P());","==xe;)M(),t.push(P());if("]"!=xe)throw ue("Parenthesis ] expected");O(),M(),e=new m(e,t)}return e}function te(){var e,t,r;if('"'==xe){for(t="",r="";""!=de&&('"'!=de||"\\"==r);)t+=de,r=de,b();if(M(),'"'!=xe)throw ue('End of string " expected');return M(),e=new l(t,"string"),e=ee(e)}return re()}function re(){var e,t,r,n;if("["==xe){if(_(),M(),"]"!=xe){var i=ne();if(";"==xe){for(r=1,t=[i];";"==xe;)M(),t[r]=ne(),r++;if("]"!=xe)throw ue("End of matrix ] expected");O(),M(),n=t[0].nodes.length;for(var o=1;r>o;o++)if(t[o].nodes.length!=n)throw ce("Column dimensions mismatch ("+t[o].nodes.length+" != "+n+")");e=new s(t)}else{if("]"!=xe)throw ue("End of matrix ] expected");O(),M(),e=i}}else O(),M(),e=new s([]);return e}return ie()}function ne(){for(var e=[q()],t=1;","==xe;)M(),e[t]=q(),t++;return new s(e)}function ie(){var e;return ye==le.NUMBER?(e=xe,M(),new l(e,"number")):oe()}function oe(){var e;if("("==xe){if(_(),M(),e=q(),")"!=xe)throw ue("Parenthesis ) expected");return O(),M(),e}return ae()}function ae(){throw ue(""==xe?"Unexpected end of expression":"Value expected")}function se(){return ve-xe.length+1}function ue(e){var t=se(),r=new SyntaxError(e+" (char "+t+")");return r["char"]=t,r}function ce(e){var t=se(),r=new Error(e+" (char "+t+")");return r["char"]=t,r}var fe=n(r(2)),le={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},pe={",":!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},me={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},he={},ge="",ve=0,de="",xe="",ye=le.NULL,we=0,be=null;return y}var i=r(166),o=r(176),a=i.string.isString,s=r(177),u=r(179),c=r(178),f=r(180),l=r(181),p=r(182),m=r(183),h=r(184),g=r(185),v=r(186),d=r(188),x=r(187);t.name="parse",t.path="expression",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var s=n(r(12));return a.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},a.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},a.prototype.eval=function(e){return s(e).compile(o).eval(this.scope)},a.prototype.get=function(e){return this.scope[e]},a.prototype.set=function(e,t){return this.scope[e]=t},a.prototype.remove=function(e){delete this.scope[e]},a.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},a}t.name="Parser",t.path="expression",t.factory=n,t.math=!0},function(e,t,r){"use strict";t.ArrayNode=r(177),t.AssignmentNode=r(179),t.BlockNode=r(178),t.ConditionalNode=r(180),t.ConstantNode=r(181),t.IndexNode=r(183),t.FunctionAssignmentNode=r(182),t.FunctionNode=r(185),t.Node=r(189),t.OperatorNode=r(184),t.RangeNode=r(186),t.SymbolNode=r(188),t.UpdateNode=r(187)},function(e,t,r){t.e=r(190),t.E=r(190),t["false"]=r(191),t.i=r(193),t.Infinity=r(192),t.LN2=r(194),t.LN10=r(195),t.LOG2E=r(196),t.LOG10E=r(197),t.NaN=r(198),t["null"]=r(200),t.pi=r(199),t.PI=r(199),t.phi=r(201),t.SQRT1_2=r(202),t.SQRT2=r(203),t.tau=r(204),t["true"]=r(205),t.version=r(206),t.abs=r(217),t.add=r(218),t.ceil=r(219),t.cube=r(220),t.divide=r(221),t.dotDivide=r(222),t.dotMultiply=r(223),t.dotPow=r(224),t.exp=r(225),t.fix=r(226),t.floor=r(227),t.gcd=r(228),t.lcm=r(229),t.log=r(230),t.log10=r(231),t.mod=r(232),t.multiply=r(233),t.norm=r(234),t.nthRoot=r(235),t.pow=r(236),t.round=r(237),t.sign=r(238),t.sqrt=r(239),t.square=r(240),t.subtract=r(241),t.unaryMinus=r(242),t.unaryPlus=r(243),t.xgcd=r(244),t.bitAnd=r(245),t.bitNot=r(246),t.bitOr=r(247),t.bitXor=r(248),t.leftShift=r(249),t.rightArithShift=r(250),t.rightLogShift=r(251),t.arg=r(252),t.conj=r(253),t.re=r(254),t.im=r(255),t.bignumber=r(256),t["boolean"]=r(257),t.complex=r(258),t.index=r(259),t.matrix=r(260),t.number=r(261),t.string=r(262),t.unit=r(263),t.eval=r(264),t.help=r(265),t.and=r(266),t.not=r(267),t.or=r(268),t.xor=r(269),t.concat=r(270),t.cross=r(271),t.det=r(272),t.diag=r(273),t.dot=r(274),t.eye=r(275),t.flatten=r(276),t.inv=r(277),t.ones=r(278),t.range=r(279),t.resize=r(280),t.size=r(281),t.squeeze=r(282),t.subset=r(283),t.trace=r(284),t.transpose=r(285),t.zeros=r(286),t.combinations=r(287),t.factorial=r(288),t.gamma=r(289),t.permutations=r(290),t.pickRandom=r(291),t.random=r(292),t.randomInt=r(293),t.compare=r(294),t.deepEqual=r(295),t.equal=r(296),t.larger=r(297),t.largerEq=r(298),t.smaller=r(299),t.smallerEq=r(300),t.unequal=r(301),t.max=r(302),t.mean=r(303),t.median=r(304),t.min=r(305),t.prod=r(306),t.std=r(307),t.sum=r(308),t["var"]=r(309),t.acos=r(310),t.acosh=r(311),t.acot=r(312),t.acoth=r(313),t.acsc=r(314),t.acsch=r(315),t.asec=r(316),t.asech=r(317),t.asin=r(318),t.asinh=r(319),t.atan=r(320),t.atanh=r(321),t.atan2=r(322),t.cos=r(323),t.cosh=r(324),t.cot=r(325),t.coth=r(326),t.csc=r(327),t.csch=r(328),t.sec=r(329),t.sech=r(330),t.sin=r(331),t.sinh=r(332),t.tan=r(333),t.tanh=r(334),t.to=r(335),t.clone=r(336),t.map=r(337),t.filter=r(338),t.forEach=r(339),t.format=r(340),t["import"]=r(341),t.sort=r(343),t["typeof"]=r(342)},function(e,t,r){"use strict";function n(e,t,n){function h(e){if(!(this instanceof h))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof x)y(this,e);else if(e&&f(e.index)&&f(e.ptr)&&f(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size,this._datatype=e.datatype;else if(f(e))w(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var g=n(r(115)),v=e.Index,d=e.BigNumber,x=e.Matrix,y=function(e,t){"SparseMatrix"===t.type?(e._values=t._values?s.clone(t._values):void 0,e._index=s.clone(t._index),e._ptr=s.clone(t._ptr),e._size=s.clone(t._size),e._datatype=t._datatype):w(e,t.valueOf())},w=function(e,t){e._values=[],e._index=[],e._ptr=[],e._datatype=void 0;var r=t.length,n=0;if(r>0){var i=0;do{e._ptr.push(e._values.length);for(var o=0;r>o;o++){var a=t[o];if(f(a)){if(0===i&&nn&&(n=1),g(a,0)||(e._values.push(a),e._index.push(o))}i++}while(n>i)}e._ptr.push(e._values.length),e._size=[r,n]};h.prototype=new x,h.prototype.type="SparseMatrix",h.prototype.storage=function(){return"sparse"},h.prototype.subset=function(e,t,r){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return b(this,e);case 2:case 3:return N(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}};var b=function(e,t){if(!(t instanceof v))throw new TypeError("Invalid index");var r=t.isScalar();if(r)return e.get(t.min());var n=t.size();if(n.length!=e._size.length)throw new o(n.length,e._size.length);for(var i=t.min(),a=t.max(),s=0,u=e._size.length;u>s;s++)m(i[s],e._size[s]),m(a[s],e._size[s]);var c=function(e){return e};return O(e,i[0],a[0],i[1],a[1],c,!1)},N=function(e,t,r,n){if(!(t instanceof v))throw new TypeError("Invalid index");var i,u=t.size(),c=t.isScalar();if(r instanceof x?(i=r.size(),r=r.toArray()):i=a.size(r),c){if(0!==i.length)throw new TypeError("Scalar expected");e.set(t.min(),r,n)}else{if(1!==u.length&&2!==u.length)throw new o(u.length,e._size.length,"<");if(i.length");for(var p=t.min()[0],m=t.min()[1],h=i[0],g=i[1],d=0;h>d;d++)for(var y=0;g>y;y++){var w=r[d][y];e.set([d+p,y+m],w,n)}}return e};h.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new o(e.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var t=e[0],r=e[1];m(t,this._size[0]),m(r,this._size[1]);var n=E(t,this._ptr[r],this._ptr[r+1],this._index);return na-1||i>s-1)&&(_(this,Math.max(n+1,a),Math.max(i+1,s),r),a=this._size[0],s=this._size[1]),m(n,a),m(i,s);var u=E(n,this._ptr[i],this._ptr[i+1],this._index);return un[r-1])return r;for(;r>t;){var i=~~((t+r)/2),o=n[i];if(o>e)r=i;else{if(!(e>o))return i;t=i+1}}return t},M=function(e,t,r,n,i){r.splice(e,1),n.splice(e,1);for(var o=t+1;ot)throw new TypeError("Invalid size, must contain positive integers (size: "+u.format(e)+")")});var n=r?this.clone():this;return _(n,e[0],e[1],t)};var _=function(e,t,r,n){var i,o,a,s=n||0,u=!g(s,0),c=e._size[0],f=e._size[1];if(r>f){for(o=f;r>o;o++)if(e._ptr[o]=e._values.length,u)for(i=0;c>i;i++)e._values.push(s),e._index.push(i);e._ptr[r]=e._values.length}else f>r&&(e._ptr.splice(r+1,f-r),e._values.splice(e._ptr[r],e._values.length),e._index.splice(e._ptr[r],e._index.length));if(f=r,t>c){if(u){var l=0;for(o=0;f>o;o++){e._ptr[o]=e._ptr[o]+l,a=e._ptr[o+1]+l;var p=0;for(i=c;t>i;i++,p++)e._values.splice(a+p,0,s),e._index.splice(a+p,0,i),l++}e._ptr[f]=e._values.length}}else if(c>t){var m=0;for(o=0;f>o;o++){e._ptr[o]=e._ptr[o]-m;var h=e._ptr[o],v=e._ptr[o+1]-m;for(a=h;v>a;a++)i=e._index[a],i>t-1&&(e._values.splice(a,1),e._index.splice(a,1),m++)}e._ptr[o]=e._values.length}return e._size[0]=t,e._size[1]=r,e};h.prototype.clone=function(){var e=new h({values:this._values?s.clone(this._values):void 0,index:s.clone(this._index),ptr:s.clone(this._ptr),size:s.clone(this._size)});return e},h.prototype.size=function(){return s.clone(this._size)},h.prototype.map=function(e,t){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var r=this,n=this._size[0],i=this._size[1],o=function(t,n,i){return e(t,[n,i],r)};return O(this,0,n-1,0,i-1,o,t)};var O=function(e,t,r,n,i,o,a){for(var s=[],u=[],c=[],f=function(e,t,r){e=o(e,t,r),g(e,0)||(s.push(e),u.push(t))},l=n;i>=l;l++){c.push(s.length);for(var p=e._ptr[l],m=e._ptr[l+1],v=t,d=p;m>d;d++){var x=e._index[d];if(x>=t&&r>=x){if(!a)for(var y=v;x>y;y++)f(0,y-t,l-n);f(e._values[d],x-t,l-n)}v=x+1}if(!a)for(var w=v;r>=w;w++)f(0,w-t,l-n)}return c.push(s.length),new h({values:s,index:u,ptr:c,size:[r-t+1,i-n+1]})};h.prototype.forEach=function(e,t){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var r=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(!t)for(var l=u;f>l;l++)e(0,[l,o],r);e(this._values[c],[f,o],r),u=f+1}if(!t)for(var p=u;n>p;p++)e(0,[p,o],r)}},h.prototype.toArray=function(){return C(this._values,this._index,this._ptr,this._size,!0)},h.prototype.valueOf=function(){return C(this._values,this._index,this._ptr,this._size,!1)};var C=function(e,t,r,n,i){var o,a,u=n[0],c=n[1],f=new Array(u);for(o=0;u>o;o++)for(f[o]=new Array(c),a=0;c>a;a++)f[o][a]=0;for(a=0;c>a;a++)for(var l=r[a],p=r[a+1],m=l;p>m;m++)o=t[m],f[o][a]=e?i?s.clone(e[m]):e[m]:1;return f};return h.prototype.format=function(e){for(var t=this._size[0],r=this._size[1],n="Sparse Matrix ["+u.format(t,e)+" x "+u.format(r,e)+"] density: "+u.format(this._index.length/(t*r),e)+"\n",i=0;r>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],s=o;a>s;s++){var c=this._index[s];n+="\n ("+u.format(c,e)+", "+u.format(i,e)+") ==> "+(this._values?u.format(this._values[s],e):"X")}return n},h.prototype.toString=function(){return u.format(this.toArray())},h.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},h.prototype.diagonal=function(e){if(e){if(e instanceof d&&(e=e.toNumber()),!l(e)||!p(e))throw new TypeError("The parameter k must be an integer number")}else e=0;var t=e>0?e:0,r=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-r,i-t),a=[],u=[],c=[];c[0]=0;for(var f=t;i>f&&a.lengthv;v++){var x=this._index[v];if(x===f-t+r){a.push(s.clone(this._values[v])),u[a.length-1]=x-r;break}}return c.push(a.length),new h({values:a,index:u,ptr:c,size:[o,1]})},h.fromJSON=function(e){return new h(e)},h.diagonal=function(e,t,r){if(!f(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 d&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),r){if(r instanceof d&&(r=r.toNumber()),!l(r)||!p(r))throw new TypeError("The parameter k must be an integer number")}else r=0;var n,i=r>0?r:0,o=0>r?-r:0,a=e[0],s=e[1],u=Math.min(a-o,s-i);if(f(t)){if(t.length!==u)throw new Error("Invalid value array length");n=function(e){return t[e]}}else if(t instanceof x){var c=t.size();if(1!==c.length||c[0]!==u)throw new Error("Invalid matrix length");n=function(e){return t.get([e])}}else n=function(){return t};for(var m=[],v=[],y=[],w=0;s>w;w++){y.push(m.length);var b=w-i;if(b>=0&&u>b){var N=n(b);g(N,0)||(v.push(b+o),m.push(N))}}return y.push(m.length),new h({values:m,index:v,ptr:y,size:[a,s]})},h.prototype.swapRows=function(e,t){if(!(l(e)&&p(e)&&l(t)&&p(t)))throw new Error("Row index must be positive integers");if(2!==this._size.length)throw new Error("Only two dimensional matrix is supported");return m(e,this._size[0]),m(t,this._size[0]),h._swapRows(e,t,this._size[1],this._values,this._index,this._ptr),this},h._forEachRow=function(e,t,r,n,i){for(var o=n[e],a=n[e+1],s=o;a>s;s++)i(r[s],t[s])},h._swapRows=function(e,t,r,n,i,o){for(var a=0;r>a;a++){var s=o[a],u=o[a+1],c=E(e,s,u,i),f=E(t,s,u,i);if(u>c&&u>f&&i[c]===e&&i[f]===t){if(n){var l=n[c];n[c]=n[f],n[f]=l}}else if(u>c&&i[c]===e&&(f>=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(c>=f?c+1:c,1),n&&n.splice(c>=f?c+1:c,1)}else if(u>f&&i[f]===t&&(c>=u||i[c]!==e)){var m=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,m),i.splice(f>=c?f+1:f,1),n&&n.splice(f>=c?f+1:f,1)}}},x._storage.sparse=h,h}var i=r(166),o=r(169),a=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=i.number.isNumber,p=i.number.isInteger,m=a.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,r){function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof b)"DenseMatrix"===e.type?(this._data=u.clone(e._data),this._size=u.clone(e._size)):(this._data=e.toArray(),this._size=e.size());else if(e&&c(e.data)&&c(e.size))this._data=e.data,this._size=e.size;else if(c(e))this._data=x(e),this._size=s.size(this._data);else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._data=[],this._size=[0]}}function m(e,t){if(!(t instanceof y))throw new TypeError("Invalid index");var r=t.isScalar();if(r)return e.get(t.min());var i=t.size();if(i.length!=e._size.length)throw new o(i.length,e._size.length);for(var a=t.min(),s=t.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);return new n(h(e._data,t,i.length,0))}function h(e,t,r,n){var i=n==r-1,o=t.range(n);return o.map(i?function(t){return e[t]}:function(i){var o=e[i];return h(o,t,r,n+1)})}function g(e,t,r,n){if(!(t instanceof y))throw new TypeError("Invalid index");var i,a=t.size(),c=t.isScalar();if(r instanceof b?(i=r.size(),r=r.valueOf()):i=s.size(r),c){if(0!==i.length)throw new TypeError("Scalar expected");e.set(t.min(),r,n)}else{if(a.length");var p=t.max().map(function(e){return e+1});d(e,p,n);var m=a.length,h=0;v(e._data,t,r,m,h)}return e}function v(e,t,r,n,i){var o=i==n-1,a=t.range(i);a.forEach(o?function(t,n){p(t),e[t]=r[n]}:function(o,a){p(o),v(e[o],t,r[a],n,i+1)})}function d(e,t,r){for(var n=u.clone(e._size),i=!1;n.lengtho;o++)t[o]>n[o]&&(n[o]=t[o],i=!0);i&&N(e,n,r)}function x(e){for(var t=0,r=e.length;r>t;t++){var n=e[t];c(n)?e[t]=x(n):n instanceof b&&(e[t]=x(n.valueOf()))}return e}var y=e.Index,w=e.BigNumber,b=e.Matrix;n.prototype=new b,n.prototype.type="DenseMatrix",n.prototype.storage=function(){return"dense"},n.prototype.subset=function(e,t,r){switch(arguments.length){case 1:return m(this,e);case 2:case 3:return g(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new o(e.length,this._size.length);for(var t=0;tn;n++){var a=e[n];p(a,r.length),r=r[a]}return u.clone(r)},n.prototype.set=function(e,t,r){if(!c(e))throw new TypeError("Array expected");if(e.lengthn;n++)a=e[n],p(a,u.length),u=u[a];return a=e[e.length-1],p(a,u.length),u[a]=t,this},n.prototype.resize=function(e,t,r){if(!c(e))throw new TypeError("Array expected");var n=r?this.clone():this;return N(n,e,t)};var N=function(e,t,r){if(0===t.length){for(var n=e._data;c(n);)n=n[0];return u.clone(n)}return e._size=u.clone(t),e._data=s.resize(e._data,e._size,r),e};return n.prototype.clone=function(){var e=new n({data:u.clone(this._data),size:u.clone(this._size)});return e},n.prototype.size=function(){return this._size},n.prototype.map=function(e){var t=this,r=function(n,i){return c(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new n({data:r(this._data,[]),size:u.clone(this._size)})},n.prototype.forEach=function(e){var t=this,r=function(n,i){c(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},n.prototype.toArray=function(){return u.clone(this._data)},n.prototype.valueOf=function(){return this._data},n.prototype.format=function(e){return a.format(this._data,e)},n.prototype.toString=function(){return a.format(this._data)},n.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size}},n.prototype.diagonal=function(e){if(e){if(e instanceof w&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var t=e>0?e:0,r=0>e?-e:0,i=this._size[0],o=this._size[1],a=Math.min(i-r,o-t),s=[],c=0;a>c;c++)s[c]=u.clone(this._data[c+r][c+t]);return new n({data:s,size:[a]})},n.diagonal=function(t,r,i,o){if(!c(t))throw new TypeError("Array expected, size parameter");if(2!==t.length)throw new Error("Only two dimensions matrix are supported");if(t=t.map(function(e){if(e instanceof w&&(e=e.toNumber()),!f(e)||!l(e)||1>e)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof w&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var a,u=i>0?i:0,p=0>i?-i:0,m=t[0],h=t[1],g=Math.min(m-p,h-u);if(c(r)){if(r.length!==g)throw new Error("Invalid value array length");a=function(e){return r[e]}}else if(r instanceof b){var v=r.size();if(1!==v.length||v[0]!==g)throw new Error("Invalid matrix length");a=function(e){return r.get([e])}}else a=function(){return r};o||(o=a(0)instanceof e.BigNumber?new e.BigNumber(0):0);var d=[];if(t.length>0){d=s.resize(d,t,o);for(var x=0;g>x;x++)d[x+p][x+u]=a(x)}return new n({data:d,size:[m,h]})},n.fromJSON=function(e){return new n(e)},n.prototype.swapRows=function(e,t){if(!(f(e)&&l(e)&&f(t)&&l(t)))throw new Error("Row index must be positive integers");if(2!==this._size.length)throw new Error("Only two dimensional matrix is supported");return p(e,this._size[0]),p(t,this._size[0]),n._swapRows(e,t,this._data),this},n._swapRows=function(e,t,r){var n=r[e];r[e]=r[t],r[t]=n},b._storage.dense=n,b._storage["default"]=n,n}var i=r(166),o=r(169),a=i.string,s=i.array,u=i.object,c=Array.isArray,f=i.number.isNumber,l=i.number.isInteger,p=s.validateIndex;t.name="DenseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this._values=new Array(t),this._heap=new e.FibonacciHeap}var a=n(r(32)),s=n(r(115));return o.prototype.set=function(e,t){ -if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},o.prototype.get=function(e){var t=this._values[e];return t?t.value:0},o.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=a(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},o.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,o=[],a=n.extractMinimum();for(a&&o.push(a);a&&a.key<=t;)a.key>=e&&(s(a.value,0)||r(a.key,a.value,this)),a=n.extractMinimum(),a&&o.push(a);for(var u=0;ut;t++){var s=arguments[t];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[t]=s}var u=new o;return o.apply(u,e),u};return e.index.transform=t,t}},function(e,t,r){"use strict";e.exports=function(e){function t(e,t,r){var n=function(e,i){return Array.isArray(e)?e.map(function(e,t){return n(e,i.concat(t+1))}):t(e,i,r)};return n(e,[])}var r=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 t(n,i,n);if(n instanceof r)return e.matrix(t(n.valueOf(),i,n));throw new e.error.UnsupportedTypeError("map",e["typeof"](n))};return e.map.transform=n,n}},function(e,t,r){"use strict";var n=r(348),i=r(207).transform,o=r(175).isNumber,a=r(167).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}};return e.max.transform=r,r}},function(e,t,r){"use strict";var n=r(348),i=r(207).transform,o=r(175).isNumber,a=r(167).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}};return e.mean.transform=r,r}},function(e,t,r){"use strict";var n=r(348),i=r(207).transform,o=r(175).isNumber,a=r(167).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}};return e.min.transform=r,r}},function(e,t,r){"use strict";var n=r(208).isBoolean,i=r(167).argsToArray;e.exports=function(e){var t=function(){var t=i(arguments),r=t.length-1,o=t[r];return n(o)||t.push(!0),e.range.apply(e,t)};return e.range.transform=t,t}},function(e,t,r){"use strict";e.exports=function(){function e(t){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");t instanceof e?this.value=t.value:this.value=t}function t(t,r){var n=Array.prototype.slice;"function"==typeof r?e.prototype[t]=function(){var t=[this.value].concat(n.call(arguments,0));return new e(r.apply(this,t))}:e.prototype[t]=new e(r)}var n=r(209);return e.prototype.done=function(){return this.value},e.prototype.valueOf=function(){return this.value},e.prototype.toString=function(){return n.format(this.value)},e.createProxy=function(e,r){if("string"==typeof e)t(e,r);else for(var n in e)e.hasOwnProperty(n)&&t(n,e[n])},e}},function(e,t,r){"use strict";var n=r(207).transform,i=(r(208).isBoolean,r(167).argsToArray);e.exports=function(e){var t=function(){try{return e.subset.apply(e,i(arguments))}catch(t){throw n(t)}};return e.subset.transform=t,t}},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("abs",{number:Math.abs,Complex:function(e){var t=Math.abs(e.re),r=Math.abs(e.im);if(1e3>t&&1e3>r)return Math.sqrt(t*t+r*r);if(t>=r){var n=r/t;return t*Math.sqrt(1+n*n)}var i=t/r;return r*Math.sqrt(1+i*i)},BigNumber:function(e){return e.abs()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="abs",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=n(r(75)),c=n(r(115)),f=n(r(210)),l=n(r(212)),p=n(r(211)),m=e.DenseMatrix,h=e.SparseMatrix,g=a("add",{"any, any":l,"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();if(r.length!==n.length)throw new o(r.length,n.length);var i;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":i=d(e,t,r,n);break;default:i=x(e,t.valueOf(),r,n)}break;default:switch(t.storage()){case"sparse":i=y(e.valueOf(),t,r,n);break;default:i=w(e.valueOf(),t.valueOf(),e.storage())}}return i},"Array, Array":function(e,t){return g(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return g(u(e),t)},"Matrix, Array":function(e,t){return g(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=v(e,t,e.size());break;default:r=s.deepMap2(e,t,g)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=v(t,e,t.size());break;default:r=s.deepMap2(e,t,g)}return r},"Array, any":function(e,t){return s.deepMap2(e,t,g)},"any, Array":function(e,t){return s.deepMap2(e,t,g)}}),v=function(e,t,r){var n=r[0],i=r[1],o=e._values,a=e._index,s=e._ptr;if(!c(t,0)){for(var u=[],f=[],p=new Array(i),m=new h({values:u,index:f,ptr:p,size:[n,i]}),g=0;i>g;g++){p[g]=f.length;for(var v=s[g],d=s[g+1],x=v;d>x;x++){var y=l(o[x],t);c(y,0)||(f.push(a[x]),u.push(y))}}return p[i]=f.length,m}return e.clone()},d=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=e._values,s=e._datatype,u=t._values,c=t._datatype,m=s&&c&&s===c?s:void 0,g=m?p.signatures[m+","+m]:p,v=m?l.signatures[m+","+m]:l,d=a&&u,x=d?[]:void 0,y=[],w=new Array(o),b=new h({values:x,index:y,ptr:w,size:[i,o]}),N=d?new Array(i):void 0,E=new Array(i),M=0;o>M;M++)if(w[M]=y.length,f(e,M,1,E,N,M+1,b,g,v),f(t,M,1,E,N,M+1,b,g,v),d)for(var A=w[M],_=y.length,O=A;_>O;O++)x.push(N[y[O]]);return w[o]=y.length,b},x=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=t,s=[],u=[],m=new Array(o),g=new h({values:s,index:u,ptr:m,size:[i,o]}),v=new Array(i),d=new Array(i),x=0;o>x;x++){m[x]=u.length;for(var y=0;i>y;y++){var w=a[y][x];c(w,0)||(v[y]=w,d[y]=x+1,u.push(y))}f(e,x,1,d,v,x+1,g,p,l);for(var b=m[x],N=u.length,E=b;N>E;E++)s.push(v[u[E]])}return m[o]=u.length,g},y=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var o=r[0],a=r[1],s=e,u=t._values,c=t._index,f=t._ptr,p=i(s),h=new m({data:p,size:[o,a]}),g=0;a>g;g++)for(var v=f[g],d=f[g+1],x=v;d>x;x++){var y=c[x];p[y][g]=l(p[y][g],u[x])}return h},w=function(e,t,r){return u(s.deepMap2(e,t,g),r)};return g}var i=r(170).clone,o=r(169);t.name="add",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("ceil",{number:Math.ceil,Complex:function(e){return new e.constructor(Math.ceil(e.re),Math.ceil(e.im))},BigNumber:function(e){return e.ceil()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="ceil",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(211)).signatures["Complex,Complex"],s=i("cube",{number:function(e){return e*e*e},Complex:function(e){return a(a(e,e),e)},BigNumber:function(e){return e.times(e).times(e)},"Array | Matrix":function(e){return o.deepMap(e,s,!0)}});return s}t.name="cube",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(213)),s=n(r(48)),u=n(r(96));return i("divide",{"any, any":a,"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return s(e,u(t))}})}t.name="divide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(213));return i("dotDivide",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}t.name="dotDivide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(48));return i("dotMultiply",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}r(167).size;t.name="dotMultiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(50));return i("dotMultiply",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}t.name="dotPow",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("exp",{number:Math.exp,Complex:function(t){var r=Math.exp(t.re);return new e.Complex(r*Math.cos(t.im),r*Math.sin(t.im))},BigNumber:function(e){return e.exp()},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="exp",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(e){return new e.constructor(e.re>0?Math.floor(e.re):Math.ceil(e.re),e.im>0?Math.floor(e.im):Math.ceil(e.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="fix",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("floor",{number:Math.floor,Complex:function(e){return new e.constructor(Math.floor(e.re),Math.floor(e.im))},BigNumber:function(e){return e.floor()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="floor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){if(!t.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var n=new e.BigNumber(0);!r.isZero();){var i=t.mod(r);t=r,r=i}return t.lt(n)?t.neg():t}var s=n(r(2)),u=o("gcd",{"number, number":i,"BigNumber, BigNumber":a,"Array | Matrix, Array | Matrix | number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=u(e,t),i=0;ie?-e:e}var o=r(175).isInteger;t.name="gcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){if(!t.isInt()||!r.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(t.isZero()||r.isZero())return new e.BigNumber(0);for(var n=t.times(r);!r.isZero();){var i=r;r=t.mod(i),t=i}return n.div(t).abs()}var s=n(r(2)),u=o("lcm",{"number, number":i,"BigNumber, BigNumber":a,"Array | Matrix, Array | Matrix | number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=u(e,t),i=0;i=0?Math.log(t):u(new e.Complex(t,0))}var a=n(r(2)),s=n(r(213)),u=i("log",{number:o,Complex:function(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im)),Math.atan2(t.im,t.re))},BigNumber:function(e){return e.ln()},"Array | Matrix":function(e){return a.deepMap(e,u)},"any, any":function(e,t){return s(u(e),u(t))}});return u}t.name="log",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/Math.LN10,Math.atan2(t.im,t.re)/Math.LN10)}var a=n(r(2)),s=i("log10",{number:function(t){return t>=0?Math.log(t)/Math.LN10:s(new e.Complex(t,0))},Complex:o,BigNumber:function(t){return t.isNegative()?o(new e.Complex(t.toNumber(),0)):t.log()},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}t.name="log10",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")}var a=n(r(2)),s=i("mod",{"number, number":o,"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}t.name="mod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=a(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=a(e);(!i||m(t,i))&&(i=t)},!0),i||0}if("fro"===t)return o(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var h=0;return e.forEach(function(e){h=s(u(a(e),t),h)},!0),u(h,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var d=[],x=0;return e.forEach(function(e,t){var r=t[1],n=s(d[r]||0,a(e));p(n,x)&&(x=n),d[r]=n},!0),x}if(t===Number.POSITIVE_INFINITY||"inf"===t){var y=[],w=0;return e.forEach(function(e,t){var r=t[0],n=s(y[r]||0,a(e));p(n,w)&&(w=n),y[r]=n},!0),w}if("fro"===t)return c(g(f(v(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}var a=n(r(31)),s=n(r(32)),u=n(r(50)),c=n(r(53)),f=n(r(48)),l=n(r(115)),p=n(r(116)),m=n(r(118)),h=n(r(75)),g=n(r(103)),v=n(r(104)),d=a.signatures.Complex,x=i("norm",{number:Math.abs,Complex:d,BigNumber:function(e){return e.abs()},"boolean | null":function(e){return Math.abs(e)},Array:function(e){return o(h(e),2)},Matrix:function(e){return o(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return x(e)},"Array, number | BigNumber | string":function(e,t){return o(h(e),t)},"Matrix, number | BigNumber | string":function(e,t){return o(e,t)}});return x}t.name="norm",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(75)),s=n(r(212)),u=n(r(211)),c=n(r(115)),f=n(r(2)),l=e.DenseMatrix,p=e.SparseMatrix,m=e.Spa,h=i("multiply",{"any, any":u,"Array, Array":function(t,r){g(o.size(t),o.size(r));var n=h(a(t),a(r));return n instanceof e.Matrix?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return g(r,n),1===r.length?1===n.length?v(e,t,r[0]):d(e,t):1===n.length?y(e,t):w(e,t)},"Matrix, Array":function(e,t){return h(e,a(t))},"Array, Matrix":function(e,t){return h(a(e,t.storage()),t)},"Array, any":function(e,t){return f.deepMap2(e,t,h)},"Matrix, any":function(e,t){return e.map(function(e){return h(e,t)},!0)},"any, Array | Matrix":function(e,t){return t.map(function(t){return h(t,e)},!0)}}),g=function(e,t){switch(e.length){case 1:switch(t.length){case 1:if(e[0]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(e[0]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+e[0]+") must match Matrix rows ("+t[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+t.length+" dimensions)")}break;case 2:switch(t.length){case 1:if(e[1]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+e[1]+") must match Vector length ("+t[0]+")");break;case 2:if(e[1]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+e[1]+") must match Matrix B rows ("+t[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+t.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+e.length+" dimensions)")}},v=function(e,t,r){if(0===r)throw new Error("Cannot multiply two empty vectors");for(var n=e._data,i=t._data,o=0,a=0;r>a;a++)o=s(o,h(n[a],i[a]));return o},d=function(e,t){switch(t.storage()){case"dense":return x(e,t)}throw new Error("Not implemented")},x=function(e,t){for(var r=e._data,n=e._size,i=t._data,o=t._size,a=n[0],u=o[1],c=new Array(u),f=0;u>f;f++){for(var p=0,m=0;a>m;m++)p=s(p,h(r[m],i[m][f]));c[f]=p}return 1===u?c[0]:new l({data:c,size:[u]})},y=function(e,t){switch(e.storage()){case"dense":return b(e,t);case"sparse":return M(e,t)}},w=function(e,t){switch(e.storage()){case"dense":switch(t.storage()){case"dense":return N(e,t);case"sparse":return E(e,t)}break;case"sparse":switch(t.storage()){case"dense":return A(e,t);case"sparse":return _(e,t)}}},b=function(e,t){for(var r=e._data,n=e._size,i=t._data,o=n[0],a=n[1],u=new Array(o),c=0;o>c;c++){for(var f=r[c],p=0,m=0;a>m;m++)p=s(p,h(f[m],i[m]));u[c]=p}return 1===o?u[0]:new l({data:u,size:[o]})},N=function(e,t){for(var r=e._data,n=e._size,i=e._datatype,o=t._data,a=t._size,c=t._datatype,f=n[0],p=n[1],m=a[1],h=i&&c&&i===c?i:void 0,g=h?u.signatures[h+","+h]||u:u,v=h?s.signatures[h+","+h]||s:s,d=new Array(f),x=0;f>x;x++){var y=r[x];d[x]=new Array(m);for(var w=0;m>w;w++){for(var b=g(y[0],o[0][w]),N=1;p>N;N++)b=v(b,g(y[N],o[N][w]));d[x][w]=b}}return 1===f&&1===m?d[0][0]:new l({data:d,size:[f,m]})},E=function(e,t){for(var r=e._data,n=e._size,i=t._values,o=t._index,a=t._ptr,u=t._size,c=n[0],f=u[1],p=new Array(c),m=0;c>m;m++){p[m]=new Array(f);for(var g=r[m],v=0;f>v;v++){for(var d=0,x=a[v],y=a[v+1],w=x;y>w;w++){var b=o[w];d=s(d,h(g[b],i[w]))}p[m][v]=d}}return 1===c&&1===f?p[0][0]:new l({data:p,size:[c,f]})},M=function(e,t){var r=e._values,n=e._index,i=e._ptr,o=t._data,a=e._size[0],s=t._size[0],u=[],f=[],l=[],g=new m(a);l.push(0);for(var v=0;s>v;v++){var d=o[v];if(!c(d,0))for(var x=i[v],y=i[v+1],w=x;y>w;w++){var b=n[w];g.accumulate(b,h(d,r[w]))}}return g.forEach(0,a-1,function(e,t){f.push(e),u.push(t)}),l.push(u.length),1===a?1===u.length?u[0]:0:new p({values:u,index:f,ptr:l,size:[a,1]})},A=function(e,t){var r=e._values,n=e._index,i=e._ptr,o=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");for(var a=t._data,f=t._datatype,l=e._size[0],m=t._size[0],h=t._size[1],g=o&&f&&o===f?o:void 0,v=g?u.signatures[g+","+g]||u:u,d=g?s.signatures[g+","+g]||s:s,x=[],y=[],w=new Array(h+1),b=new p({values:x,index:y,ptr:w,size:[l,h],datatype:g}),N=new Array(l),E=new Array(l),M=0;h>M;M++){w[M]=y.length;for(var A=M+1,_=0;m>_;_++){var O=a[_][M];if(!c(O,0))for(var C=i[_],S=i[_+1],z=C;S>z;z++){var T=n[z];E[T]!==A?(E[T]=A,y.push(T),N[T]=v(O,r[z])):N[T]=d(N[T],v(O,r[z]))}}for(var B=w[M],I=y.length,q=B;I>q;q++){var P=y[q];x[q]=N[P]}}return w[h]=y.length,1===l&&1===h?1===x.length?x[0]:0:b},_=function(e,t){for(var r,n,i,o,a,c,f,l,m=e._values,h=e._index,g=e._ptr,v=e._datatype,d=t._values,x=t._index,y=t._ptr,w=t._datatype,b=v&&w&&v===w?v:void 0,N=b?u.signatures[b+","+b]||u:u,E=b?s.signatures[b+","+b]||s:s,M=e._size[0],A=t._size[1],_=m&&d,O=_?[]:void 0,C=[],S=new Array(A+1),z=new p({values:O,index:C,ptr:S,size:[M,A],datatype:b}),T=_?new Array(M):void 0,B=new Array(M),I=0;A>I;I++){S[I]=C.length;var q=I+1;for(a=y[I],c=y[I+1],o=a;c>o;o++)if(l=x[o],_)for(n=g[l],i=g[l+1],r=n;i>r;r++)f=h[r],B[f]!==q?(B[f]=q,C.push(f),T[f]=N(d[o],m[r])):T[f]=E(T[f],N(d[o],m[r]));else for(n=g[l],i=g[l+1],r=n;i>r;r++)f=h[r],B[f]!==q&&(B[f]=q,C.push(f));if(_)for(var P=S[I],U=C.length,R=P;U>R;R++){var L=C[R];O[R]=T[L]}}return S[A]=C.length,1===M&&1===A&&_?1===O.length?O[0]:0:z};return h}var i=r(166),o=i.array;t.name="multiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){var n=new e.BigNumber(0),i=new e.BigNumber(1),o=r.isNegative();if(o&&(r=r.negated()),r.isZero())throw new Error("Root must be non-zero");if(t.isNegative()&&!r.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(t.isZero())return n;if(!t.isFinite())return o?n:t;var a=i,s=0,u=100;do{var c=a,f=t.div(a.pow(r.minus(1))).minus(a).div(r);a=a.plus(f),s++}while(!a.equals(c)&&u>s);return o?i.div(a):a}var s=n(r(2)),u=o("nthRoot",{number:function(e){return i(e,2)},"number, number":i,BigNumber:function(t){return a(t,new e.BigNumber(2))},"BigNumber, BigNumber":a,"Array | Matrix":function(e){return s.deepMap(e,u)},"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}function i(e,t){var r=0>t;if(r&&(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 r?0:e;var n=1e-16,i=1,o=0,a=100;do{var s=(e/Math.pow(i,t-1)-i)/t;i+=s,o++}while(Math.abs(s)>n&&a>o);return r?1/i:i}t.name="nthRoot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(e,t){return f(m(p(e),t))}function u(e,t){if(!i(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=o(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var n=l(r[0]).valueOf(),a=e;t>=1;)1==(1&t)&&(n=m(a,n)),t>>=1,a=m(a,a);return n}function c(e,t){return h(u(e.valueOf(),t))}var f=(n(r(2)),n(r(39))),l=n(r(94)),p=n(r(44)),m=n(r(48)),h=n(r(75)),g=a("pow",{"number, number":function(t,r){return i(r)||t>=0?Math.pow(t,r):s(new e.Complex(t,0),new e.Complex(r,0))},"BigNumber, BigNumber":function(t,r){return i(r)||t>=0?t.pow(r):s(new e.Complex(t.toNumber(),0),new e.Complex(r.toNumber(),0))},"Complex, Complex":s,"Array, number":u,"Array, BigNumber":function(e,t){return u(e,t.toNumber())},"Matrix, number":c,"Matrix, BigNumber":function(e,t){return c(e,t.toNumber())}});return g}var i=r(175).isInteger,o=r(167).size;t.name="pow",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("round",{number:Math.round,"number, number":function(e,t){if(!o(t))throw new TypeError("Number of decimals in function round must be an integer");if(0>t||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return i(e,t)},Complex:function(t){return new e.Complex(Math.round(t.re),Math.round(t.im))},"Complex, number":function(t,r){return new e.Complex(i(t.re,r),i(t.im,r))},"Complex, BigNumber":function(t,r){var n=r.toNumber();return new e.Complex(i(t.re,n),i(t.im,n))},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError("Number of decimals in function round must be an integer");return e.toDecimalPlaces(t.toNumber())},"Array | Matrix":function(e){return s.deepMap(e,u,!0)},"Array | Matrix, number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | Complex | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}function i(e,t){return parseFloat(a(e,t))}var o=r(175).isInteger,a=r(175).toFixed;t.name="round",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("sign",{number:i.sign,Complex:function(e){var t=Math.sqrt(e.re*e.re+e.im*e.im);return new e.constructor(e.re/t,e.im/t)},BigNumber:function(e){return new e.constructor(e.cmp(0))},"Array | Matrix":function(e){return a.deepMap(e,s,!0)}});return s}var i=r(175);t.name="sign",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){return t>=0?Math.sqrt(t):a(new e.Complex(t,0))}function a(t){var r,n,i=Math.sqrt(t.re*t.re+t.im*t.im);return r=t.re>=0?.5*Math.sqrt(2*(i+t.re)):Math.abs(t.im)/Math.sqrt(2*(i-t.re)),n=t.re<=0?.5*Math.sqrt(2*(i-t.re)):Math.abs(t.im)/Math.sqrt(2*(i+t.re)),t.im>=0?new e.Complex(r,n):new e.Complex(r,-n)}var s=n(r(2)),u=i("sqrt",{number:o,Complex:a,BigNumber:function(e){return e.isNegative()?o(e.toNumber()):e.sqrt()},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}t.name="sqrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("square",{number:function(e){return e*e},Complex:function(e){return new e.constructor(e.re*e.re-e.im*e.im,e.re*e.im+e.im*e.re)},BigNumber:function(e){return e.times(e)},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="square",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(56)),u=n(r(75)),c=n(r(115)),f=n(r(210)),l=n(r(212)),p=n(r(211)),m=n(r(2)),h=e.DenseMatrix,g=e.SparseMatrix,v=a("subtract",{"number, number":function(e,t){return e-t},"Complex, Complex":function(t,r){return new e.Complex(t.re-r.re,t.im-r.im)},"BigNumber, BigNumber":function(e,t){return e.minus(t)},"Unit, Unit":function(e,t){if(null==e.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(!e.equalBase(t))throw new Error("Units do not match");var r=e.clone();return r.value-=t.value,r.fixPrefix=!1,r},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();if(r.length!==n.length)throw new o(r.length,n.length);var i;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":i=y(e,t,r,n);break;default:i=w(e,t.valueOf(),r,n)}break;default:switch(t.storage()){case"sparse":i=b(e.valueOf(),t,r,n);break;default:i=N(e.valueOf(),t.valueOf(),e.storage())}}return i},"Array, Array":function(e,t){return v(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return v(u(e),t)},"Matrix, Array":function(e,t){return v(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=d(e,t,e.size());break;default:r=m.deepMap2(e,t,v)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=x(e,t,t.size());break;default:r=m.deepMap2(e,t,v)}return r},"Array, any":function(e,t){return m.deepMap2(e,t,v)},"any, Array":function(e,t){return m.deepMap2(e,t,v)}}),d=function(e,t,r){var n=r[0],i=r[1],o=e._values,a=e._index,s=e._ptr;if(!c(t,0)){for(var u=[],f=[],l=new Array(i),p=new g({values:u,index:f,ptr:l,size:[n,i]}),m=0;i>m;m++){l[m]=f.length;for(var h=s[m],d=s[m+1],x=h;d>x;x++){var y=v(o[x],t);c(y,0)||(f.push(a[x]),u.push(y))}}return l[i]=f.length,p}return e.clone()},x=function(e,t,r){var n=r[0],i=r[1],o=t._values,a=t._index,s=t._ptr;if(!c(e,0)){for(var u=[],f=[],l=new Array(i),p=new g({values:u,index:f,ptr:l,size:[n,i]}),m=0;i>m;m++){l[m]=f.length;for(var h=s[m],d=s[m+1],x=h;d>x;x++){var y=v(e,o[x]);c(y,0)||(f.push(a[x]),u.push(y))}}return l[i]=f.length,p}return t.clone()},y=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=e._values,s=t._values,u=a&&s,c=u?[]:void 0,m=[],h=new Array(o),v=new g({values:c,index:m,ptr:h,size:[i,o]}),d=u?new Array(i):void 0,x=new Array(i),y=0;o>y;y++)if(h[y]=m.length,f(e,y,1,x,d,y+1,v,p,l),f(t,y,-1,x,d,y+1,v,p,l),u)for(var w=h[y],b=m.length,N=w;b>N;N++)c.push(d[m[N]]);return h[o]=m.length,v},w=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=t,u=[],m=[],h=new Array(o),v=new g({values:u,index:m,ptr:h,size:[i,o]}),d=new Array(i),x=new Array(i),y=0;o>y;y++){h[y]=m.length;for(var w=0;i>w;w++){var b=s(a[w][y]);c(b,0)||(d[w]=b,x[w]=y+1,m.push(w))}f(e,y,1,x,d,y+1,v,p,l);for(var N=h[y],E=m.length,M=N;E>M;M++)u.push(d[m[M]])}return h[o]=m.length,v},b=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var o=r[0],a=r[1],s=e,u=t._values,c=t._index,f=t._ptr,l=i(s),p=new h({data:l,size:[o,a]}),m=0;a>m;m++)for(var g=f[m],d=f[m+1],x=g;d>x;x++){var y=c[x];l[y][m]=v(l[y][m],u[x])}return p},N=function(e,t,r){return u(m.deepMap2(e,t,v),r)};return v}var i=r(170).clone,o=r(169);t.name="subtract",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unaryMinus",{number:function(e){return-e},Complex:function(e){return new e.constructor(-e.re,-e.im)},BigNumber:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=-e.value,t},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="unaryMinus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unaryPlus",{number:function(e){return e},Complex:function(e){return e.clone()},BigNumber:function(e){return e},Unit:function(e){return e.clone()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)},"boolean | string | null":function(r){return"bignumber"==t.number?new e.BigNumber(+r):+r}});return a}t.name="unaryPlus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,r){var n,o,a,s=0,c=1,f=1,l=0;if(!i(e)||!i(r))throw new Error("Parameters in function xgcd must be integer numbers");for(;r;)o=Math.floor(e/r),a=e%r,n=s,s=c-o*s,c=n,n=f,f=l-o*f,l=n,e=r,r=a;var p;return p=0>e?[-e,-c,-l]:[e,e?c:0,l],"array"===t.matrix?p:u(p)}function s(r,n){var i,o,a,s=new e.BigNumber(0),c=new e.BigNumber(0),f=new e.BigNumber(1),l=new e.BigNumber(1),p=new e.BigNumber(0);if(!r.isInt()||!n.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!n.isZero();)o=r.div(n).floor(),a=r.mod(n),i=c,c=f.minus(o.times(c)),f=i,i=l,l=p.minus(o.times(l)),p=i,r=n,n=a;var m;return m=r.lt(s)?[r.neg(),f.neg(),p.neg()]:[r,r.isZero()?0:f,p],"array"===t.matrix?m:u(m)}var u=(n(r(2)),n(r(75)));return o("xgcd",{"number, number":a,"BigNumber, BigNumber":s})}var i=r(175).isInteger;t.name="xgcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitAnd",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitAnd");return e&t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(214).and; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.math=t():e.math=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){function n(e){var t=i.create();t.create=n;var o=t._config;return t["import"](r(2)),t.expression={},t.expression.node=r(14),t["import"](r(12)),t["import"](r(13)),t.expression.docs=r(15),t.type.Complex=r(3),t.type.Range=r(4),t.type.Index=r(5),t["import"](r(6)),t.type.Unit=r(7),t.type.Help=r(8),t.type.ResultSet=r(9),t["import"](r(10)),t["import"](r(11)),t["import"](r(16)),t["import"](r(17)),t["import"](r(18)),t["import"](r(19)),t["import"](r(162)),t["import"](r(163)),t["import"](r(29)),t["import"](r(31)),t["import"](r(30)),t["import"](r(34)),t["import"](r(32)),t["import"](r(33)),t["import"](r(35)),t["import"](r(36)),t["import"](r(37)),t["import"](r(38)),t["import"](r(39)),t["import"](r(40)),t["import"](r(41)),t["import"](r(42)),t["import"](r(43)),t["import"](r(44)),t["import"](r(47)),t["import"](r(45)),t["import"](r(46)),t["import"](r(48)),t["import"](r(49)),t["import"](r(50)),t["import"](r(51)),t["import"](r(52)),t["import"](r(53)),t["import"](r(54)),t["import"](r(55)),t["import"](r(56)),t["import"](r(57)),t["import"](r(58)),t["import"](r(60)),t["import"](r(59)),t["import"](r(61)),t["import"](r(62)),t["import"](r(63)),t["import"](r(64)),t["import"](r(65)),t["import"](r(66)),t["import"](r(67)),t["import"](r(68)),t["import"](r(69)),t["import"](r(70)),t["import"](r(71)),t["import"](r(72)),t["import"](r(73)),t["import"](r(74)),t["import"](r(75)),t["import"](r(77)),t["import"](r(76)),t["import"](r(78)),t["import"](r(79)),t["import"](r(80)),t["import"](r(81)),t["import"](r(82)),t["import"](r(83)),t["import"](r(84)),t["import"](r(85)),t["import"](r(86)),t["import"](r(87)),t["import"](r(88)),t["import"](r(89)),t["import"](r(90)),t["import"](r(91)),t["import"](r(92)),t["import"](r(93)),t["import"](r(94)),r(95)(t,o),r(96)(t,o),r(97)(t,o),t["import"](r(98)),t["import"](r(99)),r(100)(t,o),t["import"](r(101)),t["import"](r(103)),r(102)(t,o),t["import"](r(104)),t["import"](r(105)),t["import"](r(106)),t["import"](r(107)),t["import"](r(108)),t["import"](r(109)),t["import"](r(110)),t["import"](r(111)),t["import"](r(112)),t["import"](r(113)),t["import"](r(114)),t["import"](r(115)),t["import"](r(116)),t["import"](r(117)),t["import"](r(118)),t["import"](r(119)),t["import"](r(120)),t["import"](r(121)),t["import"](r(122)),t["import"](r(123)),t["import"](r(124)),t["import"](r(125)),t["import"](r(126)),t["import"](r(127)),t["import"](r(128)),t["import"](r(129)),t["import"](r(130)),t["import"](r(131)),t["import"](r(132)),t["import"](r(133)),t["import"](r(134)),t["import"](r(135)),t["import"](r(136)),t["import"](r(137)),t["import"](r(139)),t["import"](r(138)),t["import"](r(140)),t["import"](r(141)),t["import"](r(142)),t["import"](r(143)),t["import"](r(144)),t["import"](r(145)),t["import"](r(146)),t["import"](r(147)),t["import"](r(148)),t["import"](r(149)),t["import"](r(150)),t["import"](r(151)),t["import"](r(152)),t["import"](r(153)),t["import"](r(154)),t["import"](r(155)),t["import"](r(156)),t["import"](r(157)),t["import"](r(158)),t["import"](r(159)),t["import"](r(160)),t["import"](r(161)),t.expression.transform={concat:r(20)(t,o),filter:r(21)(t,o),forEach:r(22)(t,o),index:r(23)(t,o),map:r(24)(t,o),max:r(25)(t,o),mean:r(26)(t,o),min:r(27)(t,o),range:r(28)(t,o),subset:r(165)(t,o)},t.type.Chain=r(164)(),t.type.Chain.createProxy(t),t.config(e),t}var i=r(1);e.exports=n()},function(e,t,r){var n=r(166).isFactory;t.create=function(){function e(r){if(!n(r))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var u,c=t.indexOf(r);return-1===c?(u=r.math?r.factory(o.type,s,e,a,o):r.factory(o.type,s,e,a),t.push(r),i.push(u)):u=i[c],u}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 t=[],i=[],o={type:{}},a=r(167).create(o),s={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};return o["import"]=e(r(169)),r(168)(o,s),o._config=s,o.error=r(170),o}},function(e,t,r){"use strict";function n(e,t,n,u){function c(e,t,r){var n,i,o,a;if(0>=t){if(Array.isArray(e[0])){for(a=f(e),i=[],n=0;nr;r++){var a=[];for(t=0;n>t;t++)a.push(e[t][r]);o.push(a)}return o}var l=n(r(73)),p={};return p.argsToArray=function(t){if(0===t.length)return[];if(1==t.length){var r=t[0];return r instanceof e.Matrix&&(r=r.valueOf()),Array.isArray(r)||(r=[r]),r}return i.array.argsToArray(t)},p.isCollection=function(t){return Array.isArray(t)||t instanceof e.Matrix},p.deepMap=function m(e,t,r){return e&&"function"==typeof e.map?e.map(function(e){return m(e,t,r)}):t(e)},p.deepMap2=function h(t,r,n){var i,o,a;if(Array.isArray(t))if(Array.isArray(r)){if(t.length!=r.length)throw new s(t.length,r.length);for(i=[],o=t.length,a=0;o>a;a++)i[a]=h(t[a],r[a],n)}else{if(r instanceof e.Matrix)return i=h(t,r.valueOf(),n),l(i);for(i=[],o=t.length,a=0;o>a;a++)i[a]=h(t[a],r,n)}else{if(t instanceof e.Matrix)return r instanceof e.Matrix?(i=h(t.valueOf(),r.valueOf(),n),l(i)):(i=h(t.valueOf(),r,n),l(i));if(Array.isArray(r))for(i=[],o=r.length,a=0;o>a;a++)i[a]=h(t,r[a],n);else{if(r instanceof e.Matrix)return i=h(t,r.valueOf(),n),l(i);i=n(t,r)}}return i},p.reduce=function(t,r,n){var i=Array.isArray(t)?o(t):t.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return t instanceof e.Matrix?l(c(t.valueOf(),r,n)):c(t,r,n)},p.deepForEach=function g(t,r){t instanceof e.Matrix&&(t=t.valueOf());for(var n=0,i=t.length;i>n;n++){var o=t[n];Array.isArray(o)?g(o,r):r(o)}},p}var i=r(171),o=r(172).size,a=r(173),s=r(174);t.name="collection",t.factory=n},function(e,t,r){"use strict";function n(e,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");switch(arguments.length){case 0:this.re=0,this.im=0;break;case 1:var r=arguments[0];if("object"==typeof r){if("re"in r&&"im"in r){var i=new n(r.re,r.im);this.re=i.re,this.im=i.im;break}if("r"in r&&"phi"in r){var i=n.fromPolar(r.r,r.phi);this.re=i.re,this.im=i.im;break}}throw new SyntaxError("Object with the re and im or r and phi properties expected.");case 2:if(!h(e)||!h(t))throw new TypeError("Two numbers expected in Complex constructor");this.re=e,this.im=t;break;default:throw new SyntaxError("One, two or three arguments expected in Complex constructor")}}function i(){for(;" "==x||" "==x;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,x=d.charAt(y)}function u(e){y=e,x=d.charAt(y)}function c(){var e,t="";if(e=y,"+"==x?s():"-"==x&&(t+=x,s()),!o(x))return u(e),null;if("."==x){if(t+=x,s(),!a(x))return u(e),null}else{for(;a(x);)t+=x,s();"."==x&&(t+=x,s())}for(;a(x);)t+=x,s();if("E"==x||"e"==x){if(t+=x,s(),("+"==x||"-"==x)&&(t+=x,s()),!a(x))return u(e),null;for(;a(x);)t+=x,s()}return t}function f(){var e=d.charAt(y+1);if("I"==x||"i"==x)return s(),"1";if(!("+"!=x&&"-"!=x||"I"!=e&&"i"!=e)){var t="+"==x?"1":"-1";return s(),s(),t}return null}var l=r(171),p=r(7),m=l.number,h=l.number.isNumber,g=p.isUnit,v=l.string.isString;n.isComplex=function(e){return e instanceof n};var d,y,x;n.parse=function(e){if(d=e,y=-1,x="",!v(d))return null;s(),i();var t=c();if(t){if("I"==x||"i"==x)return s(),i(),x?null:new n(0,Number(t));i();var r=x;if("+"!=r&&"-"!=r)return i(),x?null:new n(Number(t),0);s(),i();var o=c();if(o){if("I"!=x&&"i"!=x)return null;s()}else if(o=f(),!o)return null;return"-"==r&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),x?null:new n(Number(t),Number(o))}return(t=f())?(i(),x?null:new n(0,Number(t))):null},n.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if("object"==typeof t)return n.fromPolar(t.r,t.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],i=arguments[1];if(h(r)){if(g(i)&&i.hasBase(p.BASE_UNITS.ANGLE)&&(i=i.toNumber("rad")),h(i))return new n(r*Math.cos(i),r*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 t="",r=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/r)0?1==r?i+" + i":i+" + "+o+"i":-1==r?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,t,r){"use strict";function n(e,t,r){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!=t&&!o.isNumber(t))throw new TypeError("Parameter end must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=t?parseFloat(t):0,this.step=null!=r?parseFloat(r):1}{var i=r(171),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var t=e.split(":"),r=t.map(function(e){return parseFloat(e)}),i=r.some(function(e){return isNaN(e)});if(i)return null;switch(r.length){case 2:return new n(r[0],r[1]);case 3:return new n(r[0],r[2],r[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,t=this.start,r=this.step,n=this.end,i=n-t;return o.sign(r)==o.sign(i)?e=Math.ceil(i/r):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 t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;n>t;)e(t,i,this),t+=r,i++;else if(0>r)for(;t>n;)e(t,i,this),t+=r,i++},n.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n]=e(r,n,i)}),t},n.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r]=t}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var t=o.format(this.start,e);return 1!=this.step&&(t+=":"+o.format(this.step,e)),t+=":"+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,t,r){"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 t=0,r=arguments.length;r>t;t++){var o=arguments[t];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 t=e.length,r=0;t>r;r++)if(!u(e[r])||!c(e[r]))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=r(171),a=r(4),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 t=new n;return n.apply(t,e),t},n.prototype.size=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.max()}return e},n.prototype.min=function(){for(var e=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t];e[t]=n.min()}return e},n.prototype.forEach=function(e){for(var t=0,r=this._ranges.length;r>t;t++)e(this._ranges[t],t,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=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t],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=[],t=0,r=this._ranges.length;r>t;t++){var n=this._ranges[t],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,t,r){"use strict";function n(e,t,r,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator")}return i.isMatrix=function(e){return e instanceof i},i.storage=function(e){if(!a(e))throw new TypeError("format must be a string value");var t=i._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},i._storage={},i.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},i.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},i.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},i.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},i.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},i.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},i.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},i.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},i.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},i.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},i.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},i.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},i.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},i}var i=r(171),o=i.string,a=o.isString;t.name="Matrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t){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!=t&&(!x(t)||""==t))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=t){var r=l(t);if(!r)throw new SyntaxError('Unknown unit "'+t+'"');this.unit=r.unit,this.prefix=r.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,t="";if(e=m,"+"==h?s():"-"==h&&(t+=h,s()),!o(h))return u(e),null;if("."==h){if(t+=h,s(),!a(h))return u(e),null}else{for(;a(h);)t+=h,s();"."==h&&(t+=h,s())}for(;a(h);)t+=h,s();if("E"==h||"e"==h){if(t+=h,s(),("+"==h||"-"==h)&&(t+=h,s()),!a(h))return u(e),null;for(;a(h);)t+=h,s()}return t}function f(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var t in A)if(A.hasOwnProperty(t)&&d.endsWith(e,t)){var r=A[t],n=e.length-t.length,i=e.substring(0,n),o=r.prefixes[i];if(void 0!==o)return{unit:r,prefix:o}}return null}var p,m,h,g=r(171),v=g.number,d=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 t,r=c();if(r){if(t=f(),s(),i(),h)return null;if(r&&t)try{return new n(Number(r),t)}catch(o){}}else{if(t=f(),s(),i(),h)return null;if(t)try{return new n(null,t)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var t in this)this.hasOwnProperty(t)&&(e[t]=this[t]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._denormalize=function(e,t){return void 0==t?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/t-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 t,r=null==this.value?this._normalize(1):this.value;if(x(e)){if(t=new n(null,e),!this.equalBase(t))throw new Error("Units do not match");return t.value=r,t.fixPrefix=!0,t}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 t=e.clone(),t.value=r,t.fixPrefix=!0,t}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var t=this.to(e);return t._denormalize(t.value,t.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 t=new n(e.value,e.unit);return t.fixPrefix=e.fixPrefix||!1,t},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var t,r;if(null===this.value||this.fixPrefix)t=this._denormalize(this.value),r=null!==this.value?v.format(t,e)+" ":"",r+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();t=this._denormalize(this.value,n.value),r=v.format(t,e)+" ",r+=n.name+this.unit.name}return r},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),t=b,r=Math.abs(Math.log(e/t.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);r>a&&(t=o,r=a)}}return t};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},N={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},E={},M={name:"",base:E,value:1,offset:0},A={meter:{name:"meter",base:N.LENGTH,prefixes:w.LONG,value:1,offset:0},inch:{name:"inch",base:N.LENGTH,prefixes:w.NONE,value:.0254,offset:0},foot:{name:"foot",base:N.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yard:{name:"yard",base:N.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mile:{name:"mile",base:N.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},link:{name:"link",base:N.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rod:{name:"rod",base:N.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},chain:{name:"chain",base:N.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:N.LENGTH,prefixes:w.NONE,value:1e-10,offset:0},m:{name:"m",base:N.LENGTH,prefixes:w.SHORT,value:1,offset:0},"in":{name:"in",base:N.LENGTH,prefixes:w.NONE,value:.0254,offset:0},ft:{name:"ft",base:N.LENGTH,prefixes:w.NONE,value:.3048,offset:0},yd:{name:"yd",base:N.LENGTH,prefixes:w.NONE,value:.9144,offset:0},mi:{name:"mi",base:N.LENGTH,prefixes:w.NONE,value:1609.344,offset:0},li:{name:"li",base:N.LENGTH,prefixes:w.NONE,value:.201168,offset:0},rd:{name:"rd",base:N.LENGTH,prefixes:w.NONE,value:5.02921,offset:0},ch:{name:"ch",base:N.LENGTH,prefixes:w.NONE,value:20.1168,offset:0},mil:{name:"mil",base:N.LENGTH,prefixes:w.NONE,value:254e-7,offset:0},m2:{name:"m2",base:N.SURFACE,prefixes:w.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:N.SURFACE,prefixes:w.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:N.SURFACE,prefixes:w.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:N.SURFACE,prefixes:w.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:N.SURFACE,prefixes:w.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:N.SURFACE,prefixes:w.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:N.SURFACE,prefixes:w.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:N.SURFACE,prefixes:w.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:N.VOLUME,prefixes:w.CUBIC,value:1,offset:0},L:{name:"L",base:N.VOLUME,prefixes:w.SHORT,value:.001,offset:0},l:{name:"l",base:N.VOLUME,prefixes:w.SHORT,value:.001,offset:0},litre:{name:"litre",base:N.VOLUME,prefixes:w.LONG,value:.001,offset:0},cuin:{name:"cuin",base:N.VOLUME,prefixes:w.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:N.VOLUME,prefixes:w.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:N.VOLUME,prefixes:w.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:N.VOLUME,prefixes:w.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:N.VOLUME,prefixes:w.NONE,value:15e-6,offset:0},drop:{name:"drop",base:N.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:N.VOLUME,prefixes:w.NONE,value:5e-8,offset:0},minim:{name:"minim",base:N.VOLUME,prefixes:w.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:N.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:N.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:N.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:N.VOLUME,prefixes:w.NONE,value:1e-6,offset:0},cup:{name:"cup",base:N.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:N.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:N.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:N.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:N.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:N.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:N.VOLUME,prefixes:w.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:N.VOLUME,prefixes:w.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:N.VOLUME,prefixes:w.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:N.VOLUME,prefixes:w.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:N.VOLUME,prefixes:w.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:N.VOLUME,prefixes:w.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:N.VOLUME,prefixes:w.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:N.VOLUME,prefixes:w.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:N.VOLUME,prefixes:w.NONE,value:.1173478,offset:0},obl:{name:"obl",base:N.VOLUME,prefixes:w.NONE,value:.1589873,offset:0},g:{name:"g",base:N.MASS,prefixes:w.SHORT,value:.001,offset:0},gram:{name:"gram",base:N.MASS,prefixes:w.LONG,value:.001,offset:0},ton:{name:"ton",base:N.MASS,prefixes:w.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:N.MASS,prefixes:w.SHORT,value:1e3,offset:0},grain:{name:"grain",base:N.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:N.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:N.MASS,prefixes:w.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:N.MASS,prefixes:w.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:N.MASS,prefixes:w.NONE,value:45.359237,offset:0},stick:{name:"stick",base:N.MASS,prefixes:w.NONE,value:.115,offset:0},stone:{name:"stone",base:N.MASS,prefixes:w.NONE,value:6350,offset:0},gr:{name:"gr",base:N.MASS,prefixes:w.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:N.MASS,prefixes:w.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:N.MASS,prefixes:w.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:N.MASS,prefixes:w.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:N.MASS,prefixes:w.NONE,value:45.359237,offset:0},s:{name:"s",base:N.TIME,prefixes:w.SHORT,value:1,offset:0},min:{name:"min",base:N.TIME,prefixes:w.NONE,value:60,offset:0},h:{name:"h",base:N.TIME,prefixes:w.NONE,value:3600,offset:0},second:{name:"second",base:N.TIME,prefixes:w.LONG,value:1,offset:0},sec:{name:"sec",base:N.TIME,prefixes:w.LONG,value:1,offset:0},minute:{name:"minute",base:N.TIME,prefixes:w.NONE,value:60,offset:0},hour:{name:"hour",base:N.TIME,prefixes:w.NONE,value:3600,offset:0},day:{name:"day",base:N.TIME,prefixes:w.NONE,value:86400,offset:0},rad:{name:"rad",base:N.ANGLE,prefixes:w.NONE,value:1,offset:0},deg:{name:"deg",base:N.ANGLE,prefixes:w.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:N.ANGLE,prefixes:w.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:N.ANGLE,prefixes:w.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:N.CURRENT,prefixes:w.SHORT,value:1,offset:0},ampere:{name:"ampere",base:N.CURRENT,prefixes:w.LONG,value:1,offset:0},K:{name:"K",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},degC:{name:"degC",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},degF:{name:"degF",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:0},celsius:{name:"celsius",base:N.TEMPERATURE,prefixes:w.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:N.TEMPERATURE,prefixes:w.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:N.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},mole:{name:"mole",base:N.AMOUNT_OF_SUBSTANCE,prefixes:w.NONE,value:1,offset:0},cd:{name:"cd",base:N.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},candela:{name:"candela",base:N.LUMINOUS_INTENSITY,prefixes:w.NONE,value:1,offset:0},N:{name:"N",base:N.FORCE,prefixes:w.SHORT,value:1,offset:0},newton:{name:"newton",base:N.FORCE,prefixes:w.LONG,value:1,offset:0},lbf:{name:"lbf",base:N.FORCE, +prefixes:w.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:N.FORCE,prefixes:w.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:N.BIT,prefixes:w.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:N.BIT,prefixes:w.BINARY_LONG,value:1,offset:0},B:{name:"B",base:N.BIT,prefixes:w.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:N.BIT,prefixes:w.BINARY_LONG,value:8,offset:0}},_={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 O in _)if(_.hasOwnProperty(O)){var C=A[_[O]],S=Object.create(C);S.name=O,A[O]=S}A.lt=A.l,A.liter=A.litre,A.liters=A.litres,A.lb=A.lbm,A.lbs=A.lbm,n.PREFIXES=w,n.BASE_UNITS=N,n.UNITS=A,e.exports=n},function(e,t,r){"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=r(171),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toText=function(e){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){var i=e&&e.parser();r+="Examples:\n";for(var o=0;o15?e:new a(e)},a}var i=r(350),o=r(175).digits;t.name="BigNumber",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}var a=n(r(116)),s=n(r(114)),u=1/Math.log((1+Math.sqrt(5))/2);o.prototype.insert=function(e,t){var r={key:e,value:t,degree:0};if(this._minimum){var n=this._minimum;r.left=n,r.right=n.right,n.right=r,r.right.left=r,a(e,n.key)&&(this._minimum=r)}else r.left=r,r.right=r,this._minimum=r;return this._size++,r},o.prototype.size=function(){return this._size},o.prototype.clear=function(){this._minimum=null,this._size=0},o.prototype.isEmpty=function(){return!!this._minimum},o.prototype.extractMinimum=function(){var e=this._minimum;if(null===e)return e;for(var t=this._minimum,r=e.degree,n=e.child;r>0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=m(t,this._size)),this._size--,this._minimum=t,e},o.prototype.remove=function(e){this._minimum=c(this._minimum,e,null),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&a(t.key,n.key)&&(f(e,t,n),l(e,n)),a(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){e.left.right=e.right,e.right.left=e.left,e.parent=t,t.child?(e.left=t.child,e.right=t.child.right,t.child.right=e,e.right.left=e):(t.child=e,e.right=e,e.left=e),t.degree++,e.mark=!1},m=function(e,t){var r=Math.floor(Math.log(t)*u)+1,n=new Array(r),i=0,o=e;if(o)for(i++,o=o.right;o!==e;)i++,o=o.right;for(var c;i>0;){for(var f=o.degree,l=o.right;;){if(c=n[f],!c)break;if(s(o.key,c.key)){var m=c;c=o,o=m}p(c,o),n[f]=null,f++}n[f]=o,o=l,i--}e=null;for(var h=0;r>h;h++)c=n[h],c&&(e?(c.left.right=c.right,c.right.left=c.left,c.left=e,c.right=e.right,e.right=c,c.right.left=c,a(c.key,e.key)&&(e=c)):e=c);return e};return o}t.name="FibonacciHeap",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function x(t,r){if(1!=arguments.length&&2!=arguments.length)throw new o("parse",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},a(t))return ge=t,T();if(Array.isArray(t)||t instanceof e.Matrix)return fe.deepMap(t,function(e){if(!a(e))throw new TypeError("String expected");return ge=e,T()});throw new TypeError("String or matrix expected")}function w(){ve=0,de=ge.charAt(0),we=0,be=null}function b(){ve++,de=ge.charAt(ve)}function N(){return ge.charAt(ve+1)}function E(){return ge.charAt(ve+2)}function M(){for(xe=le.NULL,ye="";" "==de||" "==de||"\n"==de&&we;)b();if("#"==de)for(;"\n"!=de&&""!=de;)b();if(""==de)return void(xe=le.DELIMITER);if("\n"==de&&!we)return xe=le.DELIMITER,ye=de,void b();var e=de+N(),t=e+E();if(3==t.length&&pe[t])return xe=le.DELIMITER,ye=t,b(),b(),void b();if(2==e.length&&pe[e])return xe=le.DELIMITER,ye=e,b(),void b();if(pe[de])return xe=le.DELIMITER,ye=de,void b();if(!S(de)){if(C(de)){for(;C(de)||z(de);)ye+=de,b();return void(xe=me[ye]?le.DELIMITER:le.SYMBOL)}for(xe=le.UNKNOWN;""!=de;)ye+=de,b();throw ue('Syntax error in part "'+ye+'"')}if(xe=le.NUMBER,"."==de)ye+=de,b(),z(de)||(xe=le.UNKNOWN);else{for(;z(de);)ye+=de,b();"."==de&&(ye+=de,b())}for(;z(de);)ye+=de,b();if(e=N(),("E"==de||"e"==de)&&(z(e)||"-"==e||"+"==e))for(ye+=de,b(),("+"==de||"-"==de)&&(ye+=de,b()),z(de)||(xe=le.UNKNOWN);z(de);)ye+=de,b()}function A(){do M();while("\n"==ye)}function _(){we++}function O(){we--}function C(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function S(e){return e>="0"&&"9">=e||"."==e}function z(e){return e>="0"&&"9">=e}function T(){w(),M();var e=B();if(""!=ye)throw xe==le.DELIMITER?ce("Unexpected operator "+ye):ue('Unexpected part "'+ye+'"');return e}function B(){var e,t,r=[];if(""==ye)return new l("undefined","undefined");for("\n"!=ye&&";"!=ye&&(e=I());"\n"==ye||";"==ye;)0==r.length&&e&&(t=";"!=ye,r.push({node:e,visible:t})),M(),"\n"!=ye&&";"!=ye&&""!=ye&&(e=I(),t=";"!=ye,r.push({node:e,visible:t}));return r.length>0?new c(r):e}function I(){if(xe==le.SYMBOL&&"function"==ye)throw ue('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return q()}function q(){var e,t,r,n,i=P();if("="==ye){if(i instanceof d)return e=i.name,A(),r=q(),new u(e,r);if(i instanceof m)return A(),r=q(),new y(i,r);if(i instanceof g&&(n=!0,t=[],e=i.name,i.args.forEach(function(e,r){e instanceof d?t[r]=e.name:n=!1}),n))return A(),r=q(),new p(e,t,r);throw ue("Invalid left hand side of assignment operator =")}return i}function P(){for(var e=U();"?"==ye;){var t=be;be=we,A();var r=e,n=U();if(":"!=ye)throw ue("False part of conditional expression expected");be=null,A();var i=P();e=new f(r,n,i),be=t}return e}function U(){for(var e=R();"or"==ye;)A(),e=new h("or","or",[e,R()]);return e}function R(){for(var e=L();"xor"==ye;)A(),e=new h("xor","xor",[e,L()]);return e}function L(){for(var e=k();"and"==ye;)A(),e=new h("and","and",[e,k()]);return e}function k(){for(var e=j();"|"==ye;)A(),e=new h("|","bitOr",[e,j()]);return e}function j(){for(var e=F();"^|"==ye;)A(),e=new h("^|","bitXor",[e,F()]);return e}function F(){for(var e=D();"&"==ye;)A(),e=new h("&","bitAnd",[e,D()]);return e}function D(){var e,t,r,n,i;for(e=G(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};ye in t;)r=ye,n=t[r],A(),i=[e,G()],e=new h(r,n,i);return e}function G(){var e,t,r,n,i;for(e=V(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};ye in t;)r=ye,n=t[r],A(),i=[e,V()],e=new h(r,n,i);return e}function V(){var e,t,r,n,i;for(e=Z(),t={to:"to","in":"to"};ye in t;)r=ye,n=t[r],A(),i=[e,Z()],e=new h(r,n,i);return e}function Z(){var e,t=[];if(e=":"==ye?new l("1","number"):W(),":"==ye&&be!==we){for(t.push(e);":"==ye&&t.length<3;)A(),t.push(")"==ye||"]"==ye||","==ye||""==ye?new d("end"):W());e=3==t.length?new v(t[0],t[2],t[1]):new v(t[0],t[1])}return e}function W(){var e,t,r,n,i;for(e=H(),t={"+":"add","-":"subtract"};ye in t;)r=ye,n=t[r],A(),i=[e,H()],e=new h(r,n,i);return e}function H(){var e,t,r,n,i;if(e=Y(),t={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},ye in t)for(;ye in t;)r=ye,n=t[r],A(),i=[e,Y()],e=new h(r,n,i);return(xe==le.SYMBOL||"in"==ye&&e instanceof l||xe==le.NUMBER&&!(e instanceof l)||"("==ye||"["==ye)&&(e=new h("*","multiply",[e,H()])),e}function Y(){var e,t,r={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[ye];return r?(e=ye,A(),t=[Y()],new h(e,r,t)):X()}function X(){var e,t,r,n;return e=J(),("^"==ye||".^"==ye)&&(t=ye,r="^"==t?"pow":"dotPow",A(),n=[e,Y()],e=new h(t,r,n)),e}function J(){var e,t,r,n,i;for(e=Q(),t={"!":"factorial","'":"transpose"};ye in t;)r=ye,n=t[r],M(),i=[e],e=new h(r,n,i);return e}function Q(){var e,t=[];if(xe==le.SYMBOL&&he[ye]){if(e=he[ye],M(),"("==ye){if(t=[],_(),M(),")"!=ye)for(t.push(P());","==ye;)M(),t.push(P());if(")"!=ye)throw ue("Parenthesis ) expected");O(),M()}return new e(t)}return $()}function $(){var e,t;return xe==le.SYMBOL||xe==le.DELIMITER&&ye in me?(t=ye,M(),e=K(t),e=ee(e)):te()}function K(e){var t;if("("==ye){if(t=[],_(),M(),")"!=ye)for(t.push(P());","==ye;)M(),t.push(P());if(")"!=ye)throw ue("Parenthesis ) expected");return O(),M(),new g(e,t)}return new d(e)}function ee(e){for(var t;"["==ye;){if(t=[],_(),M(),"]"!=ye)for(t.push(P());","==ye;)M(),t.push(P());if("]"!=ye)throw ue("Parenthesis ] expected");O(),M(),e=new m(e,t)}return e}function te(){var e,t,r;if('"'==ye){for(t="",r="";""!=de&&('"'!=de||"\\"==r);)t+=de,r=de,b();if(M(),'"'!=ye)throw ue('End of string " expected');return M(),e=new l(t,"string"),e=ee(e)}return re()}function re(){var e,t,r,n;if("["==ye){if(_(),M(),"]"!=ye){var i=ne();if(";"==ye){for(r=1,t=[i];";"==ye;)M(),t[r]=ne(),r++;if("]"!=ye)throw ue("End of matrix ] expected");O(),M(),n=t[0].nodes.length;for(var o=1;r>o;o++)if(t[o].nodes.length!=n)throw ce("Column dimensions mismatch ("+t[o].nodes.length+" != "+n+")");e=new s(t)}else{if("]"!=ye)throw ue("End of matrix ] expected");O(),M(),e=i}}else O(),M(),e=new s([]);return e}return ie()}function ne(){for(var e=[q()],t=1;","==ye;)M(),e[t]=q(),t++;return new s(e)}function ie(){var e;return xe==le.NUMBER?(e=ye,M(),new l(e,"number")):oe()}function oe(){var e;if("("==ye){if(_(),M(),e=q(),")"!=ye)throw ue("Parenthesis ) expected");return O(),M(),e}return ae()}function ae(){throw ue(""==ye?"Unexpected end of expression":"Value expected")}function se(){return ve-ye.length+1}function ue(e){var t=se(),r=new SyntaxError(e+" (char "+t+")");return r["char"]=t,r}function ce(e){var t=se(),r=new Error(e+" (char "+t+")");return r["char"]=t,r}var fe=n(r(2)),le={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},pe={",":!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},me={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},he={},ge="",ve=0,de="",ye="",xe=le.NULL,we=0,be=null;return x}var i=r(171),o=r(176),a=i.string.isString,s=r(177),u=r(179),c=r(178),f=r(180),l=r(181),p=r(182),m=r(183),h=r(184),g=r(185),v=r(186),d=r(187),y=r(188);t.name="parse",t.path="expression",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var s=n(r(12));return a.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},a.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},a.prototype.eval=function(e){return s(e).compile(o).eval(this.scope)},a.prototype.get=function(e){return this.scope[e]},a.prototype.set=function(e,t){return this.scope[e]=t},a.prototype.remove=function(e){delete this.scope[e]},a.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},a}t.name="Parser",t.path="expression",t.factory=n,t.math=!0},function(e,t,r){"use strict";t.ArrayNode=r(177),t.AssignmentNode=r(179),t.BlockNode=r(178),t.ConditionalNode=r(180),t.ConstantNode=r(181),t.IndexNode=r(183),t.FunctionAssignmentNode=r(182),t.FunctionNode=r(185),t.Node=r(189),t.OperatorNode=r(184),t.RangeNode=r(186),t.SymbolNode=r(187),t.UpdateNode=r(188)},function(e,t,r){t.e=r(190),t.E=r(190),t["false"]=r(191),t.i=r(193),t.Infinity=r(192),t.LN2=r(194),t.LN10=r(195),t.LOG2E=r(196),t.LOG10E=r(197),t.NaN=r(200),t["null"]=r(198),t.pi=r(199),t.PI=r(199),t.phi=r(201),t.SQRT1_2=r(204),t.SQRT2=r(202),t.tau=r(203),t["true"]=r(205),t.version=r(206),t.abs=r(217),t.add=r(218),t.ceil=r(219),t.cube=r(220),t.divide=r(221),t.dotDivide=r(222),t.dotMultiply=r(223),t.dotPow=r(224),t.exp=r(225),t.fix=r(226),t.floor=r(227),t.gcd=r(228),t.lcm=r(229),t.log=r(230),t.log10=r(231),t.mod=r(232),t.multiply=r(233),t.norm=r(234),t.nthRoot=r(235),t.pow=r(236),t.round=r(237),t.sign=r(238),t.sqrt=r(239),t.square=r(240),t.subtract=r(241),t.unaryMinus=r(242),t.unaryPlus=r(243),t.xgcd=r(244),t.bitAnd=r(245),t.bitNot=r(247),t.bitOr=r(246),t.bitXor=r(248),t.leftShift=r(249),t.rightArithShift=r(250),t.rightLogShift=r(251),t.arg=r(252),t.conj=r(253),t.re=r(254),t.im=r(255),t.bignumber=r(256),t["boolean"]=r(257),t.complex=r(259),t.index=r(258),t.matrix=r(260),t.number=r(261),t.string=r(262),t.unit=r(263),t.eval=r(264),t.help=r(265),t.and=r(266),t.not=r(267),t.or=r(268),t.xor=r(269),t.concat=r(270),t.cross=r(271),t.det=r(272),t.diag=r(273),t.dot=r(274),t.eye=r(275),t.flatten=r(276),t.inv=r(277),t.ones=r(278),t.range=r(279),t.resize=r(280),t.size=r(281),t.squeeze=r(282),t.subset=r(283),t.trace=r(284),t.transpose=r(285),t.zeros=r(286),t.combinations=r(287),t.factorial=r(288),t.gamma=r(289),t.permutations=r(290),t.pickRandom=r(291),t.random=r(292),t.randomInt=r(293),t.compare=r(294),t.deepEqual=r(295),t.equal=r(296),t.larger=r(297),t.largerEq=r(298),t.smaller=r(299),t.smallerEq=r(300),t.unequal=r(301),t.max=r(302),t.mean=r(304),t.median=r(303),t.min=r(305),t.prod=r(306),t.std=r(307),t.sum=r(308),t["var"]=r(309),t.acos=r(310),t.acosh=r(311),t.acot=r(312),t.acoth=r(313),t.acsc=r(314),t.acsch=r(315),t.asec=r(316),t.asech=r(317),t.asin=r(318),t.asinh=r(319),t.atan=r(320),t.atanh=r(321),t.atan2=r(322),t.cos=r(323),t.cosh=r(324),t.cot=r(325),t.coth=r(326),t.csc=r(327),t.csch=r(328),t.sec=r(329),t.sech=r(330),t.sin=r(331),t.sinh=r(332),t.tan=r(333),t.tanh=r(334),t.to=r(335),t.clone=r(336),t.map=r(337),t.filter=r(338),t.forEach=r(339),t.format=r(340),t["import"]=r(341),t.sort=r(342),t["typeof"]=r(343)},function(e,t,r){"use strict";function n(e,t,n){function h(e){if(!(this instanceof h))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof y)x(this,e);else if(e&&f(e.index)&&f(e.ptr)&&f(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size,this._datatype=e.datatype;else if(f(e))w(this,e);else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0]}}var g=n(r(113)),v=e.Index,d=e.BigNumber,y=e.Matrix,x=function(e,t){"SparseMatrix"===t.type?(e._values=t._values?s.clone(t._values):void 0,e._index=s.clone(t._index),e._ptr=s.clone(t._ptr),e._size=s.clone(t._size),e._datatype=t._datatype):w(e,t.valueOf())},w=function(e,t){e._values=[],e._index=[],e._ptr=[],e._datatype=void 0;var r=t.length,n=0;if(r>0){var i=0;do{e._ptr.push(e._values.length);for(var o=0;r>o;o++){var a=t[o];if(f(a)){if(0===i&&nn&&(n=1),g(a,0)||(e._values.push(a),e._index.push(o))}i++}while(n>i)}e._ptr.push(e._values.length),e._size=[r,n]};h.prototype=new y,h.prototype.type="SparseMatrix",h.prototype.storage=function(){return"sparse"},h.prototype.subset=function(e,t,r){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return b(this,e);case 2:case 3:return N(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}};var b=function(e,t){if(!(t instanceof v))throw new TypeError("Invalid index");var r=t.isScalar();if(r)return e.get(t.min());var n=t.size();if(n.length!=e._size.length)throw new o(n.length,e._size.length);for(var i=t.min(),a=t.max(),s=0,u=e._size.length;u>s;s++)m(i[s],e._size[s]),m(a[s],e._size[s]);var c=function(e){return e};return O(e,i[0],a[0],i[1],a[1],c,!1)},N=function(e,t,r,n){if(!(t instanceof v))throw new TypeError("Invalid index");var i,u=t.size(),c=t.isScalar();if(r instanceof y?(i=r.size(),r=r.toArray()):i=a.size(r),c){if(0!==i.length)throw new TypeError("Scalar expected");e.set(t.min(),r,n)}else{if(1!==u.length&&2!==u.length)throw new o(u.length,e._size.length,"<");if(i.length");for(var p=t.min()[0],m=t.min()[1],h=i[0],g=i[1],d=0;h>d;d++)for(var x=0;g>x;x++){var w=r[d][x];e.set([d+p,x+m],w,n)}}return e};h.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new o(e.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var t=e[0],r=e[1];m(t,this._size[0]),m(r,this._size[1]);var n=E(t,this._ptr[r],this._ptr[r+1],this._index);return na-1||i>s-1)&&(_(this,Math.max(n+1,a),Math.max(i+1,s),r),a=this._size[0],s=this._size[1]),m(n,a),m(i,s);var u=E(n,this._ptr[i],this._ptr[i+1],this._index);return un[r-1])return r;for(;r>t;){var i=~~((t+r)/2),o=n[i];if(o>e)r=i;else{if(!(e>o))return i;t=i+1}}return t},M=function(e,t,r,n,i){r.splice(e,1),n.splice(e,1);for(var o=t+1;ot)throw new TypeError("Invalid size, must contain positive integers (size: "+u.format(e)+")")});var n=r?this.clone():this;return _(n,e[0],e[1],t)};var _=function(e,t,r,n){var i,o,a,s=n||0,u=!g(s,0),c=e._size[0],f=e._size[1];if(r>f){for(o=f;r>o;o++)if(e._ptr[o]=e._values.length,u)for(i=0;c>i;i++)e._values.push(s),e._index.push(i);e._ptr[r]=e._values.length}else f>r&&(e._ptr.splice(r+1,f-r),e._values.splice(e._ptr[r],e._values.length),e._index.splice(e._ptr[r],e._index.length));if(f=r,t>c){if(u){var l=0;for(o=0;f>o;o++){e._ptr[o]=e._ptr[o]+l,a=e._ptr[o+1]+l;var p=0;for(i=c;t>i;i++,p++)e._values.splice(a+p,0,s),e._index.splice(a+p,0,i),l++}e._ptr[f]=e._values.length}}else if(c>t){var m=0;for(o=0;f>o;o++){e._ptr[o]=e._ptr[o]-m;var h=e._ptr[o],v=e._ptr[o+1]-m;for(a=h;v>a;a++)i=e._index[a],i>t-1&&(e._values.splice(a,1),e._index.splice(a,1),m++)}e._ptr[o]=e._values.length}return e._size[0]=t,e._size[1]=r,e};h.prototype.clone=function(){var e=new h({values:this._values?s.clone(this._values):void 0,index:s.clone(this._index),ptr:s.clone(this._ptr),size:s.clone(this._size)});return e},h.prototype.size=function(){return s.clone(this._size)},h.prototype.map=function(e,t){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var r=this,n=this._size[0],i=this._size[1],o=function(t,n,i){return e(t,[n,i],r)};return O(this,0,n-1,0,i-1,o,t)};var O=function(e,t,r,n,i,o,a){for(var s=[],u=[],c=[],f=function(e,t,r){e=o(e,t,r),g(e,0)||(s.push(e),u.push(t))},l=n;i>=l;l++){c.push(s.length);for(var p=e._ptr[l],m=e._ptr[l+1],v=t,d=p;m>d;d++){var y=e._index[d];if(y>=t&&r>=y){if(!a)for(var x=v;y>x;x++)f(0,x-t,l-n);f(e._values[d],y-t,l-n)}v=y+1}if(!a)for(var w=v;r>=w;w++)f(0,w-t,l-n)}return c.push(s.length),new h({values:s,index:u,ptr:c,size:[r-t+1,i-n+1]})};h.prototype.forEach=function(e,t){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");for(var r=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(!t)for(var l=u;f>l;l++)e(0,[l,o],r);e(this._values[c],[f,o],r),u=f+1}if(!t)for(var p=u;n>p;p++)e(0,[p,o],r)}},h.prototype.toArray=function(){return C(this._values,this._index,this._ptr,this._size,!0)},h.prototype.valueOf=function(){return C(this._values,this._index,this._ptr,this._size,!1)};var C=function(e,t,r,n,i){var o,a,u=n[0],c=n[1],f=new Array(u);for(o=0;u>o;o++)for(f[o]=new Array(c),a=0;c>a;a++)f[o][a]=0;for(a=0;c>a;a++)for(var l=r[a],p=r[a+1],m=l;p>m;m++)o=t[m],f[o][a]=e?i?s.clone(e[m]):e[m]:1;return f};return h.prototype.format=function(e){for(var t=this._size[0],r=this._size[1],n="Sparse Matrix ["+u.format(t,e)+" x "+u.format(r,e)+"] density: "+u.format(this._index.length/(t*r),e)+"\n",i=0;r>i;i++)for(var o=this._ptr[i],a=this._ptr[i+1],s=o;a>s;s++){var c=this._index[s];n+="\n ("+u.format(c,e)+", "+u.format(i,e)+") ==> "+(this._values?u.format(this._values[s],e):"X")}return n},h.prototype.toString=function(){return u.format(this.toArray())},h.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},h.prototype.diagonal=function(e){if(e){if(e instanceof d&&(e=e.toNumber()),!l(e)||!p(e))throw new TypeError("The parameter k must be an integer number")}else e=0;var t=e>0?e:0,r=0>e?-e:0,n=this._size[0],i=this._size[1],o=Math.min(n-r,i-t),a=[],u=[],c=[];c[0]=0;for(var f=t;i>f&&a.lengthv;v++){var y=this._index[v];if(y===f-t+r){a.push(s.clone(this._values[v])),u[a.length-1]=y-r;break}}return c.push(a.length),new h({values:a,index:u,ptr:c,size:[o,1]})},h.fromJSON=function(e){return new h(e)},h.diagonal=function(e,t,r){if(!f(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 d&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),r){if(r instanceof d&&(r=r.toNumber()),!l(r)||!p(r))throw new TypeError("The parameter k must be an integer number")}else r=0;var n,i=r>0?r:0,o=0>r?-r:0,a=e[0],s=e[1],u=Math.min(a-o,s-i);if(f(t)){if(t.length!==u)throw new Error("Invalid value array length");n=function(e){return t[e]}}else if(t instanceof y){var c=t.size();if(1!==c.length||c[0]!==u)throw new Error("Invalid matrix length");n=function(e){return t.get([e])}}else n=function(){return t};for(var m=[],v=[],x=[],w=0;s>w;w++){x.push(m.length);var b=w-i;if(b>=0&&u>b){var N=n(b);g(N,0)||(v.push(b+o),m.push(N))}}return x.push(m.length),new h({values:m,index:v,ptr:x,size:[a,s]})},h.prototype.swapRows=function(e,t){if(!(l(e)&&p(e)&&l(t)&&p(t)))throw new Error("Row index must be positive integers");if(2!==this._size.length)throw new Error("Only two dimensional matrix is supported");return m(e,this._size[0]),m(t,this._size[0]),h._swapRows(e,t,this._size[1],this._values,this._index,this._ptr),this},h._forEachRow=function(e,t,r,n,i){for(var o=n[e],a=n[e+1],s=o;a>s;s++)i(r[s],t[s])},h._swapRows=function(e,t,r,n,i,o){for(var a=0;r>a;a++){var s=o[a],u=o[a+1],c=E(e,s,u,i),f=E(t,s,u,i);if(u>c&&u>f&&i[c]===e&&i[f]===t){if(n){var l=n[c];n[c]=n[f],n[f]=l}}else if(u>c&&i[c]===e&&(f>=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(c>=f?c+1:c,1),n&&n.splice(c>=f?c+1:c,1)}else if(u>f&&i[f]===t&&(c>=u||i[c]!==e)){var m=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,m),i.splice(f>=c?f+1:f,1),n&&n.splice(f>=c?f+1:f,1)}}},y._storage.sparse=h,h}var i=r(171),o=r(174),a=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=i.number.isNumber,p=i.number.isInteger,m=a.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,r){function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof b)"DenseMatrix"===e.type?(this._data=u.clone(e._data),this._size=u.clone(e._size),this._datatype=e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=e._datatype);else if(e&&c(e.data)&&c(e.size))this._data=e.data,this._size=e.size,this._datatype=e.datatype;else if(c(e))this._data=y(e),this._size=s.size(this._data),this._datatype=void 0;else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._data=[],this._size=[0],this._datatype=void 0}}function m(e,t){if(!(t instanceof x))throw new TypeError("Invalid index");var r=t.isScalar();if(r)return e.get(t.min());var i=t.size();if(i.length!=e._size.length)throw new o(i.length,e._size.length);for(var a=t.min(),s=t.max(),u=0,c=e._size.length;c>u;u++)p(a[u],e._size[u]),p(s[u],e._size[u]);return new n(h(e._data,t,i.length,0))}function h(e,t,r,n){var i=n==r-1,o=t.range(n);return o.map(i?function(t){return e[t]}:function(i){var o=e[i];return h(o,t,r,n+1)})}function g(e,t,r,n){if(!(t instanceof x))throw new TypeError("Invalid index");var i,a=t.size(),c=t.isScalar();if(r instanceof b?(i=r.size(),r=r.valueOf()):i=s.size(r),c){if(0!==i.length)throw new TypeError("Scalar expected");e.set(t.min(),r,n)}else{if(a.length");var p=t.max().map(function(e){return e+1});d(e,p,n);var m=a.length,h=0;v(e._data,t,r,m,h)}return e}function v(e,t,r,n,i){var o=i==n-1,a=t.range(i);a.forEach(o?function(t,n){p(t),e[t]=r[n]}:function(o,a){p(o),v(e[o],t,r[a],n,i+1)})}function d(e,t,r){for(var n=u.clone(e._size),i=!1;n.lengtho;o++)t[o]>n[o]&&(n[o]=t[o],i=!0);i&&N(e,n,r)}function y(e){for(var t=0,r=e.length;r>t;t++){var n=e[t];c(n)?e[t]=y(n):n instanceof b&&(e[t]=y(n.valueOf()))}return e}var x=e.Index,w=e.BigNumber,b=e.Matrix;n.prototype=new b,n.prototype.type="DenseMatrix",n.prototype.storage=function(){return"dense"},n.prototype.subset=function(e,t,r){switch(arguments.length){case 1:return m(this,e);case 2:case 3:return g(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new o(e.length,this._size.length);for(var t=0;tn;n++){var a=e[n];p(a,r.length),r=r[a]}return u.clone(r)},n.prototype.set=function(e,t,r){if(!c(e))throw new TypeError("Array expected");if(e.lengthn;n++)a=e[n],p(a,u.length),u=u[a];return a=e[e.length-1],p(a,u.length),u[a]=t,this},n.prototype.resize=function(e,t,r){if(!c(e))throw new TypeError("Array expected");var n=r?this.clone():this;return N(n,e,t)};var N=function(e,t,r){if(0===t.length){for(var n=e._data;c(n);)n=n[0];return u.clone(n)}return e._size=u.clone(t),e._data=s.resize(e._data,e._size,r),e};return n.prototype.clone=function(){var e=new n({data:u.clone(this._data),size:u.clone(this._size),datatype:this._datatype});return e},n.prototype.size=function(){return this._size},n.prototype.map=function(e){var t=this,r=function(n,i){return c(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new n({data:r(this._data,[]),size:u.clone(this._size)})},n.prototype.forEach=function(e){var t=this,r=function(n,i){c(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},n.prototype.toArray=function(){return u.clone(this._data)},n.prototype.valueOf=function(){return this._data},n.prototype.format=function(e){return a.format(this._data,e)},n.prototype.toString=function(){return a.format(this._data)},n.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},n.prototype.diagonal=function(e){if(e){if(e instanceof w&&(e=e.toNumber()),!f(e)||!l(e))throw new TypeError("The parameter k must be an integer number")}else e=0;for(var t=e>0?e:0,r=0>e?-e:0,i=this._size[0],o=this._size[1],a=Math.min(i-r,o-t),s=[],c=0;a>c;c++)s[c]=u.clone(this._data[c+r][c+t]);return new n({data:s,size:[a]})},n.diagonal=function(t,r,i,o){if(!c(t))throw new TypeError("Array expected, size parameter");if(2!==t.length)throw new Error("Only two dimensions matrix are supported");if(t=t.map(function(e){if(e instanceof w&&(e=e.toNumber()),!f(e)||!l(e)||1>e)throw new Error("Size values must be positive integers");return e}),i){if(i instanceof w&&(i=i.toNumber()),!f(i)||!l(i))throw new TypeError("The parameter k must be an integer number")}else i=0;var a,u=i>0?i:0,p=0>i?-i:0,m=t[0],h=t[1],g=Math.min(m-p,h-u);if(c(r)){if(r.length!==g)throw new Error("Invalid value array length");a=function(e){return r[e]}}else if(r instanceof b){var v=r.size();if(1!==v.length||v[0]!==g)throw new Error("Invalid matrix length");a=function(e){return r.get([e])}}else a=function(){return r};o||(o=a(0)instanceof e.BigNumber?new e.BigNumber(0):0);var d=[];if(t.length>0){d=s.resize(d,t,o);for(var y=0;g>y;y++)d[y+p][y+u]=a(y)}return new n({data:d,size:[m,h]})},n.fromJSON=function(e){return new n(e)},n.prototype.swapRows=function(e,t){if(!(f(e)&&l(e)&&f(t)&&l(t)))throw new Error("Row index must be positive integers");if(2!==this._size.length)throw new Error("Only two dimensional matrix is supported");return p(e,this._size[0]),p(t,this._size[0]),n._swapRows(e,t,this._data),this},n._swapRows=function(e,t,r){var n=r[e];r[e]=r[t],r[t]=n},b._storage.dense=n,b._storage["default"]=n,n}var i=r(171),o=r(174),a=i.string,s=i.array,u=i.object,c=Array.isArray,f=i.number.isNumber,l=i.number.isInteger,p=s.validateIndex;t.name="DenseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator"); -t.name="bitAnd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitNot",{number:function(e){if(!i(e))throw new Error("Integer expected in function bitNot");return~e},BigNumber:o,"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}var i=r(175).isInteger,o=r(214).not;t.name="bitNot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitOr",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitOr");return e|t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(214).or;t.name="bitOr",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitXor",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitXor");return e^t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(214).xor;t.name="bitXor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("leftShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function leftShift");return e<>t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(214).rightArithShift;t.name="rightArithShift",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("rightLogShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).isInteger;t.name="rightLogShift",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("arg",{number:function(e){return Math.atan2(0,e)},Complex:function(e){return Math.atan2(e.im,e.re)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="arg",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return new e.constructor(e.re,-e.im)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="conj",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="re",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("im",{number:function(e){return 0},BigNumber:function(e){return new e.constructor(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="im",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("bignumber",{"":function(){return new e.BigNumber(0)},number:function(t){return new e.BigNumber(t+"")},string:function(t){return new e.BigNumber(t)},BigNumber:function(e){return e},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="bignumber",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("bool",{"":function(){return!1},"boolean":function(e){return e},number:function(e){return!!e},BigNumber:function(e){return!e.isZero()},string:function(e){var t=e.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var r=Number(e);if(""!=e&&!isNaN(r))return!!r;throw new Error('Cannot convert "'+e+'" to a boolean')},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="boolean",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("chain",{"":function(){return new e.Chain},any:function(t){return new e.Chain(t)}})}t.name="chain",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("complex",{"":function(){return new e.Complex(0,0)},number:function(t){return new e.Complex(t,0)},"number, number":function(t,r){return new e.Complex(t,r)},"BigNumber, BigNumber":function(t,r){return new e.Complex(t.toNumber(),r.toNumber())},Complex:function(e){return e.clone()},string:function(t){var r=e.Complex.parse(t);if(r)return r;throw new SyntaxError('String "'+t+'" is no valid complex number')},Object:function(t){if("re"in t&&"im"in t)return new e.Complex(t.re,t.im);if("r"in t&&"phi"in t)return e.Complex.fromPolar(t.r,t.phi);throw new Error("Expected object with either properties re and im, or properties r and phi.")},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="complex",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("index",{"...number | BigNumber | Range | Array":function(t){var r=t.map(function(t){return t instanceof e.BigNumber?t.toNumber():Array.isArray(t)?t.map(function(t){return t instanceof e.BigNumber?t.toNumber():t}):t}),n=new e.Index;return e.Index.apply(n,r),n}})}t.name="index",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function i(t,r){var n=e.Matrix.storage(r||"default");return new n(t)}return n("matrix",{"":function(){return i([])},string:function(e){return i([],e)},Array:function(e){return i(e)},Matrix:function(e){return i(e,e.storage())},"Array | Matrix, string":i})}t.name="matrix",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("number",{"":function(){return 0},number:function(e){return e},string:function(e){var t=Number(e);if(isNaN(t))throw new SyntaxError('String "'+e+'" is no valid number');return t},BigNumber:function(e){return e.toNumber()},Unit:function(e){throw new Error("Second argument with valueless unit expected")},"Unit, string | Unit":function(e,t){return e.toNumber(t)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="number",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(13));return i("parser",{"":function(){return new a(o)}})}t.name="parser",t.factory=n,t.math=!0},function(e,t,r){"use strict";function n(e,t,r,n){var i=e.SparseMatrix;return n("sparse",{"":function(){return new i([])},"Array | Matrix":function(e){return new i(e)}})}t.name="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("string",{"":function(){return""},number:i.format,"null":function(e){return"null"},"boolean":function(e){return e+""},"Array | Matrix":function(e){return a.deepMap(e,s)},any:function(e){return String(e)}});return s}var i=r(175);t.name="string",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unit",{Unit:function(e){return e.clone()},string:function(t){if(e.Unit.isValuelessUnit(t))return new e.Unit(null,t);var r=e.Unit.parse(t);if(r)return r;throw new SyntaxError('String "'+t+'" is no valid unit')},"number, string":function(t,r){return new e.Unit(t,r)},"BigNumber, string":function(t,r){return new e.Unit(t.toNumber(),r)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="unit",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(2)),s=n(r(12));return i("compile",{string:function(e){return s(e).compile(o)},"Array | Matrix":function(e){return a.deepMap(e,function(e){return s(e).compile(o)})}})}t.math=!0,t.name="compile",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(2)),s=n(r(12));return i("compile",{string:function(e){var t={};return s(e).compile(o).eval(t)},"string, Object":function(e,t){return s(e).compile(o).eval(t)},"Array | Matrix":function(e){var t={};return a.deepMap(e,function(e){return s(e).compile(o).eval(t)})},"Array | Matrix, Object":function(e,t){return a.deepMap(e,function(e){return s(e).compile(o).eval(t)})}})}t.math=!0,t.name="eval",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n,o){return n("help",{any:function(t){var r,n=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){n=r;break}var a=i[n];if(!a)throw new Error('No documentation found on "'+n+'"');return new e.Help(a)}})}var i=r(15);t.math=!0,t.name="help",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(12));return i("parse",{"string | Array | Matrix":o,"string | Array | Matrix, Object":o})}t.name="parse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("and",{"number, number":function(e,t){return!(!e||!t)},"Complex, Complex":function(e,t){return!(0===e.re&&0===e.im||0===t.re&&0===t.im)},"BigNumber, BigNumber":function(e,t){return!(e.isZero()||t.isZero()||e.isNaN()||t.isNaN())},"Unit, Unit":function(e,t){return 0!==e.value&&null!==e.value&&0!==t.value&&null!==t.value},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="and",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("not",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return null===e.value||0==e.value},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="not",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("or",{"number, number":function(e,t){return!(!e&&!t)},"Complex, Complex":function(e,t){return 0!==e.re||0!==e.im||0!==t.re||0!==t.im},"BigNumber, BigNumber":function(e,t){return!e.isZero()&&!e.isNaN()||!t.isZero()&&!t.isNaN()},"Unit, Unit":function(e,t){return 0!==e.value&&null!==e.value||0!==t.value&&null!==t.value},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="or",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("xor",{"number, number":function(e,t){return!!(!!e^!!t)},"Complex, Complex":function(e,t){return!!((0!==e.re||0!==e.im)^(0!==t.re||0!==t.im))},"BigNumber, BigNumber":function(e,t){return!!((!e.isZero()&&!e.isNaN())^(!t.isZero()&&!t.isNaN()))},"Unit, Unit":function(e,t){return!!((0!==e.value&&null!==e.value)^(0!==t.value&&null!==t.value))},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="xor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){var l=n(r(75));return f("concat",{"...Array | Matrix | number | BigNumber":function(t){var r,n,f=t.length,p=-1,m=!1,h=[];for(r=0;f>r;r++){var g=t[r];if(g instanceof e.Matrix&&(m=!0),"number"==typeof g||g instanceof e.BigNumber){if(r!==f-1)throw new Error("Dimension must be specified as last argument");if(n=p,p=g.valueOf(),!a(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new u(p);if(r>0&&p>n)throw new u(p,n+1)}else{var v=o(g).valueOf(),d=s.size(v);if(h[r]=v,n=p,p=d.length-1,r>0&&p!=n)throw new c(n+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var x=h.shift();h.length;)x=i(x,h.shift(),p,0);return m?l(x):x}})}function i(e,t,r,n){if(r>n){if(e.length!=t.length)throw new c(e.length,t.length);for(var o=[],a=0;ar;r++)n[t][r]=0;for(r=t+1;ra;a++)i=l(n(i),e);return t%2==0?p(i[0][0]):i[0][0]}var u=(n(r(2)),n(r(75))),c=n(r(32)),f=n(r(55)),l=n(r(48)),p=n(r(56));return i("det",{any:function(e){return o.clone(e)},"Array | Matrix":function(t){var r;switch(t instanceof e.Matrix?r=t.size():t instanceof Array?(t=u(t),r=t.size()):r=[],r.length){case 0:return o.clone(t);case 1:if(1==r[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(r)+")");case 2:var n=r[0],i=r[1];if(n==i)return s(t.clone().valueOf(),n,i);throw new RangeError("Matrix must be square (size: "+a.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(r)+")")}}})}var i=r(166),o=i.object,a=i.string;t.name="det",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t,r,n){if(!a(t))throw new TypeError("Second parameter in function diag must be an integer");var i=t>0?t:0,o=0>t?-t:0;switch(r.length){case 1:return c(e,t,n,r[0],o,i);case 2:return f(e,t,n,r,o,i)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function c(t,r,n,i,o,a){var s=[i+o,i+a],u=e.Matrix.storage(n||"dense"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function f(t,r,n,i,a,s){if(t instanceof e.Matrix){var u=t.diagonal(r);return null!==n?n!==u.storage()?l(u,n):u:u.valueOf()}for(var c=Math.min(i[0]-a,i[1]-s),f=new Array(c),p=0;c>p;p++)f[p]=o(t[p+a][p+s]);return null!==n?l(f):f}var l=n(r(75));return s("diag",{Array:function(e){return u(e,0,i.size(e),null)},"Array, number":function(e,t){return u(e,t,i.size(e),null)},"Array, BigNumber":function(e,t){return u(e,t.toNumber(),i.size(e),null)},"Array, string":function(e,t){return u(e,0,i.size(e),t)},"Array, number, string":function(e,t,r){return u(e,t,i.size(e),r)},"Array, BigNumber, string":function(e,t,r){return u(e,t.toNumber(),i.size(e),r)},Matrix:function(e){return u(e,0,e.size(),e.storage())},"Matrix, number":function(e,t){return u(e,t,e.size(),e.storage())},"Matrix, BigNumber":function(e,t){return u(e,t.toNumber(),e.size(),e.storage())},"Matrix, string":function(e,t){return u(e,0,e.size(),t)},"Matrix, number, string":function(e,t,r){return u(e,t,e.size(),r)},"Matrix, BigNumber, string":function(e,t,r){return u(e,t.toNumber(),e.size(),r)}})}var i=r(167),o=r(170).clone,a=r(175).isInteger;t.name="diag",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t){var r=i(e),n=i(t),o=r[0];if(1!==r.length||1!==n.length)throw new RangeError("Vector expected");if(r[0]!=n[0])throw new RangeError("Vectors must have equal length ("+r[0]+" != "+n[0]+")");if(0==o)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var a=0,c=0;o>c;c++)a=s(a,u(e[c],t[c]));return a}var s=n(r(32)),u=n(r(48));return o("dot",{"Matrix, Matrix":function(e,t){return a(e.toArray(),t.toArray())},"Matrix, Array":function(e,t){return a(e.toArray(),t)},"Array, Matrix":function(e,t){return a(e,t.toArray())},"Array, Array":a})}var i=r(167).size;t.name="dot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(e,t){switch(e.length){case 0:return t?c(t):[];case 1:return u(e[0],e[0],t);case 2:return u(e[0],e[1],t);default:throw new Error("Vector containing two values expected")}}function u(t,r,n){var a=t instanceof e.BigNumber?t.constructor:r instanceof e.BigNumber?r.constructor:null;if(t instanceof e.BigNumber&&(t=t.toNumber()),r instanceof e.BigNumber&&(r=r.toNumber()),!o(t)||1>t)throw new Error("Parameters in function eye must be positive integers");if(!o(r)||1>r)throw new Error("Parameters in function eye must be positive integers");var s=a?new e.BigNumber(1):1,u=a?new a(0):0,c=[t,r];if(n){var f=e.Matrix.storage(n);return f.diagonal(c,s,0,u)}for(var l=i.resize([],c,u),p=r>t?t:r,m=0;p>m;m++)l[m][m]=s;return l}var c=n(r(75));return a("eye",{"":function(){return"matrix"===t.matrix?c([]):[]},string:function(e){return c(e)},"number | BigNumber":function(e){return u(e,e,"matrix"===t.matrix?"default":void 0)},"number | BigNumber, string":function(e,t){return u(e,e,t)},"number | BigNumber, number | BigNumber":function(e,r){return u(e,r,"matrix"===t.matrix?"default":void 0)},"number | BigNumber, number | BigNumber, string":function(e,t,r){return u(e,t,r)},Array:function(e){return s(e)},"Array, string":function(e,t){return s(e,t)},Matrix:function(e){return s(e.valueOf(),e.storage())},"Matrix, string":function(e,t){return s(e.valueOf(),t)}})}var i=r(167),o=r(175).isInteger;t.name="eye",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(75));return a("flatten",{Array:function(e){return o(i(e))},Matrix:function(e){var t=o(i(e.toArray()));return s(t)}})}var i=r(170).clone,o=r(167).flatten;t.name="flatten",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t,r){var n,i,o,a,s;if(1==t){if(a=e[0][0],0==a)throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,a)]]}if(2==t){var h=p(e);if(0==h)throw Error("Cannot calculate inverse, determinant is zero");return[[u(e[1][1],h),u(l(e[0][1]),h)],[u(l(e[1][0]),h),u(e[0][0],h)]]}var g=e.concat();for(n=0;t>n;n++)g[n]=g[n].concat();for(var v=m(t).valueOf(),d=0;r>d;d++){for(n=d;t>n&&0==g[n][d];)n++;if(n==t||0==g[n][d])throw Error("Cannot calculate inverse, determinant is zero");n!=d&&(s=g[d],g[d]=g[n],g[n]=s,s=v[d],v[d]=v[n],v[n]=s);var x=g[d],y=v[d];for(n=0;t>n;n++){var w=g[n],b=v[n];if(n!=d){if(0!=w[d]){for(o=u(l(w[d]),x[d]),i=d;r>i;i++)w[i]=c(w[i],f(o,x[i]));for(i=0;r>i;i++)b[i]=c(b[i],f(o,y[i]))}}else{for(o=x[d],i=d;r>i;i++)w[i]=u(w[i],o);for(i=0;r>i;i++)b[i]=u(b[i],o)}}}return v}var s=(n(r(2)),n(r(75))),u=n(r(213)),c=n(r(32)),f=n(r(48)),l=n(r(56)),p=n(r(91)),m=n(r(94)),h=o("inv",{"Array | Matrix":function(t){var r=t instanceof e.Matrix?t.size():i.array.size(t);switch(r.length){case 1:if(1==r[0])return t instanceof e.Matrix?s([u(1,t.valueOf()[0])]):[u(1,t[0])];throw new RangeError("Matrix must be square (size: "+i.string.format(r)+")");case 2:var n=r[0],o=r[1];if(n==o)return t instanceof e.Matrix?s(a(t.valueOf(),n,o),t.storage()):a(t,n,o);throw new RangeError("Matrix must be square (size: "+i.string.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.string.format(r)+")")}},any:function(e){return u(1,e)}});return h}var i=r(166);t.name="inv",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(166),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(r,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))):r instanceof o?p=r.storage():l(r)||"matrix"!==t.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 v=e.matrix(p);return m.length>0?v.resize(m,g):v}var d=[];return m.length>0?s.resize(d,m,g):d}}},function(e,t,r){"use strict";e.exports=function(e,t){function n(e,t,r){var n=[],i=e;if(r>0)for(;t>i;)n.push(i),i+=r;else if(0>r)for(;i>t;)n.push(i),i+=r;return n}function i(e,t,r){var n=[],i=e;if(r>0)for(;t>=i;)n.push(i),i+=r;else if(0>r)for(;i>=t;)n.push(i),i+=r;return n}function o(e,t,r){var n=[],i=e,o=new c(0);if(r.gt(o))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function a(e,t,r){var n=[],i=e,o=new c(0);if(r.gt(o))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function s(e){var r=e.split(":"),n=null;if("bignumber"===t.number)try{n=r.map(function(e){return new c(e)})}catch(i){return null}else{n=r.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=r(166),c=e.type.BigNumber,f=(e.type.Matrix,e.collection,u["boolean"].isBoolean),l=u.string.isString,p=u.number.isNumber;e.range=function(r){var u,m,h,g=Array.prototype.slice.call(arguments),v=!1;switch(f(g[g.length-1])&&(v=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 d=s(g[0]);if(!d)throw new SyntaxError('String "'+g[0]+'" is no valid range');u=d.start,m=d.end,h=d.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 x=!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||(x=!1,u instanceof c&&(u=u.toNumber()),m instanceof c&&(m=m.toNumber()),h instanceof c&&(h=h.toNumber()))}var y=x?v?a:o:v?i:n,w=y(u,m,h);return"array"===t.matrix?w:e.matrix(w)}}},function(e,t,r){"use strict";e.exports=function(e,t){function n(t,r,n){if(void 0!==n){if(!f(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==r.length)throw new e.error.DimensionError(r.length,1);var i=r[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(r)+")");if(t.length>i)return t.substring(0,i);if(t.lengtha;a++)o+=n;return o}return t}var i=r(166),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(r,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})),r instanceof a)return r.resize(i,c,!0);if(f(r))return n(r,i,c);var l=m(r)?!1:"array"!==t.matrix;if(0==i.length){for(;m(r);)r=r[0];return u(r)}m(r)||(r=[r]),r=u(r);var p=s.resize(r,i,c);return l?e.matrix(p):p}}},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(75));return o("size",{Matrix:function(e){return a(e.size())},Array:i.size,string:function(e){return"array"===t.matrix?[e.length]:a([e.length])},"number | Complex | BigNumber | Unit | boolean | null":function(e){return"array"===t.matrix?[]:a([])}})}var i=r(167);t.name="size",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(75));return a("squeeze",{Array:function(e){return o.squeeze(i.clone(e))},Matrix:function(e){var t=o.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}})}var i=r(170),o=r(167);t.name="squeeze",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){function n(t,r){var n,o;if(p(t))return n=e.matrix(t),o=n.subset(r),o&&o.valueOf();if(t instanceof u)return t.subset(r);if(l(t))return i(t,r);throw new e.error.UnsupportedTypeError("subset",e["typeof"](t))}function i(t,r){if(!(r instanceof c))throw new TypeError("Index expected");if(1!=r.size().length)throw new e.error.DimensionError(r.size().length,1);var n=t.length;f.validateIndex(r.min()[0],n),f.validateIndex(r.max()[0],n);var i=r.range(0),o="";return i.forEach(function(e){o+=t.charAt(e)}),o}function o(t,r,n,i){var o;if(p(t))return o=e.matrix(e.clone(t)),o.subset(r,n,i),o.valueOf();if(t instanceof u)return t.clone().subset(r,n,i);if(l(t))return a(t,r,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](t))}function a(t,r,n,i){if(!(r instanceof c))throw new TypeError("Index expected");if(1!=r.size().length)throw new e.error.DimensionError(r.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=r.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=t.length;f.validateIndex(r.min()[0]),f.validateIndex(r.max()[0]);for(var u=[],p=0;s>p;p++)u[p]=t.charAt(p);if(o.forEach(function(e,t){u[e]=n.charAt(t)}),u.length>s)for(p=s-1,a=u.length;a>p;p++)u[p]||(u[p]=i);return u.join("")}var s=r(166),u=e.type.Matrix,c=r(5),f=s.array,l=s.string.isString,p=Array.isArray;e.subset=function(t,r,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,t,r){"use strict";function n(e,t,n,a){var s=n(r(75)),u=n(r(32)),c=a("trace",{Array:function(e){return c(s(e))},Matrix:function(e){var t;switch(e.storage()){case"dense":t=f(e);break;case"sparse":t=l(e)}return t},any:i}),f=function(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1==t[0])return i(r[0]);throw new RangeError("Matrix must be square (size: "+o(t)+")");case 2:var n=t[0],a=t[1];if(n===a){for(var s=0,c=0;n>c;c++)s=u(s,r[c][c]);return s}throw new RangeError("Matrix must be square (size: "+o(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o(t)+")")}},l=function(e){var t=e._values,r=e._index,n=e._ptr,i=e._size,a=i[0],s=i[1];if(a===s){var c=0;if(t.length>0)for(var f=0;s>f;f++)for(var l=n[f],p=n[f+1],m=l;p>m;m++){var h=r[m];if(h===f){c=u(c,t[m]);break}if(h>f)break}return c}throw new RangeError("Matrix must be square (size: "+o(i)+")")};return c}var i=r(170).clone,o=r(209).format;t.name="trace",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(75)),u=e.DenseMatrix,c=e.SparseMatrix,f=a("transpose",{Array:function(e){return f(s(e)).valueOf()},Matrix:function(e){var t,r=e.size();switch(r.length){case 1:t=e.clone();break;case 2:var n=r[0],i=r[1];if(0===i)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+o(r)+")");switch(e.storage()){case"dense":t=l(e,n,i);break;case"sparse":t=p(e,n,i)}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+o(this._size)+")")}return t},any:function(e){return i(e)}}),l=function(e,t,r){for(var n,o=e._data,a=[],s=0;r>s;s++){n=a[s]=[];for(var c=0;t>c;c++)n[c]=i(o[c][s])}return new u({data:a,size:[r,t]})},p=function(e,t,r){for(var n=e._values,o=e._index,a=e._ptr,s=[],u=[],f=[],l=new Array(t),p=0;t>p;p++)l[p]=0;var m,h,g;for(m=0,h=o.length;h>m;m++)l[o[m]]++;for(var v=0,d=0;t>d;d++)f.push(v),v+=l[d],l[d]=f[d];for(f.push(v),g=0;r>g;g++)for(var x=a[g],y=a[g+1],w=x;y>w;w++){var b=l[o[w]]++;u[b]=g,s[b]=i(n[w])}return new c({values:s,index:u,ptr:f,size:[r,t]})};return f}var i=r(170).clone,o=r(209).format;t.name="transpose",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(166),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(r){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))):r instanceof o?n=r.storage():l(r)||"matrix"!==t.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 v=[];return p.length>0?s.resize(v,p,h):v}}},function(e,t,r){"use strict";function n(e,t,r,n){return n("combinations",{"number, number":function(e,t){var r,n,i;if(!o(e)||0>e)throw new TypeError("Positive integer value expected in function combinations");if(t>e)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),n=1,i=1;e-r>=i;i++)n=n*(r+i)/i;return n},"BigNumber, BigNumber":function(t,r){var n,o,a,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(n=t.minus(r),r.lt(n)&&(n=r),o=u,a=u,s=t.minus(n);a.lte(s);a=a.plus(1))o=o.times(n.plus(a)).dividedBy(a);return o}})}function i(e){return e.isInteger()&&e.gte(0)}var o=r(175).isInteger;t.name="combinations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(108)),u=o("factorial",{number:function(e){return e===Number.POSITIVE_INFINITY?Math.sqrt(2*Math.PI):s(e+1)},BigNumber:function(e){return e.isFinite()||e.isNegative()?s(e.plus(1)):i.tau(t.precision).sqrt()},"Array | Matrix":function(e){return a.deepMap(e,u)}});return u}var i=r(214);t.name="factorial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,c){function f(r){var n,i,o,a=r.toNumber();if(ap;++p)o[p]=i=i.times(n),n=n.plus(l);return o[a]=i.times(n),new e.BigNumber(o[a].toPrecision(t.precision))}var l=n(r(2)),p=n(r(48)),m=n(r(50)),h=c("gamma",{number:function(e){var t,r;if(i(e)){if(0>=e)return isFinite(e)?1/0:0/0;if(e>171)return 1/0;for(var n=e-2,s=e-1;n>1;)s*=n,n--;return 0==s&&(s=1),s}if(.5>e)return Math.PI/(Math.sin(Math.PI*e)*h(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,l=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*l)+5246819/(75246796800*l*e))}--e,r=a[0];for(var p=1;p=e&&(s(a.value,0)||r(a.key,a.value,this)),a=n.extractMinimum(),a&&o.push(a);for(var u=0;ut;t++){var s=arguments[t];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[t]=s}var u=new o;return o.apply(u,e),u};return e.index.transform=t,t}},function(e,t,r){"use strict";e.exports=function(e){function t(e,t,r){var n=function(e,i){return Array.isArray(e)?e.map(function(e,t){return n(e,i.concat(t+1))}):t(e,i,r)};return n(e,[])}var r=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 t(n,i,n);if(n instanceof r)return e.matrix(t(n.valueOf(),i,n));throw new e.error.UnsupportedTypeError("map",e["typeof"](n))};return e.map.transform=n,n}},function(e,t,r){"use strict";var n=r(350),i=r(207).transform,o=r(175).isNumber,a=r(172).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}};return e.max.transform=r,r}},function(e,t,r){"use strict";var n=r(350),i=r(207).transform,o=r(175).isNumber,a=r(172).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}};return e.mean.transform=r,r}},function(e,t,r){"use strict";var n=r(350),i=r(207).transform,o=r(175).isNumber,a=r(172).argsToArray;e.exports=function(e){var t=e.collection.isCollection,r=function(){var r=a(arguments);if(2==r.length&&t(r[0])){var s=r[1];o(s)?r[1]=s-1:s instanceof n&&(r[1]=s.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}};return e.min.transform=r,r}},function(e,t,r){"use strict";var n=r(208).isBoolean,i=r(172).argsToArray;e.exports=function(e){var t=function(){var t=i(arguments),r=t.length-1,o=t[r];return n(o)||t.push(!0),e.range.apply(e,t)};return e.range.transform=t,t}},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("abs",{number:Math.abs,Complex:function(e){var t=Math.abs(e.re),r=Math.abs(e.im);if(1e3>t&&1e3>r)return Math.sqrt(t*t+r*r);if(t>=r){var n=r/t;return t*Math.sqrt(1+n*n)}var i=t/r;return r*Math.sqrt(1+i*i)},BigNumber:function(e){return e.abs()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="abs",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("ceil",{number:Math.ceil,Complex:function(e){return new e.constructor(Math.ceil(e.re),Math.ceil(e.im))},BigNumber:function(e){return e.ceil()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="ceil",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=n(r(73)),c=n(r(113)),f=n(r(210)),l=n(r(209)),p=n(r(211)),m=e.DenseMatrix,h=e.SparseMatrix,g=a("add",{"any, any":l,"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();if(r.length!==n.length)throw new o(r.length,n.length);var i;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":i=d(e,t,r,n);break;default:i=y(e,t.valueOf(),r,n)}break;default:switch(t.storage()){case"sparse":i=x(e.valueOf(),t,r,n);break;default:i=w(e.valueOf(),t.valueOf(),e.storage())}}return i},"Array, Array":function(e,t){return g(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return g(u(e),t)},"Matrix, Array":function(e,t){return g(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=v(e,t,e.size());break;default:r=s.deepMap2(e,t,g)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=v(t,e,t.size());break;default:r=s.deepMap2(e,t,g)}return r},"Array, any":function(e,t){return s.deepMap2(e,t,g)},"any, Array":function(e,t){return s.deepMap2(e,t,g)}}),v=function(e,t,r){var n=r[0],i=r[1],o=e._values,a=e._index,s=e._ptr;if(!c(t,0)){for(var u=[],f=[],p=new Array(i),m=new h({values:u,index:f,ptr:p,size:[n,i]}),g=0;i>g;g++){p[g]=f.length;for(var v=s[g],d=s[g+1],y=v;d>y;y++){var x=l(o[y],t);c(x,0)||(f.push(a[y]),u.push(x))}}return p[i]=f.length,m}return e.clone()},d=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=e._values,s=e._datatype,u=t._values,c=t._datatype,m=s&&c&&s===c?s:void 0,g=m?p.signatures[m+","+m]:p,v=m?l.signatures[m+","+m]:l,d=a&&u,y=d?[]:void 0,x=[],w=new Array(o),b=new h({values:y,index:x,ptr:w,size:[i,o]}),N=d?new Array(i):void 0,E=new Array(i),M=0;o>M;M++)if(w[M]=x.length,f(e,M,1,E,N,M+1,b,g,v),f(t,M,1,E,N,M+1,b,g,v),d)for(var A=w[M],_=x.length,O=A;_>O;O++)y.push(N[x[O]]);return w[o]=x.length,b},y=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=t,s=[],u=[],m=new Array(o),g=new h({values:s,index:u,ptr:m,size:[i,o]}),v=new Array(i),d=new Array(i),y=0;o>y;y++){m[y]=u.length;for(var x=0;i>x;x++){var w=a[x][y];c(w,0)||(v[x]=w,d[x]=y+1,u.push(x))}f(e,y,1,d,v,y+1,g,p,l);for(var b=m[y],N=u.length,E=b;N>E;E++)s.push(v[u[E]])}return m[o]=u.length,g},x=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var o=r[0],a=r[1],s=e,u=t._values,c=t._index,f=t._ptr,p=i(s),h=new m({data:p,size:[o,a]}),g=0;a>g;g++)for(var v=f[g],d=f[g+1],y=v;d>y;y++){var x=c[y];p[x][g]=l(p[x][g],u[y])}return h},w=function(e,t,r){return u(s.deepMap2(e,t,g),r)};return g}var i=r(166).clone,o=r(174);t.name="add",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(212)),s=n(r(47)),u=n(r(94));return i("divide",{"any, any":a,"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return s(e,u(t))}})}t.name="divide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(212));return i("dotDivide",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}t.name="dotDivide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(211)).signatures["Complex,Complex"],s=i("cube",{number:function(e){return e*e*e},Complex:function(e){return a(a(e,e),e)},BigNumber:function(e){return e.times(e).times(e)},"Array | Matrix":function(e){return o.deepMap(e,s,!0)}});return s}t.name="cube",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(47));return i("dotMultiply",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}r(172).size;t.name="dotMultiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=n(r(48));return i("dotMultiply",{"any, any":function(e,t){return o.deepMap2(e,t,a)}})}t.name="dotPow",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("exp",{number:Math.exp,Complex:function(t){var r=Math.exp(t.re);return new e.Complex(r*Math.cos(t.im),r*Math.sin(t.im))},BigNumber:function(e){return e.exp()},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="exp",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(e){return new e.constructor(e.re>0?Math.floor(e.re):Math.ceil(e.re),e.im>0?Math.floor(e.im):Math.ceil(e.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="fix",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("floor",{number:Math.floor,Complex:function(e){return new e.constructor(Math.floor(e.re),Math.floor(e.im))},BigNumber:function(e){return e.floor()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="floor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){if(!t.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var n=new e.BigNumber(0);!r.isZero();){var i=t.mod(r);t=r,r=i}return t.lt(n)?t.neg():t}var s=n(r(2)),u=o("gcd",{"number, number":i,"BigNumber, BigNumber":a,"Array | Matrix, Array | Matrix | number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=u(e,t),i=0;ie?-e:e}var o=r(175).isInteger;t.name="gcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){if(!t.isInt()||!r.isInt())throw new Error("Parameters in function lcm must be integer numbers");if(t.isZero()||r.isZero())return new e.BigNumber(0);for(var n=t.times(r);!r.isZero();){var i=r;r=t.mod(i),t=i}return n.div(t).abs()}var s=n(r(2)),u=o("lcm",{"number, number":i,"BigNumber, BigNumber":a,"Array | Matrix, Array | Matrix | number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=u(e,t),i=0;i=0?Math.log(t):u(new e.Complex(t,0))}var a=n(r(2)),s=n(r(212)),u=i("log",{number:o,Complex:function(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im)),Math.atan2(t.im,t.re))},BigNumber:function(e){return e.ln()},"Array | Matrix":function(e){return a.deepMap(e,u)},"any, any":function(e,t){return s(u(e),u(t))}});return u}t.name="log",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/Math.LN10,Math.atan2(t.im,t.re)/Math.LN10)}var a=n(r(2)),s=i("log10",{number:function(t){return t>=0?Math.log(t)/Math.LN10:s(new e.Complex(t,0))},Complex:o,BigNumber:function(t){return t.isNegative()?o(new e.Complex(t.toNumber(),0)):t.log()},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}t.name="log10",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")}var a=n(r(2)),s=i("mod",{"number, number":o,"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}t.name="mod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=a(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=a(e);(!i||m(t,i))&&(i=t)},!0),i||0}if("fro"===t)return o(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var h=0;return e.forEach(function(e){h=s(u(a(e),t),h)},!0),u(h,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var d=[],y=0;return e.forEach(function(e,t){var r=t[1],n=s(d[r]||0,a(e));p(n,y)&&(y=n),d[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,a(e));p(n,w)&&(w=n),x[r]=n},!0),w}if("fro"===t)return c(g(f(v(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}var a=n(r(29)),s=n(r(31)),u=n(r(48)),c=n(r(51)),f=n(r(47)),l=n(r(113)),p=n(r(114)),m=n(r(116)),h=n(r(73)),g=n(r(101)),v=n(r(103)),d=a.signatures.Complex,y=i("norm",{number:Math.abs,Complex:d,BigNumber:function(e){return e.abs()},"boolean | null":function(e){return Math.abs(e)},Array:function(e){return o(h(e),2)},Matrix:function(e){return o(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return y(e)},"Array, number | BigNumber | string":function(e,t){return o(h(e),t)},"Matrix, number | BigNumber | string":function(e,t){return o(e,t)}});return y}t.name="norm",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){var n=new e.BigNumber(0),i=new e.BigNumber(1),o=r.isNegative();if(o&&(r=r.negated()),r.isZero())throw new Error("Root must be non-zero");if(t.isNegative()&&!r.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(t.isZero())return n;if(!t.isFinite())return o?n:t;var a=i,s=0,u=100;do{var c=a,f=t.div(a.pow(r.minus(1))).minus(a).div(r);a=a.plus(f),s++}while(!a.equals(c)&&u>s);return o?i.div(a):a}var s=n(r(2)),u=o("nthRoot",{number:function(e){return i(e,2)},"number, number":i,BigNumber:function(t){return a(t,new e.BigNumber(2))},"BigNumber, BigNumber":a,"Array | Matrix":function(e){return s.deepMap(e,u)},"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}function i(e,t){var r=0>t;if(r&&(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 r?0:e;var n=1e-16,i=1,o=0,a=100;do{var s=(e/Math.pow(i,t-1)-i)/t;i+=s,o++}while(Math.abs(s)>n&&a>o);return r?1/i:i}t.name="nthRoot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(73)),s=n(r(209)),u=n(r(211)),c=n(r(113)),f=n(r(2)),l=e.DenseMatrix,p=e.SparseMatrix,m=i("multiply",{"any, any":u,"Array, Array":function(t,r){h(o.size(t),o.size(r));var n=m(a(t),a(r));return n instanceof e.Matrix?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return h(r,n),1===r.length?1===n.length?g(e,t,r[0]):v(e,t):1===n.length?y(e,t):x(e,t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Array, Matrix":function(e,t){return m(a(e,t.storage()),t)},"Array, any":function(e,t){return f.deepMap2(e,t,m)},"Matrix, any":function(e,t){return e.map(function(e){return m(e,t)},!0)},"any, Array | Matrix":function(e,t){return t.map(function(t){return m(t,e)},!0)}}),h=function(e,t){switch(e.length){case 1:switch(t.length){case 1:if(e[0]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");break;case 2:if(e[0]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Vector length ("+e[0]+") must match Matrix rows ("+t[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+t.length+" dimensions)")}break;case 2:switch(t.length){case 1:if(e[1]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+e[1]+") must match Vector length ("+t[0]+")");break;case 2:if(e[1]!==t[0])throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+e[1]+") must match Matrix B rows ("+t[0]+")");break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+t.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+e.length+" dimensions)")}},g=function(e,t,r){if(0===r)throw new Error("Cannot multiply two empty vectors");for(var n=e._data,i=e._datatype,o=t._data,a=t._datatype,c=i&&a&&i===a?i:void 0,f=c?u.signatures[c+","+c]||u:u,l=c?s.signatures[c+","+c]||s:s,p=f(n[0],o[0]),m=1;r>m;m++)p=l(p,f(n[m],o[m]));return p},v=function(e,t){switch(t.storage()){case"dense":return d(e,t)}throw new Error("Not implemented")},d=function(e,t){for(var r=e._data,n=e._size,i=e._datatype,o=t._data,a=t._size,c=t._datatype,f=n[0],p=a[1],m=i&&c&&i===c?i:void 0,h=m?u.signatures[m+","+m]||u:u,g=m?s.signatures[m+","+m]||s:s,v=new Array(p),d=0;p>d;d++){for(var y=h(r[0],o[0][d]),x=1;f>x;x++)y=g(y,h(r[x],o[x][d]));v[d]=y}return 1===p?v[0]:new l({data:v,size:[p],datatype:m})},y=function(e,t){switch(e.storage()){case"dense":return w(e,t);case"sparse":return E(e,t)}},x=function(e,t){switch(e.storage()){case"dense":switch(t.storage()){case"dense":return b(e,t);case"sparse":return N(e,t)}break;case"sparse":switch(t.storage()){case"dense":return M(e,t);case"sparse":return A(e,t)}}},w=function(e,t){for(var r=e._data,n=e._size,i=e._datatype,o=t._data,a=t._datatype,c=n[0],f=n[1],p=i&&a&&i===a?i:void 0,m=p?u.signatures[p+","+p]||u:u,h=p?s.signatures[p+","+p]||s:s,g=new Array(c),v=0;c>v;v++){for(var d=r[v],y=m(d[0],o[0]),x=1;f>x;x++)y=h(y,m(d[x],o[x]));g[v]=y}return 1===c?g[0]:new l({data:g,size:[c],datatype:p})},b=function(e,t){for(var r=e._data,n=e._size,i=e._datatype,o=t._data,a=t._size,c=t._datatype,f=n[0],p=n[1],m=a[1],h=i&&c&&i===c?i:void 0,g=h?u.signatures[h+","+h]||u:u,v=h?s.signatures[h+","+h]||s:s,d=new Array(f),y=0;f>y;y++){var x=r[y];d[y]=new Array(m);for(var w=0;m>w;w++){for(var b=g(x[0],o[0][w]),N=1;p>N;N++)b=v(b,g(x[N],o[N][w]));d[y][w]=b}}return 1===f&&1===m?d[0][0]:new l({data:d,size:[f,m],datatype:h})},N=function(e,t){var r=e._data,n=e._size,i=t._values,o=t._index,a=t._ptr,u=t._size;if(!i)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");for(var c=n[0],f=u[1],p=new Array(c),h=0;c>h;h++){p[h]=new Array(f);for(var g=r[h],v=0;f>v;v++){for(var d=0,y=a[v],x=a[v+1],w=y;x>w;w++){var b=o[w];d=s(d,m(g[b],i[w]))}p[h][v]=d}}return 1===c&&1===f?p[0][0]:new l({data:p,size:[c,f]})},E=function(e,t){var r=e._values,n=e._index,i=e._ptr,o=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var a=t._data,f=t._datatype,l=e._size[0],m=t._size[0],h=[],g=[],v=new Array(2),d=o&&f&&o===f?o:void 0,y=d?u.signatures[d+","+d]||u:u,x=d?s.signatures[d+","+d]||s:s,w=new Array(l),b=new Array(l);v[0]=0;for(var N=0;m>N;N++){var E=a[N];if(!c(E,0))for(var M=i[N],A=i[N+1],_=M;A>_;_++){var O=n[_];b[O]?w[O]=x(w[O],y(E,r[_])):(b[O]=!0,g.push(O),w[O]=y(E,r[_]))}}for(var C=g.length,S=0;C>S;S++){var z=g[S];h[S]=w[z]}return v[1]=g.length,1===l?1===h.length?h[0]:0:new p({values:h,index:g,ptr:v,size:[l,1],datatype:d})},M=function(e,t){var r=e._values,n=e._index,i=e._ptr,o=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");for(var a=t._data,f=t._datatype,l=e._size[0],m=t._size[0],h=t._size[1],g=o&&f&&o===f?o:void 0,v=g?u.signatures[g+","+g]||u:u,d=g?s.signatures[g+","+g]||s:s,y=[],x=[],w=new Array(h+1),b=new p({values:y,index:x,ptr:w,size:[l,h],datatype:g}),N=new Array(l),E=new Array(l),M=0;h>M;M++){w[M]=x.length;for(var A=M+1,_=0;m>_;_++){var O=a[_][M];if(!c(O,0))for(var C=i[_],S=i[_+1],z=C;S>z;z++){var T=n[z];E[T]!==A?(E[T]=A,x.push(T),N[T]=v(O,r[z])):N[T]=d(N[T],v(O,r[z]))}}for(var B=w[M],I=x.length,q=B;I>q;q++){var P=x[q];y[q]=N[P]}}return w[h]=x.length,1===l&&1===h?1===y.length?y[0]:0:b},A=function(e,t){for(var r,n,i,o,a,c,f,l,m=e._values,h=e._index,g=e._ptr,v=e._datatype,d=t._values,y=t._index,x=t._ptr,w=t._datatype,b=v&&w&&v===w?v:void 0,N=b?u.signatures[b+","+b]||u:u,E=b?s.signatures[b+","+b]||s:s,M=e._size[0],A=t._size[1],_=m&&d,O=_?[]:void 0,C=[],S=new Array(A+1),z=new p({values:O,index:C,ptr:S,size:[M,A],datatype:b}),T=_?new Array(M):void 0,B=new Array(M),I=0;A>I;I++){S[I]=C.length;var q=I+1;for(a=x[I],c=x[I+1],o=a;c>o;o++)if(l=y[o],_)for(n=g[l],i=g[l+1],r=n;i>r;r++)f=h[r],B[f]!==q?(B[f]=q,C.push(f),T[f]=N(d[o],m[r])):T[f]=E(T[f],N(d[o],m[r]));else for(n=g[l],i=g[l+1],r=n;i>r;r++)f=h[r],B[f]!==q&&(B[f]=q,C.push(f));if(_)for(var P=S[I],U=C.length,R=P;U>R;R++){var L=C[R];O[R]=T[L]}}return S[A]=C.length,1===M&&1===A&&_?1===O.length?O[0]:0:z};return m}var i=r(171),o=i.array;t.name="multiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(e,t){return f(m(p(e),t))}function u(e,t){if(!i(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=o(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var n=l(r[0]).valueOf(),a=e;t>=1;)1==(1&t)&&(n=m(a,n)),t>>=1,a=m(a,a);return n}function c(e,t){return h(u(e.valueOf(),t))}var f=(n(r(2)),n(r(37))),l=n(r(92)),p=n(r(42)),m=n(r(47)),h=n(r(73)),g=a("pow",{"number, number":function(t,r){return i(r)||t>=0?Math.pow(t,r):s(new e.Complex(t,0),new e.Complex(r,0))},"BigNumber, BigNumber":function(t,r){return i(r)||t>=0?t.pow(r):s(new e.Complex(t.toNumber(),0),new e.Complex(r.toNumber(),0))},"Complex, Complex":s,"Array, number":u,"Array, BigNumber":function(e,t){return u(e,t.toNumber())},"Matrix, number":c,"Matrix, BigNumber":function(e,t){return c(e,t.toNumber())}});return g}var i=r(175).isInteger,o=r(172).size;t.name="pow",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("round",{number:Math.round,"number, number":function(e,t){if(!o(t))throw new TypeError("Number of decimals in function round must be an integer");if(0>t||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return i(e,t)},Complex:function(t){return new e.Complex(Math.round(t.re),Math.round(t.im))},"Complex, number":function(t,r){return new e.Complex(i(t.re,r),i(t.im,r))},"Complex, BigNumber":function(t,r){var n=r.toNumber();return new e.Complex(i(t.re,n),i(t.im,n))},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError("Number of decimals in function round must be an integer");return e.toDecimalPlaces(t.toNumber())},"Array | Matrix":function(e){return s.deepMap(e,u,!0)},"Array | Matrix, number | BigNumber":function(e,t){return s.deepMap2(e,t,u)},"number | Complex | BigNumber, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}function i(e,t){return parseFloat(a(e,t))}var o=r(175).isInteger,a=r(175).toFixed;t.name="round",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("sign",{number:i.sign,Complex:function(e){var t=Math.sqrt(e.re*e.re+e.im*e.im);return new e.constructor(e.re/t,e.im/t)},BigNumber:function(e){return new e.constructor(e.cmp(0))},"Array | Matrix":function(e){return a.deepMap(e,s,!0)}});return s}var i=r(175);t.name="sign",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(t){return t>=0?Math.sqrt(t):a(new e.Complex(t,0))}function a(t){var r,n,i=Math.sqrt(t.re*t.re+t.im*t.im);return r=t.re>=0?.5*Math.sqrt(2*(i+t.re)):Math.abs(t.im)/Math.sqrt(2*(i-t.re)),n=t.re<=0?.5*Math.sqrt(2*(i-t.re)):Math.abs(t.im)/Math.sqrt(2*(i+t.re)),t.im>=0?new e.Complex(r,n):new e.Complex(r,-n)}var s=n(r(2)),u=i("sqrt",{number:o,Complex:a,BigNumber:function(e){return e.isNegative()?o(e.toNumber()):e.sqrt()},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}t.name="sqrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("square",{number:function(e){return e*e},Complex:function(e){return new e.constructor(e.re*e.re-e.im*e.im,e.re*e.im+e.im*e.re)},BigNumber:function(e){return e.times(e)},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="square",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(54)),u=n(r(73)),c=n(r(113)),f=n(r(210)),l=n(r(209)),p=n(r(211)),m=n(r(2)),h=e.DenseMatrix,g=e.SparseMatrix,v=a("subtract",{"number, number":function(e,t){return e-t},"Complex, Complex":function(t,r){return new e.Complex(t.re-r.re,t.im-r.im)},"BigNumber, BigNumber":function(e,t){return e.minus(t)},"Unit, Unit":function(e,t){if(null==e.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(!e.equalBase(t))throw new Error("Units do not match");var r=e.clone();return r.value-=t.value,r.fixPrefix=!1,r},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();if(r.length!==n.length)throw new o(r.length,n.length);var i;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":i=x(e,t,r,n);break;default:i=w(e,t.valueOf(),r,n)}break;default:switch(t.storage()){case"sparse":i=b(e.valueOf(),t,r,n);break;default:i=N(e.valueOf(),t.valueOf(),e.storage())}}return i},"Array, Array":function(e,t){return v(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return v(u(e),t)},"Matrix, Array":function(e,t){return v(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=d(e,t,e.size());break;default:r=m.deepMap2(e,t,v)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=y(e,t,t.size());break;default:r=m.deepMap2(e,t,v)}return r},"Array, any":function(e,t){return m.deepMap2(e,t,v)},"any, Array":function(e,t){return m.deepMap2(e,t,v)}}),d=function(e,t,r){var n=r[0],i=r[1],o=e._values,a=e._index,s=e._ptr;if(!c(t,0)){for(var u=[],f=[],l=new Array(i),p=new g({values:u,index:f,ptr:l,size:[n,i]}),m=0;i>m;m++){l[m]=f.length;for(var h=s[m],d=s[m+1],y=h;d>y;y++){var x=v(o[y],t);c(x,0)||(f.push(a[y]),u.push(x))}}return l[i]=f.length,p}return e.clone()},y=function(e,t,r){var n=r[0],i=r[1],o=t._values,a=t._index,s=t._ptr;if(!c(e,0)){for(var u=[],f=[],l=new Array(i),p=new g({values:u,index:f,ptr:l,size:[n,i]}),m=0;i>m;m++){l[m]=f.length;for(var h=s[m],d=s[m+1],y=h;d>y;y++){var x=v(e,o[y]);c(x,0)||(f.push(a[y]),u.push(x))}}return l[i]=f.length,p}return t.clone()},x=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=e._values,s=t._values,u=a&&s,c=u?[]:void 0,m=[],h=new Array(o),v=new g({values:c,index:m,ptr:h,size:[i,o]}),d=u?new Array(i):void 0,y=new Array(i),x=0;o>x;x++)if(h[x]=m.length,f(e,x,1,y,d,x+1,v,p,l),f(t,x,-1,y,d,x+1,v,p,l),u)for(var w=h[x],b=m.length,N=w;b>N;N++)c.push(d[m[N]]);return h[o]=m.length,v},w=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var i=r[0],o=r[1],a=t,u=[],m=[],h=new Array(o),v=new g({values:u,index:m,ptr:h,size:[i,o]}),d=new Array(i),y=new Array(i),x=0;o>x;x++){h[x]=m.length;for(var w=0;i>w;w++){var b=s(a[w][x]);c(b,0)||(d[w]=b,y[w]=x+1,m.push(w))}f(e,x,1,y,d,x+1,v,p,l);for(var N=h[x],E=m.length,M=N;E>M;M++)u.push(d[m[M]])}return h[o]=m.length,v},b=function(e,t,r,n){if(r[0]!==n[0]||r[1]!==n[1])throw new RangeError("Dimension mismatch in add. Matrix A ("+r+") must match Matrix B ("+n+")");for(var o=r[0],a=r[1],s=e,u=t._values,c=t._index,f=t._ptr,l=i(s),p=new h({data:l,size:[o,a]}),m=0;a>m;m++)for(var g=f[m],d=f[m+1],y=g;d>y;y++){var x=c[y];l[x][m]=v(l[x][m],u[y])}return p},N=function(e,t,r){return u(m.deepMap2(e,t,v),r)};return v}var i=r(166).clone,o=r(174);t.name="subtract",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unaryMinus",{number:function(e){return-e},Complex:function(e){return new e.constructor(-e.re,-e.im)},BigNumber:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=-e.value,t},"Array | Matrix":function(e){return o.deepMap(e,a,!0)}});return a}t.name="unaryMinus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unaryPlus",{number:function(e){return e},Complex:function(e){return e.clone()},BigNumber:function(e){return e},Unit:function(e){return e.clone()},"Array | Matrix":function(e){return o.deepMap(e,a,!0)},"boolean | string | null":function(r){return"bignumber"==t.number?new e.BigNumber(+r):+r}});return a}t.name="unaryPlus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,r){var n,o,a,s=0,c=1,f=1,l=0;if(!i(e)||!i(r))throw new Error("Parameters in function xgcd must be integer numbers");for(;r;)o=Math.floor(e/r),a=e%r,n=s,s=c-o*s,c=n,n=f,f=l-o*f,l=n,e=r,r=a;var p;return p=0>e?[-e,-c,-l]:[e,e?c:0,l],"array"===t.matrix?p:u(p)}function s(r,n){var i,o,a,s=new e.BigNumber(0),c=new e.BigNumber(0),f=new e.BigNumber(1),l=new e.BigNumber(1),p=new e.BigNumber(0);if(!r.isInt()||!n.isInt())throw new Error("Parameters in function xgcd must be integer numbers");for(;!n.isZero();)o=r.div(n).floor(),a=r.mod(n),i=c,c=f.minus(o.times(c)),f=i,i=l,l=p.minus(o.times(l)),p=i,r=n,n=a;var m;return m=r.lt(s)?[r.neg(),f.neg(),p.neg()]:[r,r.isZero()?0:f,p],"array"===t.matrix?m:u(m)}var u=(n(r(2)),n(r(73)));return o("xgcd",{"number, number":a,"BigNumber, BigNumber":s})}var i=r(175).isInteger;t.name="xgcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitAnd",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitAnd");return e&t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(213).and;t.name="bitAnd",t.factory=n},function(e,t,r){ +"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitNot",{number:function(e){if(!i(e))throw new Error("Integer expected in function bitNot");return~e},BigNumber:o,"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}var i=r(175).isInteger,o=r(213).not;t.name="bitNot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitXor",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitXor");return e^t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(213).xor;t.name="bitXor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("bitOr",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitOr");return e|t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(213).or;t.name="bitOr",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("leftShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function leftShift");return e<>t},"BigNumber, BigNumber":o,"Array | Matrix, any":function(e,t){return s.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return s.deepMap2(e,t,u)}});return u}var i=r(175).isInteger,o=r(213).rightArithShift;t.name="rightArithShift",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("rightLogShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).isInteger;t.name="rightLogShift",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("arg",{number:function(e){return Math.atan2(0,e)},Complex:function(e){return Math.atan2(e.im,e.re)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="arg",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return new e.constructor(e.re,-e.im)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="conj",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="re",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("im",{number:function(e){return 0},BigNumber:function(e){return new e.constructor(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="im",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("bignumber",{"":function(){return new e.BigNumber(0)},number:function(t){return new e.BigNumber(t+"")},string:function(t){return new e.BigNumber(t)},BigNumber:function(e){return e},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="bignumber",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("bool",{"":function(){return!1},"boolean":function(e){return e},number:function(e){return!!e},BigNumber:function(e){return!e.isZero()},string:function(e){var t=e.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var r=Number(e);if(""!=e&&!isNaN(r))return!!r;throw new Error('Cannot convert "'+e+'" to a boolean')},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="boolean",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("chain",{"":function(){return new e.Chain},any:function(t){return new e.Chain(t)}})}t.name="chain",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("complex",{"":function(){return new e.Complex(0,0)},number:function(t){return new e.Complex(t,0)},"number, number":function(t,r){return new e.Complex(t,r)},"BigNumber, BigNumber":function(t,r){return new e.Complex(t.toNumber(),r.toNumber())},Complex:function(e){return e.clone()},string:function(t){var r=e.Complex.parse(t);if(r)return r;throw new SyntaxError('String "'+t+'" is no valid complex number')},Object:function(t){if("re"in t&&"im"in t)return new e.Complex(t.re,t.im);if("r"in t&&"phi"in t)return e.Complex.fromPolar(t.r,t.phi);throw new Error("Expected object with either properties re and im, or properties r and phi.")},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="complex",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("index",{"...number | BigNumber | Range | Array":function(t){var r=t.map(function(t){return t instanceof e.BigNumber?t.toNumber():Array.isArray(t)?t.map(function(t){return t instanceof e.BigNumber?t.toNumber():t}):t}),n=new e.Index;return e.Index.apply(n,r),n}})}t.name="index",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function i(t,r){var n=e.Matrix.storage(r||"default");return new n(t)}return n("matrix",{"":function(){return i([])},string:function(e){return i([],e)},Array:function(e){return i(e)},Matrix:function(e){return i(e,e.storage())},"Array | Matrix, string":i})}t.name="matrix",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("number",{"":function(){return 0},number:function(e){return e},string:function(e){var t=Number(e);if(isNaN(t))throw new SyntaxError('String "'+e+'" is no valid number');return t},BigNumber:function(e){return e.toNumber()},Unit:function(e){throw new Error("Second argument with valueless unit expected")},"Unit, string | Unit":function(e,t){return e.toNumber(t)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="number",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(13));return i("parser",{"":function(){return new a(o)}})}t.name="parser",t.factory=n,t.math=!0},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("string",{"":function(){return""},number:i.format,"null":function(e){return"null"},"boolean":function(e){return e+""},"Array | Matrix":function(e){return a.deepMap(e,s)},any:function(e){return String(e)}});return s}var i=r(175);t.name="string",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var i=e.SparseMatrix;return n("sparse",{"":function(){return new i([])},"Array | Matrix":function(e){return new i(e)}})}t.name="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("unit",{Unit:function(e){return e.clone()},string:function(t){if(e.Unit.isValuelessUnit(t))return new e.Unit(null,t);var r=e.Unit.parse(t);if(r)return r;throw new SyntaxError('String "'+t+'" is no valid unit')},"number, string":function(t,r){return new e.Unit(t,r)},"BigNumber, string":function(t,r){return new e.Unit(t.toNumber(),r)},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="unit",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(2)),s=n(r(12));return i("compile",{string:function(e){return s(e).compile(o)},"Array | Matrix":function(e){return a.deepMap(e,function(e){return s(e).compile(o)})}})}t.math=!0,t.name="compile",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,o){var a=n(r(2)),s=n(r(12));return i("compile",{string:function(e){var t={};return s(e).compile(o).eval(t)},"string, Object":function(e,t){return s(e).compile(o).eval(t)},"Array | Matrix":function(e){var t={};return a.deepMap(e,function(e){return s(e).compile(o).eval(t)})},"Array | Matrix, Object":function(e,t){return a.deepMap(e,function(e){return s(e).compile(o).eval(t)})}})}t.math=!0,t.name="eval",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n,o){return n("help",{any:function(t){var r,n=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){n=r;break}var a=i[n];if(!a)throw new Error('No documentation found on "'+n+'"');return new e.Help(a)}})}var i=r(15);t.math=!0,t.name="help",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(12));return i("parse",{"string | Array | Matrix":o,"string | Array | Matrix, Object":o})}t.name="parse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("and",{"number, number":function(e,t){return!(!e||!t)},"Complex, Complex":function(e,t){return!(0===e.re&&0===e.im||0===t.re&&0===t.im)},"BigNumber, BigNumber":function(e,t){return!(e.isZero()||t.isZero()||e.isNaN()||t.isNaN())},"Unit, Unit":function(e,t){return 0!==e.value&&null!==e.value&&0!==t.value&&null!==t.value},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="and",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("not",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return null===e.value||0==e.value},"Array | Matrix":function(e){return o.deepMap(e,a)}});return a}t.name="not",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("or",{"number, number":function(e,t){return!(!e&&!t)},"Complex, Complex":function(e,t){return 0!==e.re||0!==e.im||0!==t.re||0!==t.im},"BigNumber, BigNumber":function(e,t){return!e.isZero()&&!e.isNaN()||!t.isZero()&&!t.isNaN()},"Unit, Unit":function(e,t){return 0!==e.value&&null!==e.value||0!==t.value&&null!==t.value},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="or",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("xor",{"number, number":function(e,t){return!!(!!e^!!t)},"Complex, Complex":function(e,t){return!!((0!==e.re||0!==e.im)^(0!==t.re||0!==t.im))},"BigNumber, BigNumber":function(e,t){return!!((!e.isZero()&&!e.isNaN())^(!t.isZero()&&!t.isNaN()))},"Unit, Unit":function(e,t){return!!((0!==e.value&&null!==e.value)^(0!==t.value&&null!==t.value))},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="xor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){var l=n(r(73));return f("concat",{"...Array | Matrix | number | BigNumber":function(t){var r,n,f=t.length,p=-1,m=!1,h=[];for(r=0;f>r;r++){var g=t[r];if(g instanceof e.Matrix&&(m=!0),"number"==typeof g||g instanceof e.BigNumber){if(r!==f-1)throw new Error("Dimension must be specified as last argument");if(n=p,p=g.valueOf(),!a(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new u(p);if(r>0&&p>n)throw new u(p,n+1)}else{var v=o(g).valueOf(),d=s.size(v);if(h[r]=v,n=p,p=d.length-1,r>0&&p!=n)throw new c(n+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var y=h.shift();h.length;)y=i(y,h.shift(),p,0);return m?l(y):y}})}function i(e,t,r,n){if(r>n){if(e.length!=t.length)throw new c(e.length,t.length);for(var o=[],a=0;ar;r++)n[t][r]=0;for(r=t+1;ra;a++)i=l(n(i),e);return t%2==0?p(i[0][0]):i[0][0]}var u=(n(r(2)),n(r(73))),c=n(r(31)),f=n(r(53)),l=n(r(47)),p=n(r(54));return i("det",{any:function(e){return o.clone(e)},"Array | Matrix":function(t){var r;switch(t instanceof e.Matrix?r=t.size():t instanceof Array?(t=u(t),r=t.size()):r=[],r.length){case 0:return o.clone(t);case 1:if(1==r[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(r)+")");case 2:var n=r[0],i=r[1];if(n==i)return s(t.clone().valueOf(),n,i);throw new RangeError("Matrix must be square (size: "+a.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(r)+")")}}})}var i=r(171),o=i.object,a=i.string;t.name="det",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t,r,n){if(!a(t))throw new TypeError("Second parameter in function diag must be an integer");var i=t>0?t:0,o=0>t?-t:0;switch(r.length){case 1:return c(e,t,n,r[0],o,i);case 2:return f(e,t,n,r,o,i)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function c(t,r,n,i,o,a){var s=[i+o,i+a],u=e.Matrix.storage(n||"dense"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function f(t,r,n,i,a,s){if(t instanceof e.Matrix){var u=t.diagonal(r);return null!==n?n!==u.storage()?l(u,n):u:u.valueOf()}for(var c=Math.min(i[0]-a,i[1]-s),f=new Array(c),p=0;c>p;p++)f[p]=o(t[p+a][p+s]);return null!==n?l(f):f}var l=n(r(73));return s("diag",{Array:function(e){return u(e,0,i.size(e),null)},"Array, number":function(e,t){return u(e,t,i.size(e),null)},"Array, BigNumber":function(e,t){return u(e,t.toNumber(),i.size(e),null)},"Array, string":function(e,t){return u(e,0,i.size(e),t)},"Array, number, string":function(e,t,r){return u(e,t,i.size(e),r)},"Array, BigNumber, string":function(e,t,r){return u(e,t.toNumber(),i.size(e),r)},Matrix:function(e){return u(e,0,e.size(),e.storage())},"Matrix, number":function(e,t){return u(e,t,e.size(),e.storage())},"Matrix, BigNumber":function(e,t){return u(e,t.toNumber(),e.size(),e.storage())},"Matrix, string":function(e,t){return u(e,0,e.size(),t)},"Matrix, number, string":function(e,t,r){return u(e,t,e.size(),r)},"Matrix, BigNumber, string":function(e,t,r){return u(e,t.toNumber(),e.size(),r)}})}var i=r(172),o=r(166).clone,a=r(175).isInteger;t.name="diag",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t){var r=i(e),n=i(t),o=r[0];if(1!==r.length||1!==n.length)throw new RangeError("Vector expected");if(r[0]!=n[0])throw new RangeError("Vectors must have equal length ("+r[0]+" != "+n[0]+")");if(0==o)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var a=0,c=0;o>c;c++)a=s(a,u(e[c],t[c]));return a}var s=n(r(31)),u=n(r(47));return o("dot",{"Matrix, Matrix":function(e,t){return a(e.toArray(),t.toArray())},"Matrix, Array":function(e,t){return a(e.toArray(),t)},"Array, Matrix":function(e,t){return a(e,t.toArray())},"Array, Array":a})}var i=r(172).size;t.name="dot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(e,t){switch(e.length){case 0:return t?c(t):[];case 1:return u(e[0],e[0],t);case 2:return u(e[0],e[1],t);default:throw new Error("Vector containing two values expected")}}function u(t,r,n){var a=t instanceof e.BigNumber?t.constructor:r instanceof e.BigNumber?r.constructor:null;if(t instanceof e.BigNumber&&(t=t.toNumber()),r instanceof e.BigNumber&&(r=r.toNumber()),!o(t)||1>t)throw new Error("Parameters in function eye must be positive integers");if(!o(r)||1>r)throw new Error("Parameters in function eye must be positive integers");var s=a?new e.BigNumber(1):1,u=a?new a(0):0,c=[t,r];if(n){var f=e.Matrix.storage(n);return f.diagonal(c,s,0,u)}for(var l=i.resize([],c,u),p=r>t?t:r,m=0;p>m;m++)l[m][m]=s;return l}var c=n(r(73));return a("eye",{"":function(){return"matrix"===t.matrix?c([]):[]},string:function(e){return c(e)},"number | BigNumber":function(e){return u(e,e,"matrix"===t.matrix?"default":void 0)},"number | BigNumber, string":function(e,t){return u(e,e,t)},"number | BigNumber, number | BigNumber":function(e,r){return u(e,r,"matrix"===t.matrix?"default":void 0)},"number | BigNumber, number | BigNumber, string":function(e,t,r){return u(e,t,r)},Array:function(e){return s(e)},"Array, string":function(e,t){return s(e,t)},Matrix:function(e){return s(e.valueOf(),e.storage())},"Matrix, string":function(e,t){return s(e.valueOf(),t)}})}var i=r(172),o=r(175).isInteger;t.name="eye",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(73));return a("flatten",{Array:function(e){return o(i(e))},Matrix:function(e){var t=o(i(e.toArray()));return s(t)}})}var i=r(166).clone,o=r(172).flatten;t.name="flatten",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t,r){var n,i,o,a,s;if(1==t){if(a=e[0][0],0==a)throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,a)]]}if(2==t){var h=p(e);if(0==h)throw Error("Cannot calculate inverse, determinant is zero");return[[u(e[1][1],h),u(l(e[0][1]),h)],[u(l(e[1][0]),h),u(e[0][0],h)]]}var g=e.concat();for(n=0;t>n;n++)g[n]=g[n].concat();for(var v=m(t).valueOf(),d=0;r>d;d++){for(n=d;t>n&&0==g[n][d];)n++;if(n==t||0==g[n][d])throw Error("Cannot calculate inverse, determinant is zero");n!=d&&(s=g[d],g[d]=g[n],g[n]=s,s=v[d],v[d]=v[n],v[n]=s);var y=g[d],x=v[d];for(n=0;t>n;n++){var w=g[n],b=v[n];if(n!=d){if(0!=w[d]){for(o=u(l(w[d]),y[d]),i=d;r>i;i++)w[i]=c(w[i],f(o,y[i]));for(i=0;r>i;i++)b[i]=c(b[i],f(o,x[i]))}}else{for(o=y[d],i=d;r>i;i++)w[i]=u(w[i],o);for(i=0;r>i;i++)b[i]=u(b[i],o)}}}return v}var s=(n(r(2)),n(r(73))),u=n(r(212)),c=n(r(31)),f=n(r(47)),l=n(r(54)),p=n(r(89)),m=n(r(92)),h=o("inv",{"Array | Matrix":function(t){var r=t instanceof e.Matrix?t.size():i.array.size(t);switch(r.length){case 1:if(1==r[0])return t instanceof e.Matrix?s([u(1,t.valueOf()[0])]):[u(1,t[0])];throw new RangeError("Matrix must be square (size: "+i.string.format(r)+")");case 2:var n=r[0],o=r[1];if(n==o)return t instanceof e.Matrix?s(a(t.valueOf(),n,o),t.storage()):a(t,n,o);throw new RangeError("Matrix must be square (size: "+i.string.format(r)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.string.format(r)+")")}},any:function(e){return u(1,e)}});return h}var i=r(171);t.name="inv",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(171),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(r,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))):r instanceof o?p=r.storage():l(r)||"matrix"!==t.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 v=e.matrix(p);return m.length>0?v.resize(m,g):v}var d=[];return m.length>0?s.resize(d,m,g):d}}},function(e,t,r){"use strict";e.exports=function(e,t){function n(e,t,r){var n=[],i=e;if(r>0)for(;t>i;)n.push(i),i+=r;else if(0>r)for(;i>t;)n.push(i),i+=r;return n}function i(e,t,r){var n=[],i=e;if(r>0)for(;t>=i;)n.push(i),i+=r;else if(0>r)for(;i>=t;)n.push(i),i+=r;return n}function o(e,t,r){var n=[],i=e,o=new c(0);if(r.gt(o))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function a(e,t,r){var n=[],i=e,o=new c(0);if(r.gt(o))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(o))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function s(e){var r=e.split(":"),n=null;if("bignumber"===t.number)try{n=r.map(function(e){return new c(e)})}catch(i){return null}else{n=r.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=r(171),c=e.type.BigNumber,f=(e.type.Matrix,e.collection,u["boolean"].isBoolean),l=u.string.isString,p=u.number.isNumber;e.range=function(r){var u,m,h,g=Array.prototype.slice.call(arguments),v=!1;switch(f(g[g.length-1])&&(v=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 d=s(g[0]);if(!d)throw new SyntaxError('String "'+g[0]+'" is no valid range');u=d.start,m=d.end,h=d.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?v?a:o:v?i:n,w=x(u,m,h);return"array"===t.matrix?w:e.matrix(w)}}},function(e,t,r){"use strict";e.exports=function(e,t){function n(t,r,n){if(void 0!==n){if(!f(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==r.length)throw new e.error.DimensionError(r.length,1);var i=r[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(r)+")");if(t.length>i)return t.substring(0,i);if(t.lengtha;a++)o+=n;return o}return t}var i=r(171),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(r,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})),r instanceof a)return r.resize(i,c,!0);if(f(r))return n(r,i,c);var l=m(r)?!1:"array"!==t.matrix;if(0==i.length){for(;m(r);)r=r[0];return u(r)}m(r)||(r=[r]),r=u(r);var p=s.resize(r,i,c);return l?e.matrix(p):p}}},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(73));return o("size",{Matrix:function(e){return a(e.size())},Array:i.size,string:function(e){return"array"===t.matrix?[e.length]:a([e.length])},"number | Complex | BigNumber | Unit | boolean | null":function(e){return"array"===t.matrix?[]:a([])}})}var i=r(172);t.name="size",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(73));return a("squeeze",{Array:function(e){return o.squeeze(i.clone(e))},Matrix:function(e){var t=o.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}})}var i=r(166),o=r(172);t.name="squeeze",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){function n(t,r){var n,o;if(p(t))return n=e.matrix(t),o=n.subset(r),o&&o.valueOf();if(t instanceof u)return t.subset(r);if(l(t))return i(t,r);throw new e.error.UnsupportedTypeError("subset",e["typeof"](t))}function i(t,r){if(!(r instanceof c))throw new TypeError("Index expected");if(1!=r.size().length)throw new e.error.DimensionError(r.size().length,1);var n=t.length;f.validateIndex(r.min()[0],n),f.validateIndex(r.max()[0],n);var i=r.range(0),o="";return i.forEach(function(e){o+=t.charAt(e)}),o}function o(t,r,n,i){var o;if(p(t))return o=e.matrix(e.clone(t)),o.subset(r,n,i),o.valueOf();if(t instanceof u)return t.clone().subset(r,n,i);if(l(t))return a(t,r,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](t))}function a(t,r,n,i){if(!(r instanceof c))throw new TypeError("Index expected");if(1!=r.size().length)throw new e.error.DimensionError(r.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=r.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=t.length;f.validateIndex(r.min()[0]),f.validateIndex(r.max()[0]);for(var u=[],p=0;s>p;p++)u[p]=t.charAt(p);if(o.forEach(function(e,t){u[e]=n.charAt(t)}),u.length>s)for(p=s-1,a=u.length;a>p;p++)u[p]||(u[p]=i);return u.join("")}var s=r(171),u=e.type.Matrix,c=r(5),f=s.array,l=s.string.isString,p=Array.isArray;e.subset=function(t,r,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,t,r){"use strict";function n(e,t,n,a){var s=n(r(73)),u=n(r(31)),c=a("trace",{Array:function(e){return c(s(e))},Matrix:function(e){var t;switch(e.storage()){case"dense":t=f(e);break;case"sparse":t=l(e)}return t},any:i}),f=function(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1==t[0])return i(r[0]);throw new RangeError("Matrix must be square (size: "+o(t)+")");case 2:var n=t[0],a=t[1];if(n===a){for(var s=0,c=0;n>c;c++)s=u(s,r[c][c]);return s}throw new RangeError("Matrix must be square (size: "+o(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o(t)+")")}},l=function(e){var t=e._values,r=e._index,n=e._ptr,i=e._size,a=i[0],s=i[1];if(a===s){var c=0;if(t.length>0)for(var f=0;s>f;f++)for(var l=n[f],p=n[f+1],m=l;p>m;m++){var h=r[m];if(h===f){c=u(c,t[m]);break}if(h>f)break}return c}throw new RangeError("Matrix must be square (size: "+o(i)+")")};return c}var i=r(166).clone,o=r(214).format;t.name="trace",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(171),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(r){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))):r instanceof o?n=r.storage():l(r)||"matrix"!==t.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 v=[];return p.length>0?s.resize(v,p,h):v}}},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(73)),u=e.DenseMatrix,c=e.SparseMatrix,f=a("transpose",{Array:function(e){return f(s(e)).valueOf()},Matrix:function(e){var t,r=e.size();switch(r.length){case 1:t=e.clone();break;case 2:var n=r[0],i=r[1];if(0===i)throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+o(r)+")");switch(e.storage()){case"dense":t=l(e,n,i);break;case"sparse":t=p(e,n,i)}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+o(this._size)+")")}return t},any:function(e){return i(e)}}),l=function(e,t,r){for(var n,o=e._data,a=[],s=0;r>s;s++){n=a[s]=[];for(var c=0;t>c;c++)n[c]=i(o[c][s])}return new u({data:a,size:[r,t]})},p=function(e,t,r){for(var n=e._values,o=e._index,a=e._ptr,s=[],u=[],f=[],l=new Array(t),p=0;t>p;p++)l[p]=0;var m,h,g;for(m=0,h=o.length;h>m;m++)l[o[m]]++;for(var v=0,d=0;t>d;d++)f.push(v),v+=l[d],l[d]=f[d];for(f.push(v),g=0;r>g;g++)for(var y=a[g],x=a[g+1],w=y;x>w;w++){var b=l[o[w]]++;u[b]=g,s[b]=i(n[w])}return new c({values:s,index:u,ptr:f,size:[r,t]})};return f}var i=r(166).clone,o=r(214).format;t.name="transpose",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("combinations",{"number, number":function(e,t){var r,n,i;if(!o(e)||0>e)throw new TypeError("Positive integer value expected in function combinations");if(t>e)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),n=1,i=1;e-r>=i;i++)n=n*(r+i)/i;return n},"BigNumber, BigNumber":function(t,r){var n,o,a,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(n=t.minus(r),r.lt(n)&&(n=r),o=u,a=u,s=t.minus(n);a.lte(s);a=a.plus(1))o=o.times(n.plus(a)).dividedBy(a);return o}})}function i(e){return e.isInteger()&&e.gte(0)}var o=r(175).isInteger;t.name="combinations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(106)),u=o("factorial",{number:function(e){return e===Number.POSITIVE_INFINITY?Math.sqrt(2*Math.PI):s(e+1)},BigNumber:function(e){return e.isFinite()||e.isNegative()?s(e.plus(1)):i.tau(t.precision).sqrt()},"Array | Matrix":function(e){return a.deepMap(e,u)}});return u}var i=r(213);t.name="factorial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,c){function f(r){var n,i,o,a=r.toNumber();if(ap;++p)o[p]=i=i.times(n),n=n.plus(l);return o[a]=i.times(n),new e.BigNumber(o[a].toPrecision(t.precision))}var l=n(r(2)),p=n(r(47)),m=n(r(48)),h=c("gamma",{number:function(e){var t,r;if(i(e)){if(0>=e)return isFinite(e)?1/0:0/0;if(e>171)return 1/0;for(var n=e-2,s=e-1;n>1;)s*=n,n--;return 0==s&&(s=1),s}if(.5>e)return Math.PI/(Math.sin(Math.PI*e)*h(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,l=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*l)+5246819/(75246796800*l*e))}--e,r=a[0];for(var p=1;pe)throw new TypeError("Positive integer value expected in function permutations");if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,n=e-t+1;e>=n;n++)r*=n;return r},"BigNumber, BigNumber":function(t,r){var n,o;if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(n=new e.BigNumber(1),o=t.minus(r).plus(1);o.lte(t);o=o.plus(1))n=n.times(o);return n}})}function i(e){return e.isInteger()&&e.gte(0)}var o=r(175).isInteger;t.name="permutations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").pickRandom}t.name="pickRandom",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").random}t.name="random",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").randomInt}t.name="randomInt",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(e,t){return new e.constructor(e.cmp(t))},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value===r.value||i(e.value,r.value,t.epsilon)?0:e.value>r.value?1:-1},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="compare",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(Array.isArray(e)){if(Array.isArray(t)){var r=e.length;if(r!==t.length)return!1;for(var n=0;r>n;n++)if(!o(e[n],t[n]))return!1;return!0}return!1}return Array.isArray(t)?!1:a(e,t)}var a=(n(r(2)),n(r(115)));return i("deepEqual",{"any, any":function(e,t){return o(e.valueOf(),t.valueOf())}})}t.name="deepEqual",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("equal",{"any, any":function(e,t){return null===e?null===t:null===t?null===e:void 0===e?void 0===t:void 0===t?void 0===e:u(e,t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,u)}}),u=o("_equal",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.eq(t)},"Complex, Complex":function(e,r){return(e.re===r.re||i(e.re,r.re,t.epsilon))&&(e.im===r.im||i(e.im,r.im,t.epsilon))},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value===r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e===t}});return s}var i=r(175).nearlyEqual;t.name="equal",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("larger",{"boolean, boolean":function(e,t){return e>t},"number, number":function(e,r){return e>r&&!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.gt(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value>r.value&&!i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e>t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="larger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.gte(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value>=r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e>=t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="largerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("smaller",{"boolean, boolean":function(e,t){return t>e},"number, number":function(e,r){return r>e&&!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.lt(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.valuee},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="smaller",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:u(e,t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,u)}}),u=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return!e.eq(t)},"Complex, Complex":function(e,r){return!i(e.re,r.re,t.epsilon)||!i(e.im,r.im,t.epsilon)},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return!i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e!==t}});return s}var i=r(175).nearlyEqual;t.name="unequal",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("smallerEq",{"boolean, boolean":function(e,t){return t>=e},"number, number":function(e,r){return r>=e||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.lte(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value<=r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return t>=e},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="smallerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){return u(e,t)?e:t}function a(e){var t=void 0;if(s.deepForEach(e,function(e){(void 0===t||u(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var s=n(r(2)),u=n(r(116));return i("max",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){return s.reduce(e,t.valueOf(),o)},"...":function(){return a(arguments)}})}t.name="max",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t){var r=u.reduce(e,t,c),n=Array.isArray(e)?i(e):e.size();return f(r,n[t])}function s(e){var t=0,r=0;if(u.deepForEach(e,function(e){t=c(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return f(t,r)}var u=n(r(2)),c=n(r(32)),f=n(r(35));return o("mean",{"Array | Matrix":s,"Array | Matrix, number | BigNumber":a,"...":function(){return s(arguments)}})}var i=r(167).size;t.name="mean",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){var t=i(e.valueOf());t.sort(c);var r=t.length;if(0==r)throw new Error("Cannot calculate median of an empty array");return r%2==0?p(t[r/2-1],t[r/2]):l(t[(r-1)/2])}var s=n(r(32)),u=n(r(35)),c=n(r(113)),f=o("median",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("median(A, dim) is not yet supported")},"...":function(){return a(Array.prototype.slice.call(arguments))}}),l=o("number | BigNumber | Unit",function(e){return e}),p=o("number | BigNumber | Unit, number | BigNumber | Unit",function(e,t){return u(s(e,t),2)});return f}var i=r(167).flatten;t.name="median",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){return u(e,t)?e:t}function a(e){var t=void 0;if(s.deepForEach(e,function(e){(void 0===t||u(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var s=n(r(2)),u=n(r(118));return i("min",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){return s.reduce(e,t.valueOf(),o)},"...":function(){return a(arguments)}})}t.name="min",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e){var t=void 0;if(a.deepForEach(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var a=n(r(2)),s=n(r(48));return i("prod",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(){return o(arguments)}})}t.name="prod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return a(s.apply(null,arguments))}var a=(n(r(2)),n(r(53))),s=n(r(128));return i("std",{"Array | Matrix":o,"Array | Matrix, string":o,"...":function(){return o(Array.prototype.slice.call(arguments))}})}t.name="std",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e){var t=void 0;if(a.deepForEach(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate sum of an empty array");return t}var a=n(r(2)),s=n(r(32));return i("sum",{"Array | Matrix":function(e){return o(e)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(){return o(arguments)}})}t.name="sum",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(s.deepForEach(t,function(e){n=u(n,e),i++}),0===i)throw new Error("Cannot calculate var of an empty array");var o=l(n,i);switch(n=0,s.deepForEach(t,function(e){var t=c(e,o);n=u(n,f(t,t))}),r){case"uncorrected":return l(n,i);case"biased":return l(n,i+1);case"unbiased":var a=n instanceof e.BigNumber?new e.BigNumber(0):0;return 1==i?a:l(n,i-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var s=n(r(2)),u=n(r(32)),c=n(r(55)),f=n(r(48)),l=n(r(35));return o("variance",{"Array | Matrix":function(e){return a(e,i)},"Array | Matrix, string":a,"...":function(){return a(arguments,i)}})}var i="unbiased";t.name="var",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=new e.Complex(t.im*t.im-t.re*t.re+1,-2*t.re*t.im),n=u(r),i=new e.Complex(n.re-t.im,n.im+t.re),o=c(i);return new e.Complex(1.5707963267948966-o.im,o.re)}var s=n(r(2)),u=n(r(53)).signatures.Complex,c=n(r(44)).signatures.Complex,f=o("acos",{number:function(t){return t>=-1&&1>=t?Math.acos(t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,f)}});return f}var i=r(214).arccos_arcsec;t.name="acos",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){var t,r=u(e);return r.im<=0?(t=r.re,r.re=-r.im,r.im=t):(t=r.im,r.im=-r.re,r.re=t),r}var s=n(r(2)),u=n(r(129)).signatures.Complex,c=o("acosh",{number:function(t){return t>=1?Math.log(Math.sqrt(t*t-1)+t):-1>=t?new e.Complex(Math.log(Math.sqrt(t*t-1)-t),Math.PI):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1,!1)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(214).acosh_asinh_asech_acsch;t.name="acosh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=n(r(139)).signatures.Complex,c=a("acot",{number:function(e){return e?Math.atan(1/e):o},Complex:function(t){if(0==t.im)return new e.Complex(t.re?Math.atan(1/t.re):o,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)},BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(214).arctan_arccot,o=1.5707963267948966;t.name="acot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(t){if(0==t.re&&0==t.im)return new e.Complex(0,o);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var u=n(r(141)).signatures.Complex,c=n(r(2)),f=a("acoth",{number:function(t){return t>=1||-1>=t?isFinite(t)?(Math.log((t+1)/t)+Math.log(t/(t-1)))/2:0:0!==t?s(new e.Complex(t,0)):new e.Complex(0,o)},Complex:s,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return c.deepMap(e,f)}});return f}var i=r(214).atanh_acoth,o=1.5707963267948966;t.name="acoth",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(t){if(0==t.re&&0==t.im)return new e.Complex(o,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),c(t)}var u=n(r(2)),c=n(r(137)).signatures.Complex,f=a("acsc",{number:function(t){return-1>=t||t>=1?Math.asin(1/t):s(new e.Complex(t,0))},Complex:s,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return u.deepMap(e,f)}});return f}var i=r(214).arcsin_arccsc,o=1.5707963267948966;t.name="acsc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(138)).signatures.Complex,u=o("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(t){if(0==t.im)return t=0!=t.re?Math.log(t.re+Math.sqrt(t.re*t.re+1)):1/0,new e.Complex(t,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),s(t)},BigNumber:function(t){return i(t,e.BigNumber,!0,!0)},"Array | Matrix":function(e){return a.deepMap(e,u)}});return u}var i=r(214).acosh_asinh_asech_acsch;t.name="acsch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(0==t.re&&0==t.im)return new e.Complex(0,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var s=n(r(2)),u=n(r(129)).signatures.Complex,c=o("asec",{number:function(t){return-1>=t||t>=1?Math.acos(1/t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(214).arccos_arcsec;t.name="asec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(0==t.re&&0==t.im)return new e.Complex(1/0,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var s=n(r(2)),u=n(r(130)).signatures.Complex,c=o("asech",{number:function(t){if(1>=t&&t>=-1){t=1/t;var r=Math.sqrt(t*t-1);return t>0?Math.log(r+t):new e.Complex(Math.log(r-t),Math.PI)}return a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(214).acosh_asinh_asech_acsch;t.name="asech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=t.re,n=t.im,i=new e.Complex(n*n-r*r+1,-2*r*n),o=u(i),a=new e.Complex(o.re-n,o.im+r),s=c(a);return new e.Complex(s.im,-s.re)}var s=n(r(2)),u=n(r(53)).signatures.Complex,c=n(r(44)).signatures.Complex,f=o("asin",{number:function(t){return t>=-1&&1>=t?Math.asin(t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,f,!0)}});return f}var i=r(214).arcsin_arccsc;t.name="asin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(137)).signatures.Complex,u=o("asinh",{number:function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){var t=e.im;e.im=-e.re,e.re=t;var r=s(e);return e.re=-e.im,e.im=t,t=r.re,r.re=-r.im,r.im=t,r},BigNumber:function(t){return i(t,e.BigNumber,!0,!1)},"Array | Matrix":function(e){return a.deepMap(e,u,!0)}});return u}var i=r(214).acosh_asinh_asech_acsch;t.name="asinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(44)).signatures.Complex,u=o("atan",{number:function(e){return Math.atan(e)},Complex:function(t){if(0==t.re){if(1==t.im)return new e.Complex(0,1/0);if(-1==t.im)return new e.Complex(0,-(1/0))}var r=t.re,n=t.im,i=r*r+(1-n)*(1-n),o=new e.Complex((1-n*n-r*r)/i,-2*r/i),a=s(o);return new e.Complex(-.5*a.im,.5*a.re)},BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return a.deepMap(e,u,!0)}});return u}var i=r(214).arctan_arccot;t.name="atan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return i(t,r,e.BigNumber)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(214).arctan2;t.name="atan2",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=t.re>1&&0==t.im,n=1-t.re,i=1+t.re,o=n*n+t.im*t.im;t=0!=o?new e.Complex((i*n-t.im*t.im)/o,(t.im*n+i*t.im)/o):new e.Complex(-1!=t.re?t.re/0:0,0!=t.im?t.im/0:0);var a=t.re;return t.re=Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/2,t.im=Math.atan2(t.im,a)/2,r&&(t.im=-t.im),t}var s=n(r(2)),u=o("atanh",{number:function(t){return 1>=t&&t>=-1?Math.log((1+t)/(1-t))/2:a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}var i=r(214).atanh_acoth;t.name="atanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(143)).signatures.number,u=n(r(151)).signatures.number,c=o("cos",{number:Math.cos,Complex:function(t){return new e.Complex(Math.cos(t.re)*s(-t.im),Math.sin(t.re)*u(-t.im))},BigNumber:function(t){return i(t,e.BigNumber,0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(t.value)},"Array | Matrix":function(e){return a.deepMap(e,c)}});return c}var i=r(214).cos_sin_sec_csc;t.name="cos",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("cosh",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re);return new e.Complex(Math.cos(t.im)*(r+n)/2,Math.sin(t.im)*(r-n)/2)},BigNumber:function(t){return o(t,e.BigNumber,!1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return(Math.exp(e)+Math.exp(-e))/2}var o=r(214).cosh_sinh_csch_sech;t.name="cosh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(t){var r=Math.exp(-4*t.im)-2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(Math.exp(-4*t.im)-1)/r)},BigNumber:function(t){return i(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(214).tan_cot;t.name="cot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("coth",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),o=(n-1)*(n-1)+i*i;return new e.Complex(((n+1)*(n-1)+i*i)/o,-2*i/o)},BigNumber:function(t){return o(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var o=r(214).tanh_coth;t.name="coth",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))-.5*Math.cos(2*t.re);return new e.Complex(.5*Math.sin(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.cos(t.re)*(Math.exp(-t.im)-Math.exp(t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(214).cos_sin_sec_csc;t.name="csc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("csch",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r-n),o=Math.sin(t.im)*(r+n),a=i*i+o*o;return new e.Complex(2*i/a,-2*o/a)},BigNumber:function(t){return o(t,e.BigNumber,!0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*a(e)}var o=r(214).cosh_sinh_csch_sech,a=r(175).sign;t.name="csch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))+.5*Math.cos(2*t.re);return new e.Complex(.5*Math.cos(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.sin(t.re)*(Math.exp(t.im)-Math.exp(-t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(214).cos_sin_sec_csc;t.name="sec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("sech",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r+n),o=Math.sin(t.im)*(r-n),a=i*i+o*o;return new e.Complex(2*i/a,-2*o/a)},BigNumber:function(t){return o(t,e.BigNumber,!1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var o=r(214).cosh_sinh_csch_sech;t.name="sech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(143)).signatures.number,s=n(r(151)).signatures.number,u=n(r(2)),c=o("sin",{number:Math.sin,Complex:function(t){return new e.Complex(Math.sin(t.re)*a(-t.im),Math.cos(t.re)*s(t.im))},BigNumber:function(t){return i(t,e.BigNumber,1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(t.value)},"Array | Matrix":function(e){return u.deepMap(e,c,!0)}});return c}var i=r(214).cos_sin_sec_csc;t.name="sin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("sinh",{number:i,Complex:function(t){var r=Math.cos(t.im),n=Math.sin(t.im),i=Math.exp(t.re),o=Math.exp(-t.re);return new e.Complex(r*(i-o)/2,n*(i+o)/2)},BigNumber:function(t){return o(t,e.BigNumber,!0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}function i(e){return Math.abs(e)<1?e+e*e*e/6+e*e*e*e*e/120:(Math.exp(e)-Math.exp(-e))/2}var o=r(214).cosh_sinh_csch_sech;t.name="sinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("tan",{number:Math.tan,Complex:function(t){var r=Math.exp(-4*t.im)+2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(1-Math.exp(-4*t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s,!0)}});return s}var i=r(214).tan_cot;t.name="tan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("tanh",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),o=(n+1)*(n+1)+i*i;return new e.Complex(((n-1)*(n+1)+i*i)/o,2*i/o)},BigNumber:function(t){return o(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}function i(e){var t=Math.exp(2*e);return(t-1)/(t+1)}var o=r(214).tanh_coth;t.name="tanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="to",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("clone",{any:i.clone})}var i=r(170);t.name="clone",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o,a){return function(n){return n&&(i.deepExtend(t,n),n.precision&&e.BigNumber&&e.BigNumber.config({precision:n.precision}),r(173)(a,t)),i.clone(t)}}var i=r(170);t.name="config",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(75));return a("filter",{"Array, function":i,"Array, RegExp":o,"Matrix, function":function(e,t){return s(i(e.toArray(),t))},"Matrix, RegExp":function(e,t){return s(o(e.toArray(),t))}})}function i(e,t){if(1!==a(e).length)throw new Error("Only one dimensional matrices supported");return e.filter(function(e){return t(e)})}function o(e,t){if(1!==a(e).length)throw new Error("Only one dimensional matrices supported");return e.filter(function(e){return t.test(e)})}var a=r(167).size;t.name="filter",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("format",{any:i.format,"any, Object | function | number":i.format})}var i=r(209);t.name="format",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("map",{"Array, function":i,"Matrix, function":function(e,t){return e.map(t)}})}function i(e,t){var r=function(n,i){return Array.isArray(n)?n.map(function(e,t){return r(e,i.concat(t))}):t(n,i,e)};return r(e,[])}t.name="map",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("print",{"string, Object":i,"string, Object, number":i})}function i(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,n){for(var i=n.split("."),s=t[i.shift()];i.length&&void 0!==s;){var u=i.shift();s=u?s[u]:s+"."}return void 0!==s?o(s)?s:a(s,r):e})}var o=r(209).isString,a=r(209).format;t.name="print",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){if("asc"===e)return f;if("desc"===e)return l;throw new Error('String "asc" or "desc" expected')}function s(e){if(1!==i(e).length)throw new Error("One dimensional array expected")}function u(e){if(1!==e.size().length)throw new Error("One dimensional matrix expected")}var c=n(r(75)),f=n(r(113)),l=function(e,t){return-f(e,t)};return o("sort",{Array:function(e){return s(e),e.sort(f)},Matrix:function(e){return u(e),c(e.toArray().sort(f),e.storage())},"Array, function":function(e,t){return s(e),e.sort(t)},"Matrix, function":function(e,t){return u(e),c(e.toArray().sort(t),e.storage())},"Array, string":function(e,t){return s(e),e.sort(a(t))},"Matrix, string":function(e,t){return u(e),c(e.toArray().sort(a(t)),e.storage())}})}var i=r(167).size;t.name="sort",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("_typeof",{any:function(t){var r=i.type(t);if("object"===r){if(t instanceof e.Complex)return"complex";if(t instanceof e.Matrix)return"matrix";if(t instanceof e.Unit)return"unit";if(t instanceof e.Index)return"index";if(t instanceof e.Range)return"range";if(t instanceof e.Help)return"help";if(t instanceof e.BigNumber)return"bignumber";if(t instanceof e.Chain)return"chain"}return r}})}var i=r(216);t.name="typeof",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("forEach",{"Array, function":i,"Matrix, function":function(e,t){return e.forEach(t)}})}function i(e,t){var r=function(n,i){Array.isArray(n)?n.forEach(function(e,t){r(e,i.concat(t))}):t(n,i,e)};r(e,[])}t.name="forEach",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(75)),s=n(r(31)),u=n(r(32)),c=n(r(213)),f=n(r(48)),l=n(r(55)),p=n(r(116)),m=n(r(115)),h=n(r(56)),g=e.SparseMatrix,v=e.DenseMatrix,d=e.Spa,x=i("lup",{Matrix:function(e){switch(e.storage()){case"dense":return y(e);case"sparse":return w(e)}},Array:function(e){var t=a(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),P:r.P.valueOf()}}}),y=function(e){var t,r,n,i=e._size[0],a=e._size[1],h=Math.min(i,a),g=o.clone(e._data),d=[],x=[i,h],y=[],w=[h,a],b=v.diagonal([i,i],1,0);for(r=0;a>r;r++){if(r>0)for(t=0;i>t;t++){var N=Math.min(t,r),E=0;for(n=0;N>n;n++)E=u(E,f(g[t][n],g[n][r]));g[t][r]=l(g[t][r],E)}var M=r,A=0,_=0;for(t=r;i>t;t++){var O=g[t][r],C=s(O);p(C,A)&&(M=t,A=C,_=O)}if(r!==M&&(v._swapRows(r,M,b._data),v._swapRows(r,M,g)),i>r)for(t=r+1;i>t;t++){var S=g[t][r];m(S,0)||(g[t][r]=c(g[t][r],_))}}for(r=0;a>r;r++)for(t=0;i>t;t++)0===r&&(a>t&&(y[t]=[]),d[t]=[]),r>t?(a>t&&(y[t][r]=g[t][r]),i>r&&(d[t][r]=0)):t!==r?(a>t&&(y[t][r]=0),i>r&&(d[t][r]=g[t][r])):(a>t&&(y[t][r]=g[t][r]),i>r&&(d[t][r]=1));var z=new v({data:d,size:x}),T=new v({data:y,size:w});return{L:z,U:T,P:b,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.P.toString()}}},w=function(e){var t,r,n,i=e._size[0],o=e._size[1],a=Math.min(i,o),u=e._values,l=e._index,v=e._ptr,x=[],y=[],w=[],b=[i,a],N=[],E=[],M=[],A=[a,o],_=[],O=[],C=[],S=[i,i],z=new Array(i),T=new Array(i);for(t=0;i>t;t++)z[t]=t,T[t]=t;var B=function(e,t){var r=T[e],n=T[t];z[r]=t,z[n]=e,T[e]=n,T[t]=r};for(r=0;o>r;r++){var I=new d(i);i>r&&(w.push(x.length),x.push(1),y.push(r)),M.push(N.length);var q=v[r],P=v[r+1];for(n=q;P>n;n++)t=l[n],I.set(z[t],u[n]);r>0&&I.forEach(0,r-1,function(e,t){g._forEachRow(e,x,y,w,function(r,n){r>e&&I.accumulate(r,h(f(n,t)))})});var U=r,R=I.get(r),L=s(R);I.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,L)&&(U=e,L=r,R=t)}),r!==U&&(g._swapRows(r,U,b[1],x,y,w),g._swapRows(r,U,A[1],N,E,M),I.swap(r,U),B(r,U)),I.forEach(0,i-1,function(e,t){r>=e?(N.push(t),E.push(e)):(t=c(t,R),m(t,0)||(x.push(t),y.push(e)))})}for(w.push(x.length),M.push(N.length),t=0;i>t;t++)C.push(_.length),_.push(1),O.push(z[t]);return C.push(_.length),{L:new g({values:x,index:y,ptr:w,size:b}),U:new g({values:N,index:E,ptr:M,size:A}),P:new g({values:_,index:O,ptr:C,size:S}),toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.P.toString()}}};return x}var i=r(166),o=i.object;t.name="lup",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(75)),s=n(r(164)),u=n(r(48)),c=n(r(344)),f=n(r(345)),l=o("lusolve",{ -"Array, Array | Matrix":function(e,t){e=a(e);var r=s(e),n=m(r.L,r.U,r.P,t);return n.valueOf()},"Matrix, Array | Matrix":function(e,t){var r=s(e);return m(r.L,r.U,r.P,t)},"Object, Array | Matrix":function(e,t){return m(e.L,e.U,e.P,t)}}),p=function(t){if(t instanceof e.Matrix)return t;if(i(t))return a(t);throw new TypeError("Invalid Matrix LUP decomposition")},m=function(e,t,r,n){e=p(e),t=p(t),r=p(r),n=u(r,n);var i=f(e,n);return c(t,i)};return l}var i=Array.isArray;t.name="lusolve",t.factory=n},function(e,t,r){"use strict";t.array=r(167),t["boolean"]=r(208),t["function"]=r(347),t.number=r(175),t.bignumber=r(214),t.object=r(170),t.string=r(209),t.types=r(216)},function(e,t,r){"use strict";function n(e){for(var t=[];m(e);)t.push(e.length),e=e[0];return t}function i(e,t,r){var n,o=e.length;if(o!=t[r])throw new l(o,t[r]);if(rn;n++){var s=e[n];if(!m(s))throw new l(t.length-1,t.length,"<");i(e[n],t,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(t.length+1,t.length,">")}function o(e,r,n,i){var a,s,u=e.length,c=r[n],l=Math.min(u,c);if(e.length=c,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,r,p,i);for(a=l;c>a;a++)s=[],e[a]=s,o(s,r,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==t.UNINITIALIZED)for(a=l;c>a;a++)e[a]=f.clone(i)}}function a(e,t,r){var n,i;if(t>r){var o=r+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],t,o)}else for(;m(e);)e=e[0];return e}function s(e,t,r){var n,i;if(m(e)){var o=r+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],t,o)}else for(var a=r;t>a;a++)e=[e];return e}var u=r(175),c=r(209),f=r(170),l=(r(216),r(169)),p=r(168),m=Array.isArray;t.size=function(e){var r=n(e);return t.validate(e,r),r},t.validate=function(e,t){var r=0==t.length;if(r){if(m(e))throw new l(e.length,0)}else i(e,t,0)},t.validateIndex=function(e,t){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!==t&&e>=t)throw new p(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!m(e)||!m(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")")});var n=void 0!==r?r:0;return o(e,t,0,n),e},t.squeeze=function(e,r){for(var n=r||t.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,r,0);o.lengthi;i++)n=n.concat.apply(n,t[i]);t=n}return t},t.argsToArray=function(e){for(var t=[],r=0,n=e.length;n>r;r++)t[r]=e[r];return t},t.isArray=m},function(e,t,r){"use strict";function n(e,t,r){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=t):(this.min=t,this.max=r),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,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",e.exports=n},function(e,t,r){"use strict";var n=r(348);t.clone=function i(e){var t=typeof e;if("number"===t||"string"===t||"boolean"===t||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 i(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 n)return e;if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var r={};for(var o in e)e.hasOwnProperty(o)&&(r[o]=i(e[o]));return r},t.extend=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e},t.deepExtend=function o(e,t){if(Array.isArray(t))throw new TypeError("Arrays are not supported by deepExtend");for(var r in t)if(t.hasOwnProperty(r))if(t[r]&&t[r].constructor===Object)void 0===e[r]&&(e[r]={}),e[r].constructor===Object?o(e[r],t[r]):e[r]=t[r];else{if(Array.isArray(t[r]))throw new TypeError("Arrays are not supported by deepExtend");e[r]=t[r]}return e},t.deepEqual=function(e,r){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,o=e.length;o>i;i++)if(!t.deepEqual(e[i],r[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(r)||!(r instanceof Object))return!1;for(n in e)if(!t.deepEqual(e[n],r[n]))return!1;for(n in r)if(!t.deepEqual(e[n],r[n]))return!1;return!0}return typeof e==typeof r&&e==r},t.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},"x",{}),!0}catch(e){}return!1},t.lazy=function(e,r,n){if(t.canDefineProperty()){var i,o=!0;Object.defineProperty(e,r,{get:function(){return o&&(i=n(),o=!1),i},set:function(e){i=e,o=!1},configurable:!0})}else e[r]=n()},t.traverse=function(e,t){var r=e;if(t)for(var n=t.split("."),i=0;i15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.type.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.type.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.type.Complex(t.toNumber(),0)}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.type.BigNumber(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"null",to:"number",convert:function(){return 0}},{from:"null",to:"string",convert:function(){return"null"}},{from:"null",to:"BigNumber",convert:function(){return new e.type.BigNumber(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.type.Matrix(t)}}],n}},function(e,t,r){"use strict";function n(e,t,n,a,s){function u(e,t){var n=arguments.length;if(1!=n&&2!=n)throw new s.error.ArgumentsError("import",n,1,2);var o,a={override:t&&t.override||!1,wrap:t&&t.wrap||!1};if("string"==typeof e){var p=r(346)(e);return u(p,t)}if(i(e))return f(e);if("object"==typeof e){var m={};for(o in e)if(e.hasOwnProperty(o)){var h=e[o];l(h)?m[o]=c(o,h,a):i(e)?m[o]=f(e):m[o]=u(h,t)}return m}throw new TypeError("Object or module name expected")}function c(e,t,r){return r.override||void 0===s[e]?(r.wrap&&"function"==typeof t?(s[e]=function(){for(var e=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];e[r]=i&&i.valueOf()}return t.apply(s,e)},t&&t.transform&&(s[e].transform=t.transform)):s[e]=t,t&&t.transform&&(s.expression.transform[e]=t.transform),s.type.Chain.createProxy(e,t),t):void 0}function f(e){var t=n(e),r=e.path?o(s,e.path):s;if(r[e.name])throw new Error('"'+e.name+'" already exists');return r[e.name]=t,t}function l(t){return"function"==typeof t||"number"==typeof t||"string"==typeof t||"boolean"==typeof t||null===t||t instanceof e.Unit||t instanceof e.Complex}return u}var i=r(170).isFactory,o=r(170).traverse;t.math=!0,t.name="import",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(170),i=r(214),o=r(3),a=e.type.BigNumber;e["true"]=!0,e["false"]=!1,e["null"]=null,e.uninitialized=r(167).UNINITIALIZED,"bignumber"===t.number?(e.Infinity=new a(1/0),e.NaN=new a(0/0),n.lazy(e,"pi",function(){return i.pi(t.precision)}),n.lazy(e,"tau",function(){return i.tau(t.precision)}),n.lazy(e,"e",function(){return i.e(t.precision)}),n.lazy(e,"phi",function(){return i.phi(t.precision)}),n.lazy(e,"E",function(){return e.e}),n.lazy(e,"LN2",function(){return new a(2).ln()}),n.lazy(e,"LN10",function(){return new a(10).ln()}),n.lazy(e,"LOG2E",function(){return new a(1).div(new a(2).ln())}),n.lazy(e,"LOG10E",function(){return new a(1).div(new a(10).ln())}),n.lazy(e,"PI",function(){return e.pi}),n.lazy(e,"SQRT1_2",function(){return new a("0.5").sqrt()}),n.lazy(e,"SQRT2",function(){return new a(2).sqrt()})):(e.Infinity=1/0,e.NaN=0/0,e.pi=Math.PI,e.tau=2*Math.PI,e.e=Math.E,e.phi=1.618033988749895,e.E=e.e,e.LN2=Math.LN2,e.LN10=Math.LN10,e.LOG2E=Math.LOG2E,e.LOG10E=Math.LOG10E,e.PI=e.pi,e.SQRT1_2=Math.SQRT1_2,e.SQRT2=Math.SQRT2),e.i=new o(0,1),e.version=r(349)}},function(e,t,r){"use strict";t.ArgumentsError=r(176),t.DimensionError=r(169),t.IndexError=r(168),t.UnsupportedTypeError=r(350)},function(e,t,r){"use strict";var n=r(351);t.isNumber=function(e){return e instanceof Number||"number"==typeof e},t.isInteger=function(e){return e==Math.round(e)},t.sign=function(e){return e>0?1:0>e?-1:0},t.format=function(e,r){if("function"==typeof r)return r(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(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"auto":return t.toPrecision(e,i,r&&r.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.toExponential=function(e,t){return new n(e).toExponential(t)},t.toFixed=function(e,t){return new n(e).toFixed(t)},t.toPrecision=function(e,t,r){return new n(e).toPrecision(t,r)},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i=t&&(r="("+r+")"),this.name+" = "+r},n.prototype._toTex=function(e){var t=a.getPrecedence(this),r=a.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==r&&t>=r&&(n="\\left("+n+"\\right)"),s.toSymbol(this.name)+":="+n},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError("Parameter condition must be a Node");if(!(t instanceof i))throw new TypeError("Parameter trueExpr must be a Node");if(!(r instanceof i))throw new TypeError("Parameter falseExpr must be a Node");this.condition=e,this.trueExpr=t,this.falseExpr=r}var i=r(189),o=(r(353),r(348)),a=r(3),s=r(7),u=r(166),c=r(354),f=u.string.isString,l=u.number.isNumber,p=u["boolean"].isBoolean;n.prototype=new i,n.prototype.type="ConditionalNode",n.prototype._compile=function(e){return e.testCondition=function(t){if(l(t)||p(t)||f(t))return t?!0:!1;if(t instanceof o)return t.isZero()?!1:!0;if(t instanceof a)return t.re||t.im?!0:!1;if(t instanceof s)return t.value?!0:!1;if(null===t||void 0===t)return!1;throw new TypeError('Unsupported type of condition "'+e.math["typeof"](t)+'"')},"testCondition("+this.condition._compile(e)+") ? ( "+this.trueExpr._compile(e)+") : ( "+this.falseExpr._compile(e)+")"},n.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},n.prototype.clone=function(){return new n(this.condition,this.trueExpr,this.falseExpr)},n.prototype.toString=function(){var e=c.getPrecedence(this),t=this.condition.toString(),r=c.getPrecedence(this.condition);("OperatorNode"===this.condition.type||null!==r&&e>=r)&&(t="("+t+")");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+")"),t+" ? "+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,t,r){"use strict";function n(e,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(t){if(!a(t))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=t}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=r(189),o=(r(348),r(216).type),a=r(209).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,t){return e.substring(t.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 t,r=this.value;switch(this.valueType){case"string":return"\\text{"+r+"}";case"number":return t=r.toLowerCase().indexOf("e"),-1!==t?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){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"');if(!c(t)||!t.every(u))throw new TypeError('Array containing strings expected for parameter "params"');if(!(r instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in o)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.params=t,this.expr=r}var i=r(189),o=r(352),a=r(353),s=r(354),u=r(209).isString,c=Array.isArray;n.prototype=new i,n.prototype.type="FunctionAssignmentNode",n.prototype._compile=function(e){return this.params.forEach(function(t){e.args[t]=!0}),'scope["'+this.name+'"] = (function () { var fn = function '+this.name+"("+this.params.join(",")+") { if (arguments.length != "+this.params.length+') { throw new SyntaxError("Wrong number of arguments in function '+this.name+' (" + arguments.length + " provided, '+this.params.length+' expected)"); } return '+this.expr._compile(e)+' }; fn.syntax = "'+this.name+"("+this.params.join(", ")+')"; return fn; })();'},n.prototype.forEach=function(e){e(this.expr,"expr",this)},n.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new n(this.name,this.params.slice(0),t)},n.prototype.clone=function(){return new n(this.name,this.params.slice(0),this.expr)},n.prototype.toString=function(){var e=s.getPrecedence(this),t=s.getPrecedence(this.expr),r=this.expr.toString();return null!==t&&e>=t&&(r="("+r+")"),"function "+this.name+"("+this.params.join(", ")+") = "+r},n.prototype._toTex=function(e){var t=s.getPrecedence(this),r=s.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==r&&t>=r&&(n="\\left("+n+"\\right)"),a.toSymbol(this.name)+"\\left("+this.params.map(a.toSymbol).join(",")+"\\right):="+n},e.exports=n},function(e,t,r){"use strict";function n(e,t){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(t)||!t.every(c))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=t}var i=r(189),o=r(186),a=r(188),s=r(348),u=r(4),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,t){function r(e){return e instanceof a&&"end"==e.name}var n=!1,i=this.ranges.map(function(e){var t=e.filter(r).length>0;return n=t?t:n,t});e.range=function(e,t,r){return new u(e instanceof s?e.toNumber():e,t instanceof s?t.toNumber():t,r instanceof s?r.toNumber():r)};var c=this.ranges.map(function(t,r){var n=i[r];return t instanceof o?n?(e.args.end=!0,"(function () { var end = size["+r+"]; return range( "+t.start._compile(e)+", "+t.end._compile(e)+", "+(t.step?t.step._compile(e):"1")+" );})()"):"range("+t.start._compile(e)+", "+t.end._compile(e)+", "+(t.step?t.step._compile(e):"1")+")":n?(e.args.end=!0,"(function () { var end = size["+r+"]; return "+t._compile(e)+";})()"):t._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(", ")+") "+(t?", "+t:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+c.join(", ")+")"+(t?", "+t:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var t=0;t=o?[!0]:[!1];case 2:var c,f=s.getPrecedence(t[0]),l=s.isAssociativeWith(e,t[0]);c=null===f?!1:f!==n||"right"!==i||l?n>f?!0:!1:!0;var p,m=s.getPrecedence(t[1]),h=s.isAssociativeWith(e,t[1]);if(p=null===m?!1:m!==n||"left"!==i||h?n>m?!0:!1:!0,r){var u=e.getIdentifier(),g=e.args[0].getIdentifier(),v=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][v].latexParens===!1&&(p=!1))}return[c,p];default:var d=[];return t.forEach(function(){d.push(!0)}),d}}var o=r(189),a=(r(181),r(188),r(185),r(353)),s=r(354),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 t=this.args.map(function(t){return t._compile(e)});return"math."+this.fn+"("+t.join(", ")+")"},n.prototype.forEach=function(e){for(var t=0;t3)throw new Error("Too many arguments");this.start=e,this.end=t,this.step=r||null}var i=r(189),o=r(354),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,t=o.getPrecedence(this),r=this.start.toString(),n=o.getPrecedence(this.start);if(null!==n&&t>=n&&(r="("+r+")"),e=r,this.step){var i=this.step.toString(),a=o.getPrecedence(this.step);null!==a&&t>=a&&(i="("+i+")"),e+=":"+i}var s=this.end.toString(),u=o.getPrecedence(this.end);return null!==u&&t>=u&&(s="("+s+")"),e+=":"+s},n.prototype._toTex=function(e){var t=this.start.toTex(e);return this.step&&(t+=":"+this.step.toTex(e)),t+=":"+this.end.toTex(e)},e.exports=n},function(e,t,r){"use strict";function n(e,t){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(!(t instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=t}var i=r(189),o=r(183);n.prototype=new i,n.prototype.type="UpdateNode",n.prototype._compile=function(e){var t=this.index.objectName()in e.args?this.name+" = ":'scope["'+this.index.objectName()+'"]',r=this.index.compileSubset(e,this.expr._compile(e));return t+" = "+r},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,t,r){"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=r(189),a=r(7),s=r(353),u=r(209).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 t=s.toSymbol(this.name);return"\\"===t[0]?t:" "+t},e.exports=n},function(e,t,r){"use strict";function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator"); +t.name="gamma",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(105));return a("permutations",{"number | BigNumber":s,"number, number":function(e,t){var r,n;if(!o(e)||0>e)throw new TypeError("Positive integer value expected in function permutations");if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,n=e-t+1;e>=n;n++)r*=n;return r},"BigNumber, BigNumber":function(t,r){var n,o;if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(n=new e.BigNumber(1),o=t.minus(r).plus(1);o.lte(t);o=o.plus(1))n=n.times(o);return n}})}function i(e){return e.isInteger()&&e.gte(0)}var o=r(175).isInteger;t.name="permutations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").pickRandom}t.name="pickRandom",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").random}t.name="random",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(215));return o("uniform").randomInt}t.name="randomInt",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(e,t){return new e.constructor(e.cmp(t))},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value===r.value||i(e.value,r.value,t.epsilon)?0:e.value>r.value?1:-1},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="compare",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(Array.isArray(e)){if(Array.isArray(t)){var r=e.length;if(r!==t.length)return!1;for(var n=0;r>n;n++)if(!o(e[n],t[n]))return!1;return!0}return!1}return Array.isArray(t)?!1:a(e,t)}var a=(n(r(2)),n(r(113)));return i("deepEqual",{"any, any":function(e,t){return o(e.valueOf(),t.valueOf())}})}t.name="deepEqual",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("equal",{"any, any":function(e,t){return null===e?null===t:null===t?null===e:void 0===e?void 0===t:void 0===t?void 0===e:u(e,t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,u)}}),u=o("_equal",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.eq(t)},"Complex, Complex":function(e,r){return(e.re===r.re||i(e.re,r.re,t.epsilon))&&(e.im===r.im||i(e.im,r.im,t.epsilon))},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value===r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e===t}});return s}var i=r(175).nearlyEqual;t.name="equal",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("larger",{"boolean, boolean":function(e,t){return e>t},"number, number":function(e,r){return e>r&&!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.gt(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value>r.value&&!i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e>t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="larger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.gte(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value>=r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e>=t},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="largerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("smaller",{"boolean, boolean":function(e,t){return t>e},"number, number":function(e,r){return r>e&&!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.lt(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.valuee},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="smaller",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("smallerEq",{"boolean, boolean":function(e,t){return t>=e},"number, number":function(e,r){return r>=e||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return e.lte(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return e.value<=r.value||i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return t>=e},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(175).nearlyEqual;t.name="smallerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:u(e,t)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,u)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,u)}}),u=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,t){return!e.eq(t)},"Complex, Complex":function(e,r){return!i(e.re,r.re,t.epsilon)||!i(e.im,r.im,t.epsilon)},"Unit, Unit":function(e,r){if(!e.equalBase(r))throw new Error("Cannot compare units with different base");return!i(e.value,r.value,t.epsilon)},"string, string":function(e,t){return e!==t}});return s}var i=r(175).nearlyEqual;t.name="unequal",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){return u(e,t)?e:t}function a(e){var t=void 0;if(s.deepForEach(e,function(e){(void 0===t||u(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var s=n(r(2)),u=n(r(114));return i("max",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){return s.reduce(e,t.valueOf(),o)},"...":function(){return a(arguments)}})}t.name="max",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e,t){var r=u.reduce(e,t,c),n=Array.isArray(e)?i(e):e.size();return f(r,n[t])}function s(e){var t=0,r=0;if(u.deepForEach(e,function(e){t=c(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return f(t,r)}var u=n(r(2)),c=n(r(31)),f=n(r(32));return o("mean",{"Array | Matrix":s,"Array | Matrix, number | BigNumber":a,"...":function(){return s(arguments)}})}var i=r(172).size;t.name="mean",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){var t=i(e.valueOf());t.sort(c);var r=t.length;if(0==r)throw new Error("Cannot calculate median of an empty array");return r%2==0?p(t[r/2-1],t[r/2]):l(t[(r-1)/2])}var s=n(r(31)),u=n(r(32)),c=n(r(111)),f=o("median",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("median(A, dim) is not yet supported")},"...":function(){return a(Array.prototype.slice.call(arguments))}}),l=o("number | BigNumber | Unit",function(e){return e}),p=o("number | BigNumber | Unit, number | BigNumber | Unit",function(e,t){return u(s(e,t),2)});return f}var i=r(172).flatten;t.name="median",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){return u(e,t)?e:t}function a(e){var t=void 0;if(s.deepForEach(e,function(e){(void 0===t||u(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var s=n(r(2)),u=n(r(116));return i("min",{"Array | Matrix":a,"Array | Matrix, number | BigNumber":function(e,t){return s.reduce(e,t.valueOf(),o)},"...":function(){return a(arguments)}})}t.name="min",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e){var t=void 0;if(a.deepForEach(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var a=n(r(2)),s=n(r(47));return i("prod",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(){return o(arguments)}})}t.name="prod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return a(s.apply(null,arguments))}var a=(n(r(2)),n(r(51))),s=n(r(126));return i("std",{"Array | Matrix":o,"Array | Matrix, string":o,"...":function(){return o(Array.prototype.slice.call(arguments))}})}t.name="std",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function o(e){var t=void 0;if(a.deepForEach(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate sum of an empty array");return t}var a=n(r(2)),s=n(r(31));return i("sum",{"Array | Matrix":function(e){return o(e)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(){return o(arguments)}})}t.name="sum",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(s.deepForEach(t,function(e){n=u(n,e),i++}),0===i)throw new Error("Cannot calculate var of an empty array");var o=l(n,i);switch(n=0,s.deepForEach(t,function(e){var t=c(e,o);n=u(n,f(t,t))}),r){case"uncorrected":return l(n,i);case"biased":return l(n,i+1);case"unbiased":var a=n instanceof e.BigNumber?new e.BigNumber(0):0;return 1==i?a:l(n,i-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var s=n(r(2)),u=n(r(31)),c=n(r(53)),f=n(r(47)),l=n(r(32));return o("variance",{"Array | Matrix":function(e){return a(e,i)},"Array | Matrix, string":a,"...":function(){return a(arguments,i)}})}var i="unbiased";t.name="var",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=new e.Complex(t.im*t.im-t.re*t.re+1,-2*t.re*t.im),n=u(r),i=new e.Complex(n.re-t.im,n.im+t.re),o=c(i);return new e.Complex(1.5707963267948966-o.im,o.re)}var s=n(r(2)),u=n(r(51)).signatures.Complex,c=n(r(42)).signatures.Complex,f=o("acos",{number:function(t){return t>=-1&&1>=t?Math.acos(t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,f)}});return f}var i=r(213).arccos_arcsec;t.name="acos",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){var t,r=u(e);return r.im<=0?(t=r.re,r.re=-r.im,r.im=t):(t=r.im,r.im=-r.re,r.re=t),r}var s=n(r(2)),u=n(r(127)).signatures.Complex,c=o("acosh",{number:function(t){return t>=1?Math.log(Math.sqrt(t*t-1)+t):-1>=t?new e.Complex(Math.log(Math.sqrt(t*t-1)-t),Math.PI):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1,!1)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(213).acosh_asinh_asech_acsch;t.name="acosh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=n(r(137)).signatures.Complex,c=a("acot",{number:function(e){return e?Math.atan(1/e):o},Complex:function(t){if(0==t.im)return new e.Complex(t.re?Math.atan(1/t.re):o,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)},BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(213).arctan_arccot,o=1.5707963267948966;t.name="acot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(t){if(0==t.re&&0==t.im)return new e.Complex(0,o);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var u=n(r(138)).signatures.Complex,c=n(r(2)),f=a("acoth",{number:function(t){return t>=1||-1>=t?isFinite(t)?(Math.log((t+1)/t)+Math.log(t/(t-1)))/2:0:0!==t?s(new e.Complex(t,0)):new e.Complex(0,o)},Complex:s,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return c.deepMap(e,f)}});return f}var i=r(213).atanh_acoth,o=1.5707963267948966;t.name="acoth",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(t){if(0==t.re&&0==t.im)return new e.Complex(o,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),c(t)}var u=n(r(2)),c=n(r(135)).signatures.Complex,f=a("acsc",{number:function(t){return-1>=t||t>=1?Math.asin(1/t):s(new e.Complex(t,0))},Complex:s,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return u.deepMap(e,f)}});return f}var i=r(213).arcsin_arccsc,o=1.5707963267948966;t.name="acsc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(136)).signatures.Complex,u=o("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(t){if(0==t.im)return t=0!=t.re?Math.log(t.re+Math.sqrt(t.re*t.re+1)):1/0,new e.Complex(t,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),s(t)},BigNumber:function(t){return i(t,e.BigNumber,!0,!0)},"Array | Matrix":function(e){return a.deepMap(e,u)}});return u}var i=r(213).acosh_asinh_asech_acsch;t.name="acsch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(0==t.re&&0==t.im)return new e.Complex(0,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var s=n(r(2)),u=n(r(127)).signatures.Complex,c=o("asec",{number:function(t){return-1>=t||t>=1?Math.acos(1/t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(213).arccos_arcsec;t.name="asec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(0==t.re&&0==t.im)return new e.Complex(1/0,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var s=n(r(2)),u=n(r(128)).signatures.Complex,c=o("asech",{number:function(t){if(1>=t&&t>=-1){t=1/t;var r=Math.sqrt(t*t-1);return t>0?Math.log(r+t):new e.Complex(Math.log(r-t),Math.PI)}return a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1,!0)},"Array | Matrix":function(e){return s.deepMap(e,c)}});return c}var i=r(213).acosh_asinh_asech_acsch;t.name="asech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=t.re,n=t.im,i=new e.Complex(n*n-r*r+1,-2*r*n),o=u(i),a=new e.Complex(o.re-n,o.im+r),s=c(a);return new e.Complex(s.im,-s.re)}var s=n(r(2)),u=n(r(51)).signatures.Complex,c=n(r(42)).signatures.Complex,f=o("asin",{number:function(t){return t>=-1&&1>=t?Math.asin(t):a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,f,!0)}});return f}var i=r(213).arcsin_arccsc;t.name="asin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(135)).signatures.Complex,u=o("asinh",{number:function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){var t=e.im;e.im=-e.re,e.re=t;var r=s(e);return e.re=-e.im,e.im=t,t=r.re,r.re=-r.im,r.im=t,r},BigNumber:function(t){return i(t,e.BigNumber,!0,!1)},"Array | Matrix":function(e){return a.deepMap(e,u,!0)}});return u}var i=r(213).acosh_asinh_asech_acsch;t.name="asinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(42)).signatures.Complex,u=o("atan",{number:function(e){return Math.atan(e)},Complex:function(t){if(0==t.re){if(1==t.im)return new e.Complex(0,1/0);if(-1==t.im)return new e.Complex(0,-(1/0))}var r=t.re,n=t.im,i=r*r+(1-n)*(1-n),o=new e.Complex((1-n*n-r*r)/i,-2*r/i),a=s(o);return new e.Complex(-.5*a.im,.5*a.re)},BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return a.deepMap(e,u,!0)}});return u}var i=r(213).arctan_arccot;t.name="atan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){var r=t.re>1&&0==t.im,n=1-t.re,i=1+t.re,o=n*n+t.im*t.im;t=0!=o?new e.Complex((i*n-t.im*t.im)/o,(t.im*n+i*t.im)/o):new e.Complex(-1!=t.re?t.re/0:0,0!=t.im?t.im/0:0);var a=t.re;return t.re=Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/2,t.im=Math.atan2(t.im,a)/2,r&&(t.im=-t.im),t}var s=n(r(2)),u=o("atanh",{number:function(t){return 1>=t&&t>=-1?Math.log((1+t)/(1-t))/2:a(new e.Complex(t,0))},Complex:a,BigNumber:function(t){return i(t,e.BigNumber,!1)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}var i=r(213).atanh_acoth;t.name="atanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return i(t,r,e.BigNumber)},"Array | Matrix, any":function(e,t){return a.deepMap2(e,t,s)},"any, Array | Matrix":function(e,t){return a.deepMap2(e,t,s)}});return s}var i=r(213).arctan2;t.name="atan2",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=n(r(141)).signatures.number,u=n(r(149)).signatures.number,c=o("cos",{number:Math.cos,Complex:function(t){return new e.Complex(Math.cos(t.re)*s(-t.im),Math.sin(t.re)*u(-t.im))},BigNumber:function(t){return i(t,e.BigNumber,0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(t.value)},"Array | Matrix":function(e){return a.deepMap(e,c)}});return c}var i=r(213).cos_sin_sec_csc;t.name="cos",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("cosh",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re);return new e.Complex(Math.cos(t.im)*(r+n)/2,Math.sin(t.im)*(r-n)/2)},BigNumber:function(t){return o(t,e.BigNumber,!1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return(Math.exp(e)+Math.exp(-e))/2}var o=r(213).cosh_sinh_csch_sech;t.name="cosh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(t){var r=Math.exp(-4*t.im)-2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(Math.exp(-4*t.im)-1)/r)},BigNumber:function(t){return i(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(213).tan_cot;t.name="cot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("coth",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),o=(n-1)*(n-1)+i*i;return new e.Complex(((n+1)*(n-1)+i*i)/o,-2*i/o)},BigNumber:function(t){return o(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var o=r(213).tanh_coth;t.name="coth",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))-.5*Math.cos(2*t.re);return new e.Complex(.5*Math.sin(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.cos(t.re)*(Math.exp(-t.im)-Math.exp(t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(213).cos_sin_sec_csc;t.name="csc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("csch",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r-n),o=Math.sin(t.im)*(r+n),a=i*i+o*o;return new e.Complex(2*i/a,-2*o/a)},BigNumber:function(t){return o(t,e.BigNumber,!0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*a(e)}var o=r(213).cosh_sinh_csch_sech,a=r(175).sign;t.name="csch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))+.5*Math.cos(2*t.re);return new e.Complex(.5*Math.cos(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.sin(t.re)*(Math.exp(t.im)-Math.exp(-t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s)}});return s}var i=r(213).cos_sin_sec_csc;t.name="sec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("sech",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r+n),o=Math.sin(t.im)*(r-n),a=i*i+o*o;return new e.Complex(2*i/a,-2*o/a)},BigNumber:function(t){return o(t,e.BigNumber,!1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u)}});return u}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var o=r(213).cosh_sinh_csch_sech;t.name="sech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(141)).signatures.number,s=n(r(149)).signatures.number,u=n(r(2)),c=o("sin",{number:Math.sin,Complex:function(t){return new e.Complex(Math.sin(t.re)*a(-t.im),Math.cos(t.re)*s(t.im))},BigNumber:function(t){return i(t,e.BigNumber,1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(t.value)},"Array | Matrix":function(e){return u.deepMap(e,c,!0)}});return c}var i=r(213).cos_sin_sec_csc;t.name="sin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("sinh",{number:i,Complex:function(t){var r=Math.cos(t.im),n=Math.sin(t.im),i=Math.exp(t.re),o=Math.exp(-t.re);return new e.Complex(r*(i-o)/2,n*(i+o)/2)},BigNumber:function(t){return o(t,e.BigNumber,!0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}function i(e){return Math.abs(e)<1?e+e*e*e/6+e*e*e*e*e/120:(Math.exp(e)-Math.exp(-e))/2}var o=r(213).cosh_sinh_csch_sech;t.name="sinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(2)),s=o("tan",{number:Math.tan,Complex:function(t){var r=Math.exp(-4*t.im)+2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(1-Math.exp(-4*t.im))/r)},BigNumber:function(t){return i(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(t.value)},"Array | Matrix":function(e){return a.deepMap(e,s,!0)}});return s}var i=r(213).tan_cot;t.name="tan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(2)),u=a("tanh",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),o=(n+1)*(n+1)+i*i;return new e.Complex(((n-1)*(n+1)+i*i)/o,2*i/o)},BigNumber:function(t){return o(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return i(t.value)},"Array | Matrix":function(e){return s.deepMap(e,u,!0)}});return u}function i(e){var t=Math.exp(2*e);return(t-1)/(t+1)}var o=r(213).tanh_coth;t.name="tanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(2)),a=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Array | Matrix, any":function(e,t){return o.deepMap2(e,t,a)},"any, Array | Matrix":function(e,t){return o.deepMap2(e,t,a)}});return a}t.name="to",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("clone",{any:i.clone})}var i=r(166);t.name="clone",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o,a){return function(n){return n&&(i.deepExtend(t,n),n.precision&&e.BigNumber&&e.BigNumber.config({precision:n.precision}),r(168)(a,t)),i.clone(t)}}var i=r(166);t.name="config",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var s=n(r(73));return a("filter",{"Array, function":i,"Array, RegExp":o,"Matrix, function":function(e,t){return s(i(e.toArray(),t))},"Matrix, RegExp":function(e,t){return s(o(e.toArray(),t))}})}function i(e,t){if(1!==a(e).length)throw new Error("Only one dimensional matrices supported");return e.filter(function(e){return t(e)})}function o(e,t){if(1!==a(e).length)throw new Error("Only one dimensional matrices supported");return e.filter(function(e){return t.test(e)})}var a=r(172).size;t.name="filter",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("format",{any:i.format,"any, Object | function | number":i.format})}var i=r(214);t.name="format",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("map",{"Array, function":i,"Matrix, function":function(e,t){return e.map(t)}})}function i(e,t){var r=function(n,i){return Array.isArray(n)?n.map(function(e,t){return r(e,i.concat(t))}):t(n,i,e)};return r(e,[])}t.name="map",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("print",{"string, Object":i,"string, Object, number":i})}function i(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,n){for(var i=n.split("."),s=t[i.shift()];i.length&&void 0!==s;){var u=i.shift();s=u?s[u]:s+"."}return void 0!==s?o(s)?s:a(s,r):e})}var o=r(214).isString,a=r(214).format;t.name="print",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function a(e){if("asc"===e)return f;if("desc"===e)return l;throw new Error('String "asc" or "desc" expected')}function s(e){if(1!==i(e).length)throw new Error("One dimensional array expected")}function u(e){if(1!==e.size().length)throw new Error("One dimensional matrix expected")}var c=n(r(73)),f=n(r(111)),l=function(e,t){return-f(e,t)};return o("sort",{Array:function(e){return s(e),e.sort(f)},Matrix:function(e){return u(e),c(e.toArray().sort(f),e.storage())},"Array, function":function(e,t){return s(e),e.sort(t)},"Matrix, function":function(e,t){return u(e),c(e.toArray().sort(t),e.storage())},"Array, string":function(e,t){return s(e),e.sort(a(t))},"Matrix, string":function(e,t){return u(e),c(e.toArray().sort(a(t)),e.storage())}})}var i=r(172).size;t.name="sort",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("_typeof",{any:function(t){var r=i.type(t);if("object"===r){if(t instanceof e.Complex)return"complex";if(t instanceof e.Matrix)return"matrix";if(t instanceof e.Unit)return"unit";if(t instanceof e.Index)return"index";if(t instanceof e.Range)return"range";if(t instanceof e.Help)return"help";if(t instanceof e.BigNumber)return"bignumber";if(t instanceof e.Chain)return"chain"}return r}})}var i=r(216);t.name="typeof",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){return n("forEach",{"Array, function":i,"Matrix, function":function(e,t){return e.forEach(t)}})}function i(e,t){var r=function(n,i){Array.isArray(n)?n.forEach(function(e,t){r(e,i.concat(t))}):t(n,i,e)};r(e,[])}t.name="forEach",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(73)),s=n(r(29)),u=n(r(31)),c=n(r(212)),f=n(r(47)),l=n(r(53)),p=n(r(114)),m=n(r(113)),h=n(r(54)),g=e.SparseMatrix,v=e.DenseMatrix,d=e.Spa,y=i("lup",{Matrix:function(e){switch(e.storage()){case"dense":return x(e);case"sparse":return w(e)}},Array:function(e){var t=a(e),r=y(t);return{L:r.L.valueOf(),U:r.U.valueOf(),P:r.P.valueOf()}}}),x=function(e){var t,r,n,i=e._size[0],a=e._size[1],h=Math.min(i,a),g=o.clone(e._data),d=[],y=[i,h],x=[],w=[h,a],b=v.diagonal([i,i],1,0);for(r=0;a>r;r++){if(r>0)for(t=0;i>t;t++){var N=Math.min(t,r),E=0;for(n=0;N>n;n++)E=u(E,f(g[t][n],g[n][r]));g[t][r]=l(g[t][r],E)}var M=r,A=0,_=0;for(t=r;i>t;t++){var O=g[t][r],C=s(O);p(C,A)&&(M=t,A=C,_=O)}if(r!==M&&(v._swapRows(r,M,b._data),v._swapRows(r,M,g)),i>r)for(t=r+1;i>t;t++){var S=g[t][r];m(S,0)||(g[t][r]=c(g[t][r],_))}}for(r=0;a>r;r++)for(t=0;i>t;t++)0===r&&(a>t&&(x[t]=[]),d[t]=[]),r>t?(a>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=0)):t!==r?(a>t&&(x[t][r]=0),i>r&&(d[t][r]=g[t][r])):(a>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=1));var z=new v({data:d,size:y}),T=new v({data:x,size:w});return{L:z,U:T,P:b,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.P.toString()}}},w=function(e){var t,r,n,i=e._size[0],o=e._size[1],a=Math.min(i,o),u=e._values,l=e._index,v=e._ptr,y=[],x=[],w=[],b=[i,a],N=[],E=[],M=[],A=[a,o],_=[],O=[],C=[],S=[i,i],z=new Array(i),T=new Array(i);for(t=0;i>t;t++)z[t]=t,T[t]=t;var B=function(e,t){var r=T[e],n=T[t];z[r]=t,z[n]=e,T[e]=n,T[t]=r};for(r=0;o>r;r++){var I=new d(i);i>r&&(w.push(y.length),y.push(1),x.push(r)),M.push(N.length);var q=v[r],P=v[r+1];for(n=q;P>n;n++)t=l[n],I.set(z[t],u[n]);r>0&&I.forEach(0,r-1,function(e,t){g._forEachRow(e,y,x,w,function(r,n){r>e&&I.accumulate(r,h(f(n,t)))})});var U=r,R=I.get(r),L=s(R);I.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,L)&&(U=e,L=r,R=t)}),r!==U&&(g._swapRows(r,U,b[1],y,x,w),g._swapRows(r,U,A[1],N,E,M),I.swap(r,U),B(r,U)),I.forEach(0,i-1,function(e,t){r>=e?(N.push(t),E.push(e)):(t=c(t,R),m(t,0)||(y.push(t),x.push(e)))})}for(w.push(y.length),M.push(N.length),t=0;i>t;t++)C.push(_.length),_.push(1),O.push(z[t]);return C.push(_.length),{L:new g({values:y,index:x,ptr:w,size:b}),U:new g({values:N,index:E,ptr:M,size:A}),P:new g({values:_,index:O,ptr:C,size:S}),toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.P.toString()}}};return y}var i=r(171),o=i.object;t.name="lup",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var a=n(r(73)),s=n(r(162)),u=n(r(47)),c=n(r(344)),f=n(r(345)),l=o("lusolve",{ +"Array, Array | Matrix":function(e,t){e=a(e);var r=s(e),n=m(r.L,r.U,r.P,t);return n.valueOf()},"Matrix, Array | Matrix":function(e,t){var r=s(e);return m(r.L,r.U,r.P,t)},"Object, Array | Matrix":function(e,t){return m(e.L,e.U,e.P,t)}}),p=function(t){if(t instanceof e.Matrix)return t;if(i(t))return a(t);throw new TypeError("Invalid Matrix LUP decomposition")},m=function(e,t,r,n){e=p(e),t=p(t),r=p(r),n=u(r,n);var i=f(e,n);return c(t,i)};return l}var i=Array.isArray;t.name="lusolve",t.factory=n},function(e,t,r){"use strict";e.exports=function(){function e(t){if(!(this instanceof e))throw new SyntaxError("Constructor must be called with the new operator");t instanceof e?this.value=t.value:this.value=t}function t(t,r){var n=Array.prototype.slice;"function"==typeof r?e.prototype[t]=function(){var t=[this.value].concat(n.call(arguments,0));return new e(r.apply(this,t))}:e.prototype[t]=new e(r)}var n=r(214);return e.prototype.done=function(){return this.value},e.prototype.valueOf=function(){return this.value},e.prototype.toString=function(){return n.format(this.value)},e.createProxy=function(e,r){if("string"==typeof e)t(e,r);else for(var n in e)e.hasOwnProperty(n)&&t(n,e[n])},e}},function(e,t,r){"use strict";var n=r(207).transform,i=(r(208).isBoolean,r(172).argsToArray);e.exports=function(e){var t=function(){try{return e.subset.apply(e,i(arguments))}catch(t){throw n(t)}};return e.subset.transform=t,t}},function(e,t,r){"use strict";var n=r(350);t.clone=function i(e){var t=typeof e;if("number"===t||"string"===t||"boolean"===t||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 i(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 n)return e;if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var r={};for(var o in e)e.hasOwnProperty(o)&&(r[o]=i(e[o]));return r},t.extend=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e},t.deepExtend=function o(e,t){if(Array.isArray(t))throw new TypeError("Arrays are not supported by deepExtend");for(var r in t)if(t.hasOwnProperty(r))if(t[r]&&t[r].constructor===Object)void 0===e[r]&&(e[r]={}),e[r].constructor===Object?o(e[r],t[r]):e[r]=t[r];else{if(Array.isArray(t[r]))throw new TypeError("Arrays are not supported by deepExtend");e[r]=t[r]}return e},t.deepEqual=function(e,r){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,o=e.length;o>i;i++)if(!t.deepEqual(e[i],r[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(r)||!(r instanceof Object))return!1;for(n in e)if(!t.deepEqual(e[n],r[n]))return!1;for(n in r)if(!t.deepEqual(e[n],r[n]))return!1;return!0}return typeof e==typeof r&&e==r},t.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},"x",{}),!0}catch(e){}return!1},t.lazy=function(e,r,n){if(t.canDefineProperty()){var i,o=!0;Object.defineProperty(e,r,{get:function(){return o&&(i=n(),o=!1),i},set:function(e){i=e,o=!1},configurable:!0})}else e[r]=n()},t.traverse=function(e,t){var r=e;if(t)for(var n=t.split("."),i=0;i15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.type.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.type.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.type.Complex(t.toNumber(),0)}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.type.BigNumber(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"null",to:"number",convert:function(){return 0}},{from:"null",to:"string",convert:function(){return"null"}},{from:"null",to:"BigNumber",convert:function(){return new e.type.BigNumber(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.type.Matrix(t)}}],n}},function(e,t,r){"use strict";e.exports=function(e,t){var n=r(166),i=r(213),o=r(3),a=e.type.BigNumber;e["true"]=!0,e["false"]=!1,e["null"]=null,e.uninitialized=r(172).UNINITIALIZED,"bignumber"===t.number?(e.Infinity=new a(1/0),e.NaN=new a(0/0),n.lazy(e,"pi",function(){return i.pi(t.precision)}),n.lazy(e,"tau",function(){return i.tau(t.precision)}),n.lazy(e,"e",function(){return i.e(t.precision)}),n.lazy(e,"phi",function(){return i.phi(t.precision)}),n.lazy(e,"E",function(){return e.e}),n.lazy(e,"LN2",function(){return new a(2).ln()}),n.lazy(e,"LN10",function(){return new a(10).ln()}),n.lazy(e,"LOG2E",function(){return new a(1).div(new a(2).ln())}),n.lazy(e,"LOG10E",function(){return new a(1).div(new a(10).ln())}),n.lazy(e,"PI",function(){return e.pi}),n.lazy(e,"SQRT1_2",function(){return new a("0.5").sqrt()}),n.lazy(e,"SQRT2",function(){return new a(2).sqrt()})):(e.Infinity=1/0,e.NaN=0/0,e.pi=Math.PI,e.tau=2*Math.PI,e.e=Math.E,e.phi=1.618033988749895,e.E=e.e,e.LN2=Math.LN2,e.LN10=Math.LN10,e.LOG2E=Math.LOG2E,e.LOG10E=Math.LOG10E,e.PI=e.pi,e.SQRT1_2=Math.SQRT1_2,e.SQRT2=Math.SQRT2),e.i=new o(0,1),e.version=r(348)}},function(e,t,r){"use strict";function n(e,t,n,a,s){function u(e,t){var n=arguments.length;if(1!=n&&2!=n)throw new s.error.ArgumentsError("import",n,1,2);var o,a={override:t&&t.override||!1,wrap:t&&t.wrap||!1};if("string"==typeof e){var p=r(346)(e);return u(p,t)}if(i(e))return f(e);if("object"==typeof e){var m={};for(o in e)if(e.hasOwnProperty(o)){var h=e[o];l(h)?m[o]=c(o,h,a):i(e)?m[o]=f(e):m[o]=u(h,t)}return m}throw new TypeError("Object or module name expected")}function c(e,t,r){return r.override||void 0===s[e]?(r.wrap&&"function"==typeof t?(s[e]=function(){for(var e=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];e[r]=i&&i.valueOf()}return t.apply(s,e)},t&&t.transform&&(s[e].transform=t.transform)):s[e]=t,t&&t.transform&&(s.expression.transform[e]=t.transform),s.type.Chain.createProxy(e,t),t):void 0}function f(e){var t=n(e),r=e.path?o(s,e.path):s;if(r[e.name])throw new Error('"'+e.name+'" already exists');return r[e.name]=t,t}function l(t){return"function"==typeof t||"number"==typeof t||"string"==typeof t||"boolean"==typeof t||null===t||t instanceof e.Unit||t instanceof e.Complex}return u}var i=r(166).isFactory,o=r(166).traverse;t.math=!0,t.name="import",t.factory=n},function(e,t,r){"use strict";t.ArgumentsError=r(176),t.DimensionError=r(174),t.IndexError=r(173),t.UnsupportedTypeError=r(347)},function(e,t,r){"use strict";t.array=r(172),t["boolean"]=r(208),t["function"]=r(349),t.number=r(175),t.bignumber=r(213),t.object=r(166),t.string=r(214),t.types=r(216)},function(e,t,r){"use strict";function n(e){for(var t=[];m(e);)t.push(e.length),e=e[0];return t}function i(e,t,r){var n,o=e.length;if(o!=t[r])throw new l(o,t[r]);if(rn;n++){var s=e[n];if(!m(s))throw new l(t.length-1,t.length,"<");i(e[n],t,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(t.length+1,t.length,">")}function o(e,r,n,i){var a,s,u=e.length,c=r[n],l=Math.min(u,c);if(e.length=c,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,r,p,i);for(a=l;c>a;a++)s=[],e[a]=s,o(s,r,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==t.UNINITIALIZED)for(a=l;c>a;a++)e[a]=f.clone(i)}}function a(e,t,r){var n,i;if(t>r){var o=r+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],t,o)}else for(;m(e);)e=e[0];return e}function s(e,t,r){var n,i;if(m(e)){var o=r+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],t,o)}else for(var a=r;t>a;a++)e=[e];return e}var u=r(175),c=r(214),f=r(166),l=(r(216),r(174)),p=r(173),m=Array.isArray;t.size=function(e){var r=n(e);return t.validate(e,r),r},t.validate=function(e,t){var r=0==t.length;if(r){if(m(e))throw new l(e.length,0)}else i(e,t,0)},t.validateIndex=function(e,t){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!==t&&e>=t)throw new p(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!m(e)||!m(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")")});var n=void 0!==r?r:0;return o(e,t,0,n),e},t.squeeze=function(e,r){for(var n=r||t.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,r,0);o.lengthi;i++)n=n.concat.apply(n,t[i]);t=n}return t},t.argsToArray=function(e){for(var t=[],r=0,n=e.length;n>r;r++)t[r]=e[r];return t},t.isArray=m},function(e,t,r){"use strict";function n(e,t,r){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=t):(this.min=t,this.max=r),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,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",e.exports=n},function(e,t,r){"use strict";var n=r(351);t.isNumber=function(e){return e instanceof Number||"number"==typeof e},t.isInteger=function(e){return e==Math.round(e)},t.sign=function(e){return e>0?1:0>e?-1:0},t.format=function(e,r){if("function"==typeof r)return r(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(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"auto":return t.toPrecision(e,i,r&&r.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.toExponential=function(e,t){return new n(e).toExponential(t)},t.toFixed=function(e,t){return new n(e).toFixed(t)},t.toPrecision=function(e,t,r){return new n(e).toPrecision(t,r)},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i=t&&(r="("+r+")"),this.name+" = "+r},n.prototype._toTex=function(e){var t=a.getPrecedence(this),r=a.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==r&&t>=r&&(n="\\left("+n+"\\right)"),s.toSymbol(this.name)+":="+n},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError("Parameter condition must be a Node");if(!(t instanceof i))throw new TypeError("Parameter trueExpr must be a Node");if(!(r instanceof i))throw new TypeError("Parameter falseExpr must be a Node");this.condition=e,this.trueExpr=t,this.falseExpr=r}var i=r(189),o=(r(353),r(350)),a=r(3),s=r(7),u=r(171),c=r(354),f=u.string.isString,l=u.number.isNumber,p=u["boolean"].isBoolean;n.prototype=new i,n.prototype.type="ConditionalNode",n.prototype._compile=function(e){return e.testCondition=function(t){if(l(t)||p(t)||f(t))return t?!0:!1;if(t instanceof o)return t.isZero()?!1:!0;if(t instanceof a)return t.re||t.im?!0:!1;if(t instanceof s)return t.value?!0:!1;if(null===t||void 0===t)return!1;throw new TypeError('Unsupported type of condition "'+e.math["typeof"](t)+'"')},"testCondition("+this.condition._compile(e)+") ? ( "+this.trueExpr._compile(e)+") : ( "+this.falseExpr._compile(e)+")"},n.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},n.prototype.clone=function(){return new n(this.condition,this.trueExpr,this.falseExpr)},n.prototype.toString=function(){var e=c.getPrecedence(this),t=this.condition.toString(),r=c.getPrecedence(this.condition);("OperatorNode"===this.condition.type||null!==r&&e>=r)&&(t="("+t+")");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+")"),t+" ? "+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,t,r){"use strict";function n(e,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(t){if(!a(t))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=t}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=r(189),o=(r(350),r(216).type),a=r(214).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,t){return e.substring(t.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 t,r=this.value;switch(this.valueType){case"string":return"\\text{"+r+"}";case"number":return t=r.toLowerCase().indexOf("e"),-1!==t?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){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"');if(!c(t)||!t.every(u))throw new TypeError('Array containing strings expected for parameter "params"');if(!(r instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in o)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.params=t,this.expr=r}var i=r(189),o=r(352),a=r(353),s=r(354),u=r(214).isString,c=Array.isArray;n.prototype=new i,n.prototype.type="FunctionAssignmentNode",n.prototype._compile=function(e){return this.params.forEach(function(t){e.args[t]=!0}),'scope["'+this.name+'"] = (function () { var fn = function '+this.name+"("+this.params.join(",")+") { if (arguments.length != "+this.params.length+') { throw new SyntaxError("Wrong number of arguments in function '+this.name+' (" + arguments.length + " provided, '+this.params.length+' expected)"); } return '+this.expr._compile(e)+' }; fn.syntax = "'+this.name+"("+this.params.join(", ")+')"; return fn; })();'},n.prototype.forEach=function(e){e(this.expr,"expr",this)},n.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new n(this.name,this.params.slice(0),t)},n.prototype.clone=function(){return new n(this.name,this.params.slice(0),this.expr)},n.prototype.toString=function(){var e=s.getPrecedence(this),t=s.getPrecedence(this.expr),r=this.expr.toString();return null!==t&&e>=t&&(r="("+r+")"),"function "+this.name+"("+this.params.join(", ")+") = "+r},n.prototype._toTex=function(e){var t=s.getPrecedence(this),r=s.getPrecedence(this.expr),n=this.expr.toTex(e);return null!==r&&t>=r&&(n="\\left("+n+"\\right)"),a.toSymbol(this.name)+"\\left("+this.params.map(a.toSymbol).join(",")+"\\right):="+n},e.exports=n},function(e,t,r){"use strict";function n(e,t){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(t)||!t.every(c))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=t}var i=r(189),o=r(186),a=r(187),s=r(350),u=r(4),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,t){function r(e){return e instanceof a&&"end"==e.name}var n=!1,i=this.ranges.map(function(e){var t=e.filter(r).length>0;return n=t?t:n,t});e.range=function(e,t,r){return new u(e instanceof s?e.toNumber():e,t instanceof s?t.toNumber():t,r instanceof s?r.toNumber():r)};var c=this.ranges.map(function(t,r){var n=i[r];return t instanceof o?n?(e.args.end=!0,"(function () { var end = size["+r+"]; return range( "+t.start._compile(e)+", "+t.end._compile(e)+", "+(t.step?t.step._compile(e):"1")+" );})()"):"range("+t.start._compile(e)+", "+t.end._compile(e)+", "+(t.step?t.step._compile(e):"1")+")":n?(e.args.end=!0,"(function () { var end = size["+r+"]; return "+t._compile(e)+";})()"):t._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(", ")+") "+(t?", "+t:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+c.join(", ")+")"+(t?", "+t:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var t=0;t=o?[!0]:[!1];case 2:var c,f=s.getPrecedence(t[0]),l=s.isAssociativeWith(e,t[0]);c=null===f?!1:f!==n||"right"!==i||l?n>f?!0:!1:!0;var p,m=s.getPrecedence(t[1]),h=s.isAssociativeWith(e,t[1]);if(p=null===m?!1:m!==n||"left"!==i||h?n>m?!0:!1:!0,r){var u=e.getIdentifier(),g=e.args[0].getIdentifier(),v=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][v].latexParens===!1&&(p=!1))}return[c,p];default:var d=[];return t.forEach(function(){d.push(!0)}),d}}var o=r(189),a=(r(181),r(187),r(185),r(353)),s=r(354),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 t=this.args.map(function(t){return t._compile(e)});return"math."+this.fn+"("+t.join(", ")+")"},n.prototype.forEach=function(e){for(var t=0;t3)throw new Error("Too many arguments");this.start=e,this.end=t,this.step=r||null}var i=r(189),o=r(354),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,t=o.getPrecedence(this),r=this.start.toString(),n=o.getPrecedence(this.start);if(null!==n&&t>=n&&(r="("+r+")"),e=r,this.step){var i=this.step.toString(),a=o.getPrecedence(this.step);null!==a&&t>=a&&(i="("+i+")"),e+=":"+i}var s=this.end.toString(),u=o.getPrecedence(this.end);return null!==u&&t>=u&&(s="("+s+")"),e+=":"+s},n.prototype._toTex=function(e){var t=this.start.toTex(e);return this.step&&(t+=":"+this.step.toTex(e)),t+=":"+this.end.toTex(e)},e.exports=n},function(e,t,r){"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=r(189),a=r(7),s=r(353),u=r(214).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 t=s.toSymbol(this.name);return"\\"===t[0]?t:" "+t},e.exports=n},function(e,t,r){"use strict";function n(e,t){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(!(t instanceof i))throw new TypeError('Expected Node for parameter "expr"'); -}function i(e){for(var t in e)if(e.hasOwnProperty(t)&&t in a)throw new Error('Scope contains an illegal symbol, "'+t+'" is a reserved keyword')}function o(e){var t=Object.create(e);if(e.expression&&e.expression.transform)for(var r in e.expression.transform)e.expression.transform.hasOwnProperty(r)&&(t[r]=e.expression.transform[r]);return t}var a=r(352);n.prototype.eval=function(){throw new Error("Node.eval is deprecated. Use Node.compile(math).eval([scope]) instead.")},n.prototype.type="Node",n.prototype.compile=function(e){if(!(e instanceof Object))throw new TypeError("Object expected for parameter math");var t={math:o(e),args:{},_validateScope:i},r=this._compile(t),n=Object.keys(t).map(function(e){return" var "+e+' = defs["'+e+'"];'}),a=n.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+r+"; }};",s=new Function("defs",a);return s(t)},n.prototype._compile=function(e){throw new Error("Cannot compile a Node interface")},n.prototype.forEach=function(e){throw new Error("Cannot run forEach on a Node interface")},n.prototype.map=function(e){throw new Error("Cannot run map on a Node interface")},n.prototype._ifNode=function(e){if(!(e instanceof n))throw new TypeError("Callback function must return a Node");return e},n.prototype.traverse=function(e){function t(e,r){e.forEach(function(e,n,i){r(e,n,i),t(e,r)})}e(this,null,null),t(this,e)},n.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){var o=r(e,n,i);return o!==e?o:t(e,r)})}var r=e(this,null,null);return r!==this?r:t(this,e)},n.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},n.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},n.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},n.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},n.prototype.toString=function(){return""},n.prototype.toTex=function(e){var t;if("ArrayNode"===this.type&&delete this.latexType,"object"==typeof e)"FunctionNode"===this.type&&e.hasOwnProperty(this.name)&&(t=e[this.name](this,e));else if("function"==typeof e)t=e(this,e);else if("string"==typeof e&&"ArrayNode"===this.type)this.latexType=e;else if("undefined"!=typeof e)throw new TypeError("Object or function expected as callback");return"undefined"!=typeof t?t:this._toTex(e)},n.prototype._toTex=function(){if("Node"===this.type)return"";throw new Error("_toTex not implemented for this Node")},n.prototype.getIdentifier=function(){return this.type},n.isNode=function(e){return e instanceof n},e.exports=n},function(e,t,r){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,t,r){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e,t,r){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,t,r){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e,t,r){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,t,r){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,t,r){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,t,r){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,t,r){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e,t,r){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,t,r){var n=(r(169),r(168));t.transform=function(e){return e instanceof n?new n(e.index+1,e.min+1,e.max+1):e}},function(e,t,r){"use strict";t.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,t,r){"use strict";function n(e,r){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],r);return i+="]"}return t.format(e,r)}var i=r(175),o=r(214),a=r(348);t.isString=function(e){return e instanceof String||"string"==typeof e},t.endsWith=function(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t},t.format=function(e,r){return i.isNumber(e)?i.format(e,r):e instanceof a?o.format(e,r):Array.isArray(e)?n(e,r):t.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(r):e.toString():String(e)}},function(e,t,r){"use strict";function n(){var e=function(e,t,r,n,i,o,a,s,u){var c=e._values,f=e._index,l=e._ptr,p=a._index;if(i)for(var m=l[t],h=l[t+1],g=m;h>g;g++){var v=f[g];n[v]!==o?(n[v]=o,p.push(v),i[v]=s(r,c[g])):i[v]=u(i[v],s(r,c[g]))}else for(var m=l[t],h=l[t+1],g=m;h>g;g++){var v=f[g];n[v]!==o&&(n[v]=o,p.push(v))}return p.length};return e}t.name="sparseScatter",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var i=n("multiplyScalar",{"number, number":function(e,t){return e*t},"Complex, Complex":function(t,r){return new e.Complex(t.re*r.re-t.im*r.im,t.re*r.im+t.im*r.re)},"BigNumber, BigNumber":function(e,t){return e.times(t)},"number, Unit":function(e,t){var r=t.clone();return r.value=null===r.value?r._normalize(e):r.value*e,r},"Unit, number":function(e,t){var r=e.clone();return r.value=null===r.value?r._normalize(t):r.value*t,r}});return i}t.name="multiplyScalar",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var i=n("addScalar",{"number, number":function(e,t){return e+t},"Complex, Complex":function(t,r){return new e.Complex(t.re+r.re,t.im+r.im)},"BigNumber, BigNumber":function(e,t){return e.plus(t)},"Unit, Unit":function(e,t){if(null==e.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(!e.equalBase(t))throw new Error("Units do not match");var r=e.clone();return r.value+=t.value,r.fixPrefix=!1,r},"string, string":function(e,t){return e+t}});return i}t.name="addScalar",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function i(t,r){var n=r.re*r.re+r.im*r.im;return 0!=n?new e.Complex((t.re*r.re+t.im*r.im)/n,(t.im*r.re-t.re*r.im)/n):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?t.im/0:0)}var o=n("divideScalar",{"number, number":function(e,t){return e/t},"Complex, Complex":i,"BigNumber, BigNumber":function(e,t){return e.div(t)},"Unit, number":function(e,t){var r=e.clone();return r.value=(null===r.value?r._normalize(1):r.value)/t,r}});return o}t.name="divideScalar",t.factory=n},function(e,t,r){"use strict";function n(e,r,n){var o,a,s=e.constructor,u=+(e.s<0),c=+(r.s<0);if(u){o=i(t.not(e));for(var f=0;f0;)n(l[--h],p[--g])==v&&(d=d.plus(x)),x=x.times(y);for(;g>0;)n(m,p[--g])==v&&(d=d.plus(x)),x=x.times(y);return s.config({precision:w}),0==v&&(d.s=-d.s),d}function i(e){for(var t=e.c,r=t[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,r){var n=r.precision,i=-(n+4),o=n+8-e.e,a=25-e.e,s=Math.max(1.442695*Math.log(n+2)|5,5);r.config({precision:a});var u=0,c=new r(Math.asin(e.toNumber())+"");do{var l=t.cos_sin_sec_csc(c,r,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),r.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 r.config({precision:n}),c.toDP(n-1)}function a(e,t){var r=e.constructor;r.config({precision:t+Math.log(t)|4});for(var n=new r(1),i=e,o=0/0,a=e.times(e),s=e,u=new r(n),c=new r(n),f=new r(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 r(l),i=i.plus(s.times(u).div(f.times(c)));return r.config({precision:t}),i.toDP(t-1)}function s(e){for(var t=e,r=0/0,n=e.times(e),i=e,o=!0,a=3;!t.equals(r);a+=2)i=i.times(n),r=t,o=!o,t=o?t.plus(i.div(a)):t.minus(i.div(a));return t}function u(e,t){for(var r=e.constructor.ONE,n=e,i=0/0,o=e.times(e),a=t?n:n=r,s=r,u=!0,c=t;!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,r,n){var i=t.pi(r+2),o=t.tau(r);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 t=e.constructor,r=t.precision;t.config({precision:r+2});var n=t.ONE.minus(e.times(e)).sqrt();return t.config({precision:r}),n.toDP(r-1)}var l=r(348),p=r(175).isNumber,m=r(175).digits,h=r(347).memoize;t.isBigNumber=function(e){return e instanceof l},t.toBigNumber=function(e,t){return new t(m(e)>15?e+"":e)},t.e=h(function(e){var t=l.constructor({precision:e});return new t(1).exp()}),t.phi=h(function(e){var t=l.constructor({precision:e});return new t(1).plus(new t(5).sqrt()).div(2)}),t.pi=h(function(e){var t=l.constructor({precision:e+4}),r=new t(4).times(s(new t(1).div(5))).minus(s(new t(1).div(239)));return t.config({precision:e}),new t(4).times(r)}),t.tau=h(function(e){var r=t.pi(e+2),n=l.constructor({precision:e});return new n(2).times(r)}),t.and=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitAnd");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(0/0);if(e.isZero()||t.eq(-1)||e.eq(t))return e;if(t.isZero()||e.eq(-1))return t;if(!e.isFinite()||!t.isFinite()){if(!e.isFinite()&&!t.isFinite())return e.isNegative()==t.isNegative()?e:new r(0);if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t;if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e}return n(e,t,function(e,t){return e&t})},t.leftShift=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function leftShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(0/0):e.isZero()||t.isZero()?e:e.isFinite()||t.isFinite()?e.times(t.lt(55)?Math.pow(2,t.toNumber())+"":new r(2).pow(t)):new r(0/0)},t.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});var e=e.plus(t.ONE);return e.s=-e.s||null,t.config({precision:r}),e},t.or=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitOr");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(0/0);var i=new r(-1);return e.isZero()||t.eq(i)||e.eq(t)?t:t.isZero()||e.eq(i)?e:e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e|t}):!e.isFinite()&&!e.isNegative()&&t.isNegative()||e.isNegative()&&!t.isNegative()&&!t.isFinite()?i:e.isNegative()&&t.isNegative()?e.isFinite()?e:t:e.isFinite()?t:e},t.rightArithShift=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(0/0):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():new r(e.isNegative()?-1:e.isFinite()?0:0/0)},t.xor=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Integers expected in function bitXor");var i=e.constructor;if(e.isNaN()||r.isNaN())return new i(0/0);if(e.isZero())return r;if(r.isZero())return e;if(e.eq(r))return new i(0);var o=new i(-1);return e.eq(o)?t.not(r):r.eq(o)?t.not(e):e.isFinite()&&r.isFinite()?n(e,r,function(e,t){return e^t}):e.isFinite()||r.isFinite()?new i(e.isNegative()==r.isNegative()?1/0:-(1/0)):o},t.arccos_arcsec=function(e,r,n){var i=r.precision;if(n){if(e.abs().lt(r.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(r.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return t.pi(i);r.config({precision:i+4}),n&&(e=r.ONE.div(e));var o=t.arctan_arccot(r.ONE.minus(e.times(e)).sqrt().div(e.plus(r.ONE)),r).times(2);return r.config({precision:i}),o.toDP(i-1)},t.arcsin_arccsc=function(e,r,n){if(e.isNaN())return new r(0/0);var i=r.precision,s=e.abs();if(n){if(s.lt(r.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");r.config({precision:i+2}),e=r.ONE.div(e),r.config({precision:i}),s=e.abs()}else if(s.gt(r.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(s.gt(.8)){r.config({precision:i+4});var u=e.s,c=t.pi(i+4).div(2);return e=c.minus(t.arcsin_arccsc(r.ONE.minus(e.times(e)).sqrt(),r)),e.s=u,e.constructor=r,r.config({precision:i}),e.toDP(i-1)}var f=s.gt(.58);f&&(r.config({precision:i+8}),e=e.div(new r(2).sqrt().times(r.ONE.minus(e.times(e)).sqrt().plus(r.ONE).sqrt())),r.config({precision:i}));var l=60>=i||e.dp()<=Math.log(i)&&e.lt(.05)?a(e,i):o(e,r);return f?l.times(2):l},t.arctan_arccot=function(e,r,n){if(e.isNaN())return new r(0/0);if(!n&&e.isZero()||n&&!e.isFinite())return new r(0);var i=r.precision;if(!n&&!e.isFinite()||n&&e.isZero()){var o=t.pi(i+2).div(2).toDP(i-1);return o.constructor=r,o.s=e.s,o}r.config({precision:i+4}),n&&(e=r.ONE.div(e));var a=e.abs();if(a.lte(.875)){var u=s(e);return u.constructor=r,r.config({precision:i}),u.toDP(r.precision-1)}if(a.gte(1.143)){var o=t.pi(i+4).div(2),u=o.minus(s(r.ONE.div(a)));return u.s=e.s,u.constructor=r,r.config({precision:i}),u.toDP(r.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),r.config({precision:i}),t.arcsin_arccsc(e,r)},t.arctan2=function(e,r,n){var i=n.precision;if(r.isZero()){if(e.isZero())return new n(0/0);var o=t.pi(i+2).div(2).toDP(i-1);return o.constructor=n,o.s=e.s,o}n.config({precision:i+2});var a=t.arctan_arccot(e.div(r),n,!1);if(r.isNegative()){var s=t.pi(i+2);a=e.isNegative()?a.minus(s):a.plus(s)}return a.constructor=n,n.config({precision:i}),a.toDP(i-1)},t.acosh_asinh_asech_acsch=function(e,t,r,n){if(e.isNaN())return new t(0/0);if(n&&e.isZero())return new t(1/0);if(!r)if(n){if(e.isNegative()||e.gt(t.ONE))throw new Error("asech() only has non-complex values for 0 <= x <= 1.")}else if(e.lt(t.ONE))throw new Error("acosh() only has non-complex values for x >= 1.");var i=t.precision;t.config({precision:i+4});var o=new t(e);o.constructor=t,n&&(o=t.ONE.div(o));var a=r?o.times(o).plus(t.ONE):o.times(o).minus(t.ONE),s=o.plus(a.sqrt()).ln();return t.config({precision:i}),new t(s.toPrecision(i))},t.atanh_acoth=function(e,t,r){if(e.isNaN())return new t(0/0);var n=e.abs();if(n.eq(t.ONE))return new t(e.isNegative()?-(1/0):1/0);if(n.gt(t.ONE)){if(!r)throw new Error("atanh() only has non-complex values for |x| <= 1.")}else if(r)throw new Error("acoth() has complex values for |x| < 1.");if(e.isZero())return new t(0);var i=t.precision;t.config({precision:i+4});var o=new t(e);o.constructor=t,r&&(o=t.ONE.div(o));var a=t.ONE.plus(o).div(t.ONE.minus(o)).ln().div(2);return t.config({precision:i}),new t(a.toPrecision(i))},t.cos_sin_sec_csc=function(e,t,r,n){if(e.isNaN()||!e.isFinite())return new t(0/0);var i=t.precision,o=new t(e),a=o.isNegative();a&&(o.s=-o.s);var s=i+(0|Math.log(i))+3;if(t.config({precision:s}),o=c(o,s,r),o[0].constructor=t,o[1])return o=o[0],n&&o.isZero()&&(o=new t(1/0)),t.config({precision:i}),o;var f;if(o=o[0],r){f=u(o.div(3125),r),t.config({precision:Math.min(s,i+15)});for(var l=new t(5),p=new t(16),m=new t(20),h=0;5>h;++h){var g=f.times(f),v=g.times(f),d=v.times(g);f=p.times(d).minus(m.times(v)).plus(l.times(f))}a&&(f.s=-f.s)}else{var x,y;o.abs().lt(t.ONE)?(x=64,y=3):(x=256,y=4),f=u(o.div(x),r),t.config({precision:Math.min(s,i+8)});for(var w=new t(8);y>0;--y){var g=f.times(f),b=g.times(g);f=w.times(b.minus(g)).plus(t.ONE)}}return n&&(f=f.e<=-i?new t(1/0):t.ONE.div(f)),t.config({precision:i}),f.toDP(i-1)},t.tan_cot=function(e,r,n){if(e.isNaN())return new r(0/0);var i=r.precision,o=t.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 r(1/0);r.config({precision:i+4});var u=t.cos_sin_sec_csc(s,r,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 r.config({precision:i}),new r(p.toPrecision(i))},t.cosh_sinh_csch_sech=function(e,t,r,n){if(e.isNaN())return new t(0/0);if(!e.isFinite())return new t(n?0:r?e:1/0);var i=t.precision;t.config({precision:i+4});var o=new t(e);return o.constructor=t,o=o.exp(),o=r?o.minus(t.ONE.div(o)):o.plus(t.ONE.div(o)),o=n?new t(2).div(o):o.div(2),t.config({precision:i}),new t(o.toPrecision(i))},t.tanh_coth=function(e,t,r){if(e.isNaN())return new t(0/0);if(!e.isFinite())return new t(e.s);var n=t.precision;t.config({precision:n+4});var i=new t(e);i.constructor=t;var o=i.exp(),a=t.ONE.div(o),s=o.minus(a);return s=r?o.plus(a).div(s):s.div(o.plus(a)),t.config({precision:n}),s.toDP(n-1)},t.format=function(e,r){if("function"==typeof r)return r(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==r&&(r.notation&&(n=r.notation),p(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"auto":var o=.001,a=1e5;r&&r.exponential&&(void 0!==r.exponential.lower&&(o=r.exponential.lower),void 0!==r.exponential.upper&&(a=r.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():t.toExponential(e,i),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.toExponential=function(e,t){return void 0!==t?e.toExponential(t-1):e.toExponential()},t.toFixed=function(e,t){return e.toFixed(t||0)}},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(!l.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r=Array.prototype.slice.call(arguments,1),n=l[t].apply(this,r);return function(t){var r={random:function(t,r,o){var s,c,l;if(arguments.length>3)throw new i("random",arguments.length,0,3);if(1===arguments.length?f(t)?s=t:l=t:2===arguments.length?f(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=o),void 0===l&&(l=1),void 0===c&&(c=0),void 0!==s){var p=a(s.valueOf(),c,l,n);return s instanceof e.Matrix?u(p):p}return n(c,l)},randomInt:function(t,r,n){var s,c,l;if(arguments.length>3||arguments.length<1)throw new i("randomInt",arguments.length,1,3);if(1===arguments.length?f(t)?s=t:l=t:2===arguments.length?f(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=n),void 0===c&&(c=0),void 0!==s){var p=a(s.valueOf(),c,l,o);return s instanceof e.Matrix?u(p):p}return o(c,l)},pickRandom:function(t){if(1!==arguments.length)throw new i("pickRandom",arguments.length,1);if(t instanceof e.Matrix)t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(c.size(t).length>1)throw new Error("Only one dimensional vectors supported");return t[Math.floor(Math.random()*t.length)]}},n=function(e,r){return e+t()*(r-e)},o=function(e,r){return Math.floor(e+t()*(r-e))},a=function(e,t,r,n){var i,o,s=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)s.push(a(e,t,r,n));else for(o=0,i=e.shift();i>o;o++)s.push(n(t,r));return s};return r}(n)}var s=n(r(2)),u=n(r(75)),c=r(167),f=s.isCollection,l={uniform:function(){return Math.random},normal:function(){return function(){for(var e,t,r=-1;0>r||r>1;)e=Math.random(),t=Math.random(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return a}var i=r(176);t.name="distribution",t.factory=n},function(e,t,r){"use strict";t.type=function(e){var t=typeof e;if("object"===t){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 t}},function(e,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,t,r){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,t,r){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,t,r){"use strict";function n(e,t,n,i){var o=n(r(75)),a=n(r(213)),s=n(r(48)),u=n(r(55)),c=n(r(115)),f=n(r(355)),l=e.SparseMatrix,p=e.DenseMatrix,m=i("backwardSubstitution",{"Matrix, Array | Matrix":function(e,t){switch(e.storage()){case"dense":return h(e,t);case"sparse":return g(e,t)}},"Array, Array | Matrix":function(e,t){var r=o(e),n=m(r,t);return n.valueOf()}}),h=function(e,t){t=f(e,t);for(var r=e._size[0],n=e._size[1],i=new Array(r),o=e._data,l=n-1;l>=0;l--){var m,h=t[l]||0;if(c(h,0))m=0;else{var g=o[l][l];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");m=a(h,g);for(var v=l-1;v>=0;v--)t[v]=u(t[v]||0,s(m,o[v][l]))}i[l]=[m]}return new p({data:i,size:[r,1]})},g=function(e,t){t=f(e,t);var r,n,i=e._size[0],o=e._size[1],p=e._values,m=e._index,h=e._ptr,g=[],v=[],d=[];d.push(0);for(var x=o-1;x>=0;x--){var y=t[x]||0;if(!c(y,0)){var w=0,b=h[x],N=h[x+1];for(n=N-1;n>=b;n--)if(r=m[n],r===x)w=p[n];else if(x>r)break;if(c(w,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var E=a(y,w);n>=b;n--)r=m[n],t[r]=u(t[r]||0,s(E,p[n]));c(E,0)||(g.unshift(E),v.unshift(x))}}return d.push(g.length),new l({values:g,index:v,ptr:d,size:[i,1]})};return m}t.name="backwardSubstitution",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(75)),a=n(r(213)),s=n(r(48)),u=n(r(55)),c=n(r(115)),f=n(r(355)),l=e.SparseMatrix,p=e.DenseMatrix,m=i("forwardSubstitution",{"Matrix, Array | Matrix":function(e,t){switch(e.storage()){case"dense":return h(e,t);case"sparse":return g(e,t)}},"Array, Array | Matrix":function(e,t){var r=o(e),n=m(r,t);return n.valueOf()}}),h=function(e,t){t=f(e,t);for(var r=e._size[0],n=e._size[1],i=new Array(r),o=e._data,l=0;n>l;l++){var m,h=t[l]||0;if(c(h,0))m=0;else{var g=o[l][l];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");m=a(h,g);for(var v=l+1;r>v;v++)t[v]=u(t[v]||0,s(m,o[v][l]))}i[l]=[m]}return new p({data:i,size:[r,1]})},g=function(e,t){t=f(e,t);var r,n,i=e._size[0],o=e._size[1],p=e._values,m=e._index,h=e._ptr,g=[],v=[],d=[];d.push(0);for(var x=0;o>x;x++){var y=t[x]||0;if(!c(y,0)){var w=0,b=h[x+1];for(n=h[x];b>n;n++)if(r=m[n],r===x)w=p[n];else if(r>x)break;if(c(w,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var N=a(y,w);b>n;n++)r=m[n],t[r]=u(t[r]||0,s(N,p[n]));c(N,0)||(g.push(N),v.push(x))}}return d.push(g.length),new l({values:g,index:v,ptr:d,size:[i,1]})};return m}t.name="forwardSubstitution", -t.factory=n},function(e,t,r){function n(e){return r(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":155,"./clone.js":155,"./config":156,"./config.js":156,"./filter":157,"./filter.js":157,"./forEach":163,"./forEach.js":163,"./format":158,"./format.js":158,"./import":172,"./import.js":172,"./map":159,"./map.js":159,"./print":160,"./print.js":160,"./sort":161,"./sort.js":161,"./typeof":162,"./typeof.js":162};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=346},function(e,t,r){t.memoize=function(e){return function t(){"object"!=typeof t.cache&&(t.cache={});var r=JSON.stringify(arguments);return r in t.cache?t.cache[r]:t.cache[r]=e.apply(e,arguments)}}},function(e,t,r){var n;!function(i){"use strict";function o(e){for(var t,r,n=1,i=e.length,o=e[0]+"";i>n;n++){for(t=e[n]+"",r=_-t.length;r--;)t="0"+t;o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,t,r,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=t-o,0>a?(a+=_,i=0):(i=Math.ceil((a+1)/_),a%=_),o=E(10,_-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>r&&99999==u||r>3&&49999==u||5e4==u||0==u):s=(4>r&&u+1==o||r>3&&u+1==o/2)&&(e[i+1]/o/100|0)==E(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>r)&&9999==u||!n&&r>3&&4999==u):s=((n||4>r)&&u+1==o||!n&&r>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==E(10,a-3)-1,s}function s(e,t,r){var n=e.constructor;return null==t||((x=0>t||t>8)||0!==t&&(n.errors?parseInt:parseFloat)(t)!=t)&&!p(n,"rounding mode",t,r,0)?n.rounding:0|t}function u(e,t,r,n){var i=e.constructor;return!(x=(n||0)>t||t>=z+1)&&(0===t||(i.errors?parseInt:parseFloat)(t)==t)||p(i,"argument",t,r,0)}function c(e,t){var r,n,i,s,u,c,f,l=0,p=0,m=0,h=e.constructor,v=h.ONE,d=h.rounding,x=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:v:e.s?e.s<0?0:e:0/0);for(null==t?(w=!1,u=x):u=t,f=new h(.03125);e.e>-2;)e=e.times(f),m+=5;for(n=Math.log(E(2,m))/Math.LN10*2+5|0,u+=n,r=s=c=new h(v),h.precision=u;;){if(s=g(s.times(e),u,1),r=r.times(++p),f=c.plus(I(s,r,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!=t)return h.precision=x,c;if(!(3>l&&a(c.c,u-n,d,l)))return g(c,h.precision=x,d,w=!0);h.precision=u+=10,r=s=f=new h(v),p=0,l++}c=f}}function f(e,t,r,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==t?r=0:(g(e,++t,r),r=n?t:t+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=t||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=r-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=r-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=r-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 t=e.length-1,r=t*_+1;if(t=e[t]){for(;t%10==0;t/=10,r--);for(t=e[0];t>=10;t/=10,r++);}return r}function p(e,t,r,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"][t]||t+([x?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+r);throw o.name="Decimal Error",x=b=0,o}}function m(e,t,r){var n=new e(e.ONE);for(w=!1;1&r&&(n=n.times(t)),r>>=1,r;)t=t.times(t);return w=!0,n}function h(e,t){var r,n,i,s,u,c,f,l,m,v,d,x=1,y=10,b=e,N=b.c,E=b.constructor,M=E.ONE,A=E.rounding,_=E.precision;if(b.s<0||!N||!N[0]||!b.e&&1==N[0]&&1==N.length)return new E(N&&!N[0]?-1/0:1!=b.s?0/0:N?0:b);if(null==t?(w=!1,f=_):f=t,E.precision=f+=y,r=o(N),n=r.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new E(n+"."+r.slice(1)),f+2>B.length&&p(E,1,f+2,"ln"),b=h(b,f-y).plus(new E(B.slice(0,f+2)).times(s+"")),E.precision=_,null==t?g(b,_,A,w=!0):b;for(;7>n&&1!=n||1==n&&r.charAt(1)>3;)b=b.times(e),r=o(b.c),n=r.charAt(0),x++;for(s=b.e,n>1?(b=new E("0."+r),s++):b=new E(n+"."+r.slice(1)),v=b,l=u=b=I(b.minus(M),b.plus(M),f,1),d=g(b.times(b),f,1),i=3;;){if(u=g(u.times(d),f,1),m=l.plus(I(u,new E(i),f,1)),o(m.c).slice(0,f)===o(l.c).slice(0,f)){if(l=l.times(2),0!==s&&(f+2>B.length&&p(E,1,f+2,"ln"),l=l.plus(new E(B.slice(0,f+2)).times(s+""))),l=I(l,new E(x),f,1),null!=t)return E.precision=_,l;if(!a(l.c,f-y,A,c))return g(l,E.precision=_,A,w=!0);E.precision=f+=y,m=u=b=I(v.minus(M),v.plus(M),f,1),d=g(b.times(b),f,1),i=c=1}l=m,i+=2}}function g(e,t,r,n){var i,o,a,s,u,c,f,l,p=e.constructor;e:if(null!=t){if(!(f=e.c))return e;for(i=1,s=f[0];s>=10;s/=10,i++);if(o=t-i,0>o)o+=_,a=t,u=f[l=0],c=u/E(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/_),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,o%=_,a=o-_+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);o%=_,a=o-_+i,c=0>a?0:N(u/E(10,i-a-1)%10)}if(n=n||0>t||null!=f[l+1]||(0>a?u:u%E(10,i-a-1)),n=4>r?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(o>0?a>0?u/E(10,i-a):0:f[l-1])%10&1||r==(e.s<0?8:7)),1>t||!f[0])return f.length=0,n?(t-=e.e+1,f[0]=E(10,t%_),e.e=-t||0):f[0]=e.e=0,e;if(0==o?(f.length=l,s=1,l--):(f.length=l+1,s=E(10,_-o),f[l]=a>0?(u/E(10,i-a)%E(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]==A&&(f[0]=1));break}if(f[l]+=s,f[l]!=A)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^r?1:-1;if(u!=c)return u>c^r?1:-1;for(a=-1,s=(u=i.length)<(c=o.length)?u:c;++ao[a]^r?1:-1;return u==c?0:u>c^r?1:-1},C.decimalPlaces=C.dp=function(){var e,t,r=null;if(e=this.c){if(r=((t=e.length-1)-N(this.e/_))*_,t=e[t])for(;t%10==0;t/=10,r--);0>r&&(r=0)}return r},C.dividedBy=C.div=function(e,t){return b=2,I(this,new this.constructor(e,t))},C.dividedToIntegerBy=C.divToInt=function(e,t){var r=this,n=r.constructor;return b=18,g(I(r,new n(e,t),0,1,1),n.precision,n.rounding)},C.equals=C.eq=function(e,t){return b=3,0===this.cmp(e,t)},C.exponential=C.exp=function(){return c(this)},C.floor=function(){return g(new this.constructor(this),this.e+1,3)},C.greaterThan=C.gt=function(e,t){return b=4,this.cmp(e,t)>0},C.greaterThanOrEqualTo=C.gte=function(e,t){return b=5,t=this.cmp(e,t),1==t||0===t},C.isFinite=function(){return!!this.c},C.isInteger=C.isInt=function(){return!!this.c&&N(this.e/_)>this.c.length-2},C.isNaN=function(){return!this.s},C.isNegative=C.isNeg=function(){return this.s<0},C.isZero=function(){return!!this.c&&0==this.c[0]},C.lessThan=C.lt=function(e,t){return b=6,this.cmp(e,t)<0},C.lessThanOrEqualTo=C.lte=function(e,t){return b=7,t=this.cmp(e,t),-1==t||0===t},C.logarithm=C.log=function(e,t){var r,n,i,s,u,c,f,l,m,v=this,d=v.constructor,x=d.precision,y=d.rounding,N=5;if(null==e)e=new d(10),r=!0;else{if(b=15,e=new d(e,t),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new d(0/0);r=e.eq(10)}if(n=v.c,v.s<0||!n||!n[0]||!v.e&&1==n[0]&&1==n.length)return new d(n&&!n[0]?-1/0:1!=v.s?0/0:n?0:1/0);if(u=r&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),w=!1,f=x+N,l=f+10,c=h(v,f),r?(l>B.length&&p(d,1,l,"log"),i=new d(B.slice(0,l))):i=h(e,f),m=I(c,i,f,1),a(m.c,s=x,y))do if(f+=10,c=h(v,f),r?(l=f+10,l>B.length&&p(d,1,l,"log"),i=new d(B.slice(0,l))):i=h(e,f),m=I(c,i,f,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,x+1,0));break}while(a(m.c,s+=10,y));return w=!0,g(m,x,y)},C.minus=function(e,t){var r,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,t),t=e.s,!u||!t)return new s(0/0);if(u!=t)return e.s=-t,a.plus(e);var c=a.c,f=e.c,l=N(e.e/_),p=N(a.e/_),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-t,e):new s(f?a:0/0);if(!c[0]||!f[0])return a=f[0]?(e.s=-t,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,r=c,n=f.length):(l=p,r=f),(p=Math.ceil(m/_))>n&&(n=p),u>(n+=2)&&(u=n,r.length=1),r.reverse(),t=u;t--;r.push(0));r.reverse()}else for((o=n<(i=f.length))&&(i=n),u=t=0;i>t;t++)if(c[t]!=f[t]){o=c[t]0)for(;t--;c[i++]=0);for(p=A-1,t=f.length;t>u;){if(c[--t]=10;t/=10,u++);return e.e=u+l*_-1,w?g(e,m,h):e},C.modulo=C.mod=function(e,t){var r,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,t),t=e.s,r=!i.c||!t||e.c&&!e.c[0],r||!e.c||i.c&&!i.c[0]?r?new o(0/0):g(new o(i),o.precision,o.rounding):(w=!1,9==a?(e.s=1,n=I(i,e,0,3,1),e.s=t,n.s*=t):n=I(i,e,0,a,1),n=n.times(e),w=!0,i.minus(n))},C.naturalLogarithm=C.ln=function(){return h(this)},C.negated=C.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},C.plus=function(e,t){var r,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,t),t=e.s,!o||!t)return new i(0/0);if(o!=t)return e.s=-t,n.minus(e);var a=n.c,s=e.c,u=N(e.e/_),c=N(n.e/_),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,r=a,t=s.length):(u=c,r=s,t=a.length),(c=Math.ceil(f/_))>t&&(t=c),o>++t&&(o=t,r.length=1),r.reverse();o--;r.push(0));r.reverse()}for(a.length-s.length<0&&(r=s,s=a,a=r),o=s.length,t=0,c=A;o;a[o]%=c)t=(a[--o]=a[o]+s[o]+t)/c|0;for(t&&(a.unshift(t),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,t=a[0];t>=10;t/=10,o++);return e.e=o+u*_-1,w?g(e,f,l):e},C.precision=C.sd=function(e){var t=null,r=this;return e!=t&&e!==!!e&&1!==e&&0!==e&&p(r.constructor,"argument",e,"precision",1),r.c&&(t=l(r.c),e&&r.e+1>t&&(t=r.e+1)),t},C.round=function(){var e=this,t=e.constructor;return g(new t(e),e.e+1,t.rounding)},C.squareRoot=C.sqrt=function(){var e,t,r,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?(t=o(u),(t.length+f)%2==0&&(t+="0"),c=Math.sqrt(t),f=N((f+1)/2)-(0>f||f%2),c==1/0?t="1e"+f:(t=c.toExponential(),t=t.slice(0,t.indexOf("e")+1)+f),n=new l(t)):n=new l(c.toString()),r=(f=l.precision)+3;;)if(a=n,n=p.times(a.plus(I(s,a,r+2,1))),o(a.c).slice(0,r)===(t=o(n.c)).slice(0,r)){if(t=t.slice(r-3,r+1),"9999"!=t&&(i||"4999"!=t)){(!+t||!+t.slice(1)&&"5"==t.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}r+=4,i=1}return w=!0,g(n,f,l.rounding,e)},C.times=function(e,t){var r,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,t),e.c),u=N(i.e/_),c=N(e.e/_),f=i.s;if(t=e.s,e.s=f==t?1:-1,!((u||a&&a[0])&&(c||s&&s[0])))return new o(!f||!t||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,t=s.length,t>f&&(r=a,a=s,s=r,c=f,f=t,t=c),c=f+t,r=[];c--;r.push(0));for(u=t-1;u>-1;u--){for(t=0,c=f+u;c>u;)t=r[c]+s[u]*a[c-u-1]+t,r[c--]=t%A|0,t=t/A|0;r[c]=(r[c]+t)%A|0}for(t?++n:r[0]||r.shift(),c=r.length;!r[--c];r.pop());for(e.c=r,f=1,t=r[0];t>=10;t/=10,f++);return e.e=f+n*_-1,w?g(e,o.precision,o.rounding):e},C.toDecimalPlaces=C.toDP=function(e,t){var r=this;return r=new r.constructor(r),null!=e&&u(r,e,"toDP")?g(r,(0|e)+r.e+1,s(r,t,"toDP")):r},C.toExponential=function(e,t){var r=this;return r.c?f(r,null!=e&&u(r,e,"toExponential")?0|e:null,null!=e&&s(r,t,"toExponential"),1):r.toString()},C.toFixed=function(e,t){var r,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,r="toFixed")?n.e+(0|e):null,t=s(n,t,r)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(r=f(n,e,t),n.s<0&&n.c&&(n.c[0]?r.indexOf("-")<0&&(r="-"+r):r=r.replace("-",""))):r=n.toString(),i.toExpNeg=o,i.toExpPos=a,r},C.toFormat=function(e,t){var r=this;if(!r.c)return r.toString();var n,i=r.s<0,o=r.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,c=r.toFixed(e,t).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},C.toFraction=function(e){var t,r,n,i,a,s,u,c,f=this,m=f.constructor,h=t=new m(m.ONE),g=s=new m(0),v=f.c,d=new m(g);if(!v)return f.toString();for(n=d.e=l(v)-f.e-1,d.c[0]=E(10,(u=n%_)<0?_+u:u),(null==e||(!(b=12,a=new m(e)).s||(x=a.cmp(h)<0||!a.c)||m.errors&&N(a.e/_)0)&&(e=n>0?d:h),w=!1,a=new m(o(v)),u=m.precision,m.precision=n=v.length*_*2;c=I(a,d,0,1,1),r=t.plus(c.times(g)),1!=r.cmp(e);)t=g,g=r,h=s.plus(c.times(r=h)),s=r,d=a.minus(c.times(r=d)),a=r;return r=I(e.minus(t),g,0,1,1),s=s.plus(r.times(h)),t=t.plus(r.times(g)),s.s=h.s=f.s,i=I(h,g,n,1).minus(f).abs().cmp(I(s,t,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",t+""],w=!0,m.precision=u,i},C.toNearest=function(e,t){var r=this,n=r.constructor;return r=new n(r),null==e?(e=new n(n.ONE),t=n.rounding):(b=17,e=new n(e),t=s(r,t,"toNearest")),e.c?r.c&&(e.c[0]?(w=!1,r=I(r,e,0,4>t?[4,5,7,8][t]:t,1).times(e),w=!0,g(r)):r.c=[r.e=0]):r.s&&(e.s&&(e.s=r.s),r=e),r},C.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},C.toPower=C.pow=function(e,t){var r,n,i,s,u=this,f=u.constructor,l=u.s,p=(b=13,+(e=new f(e,t))),v=0>p?-p:p,d=f.precision,x=f.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new f(E(i?0*l:+u,p));if(u=new f(u),r=u.c.length,!u.e&&u.c[0]==u.s&&1==r)return u;if(t=e.c.length-1,e.e||e.c[0]!=e.s||t)if(n=N(e.e/_),i=n>=t,!i&&0>l)s=new f(0/0);else{if(i&&T>r*_*v){if(s=m(f,u,v),e.s<0)return f.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,t)]?-1:1,t=E(+u,p),n=0!=t&&isFinite(t)?new f(t+"").e:N(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,v=Math.min(12,(n+"").length),s=c(e.times(h(u,d+v)),d),s=g(s,d+5,1),a(s.c,d,x)&&(n=d+10,s=g(c(e.times(h(u,n+v)),n),n+5,1),+o(s.c).slice(d+1,d+15)+1==1e14&&(s=g(s,d+1,0))),s.s=l,w=!0,f.rounding=x}s=g(s,d,x)}else s=g(u,d,x);return s},C.toPrecision=function(e,t){var r=this;return null!=e&&u(r,e,"toPrecision",1)&&r.c?f(r,0|--e,s(r,t,"toPrecision"),2):r.toString()},C.toSignificantDigits=C.toSD=function(e,t){var r=this,n=r.constructor;return r=new n(r),null!=e&&u(r,e,"toSD",1)?g(r,0|e,s(r,t,"toSD")):g(r,n.precision,n.rounding)},C.toString=function(e){var t,r,n,i=this,a=i.constructor,s=i.e;if(null===s)r=i.s?"Infinity":"NaN";else{if(e===t&&(s<=a.toExpNeg||s>=a.toExpPos))return f(i,null,a.rounding,1);if(r=o(i.c),0>s){for(;++s;r="0"+r);r="0."+r}else if(n=r.length,s>0)if(++s>n)for(s-=n;s--;r+="0");else n>s&&(r=r.slice(0,s)+"."+r.slice(s));else if(t=r.charAt(0),n>1)r=t+"."+r.slice(1);else if("0"==t)return t;if(null!=e)if((x=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(r=v(a,r,0|e,10,i.s),"0"==r)return r}return i.s<0?"-"+r:r},C.truncated=C.trunc=function(){return g(new this.constructor(this),this.e+1,1)},C.valueOf=C.toJSON=function(){return this.toString()},v=function(){function e(e,t,r){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=t);for(o[n=0]+=O.indexOf(e.charAt(a++));nr-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/r|0,o[n]%=r)}return o.reverse()}return function(t,r,n,i,o){var a,s,u,c,f,l,p=r.indexOf("."),h=t.precision,g=t.rounding;for(37>i&&(r=r.toLowerCase()),p>=0&&(r=r.replace(".",""),l=new t(i),c=m(t,l,r.length-p),l.c=e(c.toFixed(),10,n),l.e=l.c.length),f=e(r,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=I(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,r="";s>=p;r+=O.charAt(f[p++]));if(0>a){for(;++a;r="0"+r);r="0."+r}else if(p=r.length,++a>p)for(a-=p;a--;r+="0");else p>a&&(r=r.slice(0,a)+"."+r.slice(a));return r}}();var I=function(){function e(e,t,r){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*t+i,e[o]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;r>i;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.shift());}return function(n,i,o,a,s,u){var c,f,l,p,m,h,v,d,x,y,w,b,E,M,O,C,S,z,T,B=n.constructor,I=n.s==i.s?1:-1,q=n.c,P=i.c;if(!(q&&q[0]&&P&&P[0]))return new B(n.s&&i.s&&(q?!P||q[0]!=P[0]:P)?q&&0==q[0]||!P?0*I:I/0:0/0);for(u?(p=1,f=n.e-i.e):(u=A,p=_,f=N(n.e/p)-N(i.e/p)),z=P.length,C=q.length,x=new B(I),y=x.c=[],l=0;P[l]==(q[l]||0);l++);if(P[l]>(q[l]||0)&&f--,null==o?(I=o=B.precision,a=B.rounding):I=s?o+(n.e-i.e)+1:o,0>I)y.push(1),m=!0;else{if(I=I/p+2|0,l=0,1==z){for(h=0,P=P[0],I++;(C>l||h)&&I--;l++)M=h*u+(q[l]||0),y[l]=M/P|0,h=M%P|0;m=h||C>l}else{for(h=u/(P[0]+1)|0,h>1&&(P=e(P,h,u),q=e(q,h,u),z=P.length,C=q.length),O=z,w=q.slice(0,z),b=w.length;z>b;w[b++]=0);T=P.slice(),T.unshift(0),S=P[0],P[1]>=u/2&&S++;do h=0,c=t(P,w,z,b),0>c?(E=w[0],z!=b&&(E=E*u+(w[1]||0)),h=E/S|0,h>1?(h>=u&&(h=u-1),v=e(P,h,u),d=v.length,b=w.length,c=t(v,w,d,b),1==c&&(h--,r(v,d>z?T:P,d,u))):(0==h&&(c=h=1),v=P.slice()),d=v.length,b>d&&v.unshift(0),r(w,v,b,u),-1==c&&(b=w.length,c=t(P,w,z,b),1>c&&(h++,r(w,b>z?T:P,b,u))),b=w.length):0===c&&(h++,w=[0]),y[l++]=h,c&&w[0]?w[b++]=q[O]||0:(w=[q[O]],b=1);while((O++=10;I/=10,l++);x.e=l+f*p-1,g(x,s?o+x.e+1:o,a,m)}return x}}();d=function(){function e(e){var t,r,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==r||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[t="precision"])!=r&&((x=1>n||n>z)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(n=e[t="rounding"])!=r&&((x=0>n||n>8)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(n=e[t="toExpNeg"])!=r&&((x=-S>n||n>0)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="toExpPos"])!=r&&((x=0>n||n>S)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="minE"])!=r&&((x=-S>n||n>0)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="maxE"])!=r&&((x=0>n||n>S)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="errors"])!=r&&(n===!!n||1===n||0===n?(x=b=0,i[t]=!!n):p(i,t,n,o,1)),(n=e[t="crypto"])!=r&&(n===!!n||1===n||0===n?i[t]=!(!n||!y||"object"!=typeof y):p(i,t,n,o,1)),(n=e[t="modulo"])!=r&&((x=0>n||n>9)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(e=e[t="format"])!=r&&("object"==typeof e?i[t]=e:p(i,"format object expected",e,o)),i)}function t(e){return new this(e).exp()}function r(e){return new this(e).ln()}function n(e,t){return new this(e).log(t)}function i(e,t,r){var n,i,o=0;for("[object Array]"==M.call(t[0])&&(t=t[0]),n=new e(t[0]);++oi;)n=t[i],n>=429e7?t[i]=y.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(y&&y.randomBytes){for(t=y.randomBytes(r*=4);r>i;)n=t[i]+(t[i+1]<<8)+(t[i+2]<<16)+((127&t[i+3])<<24),n>=214e7?y.randomBytes(4).copy(t,i):(o.push(n%1e7),i+=4);i=r/4}else p(a,"crypto unavailable",y,"random");if(!i)for(;r>i;)o[i++]=1e7*Math.random()|0;for(r=o[--i],e%=_,r&&e&&(n=E(10,_-e),o[i]=(r/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[r=0];else{for(r=-1;0===o[0];)o.shift(),r-=_;for(i=1,n=o[0];n>=10;)n/=10,i++;_>i&&(r-=_-i)}return s.e=r,s.c=o,s}function f(e){return new this(e).sqrt()}function l(i){function u(e,t){var r=this;if(!(r instanceof u))return p(u,"Decimal called without new",e),new u(e,t);if(r.constructor=u,e instanceof u){if(null==t)return b=0,r.s=e.s,r.e=e.e,r.c=(e=e.c)?e.slice():e,r;if(10==t)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,r,e,t)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-S,u.maxE=S,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=C,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=t,u.ln=r,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,t=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(r,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 r(i),r.precision,r.rounding);if(i=t.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&r.errors||(x=!(o>=2&&65>o))?(p(r,"base",o,0,0),l=e.test(i)):(a="["+O.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(r,0,f),c=!c),i=v(r,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(r,"not a base "+o+" number",f),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(r,"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(r,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%_,0>s&&(u+=_),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=_;o>u;)n.c.push(+i.slice(u,u+=_));i=i.slice(u),u=_-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),w&&(n.e>r.maxE?n.c=n.e=null:n.er;r++)t.push(0);return t}n.prototype.toFixed=function(e){var t=this.roundDigits(this.exponent+1+(e||0)),r=t.coefficients,n=t.exponent+1,o=n+(e||0);return r.lengthn&&(r=i(-n+1).concat(r),n=1),e&&r.splice(n,0,0===n?"0.":"."),this.sign+r.join("")},n.prototype.toExponential=function(e){var t=e?this.roundDigits(e):this.clone(),r=t.coefficients,n=t.exponent;r.length0?"."+r.join(""):"")+"e"+(n>=0?"+":"")+n},n.prototype.toPrecision=function(e,t){var r=t&&void 0!==t.lower?t.lower:.001,n=t&&void 0!==t.upper?t.upper:1e5,o=Math.abs(Math.pow(10,this.exponent));if(r>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;)r.unshift(0),t.exponent++,e++;if(r.length>e){var n=r.splice(e);if(n[0]>=5){var i=e-1;for(r[i]++;10===r[i];)r.pop(),0===i&&(r.unshift(0),t.exponent++,i++),i--,r[i]++}}return t},e.exports=n},function(e,t,r){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";function n(e,t,r){return e=e.replace(/%name%/g,t),r.forEach(function(t,r){e=e.replace(RegExp("%"+r+"%","g"),t)}),e=e.replace("%*%",r.map(function(e){return e}).join(",")),e=e.replace("%%","%")}t.symbols={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega","true":"\\mathrm{True}","false":"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},t.operators={transpose:"^\\top",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",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%"+t.operators.dotDivide+"%1%\\right)",dotMultiply:"\\left(%0%"+t.operators.dotMultiply+"%1%\\right)",dotPow:"\\left(%0%"+t.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%"+t.operators.mod+"%1%\\right)",multiply:"\\left(%0%"+t.operators.multiply+"%1%\\right)",norm:{1:"\\left\\|%0%\\right\\|",2:i},nthRoot:"\\sqrt[%1%]{%0%}",pow:"\\left(%0%\\right)"+t.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%"+t.operators.subtract+"%1%\\right)",unaryMinus:t.operators.unaryMinus+"\\left(%0%\\right)",unaryPlus:t.operators.unaryPlus+"\\left(%0%\\right)",xgcd:i,bitAnd:"\\left(%0%"+t.operators.bitAnd+"%1%\\right)",bitOr:"\\left(%0%"+t.operators.bitOr+"%1%\\right)",bitXor:"\\left(%0%"+t.operators.bitXor+"%1%\\right)",bitNot:t.operators.bitNot+"\\left(%0%\\right)",leftShift:"\\left(%0%"+t.operators.leftShift+"%1%\\right)",rightArithShift:"\\left(%0%"+t.operators.rightArithShift+"%1%\\right)",rightLogShift:"\\left(%0%"+t.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)+"+t.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,sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(%0%\\right)"},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%"+t.operators.and+"%1%\\right)",not:t.operators.not+"\\left(%0%\\right)",or:"\\left(%0%"+t.operators.or+"%1%\\right)",xor:"\\left(%0%"+t.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)"+t.operators.transpose,zeros:i,combinations:"\\binom{%0%}{%1%}",distribution:i,factorial:"\\left(%0%\\right)"+t.operators.factorial,gamma:"\\Gamma\\left(%0%\\right)",permutations:i,pickRandom:i,randomInt:i,random:i,compare:i,deepEqual:i,equal:"\\left(%0%"+t.operators.equal+"%1%\\right)",largerEq:"\\left(%0%"+t.operators.largerEq+"%1%\\right)",larger:"\\left(%0%"+t.operators.larger+"%1%\\right)",smallerEq:"\\left(%0%"+t.operators.smallerEq+"%1%\\right)",smaller:"\\left(%0%"+t.operators.smaller+"%1%\\right)",unequal:"\\left(%0%"+t.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%"+t.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"};t.toSymbol=function(e){if(a.hasOwnProperty(e))return a[e];if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf("_")){var r=e.indexOf("_");return t.toSymbol(e.substring(0,r))+"_{"+t.toSymbol(e.substring(r+1))+"}"}return"\\mathrm{"+e+"}"},t.toFunction=function(e,t,r){var a=o[r],s=e.args.map(function(e){return e.toTex(t)});switch(typeof a){case"function":return a(e,t);case"string":return n(a,r,s);case"object":switch(typeof a[s.length]){case"function":return a[s.length](e,t);case"string":return n(a[s.length],r,s)}default:return n(i,r,s)}}},function(e,t,r){"use strict";function n(e){for(var t=e.getIdentifier(),r=0;rr&&!u?"Unexpected type of argument (expected: "+s.join(" or ")+", actual: "+a+", index: "+r+")":"Too few arguments (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments (expected: "+r+", actual: "+t+")";var f=new TypeError(o);return f.data=c,f}function r(e){this.name=e||"refs",this.categories={}}function n(e,t){if("string"==typeof e){var r=e.trim(),i="..."===r.substr(0,3);if(i&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var o=0;op)n[f]=c;else if(0===p)throw new Error('Signature "'+f+'" is defined twice')}else n[f]=c}}for(f in n)n.hasOwnProperty(f)&&o.push(n[f]);for(r=0;rr;r++)t[r]="arg"+r;return t}function f(e,n){var i=new r,o=a(n);if(0==o.length)throw new Error("No signatures provided");var f=u(o,[]),p=[],m=e||"",h=c(l(o));p.push("function "+m+"("+h.join(", ")+") {"),p.push(' "use strict";'),p.push(f.toCode(i," ")),p.push("}");var g=[i.toCode(),"return "+p.join("\n")].join("\n"),v=new Function(i.name,"createError",g),d=v(i,t);return d.signatures=s(o),d}function l(e){for(var t=0,r=0;rt&&(t=n)}return t}function p(e){for(var t in h)if(h.hasOwnProperty(t)&&"Object"!==t&&h[t](e))return t;return h.Object(e)?t:"unknown"}function m(e,t){return-1!==e.indexOf(t)}r.prototype.add=function(e,t){var r=t||"fn";this.categories[r]||(this.categories[r]=[]);var n=this.categories[r].indexOf(e);return-1==n&&(n=this.categories[r].length,this.categories[r].push(e)),r+n},r.prototype.toCode=function(){var e=[],t=this.name+".categories",r=this.categories;for(var n in r)if(r.hasOwnProperty(n))for(var i=r[n],o=0;o0},n.prototype.toString=function(e){for(var t=[],r={},n=0;nt.params.length)return 1;if(e.params.lengthr;r++)e.params[r].hasConversions()&&o++,t.params[r].hasConversions()&&a++;if(o>a)return 1;if(a>o)return-1;for(r=0;r "+o+") {"),i.push(r+" var varArgs = [];"),i.push(r+" for (var i = "+o+"; i < arguments.length; i++) {"),i.push(r+" varArgs.push(arguments[i]);"),i.push(r+" }"),i.push(this.signature.toCode(t,r+" ")),i.push(r+"}");else{for(var u=function(r,n){for(var i=new Array(r.length),o=0;o "+r+") {",t+" throw createError('', arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],o=0;og;g++){var v=f[g];n[v]!==o?(n[v]=o,p.push(v),i[v]=s(r,c[g])):i[v]=u(i[v],s(r,c[g]))}else for(var m=l[t],h=l[t+1],g=m;h>g;g++){var v=f[g];n[v]!==o&&(n[v]=o,p.push(v))}return p.length};return e}t.name="sparseScatter",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var i=n("multiplyScalar",{"number, number":function(e,t){return e*t},"Complex, Complex":function(t,r){return new e.Complex(t.re*r.re-t.im*r.im,t.re*r.im+t.im*r.re)},"BigNumber, BigNumber":function(e,t){return e.times(t)},"number, Unit":function(e,t){var r=t.clone();return r.value=null===r.value?r._normalize(e):r.value*e,r},"Unit, number":function(e,t){var r=e.clone();return r.value=null===r.value?r._normalize(t):r.value*t,r}});return i}t.name="multiplyScalar",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function i(t,r){var n=r.re*r.re+r.im*r.im;return 0!=n?new e.Complex((t.re*r.re+t.im*r.im)/n,(t.im*r.re-t.re*r.im)/n):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?t.im/0:0)}var o=n("divideScalar",{"number, number":function(e,t){return e/t},"Complex, Complex":i,"BigNumber, BigNumber":function(e,t){return e.div(t)},"Unit, number":function(e,t){var r=e.clone();return r.value=(null===r.value?r._normalize(1):r.value)/t,r}});return o}t.name="divideScalar",t.factory=n},function(e,t,r){"use strict";function n(e,r,n){var o,a,s=e.constructor,u=+(e.s<0),c=+(r.s<0);if(u){o=i(t.not(e));for(var f=0;f0;)n(l[--h],p[--g])==v&&(d=d.plus(y)),y=y.times(x);for(;g>0;)n(m,p[--g])==v&&(d=d.plus(y)),y=y.times(x);return s.config({precision:w}),0==v&&(d.s=-d.s),d}function i(e){for(var t=e.c,r=t[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,r){var n=r.precision,i=-(n+4),o=n+8-e.e,a=25-e.e,s=Math.max(1.442695*Math.log(n+2)|5,5);r.config({precision:a});var u=0,c=new r(Math.asin(e.toNumber())+"");do{var l=t.cos_sin_sec_csc(c,r,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),r.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 r.config({precision:n}),c.toDP(n-1)}function a(e,t){var r=e.constructor;r.config({precision:t+Math.log(t)|4});for(var n=new r(1),i=e,o=0/0,a=e.times(e),s=e,u=new r(n),c=new r(n),f=new r(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 r(l),i=i.plus(s.times(u).div(f.times(c)));return r.config({precision:t}),i.toDP(t-1)}function s(e){for(var t=e,r=0/0,n=e.times(e),i=e,o=!0,a=3;!t.equals(r);a+=2)i=i.times(n),r=t,o=!o,t=o?t.plus(i.div(a)):t.minus(i.div(a));return t}function u(e,t){for(var r=e.constructor.ONE,n=e,i=0/0,o=e.times(e),a=t?n:n=r,s=r,u=!0,c=t;!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,r,n){var i=t.pi(r+2),o=t.tau(r);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 t=e.constructor,r=t.precision;t.config({precision:r+2});var n=t.ONE.minus(e.times(e)).sqrt();return t.config({precision:r}),n.toDP(r-1)}var l=r(350),p=r(175).isNumber,m=r(175).digits,h=r(349).memoize;t.isBigNumber=function(e){return e instanceof l},t.toBigNumber=function(e,t){return new t(m(e)>15?e+"":e)},t.e=h(function(e){var t=l.constructor({precision:e});return new t(1).exp()}),t.phi=h(function(e){var t=l.constructor({precision:e});return new t(1).plus(new t(5).sqrt()).div(2)}),t.pi=h(function(e){var t=l.constructor({precision:e+4}),r=new t(4).times(s(new t(1).div(5))).minus(s(new t(1).div(239)));return t.config({precision:e}),new t(4).times(r)}),t.tau=h(function(e){var r=t.pi(e+2),n=l.constructor({precision:e});return new n(2).times(r)}),t.and=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitAnd");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(0/0);if(e.isZero()||t.eq(-1)||e.eq(t))return e;if(t.isZero()||e.eq(-1))return t;if(!e.isFinite()||!t.isFinite()){if(!e.isFinite()&&!t.isFinite())return e.isNegative()==t.isNegative()?e:new r(0);if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t;if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e}return n(e,t,function(e,t){return e&t})},t.leftShift=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function leftShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(0/0):e.isZero()||t.isZero()?e:e.isFinite()||t.isFinite()?e.times(t.lt(55)?Math.pow(2,t.toNumber())+"":new r(2).pow(t)):new r(0/0)},t.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});var e=e.plus(t.ONE);return e.s=-e.s||null,t.config({precision:r}),e},t.or=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitOr");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(0/0);var i=new r(-1);return e.isZero()||t.eq(i)||e.eq(t)?t:t.isZero()||e.eq(i)?e:e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e|t}):!e.isFinite()&&!e.isNegative()&&t.isNegative()||e.isNegative()&&!t.isNegative()&&!t.isFinite()?i:e.isNegative()&&t.isNegative()?e.isFinite()?e:t:e.isFinite()?t:e},t.rightArithShift=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(0/0):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():new r(e.isNegative()?-1:e.isFinite()?0:0/0)},t.xor=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Integers expected in function bitXor");var i=e.constructor;if(e.isNaN()||r.isNaN())return new i(0/0);if(e.isZero())return r;if(r.isZero())return e;if(e.eq(r))return new i(0);var o=new i(-1);return e.eq(o)?t.not(r):r.eq(o)?t.not(e):e.isFinite()&&r.isFinite()?n(e,r,function(e,t){return e^t}):e.isFinite()||r.isFinite()?new i(e.isNegative()==r.isNegative()?1/0:-(1/0)):o},t.arccos_arcsec=function(e,r,n){var i=r.precision;if(n){if(e.abs().lt(r.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(r.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return t.pi(i);r.config({precision:i+4}),n&&(e=r.ONE.div(e));var o=t.arctan_arccot(r.ONE.minus(e.times(e)).sqrt().div(e.plus(r.ONE)),r).times(2);return r.config({precision:i}),o.toDP(i-1)},t.arcsin_arccsc=function(e,r,n){if(e.isNaN())return new r(0/0);var i=r.precision,s=e.abs();if(n){if(s.lt(r.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");r.config({precision:i+2}),e=r.ONE.div(e),r.config({precision:i}),s=e.abs()}else if(s.gt(r.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(s.gt(.8)){r.config({precision:i+4});var u=e.s,c=t.pi(i+4).div(2);return e=c.minus(t.arcsin_arccsc(r.ONE.minus(e.times(e)).sqrt(),r)),e.s=u,e.constructor=r,r.config({precision:i}),e.toDP(i-1)}var f=s.gt(.58);f&&(r.config({precision:i+8}),e=e.div(new r(2).sqrt().times(r.ONE.minus(e.times(e)).sqrt().plus(r.ONE).sqrt())),r.config({precision:i}));var l=60>=i||e.dp()<=Math.log(i)&&e.lt(.05)?a(e,i):o(e,r);return f?l.times(2):l},t.arctan_arccot=function(e,r,n){if(e.isNaN())return new r(0/0);if(!n&&e.isZero()||n&&!e.isFinite())return new r(0);var i=r.precision;if(!n&&!e.isFinite()||n&&e.isZero()){var o=t.pi(i+2).div(2).toDP(i-1);return o.constructor=r,o.s=e.s,o}r.config({precision:i+4}),n&&(e=r.ONE.div(e));var a=e.abs();if(a.lte(.875)){var u=s(e);return u.constructor=r,r.config({precision:i}),u.toDP(r.precision-1)}if(a.gte(1.143)){var o=t.pi(i+4).div(2),u=o.minus(s(r.ONE.div(a)));return u.s=e.s,u.constructor=r,r.config({precision:i}),u.toDP(r.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),r.config({precision:i}),t.arcsin_arccsc(e,r)},t.arctan2=function(e,r,n){var i=n.precision;if(r.isZero()){if(e.isZero())return new n(0/0);var o=t.pi(i+2).div(2).toDP(i-1);return o.constructor=n,o.s=e.s,o}n.config({precision:i+2});var a=t.arctan_arccot(e.div(r),n,!1);if(r.isNegative()){var s=t.pi(i+2);a=e.isNegative()?a.minus(s):a.plus(s)}return a.constructor=n,n.config({precision:i}),a.toDP(i-1)},t.acosh_asinh_asech_acsch=function(e,t,r,n){if(e.isNaN())return new t(0/0);if(n&&e.isZero())return new t(1/0);if(!r)if(n){if(e.isNegative()||e.gt(t.ONE))throw new Error("asech() only has non-complex values for 0 <= x <= 1.")}else if(e.lt(t.ONE))throw new Error("acosh() only has non-complex values for x >= 1.");var i=t.precision;t.config({precision:i+4});var o=new t(e);o.constructor=t,n&&(o=t.ONE.div(o));var a=r?o.times(o).plus(t.ONE):o.times(o).minus(t.ONE),s=o.plus(a.sqrt()).ln();return t.config({precision:i}),new t(s.toPrecision(i))},t.atanh_acoth=function(e,t,r){if(e.isNaN())return new t(0/0);var n=e.abs();if(n.eq(t.ONE))return new t(e.isNegative()?-(1/0):1/0);if(n.gt(t.ONE)){if(!r)throw new Error("atanh() only has non-complex values for |x| <= 1.")}else if(r)throw new Error("acoth() has complex values for |x| < 1.");if(e.isZero())return new t(0);var i=t.precision;t.config({precision:i+4});var o=new t(e);o.constructor=t,r&&(o=t.ONE.div(o));var a=t.ONE.plus(o).div(t.ONE.minus(o)).ln().div(2);return t.config({precision:i}),new t(a.toPrecision(i))},t.cos_sin_sec_csc=function(e,t,r,n){if(e.isNaN()||!e.isFinite())return new t(0/0);var i=t.precision,o=new t(e),a=o.isNegative();a&&(o.s=-o.s);var s=i+(0|Math.log(i))+3;if(t.config({precision:s}),o=c(o,s,r),o[0].constructor=t,o[1])return o=o[0],n&&o.isZero()&&(o=new t(1/0)),t.config({precision:i}),o;var f;if(o=o[0],r){f=u(o.div(3125),r),t.config({precision:Math.min(s,i+15)});for(var l=new t(5),p=new t(16),m=new t(20),h=0;5>h;++h){var g=f.times(f),v=g.times(f),d=v.times(g);f=p.times(d).minus(m.times(v)).plus(l.times(f))}a&&(f.s=-f.s)}else{var y,x;o.abs().lt(t.ONE)?(y=64,x=3):(y=256,x=4),f=u(o.div(y),r),t.config({precision:Math.min(s,i+8)});for(var w=new t(8);x>0;--x){var g=f.times(f),b=g.times(g);f=w.times(b.minus(g)).plus(t.ONE)}}return n&&(f=f.e<=-i?new t(1/0):t.ONE.div(f)),t.config({precision:i}),f.toDP(i-1)},t.tan_cot=function(e,r,n){if(e.isNaN())return new r(0/0);var i=r.precision,o=t.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 r(1/0);r.config({precision:i+4});var u=t.cos_sin_sec_csc(s,r,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 r.config({precision:i}),new r(p.toPrecision(i))},t.cosh_sinh_csch_sech=function(e,t,r,n){if(e.isNaN())return new t(0/0);if(!e.isFinite())return new t(n?0:r?e:1/0);var i=t.precision;t.config({precision:i+4});var o=new t(e);return o.constructor=t,o=o.exp(),o=r?o.minus(t.ONE.div(o)):o.plus(t.ONE.div(o)),o=n?new t(2).div(o):o.div(2),t.config({precision:i}),new t(o.toPrecision(i))},t.tanh_coth=function(e,t,r){if(e.isNaN())return new t(0/0);if(!e.isFinite())return new t(e.s);var n=t.precision;t.config({precision:n+4});var i=new t(e);i.constructor=t;var o=i.exp(),a=t.ONE.div(o),s=o.minus(a);return s=r?o.plus(a).div(s):s.div(o.plus(a)),t.config({precision:n}),s.toDP(n-1)},t.format=function(e,r){if("function"==typeof r)return r(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==r&&(r.notation&&(n=r.notation),p(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"auto":var o=.001,a=1e5;r&&r.exponential&&(void 0!==r.exponential.lower&&(o=r.exponential.lower),void 0!==r.exponential.upper&&(a=r.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():t.toExponential(e,i),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.toExponential=function(e,t){return void 0!==t?e.toExponential(t-1):e.toExponential()},t.toFixed=function(e,t){return e.toFixed(t||0)}},function(e,t,r){"use strict";function n(e,r){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],r);return i+="]"}return t.format(e,r)}var i=r(175),o=r(213),a=r(350);t.isString=function(e){return e instanceof String||"string"==typeof e},t.endsWith=function(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t},t.format=function(e,r){return i.isNumber(e)?i.format(e,r):e instanceof a?o.format(e,r):Array.isArray(e)?n(e,r):t.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(r):e.toString():String(e)}},function(e,t,r){"use strict";function n(e,t,n,o){function a(t){if(!l.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r=Array.prototype.slice.call(arguments,1),n=l[t].apply(this,r);return function(t){var r={random:function(t,r,o){var s,c,l;if(arguments.length>3)throw new i("random",arguments.length,0,3);if(1===arguments.length?f(t)?s=t:l=t:2===arguments.length?f(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=o),void 0===l&&(l=1),void 0===c&&(c=0),void 0!==s){var p=a(s.valueOf(),c,l,n);return s instanceof e.Matrix?u(p):p}return n(c,l)},randomInt:function(t,r,n){var s,c,l;if(arguments.length>3||arguments.length<1)throw new i("randomInt",arguments.length,1,3);if(1===arguments.length?f(t)?s=t:l=t:2===arguments.length?f(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=n),void 0===c&&(c=0),void 0!==s){var p=a(s.valueOf(),c,l,o);return s instanceof e.Matrix?u(p):p}return o(c,l)},pickRandom:function(t){if(1!==arguments.length)throw new i("pickRandom",arguments.length,1);if(t instanceof e.Matrix)t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(c.size(t).length>1)throw new Error("Only one dimensional vectors supported");return t[Math.floor(Math.random()*t.length)]}},n=function(e,r){return e+t()*(r-e)},o=function(e,r){return Math.floor(e+t()*(r-e))},a=function(e,t,r,n){var i,o,s=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)s.push(a(e,t,r,n));else for(o=0,i=e.shift();i>o;o++)s.push(n(t,r));return s};return r}(n)}var s=n(r(2)),u=n(r(73)),c=r(172),f=s.isCollection,l={uniform:function(){return Math.random},normal:function(){return function(){for(var e,t,r=-1;0>r||r>1;)e=Math.random(),t=Math.random(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return a}var i=r(176);t.name="distribution",t.factory=n},function(e,t,r){"use strict";t.type=function(e){var t=typeof e;if("object"===t){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 t}},function(e,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){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,t,r){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,t,r){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,t,r){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,t,r){"use strict";function n(e,t,n,i){var o=n(r(73)),a=n(r(212)),s=n(r(47)),u=n(r(53)),c=n(r(113)),f=n(r(355)),l=e.SparseMatrix,p=e.DenseMatrix,m=i("backwardSubstitution",{"Matrix, Array | Matrix":function(e,t){switch(e.storage()){case"dense":return h(e,t);case"sparse":return g(e,t)}},"Array, Array | Matrix":function(e,t){var r=o(e),n=m(r,t);return n.valueOf()}}),h=function(e,t){t=f(e,t);for(var r=e._size[0],n=e._size[1],i=new Array(r),o=e._data,l=n-1;l>=0;l--){var m,h=t[l]||0;if(c(h,0))m=0;else{var g=o[l][l];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");m=a(h,g);for(var v=l-1;v>=0;v--)t[v]=u(t[v]||0,s(m,o[v][l]))}i[l]=[m]}return new p({data:i,size:[r,1]})},g=function(e,t){t=f(e,t);var r,n,i=e._size[0],o=e._size[1],p=e._values,m=e._index,h=e._ptr,g=[],v=[],d=[];d.push(0);for(var y=o-1;y>=0;y--){var x=t[y]||0;if(!c(x,0)){var w=0,b=h[y],N=h[y+1];for(n=N-1;n>=b;n--)if(r=m[n],r===y)w=p[n];else if(y>r)break;if(c(w,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var E=a(x,w);n>=b;n--)r=m[n],t[r]=u(t[r]||0,s(E,p[n]));c(E,0)||(g.unshift(E),v.unshift(y))}}return d.push(g.length),new l({values:g,index:v,ptr:d,size:[i,1]})};return m}t.name="backwardSubstitution",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(73)),a=n(r(212)),s=n(r(47)),u=n(r(53)),c=n(r(113)),f=n(r(355)),l=e.SparseMatrix,p=e.DenseMatrix,m=i("forwardSubstitution",{"Matrix, Array | Matrix":function(e,t){switch(e.storage()){case"dense":return h(e,t);case"sparse":return g(e,t)}},"Array, Array | Matrix":function(e,t){var r=o(e),n=m(r,t);return n.valueOf(); + +}}),h=function(e,t){t=f(e,t);for(var r=e._size[0],n=e._size[1],i=new Array(r),o=e._data,l=0;n>l;l++){var m,h=t[l]||0;if(c(h,0))m=0;else{var g=o[l][l];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");m=a(h,g);for(var v=l+1;r>v;v++)t[v]=u(t[v]||0,s(m,o[v][l]))}i[l]=[m]}return new p({data:i,size:[r,1]})},g=function(e,t){t=f(e,t);var r,n,i=e._size[0],o=e._size[1],p=e._values,m=e._index,h=e._ptr,g=[],v=[],d=[];d.push(0);for(var y=0;o>y;y++){var x=t[y]||0;if(!c(x,0)){var w=0,b=h[y+1];for(n=h[y];b>n;n++)if(r=m[n],r===y)w=p[n];else if(r>y)break;if(c(w,0))throw new Error("Linear system cannot be solved since matrix is singular");for(var N=a(x,w);b>n;n++)r=m[n],t[r]=u(t[r]||0,s(N,p[n]));c(N,0)||(g.push(N),v.push(y))}}return d.push(g.length),new l({values:g,index:v,ptr:d,size:[i,1]})};return m}t.name="forwardSubstitution",t.factory=n},function(e,t,r){function n(e){return r(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":153,"./clone.js":153,"./config":154,"./config.js":154,"./filter":155,"./filter.js":155,"./forEach":161,"./forEach.js":161,"./format":156,"./format.js":156,"./import":169,"./import.js":169,"./map":157,"./map.js":157,"./print":158,"./print.js":158,"./sort":159,"./sort.js":159,"./typeof":160,"./typeof.js":160};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=346},function(e,t,r){"use strict";function n(e,t){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,t,r){e.exports="2.0.0-SNAPSHOT"},function(e,t,r){t.memoize=function(e){return function t(){"object"!=typeof t.cache&&(t.cache={});var r=JSON.stringify(arguments);return r in t.cache?t.cache[r]:t.cache[r]=e.apply(e,arguments)}}},function(e,t,r){var n;!function(i){"use strict";function o(e){for(var t,r,n=1,i=e.length,o=e[0]+"";i>n;n++){for(t=e[n]+"",r=_-t.length;r--;)t="0"+t;o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,t,r,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=t-o,0>a?(a+=_,i=0):(i=Math.ceil((a+1)/_),a%=_),o=E(10,_-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>r&&99999==u||r>3&&49999==u||5e4==u||0==u):s=(4>r&&u+1==o||r>3&&u+1==o/2)&&(e[i+1]/o/100|0)==E(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>r)&&9999==u||!n&&r>3&&4999==u):s=((n||4>r)&&u+1==o||!n&&r>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==E(10,a-3)-1,s}function s(e,t,r){var n=e.constructor;return null==t||((y=0>t||t>8)||0!==t&&(n.errors?parseInt:parseFloat)(t)!=t)&&!p(n,"rounding mode",t,r,0)?n.rounding:0|t}function u(e,t,r,n){var i=e.constructor;return!(y=(n||0)>t||t>=z+1)&&(0===t||(i.errors?parseInt:parseFloat)(t)==t)||p(i,"argument",t,r,0)}function c(e,t){var r,n,i,s,u,c,f,l=0,p=0,m=0,h=e.constructor,v=h.ONE,d=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:v:e.s?e.s<0?0:e:0/0);for(null==t?(w=!1,u=y):u=t,f=new h(.03125);e.e>-2;)e=e.times(f),m+=5;for(n=Math.log(E(2,m))/Math.LN10*2+5|0,u+=n,r=s=c=new h(v),h.precision=u;;){if(s=g(s.times(e),u,1),r=r.times(++p),f=c.plus(I(s,r,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!=t)return h.precision=y,c;if(!(3>l&&a(c.c,u-n,d,l)))return g(c,h.precision=y,d,w=!0);h.precision=u+=10,r=s=f=new h(v),p=0,l++}c=f}}function f(e,t,r,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==t?r=0:(g(e,++t,r),r=n?t:t+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=t||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=r-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=r-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=r-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 t=e.length-1,r=t*_+1;if(t=e[t]){for(;t%10==0;t/=10,r--);for(t=e[0];t>=10;t/=10,r++);}return r}function p(e,t,r,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"][t]||t+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+r);throw o.name="Decimal Error",y=b=0,o}}function m(e,t,r){var n=new e(e.ONE);for(w=!1;1&r&&(n=n.times(t)),r>>=1,r;)t=t.times(t);return w=!0,n}function h(e,t){var r,n,i,s,u,c,f,l,m,v,d,y=1,x=10,b=e,N=b.c,E=b.constructor,M=E.ONE,A=E.rounding,_=E.precision;if(b.s<0||!N||!N[0]||!b.e&&1==N[0]&&1==N.length)return new E(N&&!N[0]?-1/0:1!=b.s?0/0:N?0:b);if(null==t?(w=!1,f=_):f=t,E.precision=f+=x,r=o(N),n=r.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new E(n+"."+r.slice(1)),f+2>B.length&&p(E,1,f+2,"ln"),b=h(b,f-x).plus(new E(B.slice(0,f+2)).times(s+"")),E.precision=_,null==t?g(b,_,A,w=!0):b;for(;7>n&&1!=n||1==n&&r.charAt(1)>3;)b=b.times(e),r=o(b.c),n=r.charAt(0),y++;for(s=b.e,n>1?(b=new E("0."+r),s++):b=new E(n+"."+r.slice(1)),v=b,l=u=b=I(b.minus(M),b.plus(M),f,1),d=g(b.times(b),f,1),i=3;;){if(u=g(u.times(d),f,1),m=l.plus(I(u,new E(i),f,1)),o(m.c).slice(0,f)===o(l.c).slice(0,f)){if(l=l.times(2),0!==s&&(f+2>B.length&&p(E,1,f+2,"ln"),l=l.plus(new E(B.slice(0,f+2)).times(s+""))),l=I(l,new E(y),f,1),null!=t)return E.precision=_,l;if(!a(l.c,f-x,A,c))return g(l,E.precision=_,A,w=!0);E.precision=f+=x,m=u=b=I(v.minus(M),v.plus(M),f,1),d=g(b.times(b),f,1),i=c=1}l=m,i+=2}}function g(e,t,r,n){var i,o,a,s,u,c,f,l,p=e.constructor;e:if(null!=t){if(!(f=e.c))return e;for(i=1,s=f[0];s>=10;s/=10,i++);if(o=t-i,0>o)o+=_,a=t,u=f[l=0],c=u/E(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/_),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,o%=_,a=o-_+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);o%=_,a=o-_+i,c=0>a?0:N(u/E(10,i-a-1)%10)}if(n=n||0>t||null!=f[l+1]||(0>a?u:u%E(10,i-a-1)),n=4>r?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(o>0?a>0?u/E(10,i-a):0:f[l-1])%10&1||r==(e.s<0?8:7)),1>t||!f[0])return f.length=0,n?(t-=e.e+1,f[0]=E(10,t%_),e.e=-t||0):f[0]=e.e=0,e;if(0==o?(f.length=l,s=1,l--):(f.length=l+1,s=E(10,_-o),f[l]=a>0?(u/E(10,i-a)%E(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]==A&&(f[0]=1));break}if(f[l]+=s,f[l]!=A)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^r?1:-1;if(u!=c)return u>c^r?1:-1;for(a=-1,s=(u=i.length)<(c=o.length)?u:c;++ao[a]^r?1:-1;return u==c?0:u>c^r?1:-1},C.decimalPlaces=C.dp=function(){var e,t,r=null;if(e=this.c){if(r=((t=e.length-1)-N(this.e/_))*_,t=e[t])for(;t%10==0;t/=10,r--);0>r&&(r=0)}return r},C.dividedBy=C.div=function(e,t){return b=2,I(this,new this.constructor(e,t))},C.dividedToIntegerBy=C.divToInt=function(e,t){var r=this,n=r.constructor;return b=18,g(I(r,new n(e,t),0,1,1),n.precision,n.rounding)},C.equals=C.eq=function(e,t){return b=3,0===this.cmp(e,t)},C.exponential=C.exp=function(){return c(this)},C.floor=function(){return g(new this.constructor(this),this.e+1,3)},C.greaterThan=C.gt=function(e,t){return b=4,this.cmp(e,t)>0},C.greaterThanOrEqualTo=C.gte=function(e,t){return b=5,t=this.cmp(e,t),1==t||0===t},C.isFinite=function(){return!!this.c},C.isInteger=C.isInt=function(){return!!this.c&&N(this.e/_)>this.c.length-2},C.isNaN=function(){return!this.s},C.isNegative=C.isNeg=function(){return this.s<0},C.isZero=function(){return!!this.c&&0==this.c[0]},C.lessThan=C.lt=function(e,t){return b=6,this.cmp(e,t)<0},C.lessThanOrEqualTo=C.lte=function(e,t){return b=7,t=this.cmp(e,t),-1==t||0===t},C.logarithm=C.log=function(e,t){var r,n,i,s,u,c,f,l,m,v=this,d=v.constructor,y=d.precision,x=d.rounding,N=5;if(null==e)e=new d(10),r=!0;else{if(b=15,e=new d(e,t),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new d(0/0);r=e.eq(10)}if(n=v.c,v.s<0||!n||!n[0]||!v.e&&1==n[0]&&1==n.length)return new d(n&&!n[0]?-1/0:1!=v.s?0/0:n?0:1/0);if(u=r&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),w=!1,f=y+N,l=f+10,c=h(v,f),r?(l>B.length&&p(d,1,l,"log"),i=new d(B.slice(0,l))):i=h(e,f),m=I(c,i,f,1),a(m.c,s=y,x))do if(f+=10,c=h(v,f),r?(l=f+10,l>B.length&&p(d,1,l,"log"),i=new d(B.slice(0,l))):i=h(e,f),m=I(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)},C.minus=function(e,t){var r,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,t),t=e.s,!u||!t)return new s(0/0);if(u!=t)return e.s=-t,a.plus(e);var c=a.c,f=e.c,l=N(e.e/_),p=N(a.e/_),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-t,e):new s(f?a:0/0);if(!c[0]||!f[0])return a=f[0]?(e.s=-t,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,r=c,n=f.length):(l=p,r=f),(p=Math.ceil(m/_))>n&&(n=p),u>(n+=2)&&(u=n,r.length=1),r.reverse(),t=u;t--;r.push(0));r.reverse()}else for((o=n<(i=f.length))&&(i=n),u=t=0;i>t;t++)if(c[t]!=f[t]){o=c[t]0)for(;t--;c[i++]=0);for(p=A-1,t=f.length;t>u;){if(c[--t]=10;t/=10,u++);return e.e=u+l*_-1,w?g(e,m,h):e},C.modulo=C.mod=function(e,t){var r,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,t),t=e.s,r=!i.c||!t||e.c&&!e.c[0],r||!e.c||i.c&&!i.c[0]?r?new o(0/0):g(new o(i),o.precision,o.rounding):(w=!1,9==a?(e.s=1,n=I(i,e,0,3,1),e.s=t,n.s*=t):n=I(i,e,0,a,1),n=n.times(e),w=!0,i.minus(n))},C.naturalLogarithm=C.ln=function(){return h(this)},C.negated=C.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},C.plus=function(e,t){var r,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,t),t=e.s,!o||!t)return new i(0/0);if(o!=t)return e.s=-t,n.minus(e);var a=n.c,s=e.c,u=N(e.e/_),c=N(n.e/_),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,r=a,t=s.length):(u=c,r=s,t=a.length),(c=Math.ceil(f/_))>t&&(t=c),o>++t&&(o=t,r.length=1),r.reverse();o--;r.push(0));r.reverse()}for(a.length-s.length<0&&(r=s,s=a,a=r),o=s.length,t=0,c=A;o;a[o]%=c)t=(a[--o]=a[o]+s[o]+t)/c|0;for(t&&(a.unshift(t),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,t=a[0];t>=10;t/=10,o++);return e.e=o+u*_-1,w?g(e,f,l):e},C.precision=C.sd=function(e){var t=null,r=this;return e!=t&&e!==!!e&&1!==e&&0!==e&&p(r.constructor,"argument",e,"precision",1),r.c&&(t=l(r.c),e&&r.e+1>t&&(t=r.e+1)),t},C.round=function(){var e=this,t=e.constructor;return g(new t(e),e.e+1,t.rounding)},C.squareRoot=C.sqrt=function(){var e,t,r,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?(t=o(u),(t.length+f)%2==0&&(t+="0"),c=Math.sqrt(t),f=N((f+1)/2)-(0>f||f%2),c==1/0?t="1e"+f:(t=c.toExponential(),t=t.slice(0,t.indexOf("e")+1)+f),n=new l(t)):n=new l(c.toString()),r=(f=l.precision)+3;;)if(a=n,n=p.times(a.plus(I(s,a,r+2,1))),o(a.c).slice(0,r)===(t=o(n.c)).slice(0,r)){if(t=t.slice(r-3,r+1),"9999"!=t&&(i||"4999"!=t)){(!+t||!+t.slice(1)&&"5"==t.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}r+=4,i=1}return w=!0,g(n,f,l.rounding,e)},C.times=function(e,t){var r,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,t),e.c),u=N(i.e/_),c=N(e.e/_),f=i.s;if(t=e.s,e.s=f==t?1:-1,!((u||a&&a[0])&&(c||s&&s[0])))return new o(!f||!t||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,t=s.length,t>f&&(r=a,a=s,s=r,c=f,f=t,t=c),c=f+t,r=[];c--;r.push(0));for(u=t-1;u>-1;u--){for(t=0,c=f+u;c>u;)t=r[c]+s[u]*a[c-u-1]+t,r[c--]=t%A|0,t=t/A|0;r[c]=(r[c]+t)%A|0}for(t?++n:r[0]||r.shift(),c=r.length;!r[--c];r.pop());for(e.c=r,f=1,t=r[0];t>=10;t/=10,f++);return e.e=f+n*_-1,w?g(e,o.precision,o.rounding):e},C.toDecimalPlaces=C.toDP=function(e,t){var r=this;return r=new r.constructor(r),null!=e&&u(r,e,"toDP")?g(r,(0|e)+r.e+1,s(r,t,"toDP")):r},C.toExponential=function(e,t){var r=this;return r.c?f(r,null!=e&&u(r,e,"toExponential")?0|e:null,null!=e&&s(r,t,"toExponential"),1):r.toString()},C.toFixed=function(e,t){var r,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,r="toFixed")?n.e+(0|e):null,t=s(n,t,r)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(r=f(n,e,t),n.s<0&&n.c&&(n.c[0]?r.indexOf("-")<0&&(r="-"+r):r=r.replace("-",""))):r=n.toString(),i.toExpNeg=o,i.toExpPos=a,r},C.toFormat=function(e,t){var r=this;if(!r.c)return r.toString();var n,i=r.s<0,o=r.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,c=r.toFixed(e,t).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},C.toFraction=function(e){var t,r,n,i,a,s,u,c,f=this,m=f.constructor,h=t=new m(m.ONE),g=s=new m(0),v=f.c,d=new m(g);if(!v)return f.toString();for(n=d.e=l(v)-f.e-1,d.c[0]=E(10,(u=n%_)<0?_+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&N(a.e/_)0)&&(e=n>0?d:h),w=!1,a=new m(o(v)),u=m.precision,m.precision=n=v.length*_*2;c=I(a,d,0,1,1),r=t.plus(c.times(g)),1!=r.cmp(e);)t=g,g=r,h=s.plus(c.times(r=h)),s=r,d=a.minus(c.times(r=d)),a=r;return r=I(e.minus(t),g,0,1,1),s=s.plus(r.times(h)),t=t.plus(r.times(g)),s.s=h.s=f.s,i=I(h,g,n,1).minus(f).abs().cmp(I(s,t,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",t+""],w=!0,m.precision=u,i},C.toNearest=function(e,t){var r=this,n=r.constructor;return r=new n(r),null==e?(e=new n(n.ONE),t=n.rounding):(b=17,e=new n(e),t=s(r,t,"toNearest")),e.c?r.c&&(e.c[0]?(w=!1,r=I(r,e,0,4>t?[4,5,7,8][t]:t,1).times(e),w=!0,g(r)):r.c=[r.e=0]):r.s&&(e.s&&(e.s=r.s),r=e),r},C.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},C.toPower=C.pow=function(e,t){var r,n,i,s,u=this,f=u.constructor,l=u.s,p=(b=13,+(e=new f(e,t))),v=0>p?-p:p,d=f.precision,y=f.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new f(E(i?0*l:+u,p));if(u=new f(u),r=u.c.length,!u.e&&u.c[0]==u.s&&1==r)return u;if(t=e.c.length-1,e.e||e.c[0]!=e.s||t)if(n=N(e.e/_),i=n>=t,!i&&0>l)s=new f(0/0);else{if(i&&T>r*_*v){if(s=m(f,u,v),e.s<0)return f.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,t)]?-1:1,t=E(+u,p),n=0!=t&&isFinite(t)?new f(t+"").e:N(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,v=Math.min(12,(n+"").length),s=c(e.times(h(u,d+v)),d),s=g(s,d+5,1),a(s.c,d,y)&&(n=d+10,s=g(c(e.times(h(u,n+v)),n),n+5,1),+o(s.c).slice(d+1,d+15)+1==1e14&&(s=g(s,d+1,0))),s.s=l,w=!0,f.rounding=y}s=g(s,d,y)}else s=g(u,d,y);return s},C.toPrecision=function(e,t){var r=this;return null!=e&&u(r,e,"toPrecision",1)&&r.c?f(r,0|--e,s(r,t,"toPrecision"),2):r.toString()},C.toSignificantDigits=C.toSD=function(e,t){var r=this,n=r.constructor;return r=new n(r),null!=e&&u(r,e,"toSD",1)?g(r,0|e,s(r,t,"toSD")):g(r,n.precision,n.rounding)},C.toString=function(e){var t,r,n,i=this,a=i.constructor,s=i.e;if(null===s)r=i.s?"Infinity":"NaN";else{if(e===t&&(s<=a.toExpNeg||s>=a.toExpPos))return f(i,null,a.rounding,1);if(r=o(i.c),0>s){for(;++s;r="0"+r);r="0."+r}else if(n=r.length,s>0)if(++s>n)for(s-=n;s--;r+="0");else n>s&&(r=r.slice(0,s)+"."+r.slice(s));else if(t=r.charAt(0),n>1)r=t+"."+r.slice(1);else if("0"==t)return t;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(r=v(a,r,0|e,10,i.s),"0"==r)return r}return i.s<0?"-"+r:r},C.truncated=C.trunc=function(){return g(new this.constructor(this),this.e+1,1)},C.valueOf=C.toJSON=function(){return this.toString()},v=function(){function e(e,t,r){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=t);for(o[n=0]+=O.indexOf(e.charAt(a++));nr-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/r|0,o[n]%=r)}return o.reverse()}return function(t,r,n,i,o){var a,s,u,c,f,l,p=r.indexOf("."),h=t.precision,g=t.rounding;for(37>i&&(r=r.toLowerCase()),p>=0&&(r=r.replace(".",""),l=new t(i),c=m(t,l,r.length-p),l.c=e(c.toFixed(),10,n),l.e=l.c.length),f=e(r,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=I(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,r="";s>=p;r+=O.charAt(f[p++]));if(0>a){for(;++a;r="0"+r);r="0."+r}else if(p=r.length,++a>p)for(a-=p;a--;r+="0");else p>a&&(r=r.slice(0,a)+"."+r.slice(a));return r}}();var I=function(){function e(e,t,r){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*t+i,e[o]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,o;if(r!=n)o=r>n?1:-1;else for(i=o=0;r>i;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.shift());}return function(n,i,o,a,s,u){var c,f,l,p,m,h,v,d,y,x,w,b,E,M,O,C,S,z,T,B=n.constructor,I=n.s==i.s?1:-1,q=n.c,P=i.c;if(!(q&&q[0]&&P&&P[0]))return new B(n.s&&i.s&&(q?!P||q[0]!=P[0]:P)?q&&0==q[0]||!P?0*I:I/0:0/0);for(u?(p=1,f=n.e-i.e):(u=A,p=_,f=N(n.e/p)-N(i.e/p)),z=P.length,C=q.length,y=new B(I),x=y.c=[],l=0;P[l]==(q[l]||0);l++);if(P[l]>(q[l]||0)&&f--,null==o?(I=o=B.precision,a=B.rounding):I=s?o+(n.e-i.e)+1:o,0>I)x.push(1),m=!0;else{if(I=I/p+2|0,l=0,1==z){for(h=0,P=P[0],I++;(C>l||h)&&I--;l++)M=h*u+(q[l]||0),x[l]=M/P|0,h=M%P|0;m=h||C>l}else{for(h=u/(P[0]+1)|0,h>1&&(P=e(P,h,u),q=e(q,h,u),z=P.length,C=q.length),O=z,w=q.slice(0,z),b=w.length;z>b;w[b++]=0);T=P.slice(),T.unshift(0),S=P[0],P[1]>=u/2&&S++;do h=0,c=t(P,w,z,b),0>c?(E=w[0],z!=b&&(E=E*u+(w[1]||0)),h=E/S|0,h>1?(h>=u&&(h=u-1),v=e(P,h,u),d=v.length,b=w.length,c=t(v,w,d,b),1==c&&(h--,r(v,d>z?T:P,d,u))):(0==h&&(c=h=1),v=P.slice()),d=v.length,b>d&&v.unshift(0),r(w,v,b,u),-1==c&&(b=w.length,c=t(P,w,z,b),1>c&&(h++,r(w,b>z?T:P,b,u))),b=w.length):0===c&&(h++,w=[0]),x[l++]=h,c&&w[0]?w[b++]=q[O]||0:(w=[q[O]],b=1);while((O++=10;I/=10,l++);y.e=l+f*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();d=function(){function e(e){var t,r,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==r||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[t="precision"])!=r&&((y=1>n||n>z)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(n=e[t="rounding"])!=r&&((y=0>n||n>8)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(n=e[t="toExpNeg"])!=r&&((y=-S>n||n>0)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="toExpPos"])!=r&&((y=0>n||n>S)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="minE"])!=r&&((y=-S>n||n>0)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="maxE"])!=r&&((y=0>n||n>S)||a(n)!=n?p(i,t,n,o,0):i[t]=N(n)),(n=e[t="errors"])!=r&&(n===!!n||1===n||0===n?(y=b=0,i[t]=!!n):p(i,t,n,o,1)),(n=e[t="crypto"])!=r&&(n===!!n||1===n||0===n?i[t]=!(!n||!x||"object"!=typeof x):p(i,t,n,o,1)),(n=e[t="modulo"])!=r&&((y=0>n||n>9)||a(n)!=n?p(i,t,n,o,0):i[t]=0|n),(e=e[t="format"])!=r&&("object"==typeof e?i[t]=e:p(i,"format object expected",e,o)),i)}function t(e){return new this(e).exp()}function r(e){return new this(e).ln()}function n(e,t){return new this(e).log(t)}function i(e,t,r){var n,i,o=0;for("[object Array]"==M.call(t[0])&&(t=t[0]),n=new e(t[0]);++oi;)n=t[i],n>=429e7?t[i]=x.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(x&&x.randomBytes){for(t=x.randomBytes(r*=4);r>i;)n=t[i]+(t[i+1]<<8)+(t[i+2]<<16)+((127&t[i+3])<<24),n>=214e7?x.randomBytes(4).copy(t,i):(o.push(n%1e7),i+=4);i=r/4}else p(a,"crypto unavailable",x,"random");if(!i)for(;r>i;)o[i++]=1e7*Math.random()|0;for(r=o[--i],e%=_,r&&e&&(n=E(10,_-e),o[i]=(r/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[r=0];else{for(r=-1;0===o[0];)o.shift(),r-=_;for(i=1,n=o[0];n>=10;)n/=10,i++;_>i&&(r-=_-i)}return s.e=r,s.c=o,s}function f(e){return new this(e).sqrt()}function l(i){function u(e,t){var r=this;if(!(r instanceof u))return p(u,"Decimal called without new",e),new u(e,t);if(r.constructor=u,e instanceof u){if(null==t)return b=0,r.s=e.s,r.e=e.e,r.c=(e=e.c)?e.slice():e,r;if(10==t)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,r,e,t)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-S,u.maxE=S,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=C,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=t,u.ln=r,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,t=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(r,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 r(i),r.precision,r.rounding);if(i=t.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&r.errors||(y=!(o>=2&&65>o))?(p(r,"base",o,0,0),l=e.test(i)):(a="["+O.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(r,0,f),c=!c),i=v(r,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(r,"not a base "+o+" number",f),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(r,"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(r,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%_,0>s&&(u+=_),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=_;o>u;)n.c.push(+i.slice(u,u+=_));i=i.slice(u),u=_-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),w&&(n.e>r.maxE?n.c=n.e=null:n.er;r++)t.push(0);return t}n.prototype.toFixed=function(e){var t=this.roundDigits(this.exponent+1+(e||0)),r=t.coefficients,n=t.exponent+1,o=n+(e||0);return r.lengthn&&(r=i(-n+1).concat(r),n=1),e&&r.splice(n,0,0===n?"0.":"."),this.sign+r.join("")},n.prototype.toExponential=function(e){var t=e?this.roundDigits(e):this.clone(),r=t.coefficients,n=t.exponent;r.length0?"."+r.join(""):"")+"e"+(n>=0?"+":"")+n},n.prototype.toPrecision=function(e,t){var r=t&&void 0!==t.lower?t.lower:.001,n=t&&void 0!==t.upper?t.upper:1e5,o=Math.abs(Math.pow(10,this.exponent));if(r>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;)r.unshift(0),t.exponent++,e++;if(r.length>e){var n=r.splice(e);if(n[0]>=5){var i=e-1;for(r[i]++;10===r[i];)r.pop(),0===i&&(r.unshift(0),t.exponent++,i++),i--,r[i]++}}return t},e.exports=n},function(e,t,r){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";function n(e,t,r){return e=e.replace(/%name%/g,t),r.forEach(function(t,r){e=e.replace(RegExp("%"+r+"%","g"),t)}),e=e.replace("%*%",r.map(function(e){return e}).join(",")),e=e.replace("%%","%")}t.symbols={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega","true":"\\mathrm{True}","false":"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"},t.operators={transpose:"^\\top",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",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%"+t.operators.dotDivide+"%1%\\right)",dotMultiply:"\\left(%0%"+t.operators.dotMultiply+"%1%\\right)",dotPow:"\\left(%0%"+t.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%"+t.operators.mod+"%1%\\right)",multiply:"\\left(%0%"+t.operators.multiply+"%1%\\right)",norm:{1:"\\left\\|%0%\\right\\|",2:i},nthRoot:"\\sqrt[%1%]{%0%}",pow:"\\left(%0%\\right)"+t.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%"+t.operators.subtract+"%1%\\right)",unaryMinus:t.operators.unaryMinus+"\\left(%0%\\right)",unaryPlus:t.operators.unaryPlus+"\\left(%0%\\right)",xgcd:i,bitAnd:"\\left(%0%"+t.operators.bitAnd+"%1%\\right)",bitOr:"\\left(%0%"+t.operators.bitOr+"%1%\\right)",bitXor:"\\left(%0%"+t.operators.bitXor+"%1%\\right)",bitNot:t.operators.bitNot+"\\left(%0%\\right)",leftShift:"\\left(%0%"+t.operators.leftShift+"%1%\\right)",rightArithShift:"\\left(%0%"+t.operators.rightArithShift+"%1%\\right)",rightLogShift:"\\left(%0%"+t.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)+"+t.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,sparse:{0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(%0%\\right)"},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%"+t.operators.and+"%1%\\right)",not:t.operators.not+"\\left(%0%\\right)",or:"\\left(%0%"+t.operators.or+"%1%\\right)",xor:"\\left(%0%"+t.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)"+t.operators.transpose,zeros:i,combinations:"\\binom{%0%}{%1%}",distribution:i,factorial:"\\left(%0%\\right)"+t.operators.factorial,gamma:"\\Gamma\\left(%0%\\right)",permutations:i,pickRandom:i,randomInt:i,random:i,compare:i,deepEqual:i,equal:"\\left(%0%"+t.operators.equal+"%1%\\right)",largerEq:"\\left(%0%"+t.operators.largerEq+"%1%\\right)",larger:"\\left(%0%"+t.operators.larger+"%1%\\right)",smallerEq:"\\left(%0%"+t.operators.smallerEq+"%1%\\right)",smaller:"\\left(%0%"+t.operators.smaller+"%1%\\right)",unequal:"\\left(%0%"+t.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%"+t.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"};t.toSymbol=function(e){if(a.hasOwnProperty(e))return a[e];if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf("_")){var r=e.indexOf("_");return t.toSymbol(e.substring(0,r))+"_{"+t.toSymbol(e.substring(r+1))+"}"}return"\\mathrm{"+e+"}"},t.toFunction=function(e,t,r){var a=o[r],s=e.args.map(function(e){return e.toTex(t)});switch(typeof a){case"function":return a(e,t);case"string":return n(a,r,s);case"object":switch(typeof a[s.length]){case"function":return a[s.length](e,t);case"string":return n(a[s.length],r,s)}default:return n(i,r,s)}}},function(e,t,r){"use strict";function n(e){for(var t=e.getIdentifier(),r=0;rr&&!u?"Unexpected type of argument (expected: "+s.join(" or ")+", actual: "+a+", index: "+r+")":"Too few arguments (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments (expected: "+r+", actual: "+t+")";var f=new TypeError(o);return f.data=c,f}function r(e){this.name=e||"refs",this.categories={}}function n(e,t){if("string"==typeof e){var r=e.trim(),i="..."===r.substr(0,3);if(i&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var o=0;op)n[f]=c;else if(0===p)throw new Error('Signature "'+f+'" is defined twice')}else n[f]=c}}for(f in n)n.hasOwnProperty(f)&&o.push(n[f]);for(r=0;rr;r++)t[r]="arg"+r;return t}function f(e,n){var i=new r,o=a(n);if(0==o.length)throw new Error("No signatures provided");var f=u(o,[]),p=[],m=e||"",h=c(l(o));p.push("function "+m+"("+h.join(", ")+") {"),p.push(' "use strict";'),p.push(f.toCode(i," ")),p.push("}");var g=[i.toCode(),"return "+p.join("\n")].join("\n"),v=new Function(i.name,"createError",g),d=v(i,t);return d.signatures=s(o),d}function l(e){for(var t=0,r=0;rt&&(t=n)}return t}function p(e){for(var t in h)if(h.hasOwnProperty(t)&&"Object"!==t&&h[t](e))return t;return h.Object(e)?t:"unknown"}function m(e,t){return-1!==e.indexOf(t)}r.prototype.add=function(e,t){var r=t||"fn";this.categories[r]||(this.categories[r]=[]);var n=this.categories[r].indexOf(e);return-1==n&&(n=this.categories[r].length,this.categories[r].push(e)),r+n},r.prototype.toCode=function(){var e=[],t=this.name+".categories",r=this.categories;for(var n in r)if(r.hasOwnProperty(n))for(var i=r[n],o=0;o0},n.prototype.toString=function(e){for(var t=[],r={},n=0;nt.params.length)return 1;if(e.params.lengthr;r++)e.params[r].hasConversions()&&o++,t.params[r].hasConversions()&&a++;if(o>a)return 1;if(a>o)return-1;for(r=0;r "+o+") {"),i.push(r+" var varArgs = [];"),i.push(r+" for (var i = "+o+"; i < arguments.length; i++) {"),i.push(r+" varArgs.push(arguments[i]);"),i.push(r+" }"),i.push(this.signature.toCode(t,r+" ")),i.push(r+"}");else{for(var u=function(r,n){for(var i=new Array(r.length),o=0;o "+r+") {",t+" throw createError('', arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],o=0;o