From 5911fe6ffd7c44bf9173cd00a8652d87d547ca12 Mon Sep 17 00:00:00 2001 From: jos Date: Fri, 8 Jan 2016 20:23:52 +0100 Subject: [PATCH] Released version 2.6.0 --- .travis.yml | 3 +- HISTORY.md | 4 +- NOTICE | 2 +- README.md | 2 +- bin/cli.js | 2 +- bower.json | 2 +- component.json | 2 +- dist/math.js | 16442 +++++++++++++++++++++++---------------------- dist/math.map | 2 +- dist/math.min.js | 34 +- lib/header.js | 2 +- lib/version.js | 2 +- package.json | 2 +- 13 files changed, 8345 insertions(+), 8156 deletions(-) diff --git a/.travis.yml b/.travis.yml index e8d87eb55..937771aa6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,5 @@ node_js: - 0.10 - 0.12 - 4.0 - - 4.1 + - 4.2 + - 5.4 diff --git a/HISTORY.md b/HISTORY.md index 776e4f61d..8c0c63f8f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,11 +1,11 @@ # History -## not yet released, version 2.6.0 +## 2016-01-08, version 2.6.0 - Implemented (complex) units `VA` and `VAR`. - Implemented time units for weeks, months, years, decades, centuries, and -- millennia. Thanks @owenversteeg. + millennia. Thanks @owenversteeg. - Implemented new notation `engineering` in function `math.format`. Thanks @johnmarinelli. - Fixed #523: In some circumstances, matrix subset returned a scalar instead diff --git a/NOTICE b/NOTICE index c546c225e..570f24531 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,7 @@ math.js https://github.com/josdejong/mathjs -Copyright (C) 2013-2015 Jos de Jong +Copyright (C) 2013-2016 Jos de Jong Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index b5fe97555..2c17e70c4 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ To see the coverage results, open the generated report in your browser: ## License -Copyright (C) 2013-2015 Jos de Jong +Copyright (C) 2013-2016 Jos de Jong Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/bin/cli.js b/bin/cli.js index 924ca0ff0..25a316015 100755 --- a/bin/cli.js +++ b/bin/cli.js @@ -29,7 +29,7 @@ * cat script.txt | mathjs > results.txt Run input stream, output to file * * @license - * Copyright (C) 2013-2015 Jos de Jong + * Copyright (C) 2013-2016 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy diff --git a/bower.json b/bower.json index 2367b7339..8de381c64 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "2.5.0", + "version": "2.6.0", "main": "./dist/math.min.js", "license": "Apache-2.0", "ignore": [ diff --git a/component.json b/component.json index 2b6c3cdcd..048c84f4d 100644 --- a/component.json +++ b/component.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "2.5.0", + "version": "2.6.0", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", "repo": "josdejong/mathjs", "main": "dist/math.min.js", diff --git a/dist/math.js b/dist/math.js index 309b76861..ea3721a63 100644 --- a/dist/math.js +++ b/dist/math.js @@ -6,11 +6,11 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 2.5.0 - * @date 2015-12-05 + * @version 2.6.0 + * @date 2016-01-08 * * @license - * Copyright (C) 2013-2015 Jos de Jong + * Copyright (C) 2013-2016 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -2044,6 +2044,8 @@ return /******/ (function(modules) { // webpackBootstrap * For example '123.40' and '14000000' * 'exponential' Always use exponential notation. * For example '1.234e+2' and '1.4e+7' + * 'engineering' Always use engineering notation. + * For example '123.4e+0 and 14.0e+6' * 'auto' (default) Regular number notation for numbers * having an absolute value between * `lower` and `upper` bounds, and uses @@ -2083,6 +2085,7 @@ return /******/ (function(modules) { // webpackBootstrap * format(12.071, {notation: 'fixed'}); // '12' * format(2.3, {notation: 'fixed', precision: 2}); // '2.30' * format(52.8, {notation: 'exponential'}); // '5.28e+1' + * format(12345678, {notation: 'engineering'}); // '12.345678e+6' * * @param {number} value * @param {Object | Function | number} [options] @@ -2132,6 +2135,9 @@ return /******/ (function(modules) { // webpackBootstrap case 'exponential': return exports.toExponential(value, precision); + case 'engineering': + return exports.toEngineering(value, precision); + case 'auto': return exports .toPrecision(value, precision, options && options.exponential) @@ -2161,6 +2167,18 @@ return /******/ (function(modules) { // webpackBootstrap return new NumberFormatter(value).toExponential(precision); }; + /** + * Format a number in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3' + * @param {number} value + * @param {number} [precision] Number of digits in formatted output. + * If not provided, the maximum available digits + * is used. + * @returns {string} str + */ + exports.toEngineering = function(value, precision) { + return new NumberFormatter(value).toEngineering(precision); + }; + /** * Format a number with fixed notation. * @param {number} value @@ -2292,6 +2310,47 @@ return /******/ (function(modules) { // webpackBootstrap this.exponent = exponent; } + + /** + * Format a number with engineering notation. + * @param {number} [precision=0] Optional number of decimals after the + * decimal point. Zero by default. + */ + NumberFormatter.prototype.toEngineering = function(precision) { + var rounded = this.roundDigits(precision); + + var e = rounded.exponent; + var c = rounded.coefficients; + + // find nearest lower multiple of 3 for exponent + var newExp = e % 3 === 0 ? e : (e < 0 ? (e - 3) - (e % 3) : e - (e % 3)); + + // concatenate coefficients with necessary zeros + var significandsDiff = e >= 0 ? e : Math.abs(newExp); + + // add zeros if necessary (for ex: 1e+8) + if (c.length - 1 < significandsDiff) c = c.concat(zeros(significandsDiff - (c.length - 1))); + + // find difference in exponents + var expDiff = Math.abs(e - newExp); + + var decimalIdx = 1; + var str = ''; + + // push decimal index over by expDiff times + while (--expDiff >= 0) decimalIdx++; + + // if all coefficient values are zero after the decimal point, don't add a decimal value. + // otherwise concat with the rest of the coefficients + var decimals = c.slice(decimalIdx).join(''); + var decimalVal = decimals.match(/[1-9]/) ? ('.' + decimals) : ''; + + str = c.slice(0, decimalIdx).join('') + decimalVal; + + str += 'e' + (e >= 0 ? '+' : '') + newExp.toString(); + return rounded.sign + str; + } + /** * Format a number with fixed notation. * @param {number} [precision=0] Optional number of decimals after the @@ -2495,23 +2554,24 @@ return /******/ (function(modules) { // webpackBootstrap E.prototype = { on: function (name, callback, ctx) { var e = this.e || (this.e = {}); - + (e[name] || (e[name] = [])).push({ fn: callback, ctx: ctx }); - + return this; }, once: function (name, callback, ctx) { var self = this; - var fn = function () { - self.off(name, fn); + function listener () { + self.off(name, listener); callback.apply(ctx, arguments); }; - - return this.on(name, fn, ctx); + + listener._ = callback + return this.on(name, listener, ctx); }, emit: function (name) { @@ -2519,11 +2579,11 @@ return /******/ (function(modules) { // webpackBootstrap var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); var i = 0; var len = evtArr.length; - + for (i; i < len; i++) { evtArr[i].fn.apply(evtArr[i].ctx, data); } - + return this; }, @@ -2531,21 +2591,22 @@ return /******/ (function(modules) { // webpackBootstrap var e = this.e || (this.e = {}); var evts = e[name]; var liveEvents = []; - + if (evts && callback) { for (var i = 0, len = evts.length; i < len; i++) { - if (evts[i].fn !== callback) liveEvents.push(evts[i]); + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); } } - + // Remove event from queue to prevent memory leak // Suggested by https://github.com/lazd // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 - (liveEvents.length) + (liveEvents.length) ? e[name] = liveEvents : delete e[name]; - + return this; } }; @@ -2916,9 +2977,9 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = [ __webpack_require__(14), // data types (Matrix, Complex, Unit, ...) - __webpack_require__(91), // constants - __webpack_require__(95), // expression parsing - __webpack_require__(319), // functions + __webpack_require__(92), // constants + __webpack_require__(96), // expression parsing + __webpack_require__(320), // functions __webpack_require__(495), // serialization utility (math.json.reviver) __webpack_require__(497) // errors ]; @@ -2933,12 +2994,12 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(20), __webpack_require__(21), __webpack_require__(26), - __webpack_require__(64), - __webpack_require__(70), - __webpack_require__(62), - __webpack_require__(85), - __webpack_require__(87), - __webpack_require__(88) + __webpack_require__(30), + __webpack_require__(36), + __webpack_require__(68), + __webpack_require__(69), + __webpack_require__(71), + __webpack_require__(72) ]; @@ -7829,7 +7890,7 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(27), // construction function - __webpack_require__(63) + __webpack_require__(28) ]; @@ -7844,7 +7905,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { // TODO: remove dependency on Unit, not good for modularization - var Unit = load(__webpack_require__(28)); + // Update: Unit.hasBase now accepts a String, so no need to use Unit.BASE_UNITS + // var Unit = load(require('./../unit/Unit')); /** * @constructor Complex @@ -8156,7 +8218,7 @@ return /******/ (function(modules) { // webpackBootstrap var r = arguments[0], phi = arguments[1]; if (isNumber(r)) { - if (phi && phi.isUnit && phi.hasBase(Unit.BASE_UNITS.ANGLE)) { + if (phi && phi.isUnit && phi.hasBase('ANGLE')) { // convert unit to a number in radians phi = phi.toNumber('rad'); } @@ -8326,2607 +8388,103 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var endsWith = __webpack_require__(23).endsWith; - var clone = __webpack_require__(3).clone; + var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var add = load(__webpack_require__(29)); - var subtract = load(__webpack_require__(30)); - var multiply = load(__webpack_require__(48)); - var divide = load(__webpack_require__(49)); - var pow = load(__webpack_require__(50)); - var equal = load(__webpack_require__(56)); - var isNumeric = load(__webpack_require__(59)); - var format = load(__webpack_require__(60)); - var getTypeOf = load(__webpack_require__(61)); - var toNumber = load(__webpack_require__(62)); + var latex = __webpack_require__(29); /** - * @constructor Unit + * Create a complex value or convert a value to a complex value. * - * A unit can be constructed in the following ways: - * var a = new Unit(value, name); - * var b = new Unit(null, name); - * var c = Unit.parse(str); + * Syntax: * - * Example usage: - * var a = new Unit(5, 'cm'); // 50 mm - * var b = Unit.parse('23 kg'); // 23 kg - * var c = math.in(a, new Unit(null, 'm'); // 0.05 m - * var d = new Unit(9.81, "m/s^2"); // 9.81 m/s^2 + * math.complex() // creates a complex value with zero + * // as real and imaginary part. + * math.complex(re : number, im : string) // creates a complex value with provided + * // values for real and imaginary part. + * math.complex(re : number) // creates a complex value with provided + * // real value and zero imaginary part. + * math.complex(complex : Complex) // clones the provided complex value. + * math.complex(arg : string) // parses a string into a complex value. + * math.complex(array : Array) // converts the elements of the array + * // or matrix element wise into a + * // complex value. + * math.complex({re: number, im: number}) // creates a complex value with provided + * // values for real an imaginary part. + * math.complex({r: number, phi: number}) // creates a complex value with provided + * // polar coordinates * - * @param {number | BigNumber | Fraction | boolean} [value] A value like 5.2 - * @param {string} [name] A unit name like "cm" or "inch", or a derived unit of the form: "u1[^ex1] [u2[^ex2] ...] [/ u3[^ex3] [u4[^ex4]]]", such as "kg m^2/s^2", where each unit appearing after the forward slash is taken to be in the denominator. "kg m^2 s^-2" is a synonym and is also acceptable. Any of the units can include a prefix. - */ - function Unit(value, name) { - if (!(this instanceof Unit)) { - throw new Error('Constructor must be called with the new operator'); - } - - if (value != undefined && !isNumeric(value)) { - throw new TypeError('First parameter in Unit constructor must numeric'); - } - if (name != undefined && (typeof name !== 'string' || name == '')) { - throw new TypeError('Second parameter in Unit constructor must be a string'); - } - - if (name != undefined) { - var u = Unit.parse(name); - this.units = u.units; - this.dimensions = u.dimensions; - } - else { - this.units = [ - { - unit: UNIT_NONE, - prefix: PREFIX_NONE, // link to a list with supported prefixes - power: 0 - } - ]; - this.dimensions = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - - this.value = (value != undefined) ? this._normalize(value) : null; - - this.fixPrefix = false; // if true, function format will not search for the - // best prefix but leave it as initially provided. - // fixPrefix is set true by the method Unit.to - - // The justification behind this is that if the constructor is explicitly called, - // the caller wishes the units to be returned exactly as he supplied. - this.isUnitListSimplified = true; - - } - - /** - * Attach type information - */ - Unit.prototype.type = 'Unit'; - Unit.prototype.isUnit = true; - - // private variables and functions for the Unit parser - var text, index, c; - - function skipWhitespace() { - while (c == ' ' || c == '\t') { - next(); - } - } - - function isDigitDot(c) { - return ((c >= '0' && c <= '9') || c == '.'); - } - - function isDigit(c) { - return ((c >= '0' && c <= '9')); - } - - function next() { - index++; - c = text.charAt(index); - } - - function revert(oldIndex) { - index = oldIndex; - c = text.charAt(index); - } - - function parseNumber() { - var number = ''; - var oldIndex; - oldIndex = index; - - if (c == '+') { - next(); - } - else if (c == '-') { - number += c; - next(); - } - - if (!isDigitDot(c)) { - // a + or - must be followed by a digit - revert(oldIndex); - return null; - } - - // get number, can have a single dot - if (c == '.') { - number += c; - next(); - if (!isDigit(c)) { - // this is no legal number, it is just a dot - revert(oldIndex); - return null; - } - } - else { - while (isDigit(c)) { - number += c; - next(); - } - if (c == '.') { - number += c; - next(); - } - } - while (isDigit(c)) { - number += c; - next(); - } - - // check for exponential notation like "2.3e-4" or "1.23e50" - if (c == 'E' || c == 'e') { - // The grammar branches here. This could either be part of an exponent or the start of a unit that begins with the letter e, such as "4exabytes" - - var tentativeNumber = ''; - var tentativeIndex = index; - - tentativeNumber += c; - next(); - - if (c == '+' || c == '-') { - tentativeNumber += c; - next(); - } - - // Scientific notation MUST be followed by an exponent (otherwise we assume it is not scientific notation) - if (!isDigit(c)) { - // The e or E must belong to something else, so return the number without the e or E. - revert(tentativeIndex); - return number; - } - - // We can now safely say that this is scientific notation. - number = number + tentativeNumber; - while (isDigit(c)) { - number += c; - next(); - } - } - - return number; - } - - function parseUnit() { - var unitName = ''; - - // Alphanumeric characters only; matches [a-zA-Z0-9] - var code = text.charCodeAt(index); - while ( (code >= 48 && code <= 57) || - (code >= 65 && code <= 90) || - (code >= 97 && code <= 122)) { - unitName += c; - next(); - code = text.charCodeAt(index); - } - - // Must begin with [a-zA-Z] - code = unitName.charCodeAt(0); - if ((code >= 65 && code <= 90) || - (code >= 97 && code <= 122)) { - return unitName || null; - } - else { - return null; - } - } - - function parseCharacter(toFind) { - if (c === toFind) { - next(); - return toFind; - } - else { - return null; - } - } - - /** - * Parse a string into a unit. The value of the unit is parsed as number, - * BigNumber, or Fraction depending on the math.js config setting `number`. + * Examples: * - * Throws an exception if the provided string does not contain a valid unit or - * cannot be parsed. - * @param {string} str A string like "5.2 inch", "4e2 cm/s^2" - * @return {Unit} unit - */ - Unit.parse = function (str) { - text = str; - index = -1; - c = ''; - - if (typeof text !== 'string') { - throw new TypeError('Invalid argument in Unit.parse, string expected'); - } - - var unit = new Unit(); - unit.units = []; - - // A unit should follow this pattern: - // [number]unit[^number] [unit[^number]]...[/unit[^number] [unit[^number]]] - - // Rules: - // number is any floating point number. - // unit is any alphanumeric string beginning with an alpha. Units with names like e3 should be avoided because they look like the exponent of a floating point number! - // The string may optionally begin with a number. - // Each unit may optionally be followed by ^number. - // Whitespace or a forward slash is recommended between consecutive units, although the following technically is parseable: - // 2m^2kg/s^2 - // it is not good form. If a unit starts with e, then it could be confused as a floating point number: - // 4erg - - next(); - skipWhitespace(); - // Optional number at the start of the string - var valueStr = parseNumber(); - var value = null; - if(valueStr) { - if (config.number === 'bignumber') { - value = new type.BigNumber(valueStr); - } - else if (config.number === 'fraction') { - value = new type.Fraction(valueStr); - } - else { // number - value = parseFloat(valueStr); - } - } - skipWhitespace(); // Whitespace is not required here - - // Next, we read any number of unit[^number] - var powerMultiplierCurrent = 1; - var expectingUnit = false; - - // Stack to keep track of powerMultipliers applied to each parentheses group - var powerMultiplierStack = []; - - // Running product of all elements in powerMultiplierStack - var powerMultiplierStackProduct = 1; - - while (true) { - skipWhitespace(); - - // Check for and consume opening parentheses, pushing powerMultiplierCurrent to the stack - // A '(' will always appear directly before a unit. - while (c === '(') { - powerMultiplierStack.push(powerMultiplierCurrent); - powerMultiplierStackProduct *= powerMultiplierCurrent; - powerMultiplierCurrent = 1; - next(); - skipWhitespace(); - } - - // Is there something here? - if(c) { - var oldC = c; - var uStr = parseUnit(); - if(uStr == null) { - throw new SyntaxError('Unexpected "' + oldC + '" in "' + text + '" at index ' + index.toString()); - } - } - else { - // End of input. - break; - } - - // Verify the unit exists and get the prefix (if any) - var res = _findUnit(uStr); - if(res == null) { - // Unit not found. - throw new SyntaxError('Unit "' + uStr + '" not found.'); - } - - var power = powerMultiplierCurrent * powerMultiplierStackProduct; - // Is there a "^ number"? - skipWhitespace(); - if (parseCharacter('^')) { - skipWhitespace(); - var p = parseNumber(); - if(p == null) { - // No valid number found for the power! - throw new SyntaxError('In "' + str + '", "^" must be followed by a floating-point number'); - } - power *= p; - } - - // Add the unit to the list - unit.units.push( { - unit: res.unit, - prefix: res.prefix, - power: power - }); - for(var i=0; i 1 || Math.abs(this.units[0].power - 1.0) > 1e-15; - }; - - /** - * Normalize a value, based on its currently set unit(s) - * @param {number | BigNumber | Fraction | boolean} value - * @return {number | BigNumber | Fraction | boolean} normalized value - * @private - */ - Unit.prototype._normalize = function (value) { - var unitValue, unitOffset, unitPower, unitPrefixValue; - var convert; - - if (value == null || this.units.length === 0) { - return value; - } - else if (this._isDerived()) { - // This is a derived unit, so do not apply offsets. - // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset. - var res = value; - convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed - - for(var i=0; i < this.units.length; i++) { - unitValue = convert(this.units[i].unit.value); - unitPrefixValue = convert(this.units[i].prefix.value); - unitPower = convert(this.units[i].power); - res = multiply(res, pow(multiply(unitValue, unitPrefixValue), unitPower)); - } - - return res; - } - else { - // This is a single unit of power 1, like kg or degC - convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed - - unitValue = convert(this.units[0].unit.value); - unitOffset = convert(this.units[0].unit.offset); - unitPrefixValue = convert(this.units[0].prefix.value); - - return multiply(add(value, unitOffset), multiply(unitValue, unitPrefixValue)); - } - }; - - /** - * Denormalize a value, based on its currently set unit(s) - * @param {number} value - * @param {number} [prefixValue] Optional prefix value to be used (ignored if this is a derived unit) - * @return {number} denormalized value - * @private - */ - Unit.prototype._denormalize = function (value, prefixValue) { - var unitValue, unitOffset, unitPower, unitPrefixValue; - var convert; - - if (value == null || this.units.length === 0) { - return value; - } - else if (this._isDerived()) { - // This is a derived unit, so do not apply offsets. - // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset. - // Also, prefixValue is ignored--but we will still use the prefix value stored in each unit, since kg is usually preferable to g unless the user decides otherwise. - var res = value; - convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed - - for (var i = 0; i < this.units.length; i++) { - unitValue = convert(this.units[i].unit.value); - unitPrefixValue = convert(this.units[i].prefix.value); - unitPower = convert(this.units[i].power); - res = divide(res, pow(multiply(unitValue, unitPrefixValue), unitPower)); - } - - return res; - } - else { - // This is a single unit of power 1, like kg or degC - convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed - - unitValue = convert(this.units[0].unit.value); - unitPrefixValue = convert(this.units[0].prefix.value); - unitOffset = convert(this.units[0].unit.offset); - - if (prefixValue == undefined) { - return subtract(divide(divide(value, unitValue), unitPrefixValue), unitOffset); - } - else { - return subtract(divide(divide(value, unitValue), prefixValue), unitOffset); - } - } - }; - - /** - * Find a unit from a string - * @param {string} str A string like 'cm' or 'inch' - * @returns {Object | null} result When found, an object with fields unit and - * prefix is returned. Else, null is returned. - * @private - */ - function _findUnit(str) { - for (var name in UNITS) { - if (UNITS.hasOwnProperty(name)) { - if (endsWith(str, name)) { - var unit = UNITS[name]; - var prefixLen = (str.length - name.length); - var prefixName = str.substring(0, prefixLen); - var prefix = unit.prefixes[prefixName]; - if (prefix !== undefined) { - // store unit, prefix, and value - return { - unit: unit, - prefix: prefix - }; - } - } - } - } - - return null; - } - - /** - * Test if the given expression is a unit. - * The unit can have a prefix but cannot have a value. - * @param {string} name A string to be tested whether it is a value less unit. - * The unit can have prefix, like "cm" - * @return {boolean} true if the given string is a unit - */ - Unit.isValuelessUnit = function (name) { - return (_findUnit(name) != null); - }; - - /** - * check if this unit has given base unit - * If this unit is a derived unit, this will ALWAYS return false, since by definition base units are not derived. - * @param {BASE_UNITS | undefined} base - */ - Unit.prototype.hasBase = function (base) { - - // All dimensions must be the same - for(var i=0; i 1e-12) { - return false; - } - } - return true; - - }; - - /** - * Check if this unit has a base or bases equal to another base or bases - * For derived units, the exponent on each base also must match - * @param {Unit} other - * @return {boolean} true if equal base - */ - Unit.prototype.equalBase = function (other) { - // All dimensions must be the same - for(var i=0; i 1e-12) { - return false; - } - } - return true; - }; - - /** - * Check if this unit equals another unit - * @param {Unit} other - * @return {boolean} true if both units are equal - */ - Unit.prototype.equals = function (other) { - return (this.equalBase(other) && equal(this.value, other.value)); - }; - - /** - * Multiply this unit with another one - * @param {Unit} other - * @return {Unit} product of this unit and the other unit - */ - Unit.prototype.multiply = function (other) { - var res = this.clone(); - - for(var i = 0; i 1e-12) { - proposedUnitList.push({ - unit: currentUnitSystem[baseDim].unit, - prefix: currentUnitSystem[baseDim].prefix, - power: this.dimensions[i] - }); - } - } - - // Is the proposed unit list "simpler" than the existing one? - if(proposedUnitList.length < this.units.length) { - // Replace this unit list with the proposed list - this.units = proposedUnitList; - } - } - } - - this.isUnitListSimplified = true; - }; - - /** - * Get a string representation of the units of this Unit, without the value. - * @return {string} - */ - Unit.prototype.formatUnits = function () { - - // Lazy evaluation of the unit list - this.simplifyUnitListLazy(); - - var strNum = ""; - var strDen = ""; - var nNum = 0; - var nDen = 0; - - for(var i=0; i 0) { - nNum++; - strNum += " " + this.units[i].prefix.name + this.units[i].unit.name; - if(Math.abs(this.units[i].power - 1.0) > 1e-15) { - strNum += "^" + this.units[i].power; - } - } - else if(this.units[i].power < 0) { - nDen++; - } - } - - if(nDen > 0) { - for(var i=0; i 0) { - strDen += " " + this.units[i].prefix.name + this.units[i].unit.name; - if(Math.abs(this.units[i].power + 1.0) > 1e-15) { - strDen += "^" + (-this.units[i].power); - } - } - else { - strDen += " " + this.units[i].prefix.name + this.units[i].unit.name; - strDen += "^" + (this.units[i].power); - } - } - } - } - // Remove leading " " - strNum = strNum.substr(1); - strDen = strDen.substr(1); - - // Add parans for better copy/paste back into the eval, for example, or for better pretty print formatting - if(nNum > 1 && nDen > 0) { - strNum = "(" + strNum + ")"; - } - if(nDen > 1 && nNum > 0) { - strDen = "(" + strDen + ")"; - } - - var str = strNum; - if(nNum > 0 && nDen > 0) { - str += " / "; - } - str += strDen; - - return str; - }; - - /** - * Get a string representation of the Unit, with optional formatting options. - * @param {Object | number | Function} [options] Formatting options. See - * lib/utils/number:format for a - * description of the available - * options. - * @return {string} - */ - Unit.prototype.format = function (options) { - - // Simplfy the unit list, if necessary - this.simplifyUnitListLazy(); - - // Now apply the best prefix - // Units must have only one unit and not have the fixPrefix flag set - if (this.units.length === 1 && !this.fixPrefix) { - // Units must have integer powers, otherwise the prefix will change the - // outputted value by not-an-integer-power-of-ten - if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) < 1e-14) { - // Apply the best prefix - this.units[0].prefix = this._bestPrefix(); - } - } - - var value = this._denormalize(this.value); - var str = (this.value !== null) ? format(value, options || {}) : ''; - var unitStr = this.formatUnits(); - if(unitStr.length > 0 && str.length > 0) { - str += " "; - } - str += unitStr; - - return str; - }; - - /** - * Calculate the best prefix using current value. - * @returns {Object} prefix - * @private - */ - Unit.prototype._bestPrefix = function () { - if (this.units.length !== 1) { - throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!"); - } - if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) >= 1e-14) { - throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!"); - } - - // find the best prefix value (resulting in the value of which - // the absolute value of the log10 is closest to zero, - // though with a little offset of 1.2 for nicer values: you get a - // sequence 1mm 100mm 500mm 0.6m 1m 10m 100m 500m 0.6km 1km ... - - // Note: the units value can be any numeric type, but to find the best - // prefix it's enough to work with limited precision of a regular number - var absValue = Math.abs(toNumber(this.value)); - var bestPrefix = this.units[0].prefix; - if (absValue === 0) { - return bestPrefix; - } - var power = this.units[0].power; - var bestDiff = Math.abs( - Math.log(absValue / Math.pow(bestPrefix.value * this.units[0].unit.value, power)) / Math.LN10 - 1.2); - - var prefixes = this.units[0].unit.prefixes; - for (var p in prefixes) { - if (prefixes.hasOwnProperty(p)) { - var prefix = prefixes[p]; - if (prefix.scientific) { - - var diff = Math.abs( - Math.log(absValue / Math.pow(prefix.value * this.units[0].unit.value, power)) / Math.LN10 - 1.2); - - if (diff < bestDiff - || (diff === bestDiff && prefix.name.length < bestPrefix.name.length)) { - // choose the prefix with the smallest diff, or if equal, choose the one - // with the shortest name (can happen with SHORTLONG for example) - bestPrefix = prefix; - bestDiff = diff; - } - } - } - } - - return bestPrefix; - }; - - var PREFIXES = { - NONE: { - '': {name: '', value: 1, scientific: true} - }, - SHORT: { - '': {name: '', value: 1, scientific: true}, - - 'da': {name: 'da', value: 1e1, scientific: false}, - 'h': {name: 'h', value: 1e2, scientific: false}, - 'k': {name: 'k', value: 1e3, scientific: true}, - 'M': {name: 'M', value: 1e6, scientific: true}, - 'G': {name: 'G', value: 1e9, scientific: true}, - 'T': {name: 'T', value: 1e12, scientific: true}, - 'P': {name: 'P', value: 1e15, scientific: true}, - 'E': {name: 'E', value: 1e18, scientific: true}, - 'Z': {name: 'Z', value: 1e21, scientific: true}, - 'Y': {name: 'Y', value: 1e24, scientific: true}, - - 'd': {name: 'd', value: 1e-1, scientific: false}, - 'c': {name: 'c', value: 1e-2, scientific: false}, - 'm': {name: 'm', value: 1e-3, scientific: true}, - 'u': {name: 'u', value: 1e-6, scientific: true}, - 'n': {name: 'n', value: 1e-9, scientific: true}, - 'p': {name: 'p', value: 1e-12, scientific: true}, - 'f': {name: 'f', value: 1e-15, scientific: true}, - 'a': {name: 'a', value: 1e-18, scientific: true}, - 'z': {name: 'z', value: 1e-21, scientific: true}, - 'y': {name: 'y', value: 1e-24, scientific: true} - }, - LONG: { - '': {name: '', value: 1, scientific: true}, - - 'deca': {name: 'deca', value: 1e1, scientific: false}, - 'hecto': {name: 'hecto', value: 1e2, scientific: false}, - 'kilo': {name: 'kilo', value: 1e3, scientific: true}, - 'mega': {name: 'mega', value: 1e6, scientific: true}, - 'giga': {name: 'giga', value: 1e9, scientific: true}, - 'tera': {name: 'tera', value: 1e12, scientific: true}, - 'peta': {name: 'peta', value: 1e15, scientific: true}, - 'exa': {name: 'exa', value: 1e18, scientific: true}, - 'zetta': {name: 'zetta', value: 1e21, scientific: true}, - 'yotta': {name: 'yotta', value: 1e24, scientific: true}, - - 'deci': {name: 'deci', value: 1e-1, scientific: false}, - 'centi': {name: 'centi', value: 1e-2, scientific: false}, - 'milli': {name: 'milli', value: 1e-3, scientific: true}, - 'micro': {name: 'micro', value: 1e-6, scientific: true}, - 'nano': {name: 'nano', value: 1e-9, scientific: true}, - 'pico': {name: 'pico', value: 1e-12, scientific: true}, - 'femto': {name: 'femto', value: 1e-15, scientific: true}, - 'atto': {name: 'atto', value: 1e-18, scientific: true}, - 'zepto': {name: 'zepto', value: 1e-21, scientific: true}, - 'yocto': {name: 'yocto', value: 1e-24, scientific: true} - }, - SQUARED: { - '': {name: '', value: 1, scientific: true}, - - 'da': {name: 'da', value: 1e2, scientific: false}, - 'h': {name: 'h', value: 1e4, scientific: false}, - 'k': {name: 'k', value: 1e6, scientific: true}, - 'M': {name: 'M', value: 1e12, scientific: true}, - 'G': {name: 'G', value: 1e18, scientific: true}, - 'T': {name: 'T', value: 1e24, scientific: true}, - 'P': {name: 'P', value: 1e30, scientific: true}, - 'E': {name: 'E', value: 1e36, scientific: true}, - 'Z': {name: 'Z', value: 1e42, scientific: true}, - 'Y': {name: 'Y', value: 1e48, scientific: true}, - - 'd': {name: 'd', value: 1e-2, scientific: false}, - 'c': {name: 'c', value: 1e-4, scientific: false}, - 'm': {name: 'm', value: 1e-6, scientific: true}, - 'u': {name: 'u', value: 1e-12, scientific: true}, - 'n': {name: 'n', value: 1e-18, scientific: true}, - 'p': {name: 'p', value: 1e-24, scientific: true}, - 'f': {name: 'f', value: 1e-30, scientific: true}, - 'a': {name: 'a', value: 1e-36, scientific: true}, - 'z': {name: 'z', value: 1e-42, scientific: true}, - 'y': {name: 'y', value: 1e-48, scientific: true} - }, - CUBIC: { - '': {name: '', value: 1, scientific: true}, - - 'da': {name: 'da', value: 1e3, scientific: false}, - 'h': {name: 'h', value: 1e6, scientific: false}, - 'k': {name: 'k', value: 1e9, scientific: true}, - 'M': {name: 'M', value: 1e18, scientific: true}, - 'G': {name: 'G', value: 1e27, scientific: true}, - 'T': {name: 'T', value: 1e36, scientific: true}, - 'P': {name: 'P', value: 1e45, scientific: true}, - 'E': {name: 'E', value: 1e54, scientific: true}, - 'Z': {name: 'Z', value: 1e63, scientific: true}, - 'Y': {name: 'Y', value: 1e72, scientific: true}, - - 'd': {name: 'd', value: 1e-3, scientific: false}, - 'c': {name: 'c', value: 1e-6, scientific: false}, - 'm': {name: 'm', value: 1e-9, scientific: true}, - 'u': {name: 'u', value: 1e-18, scientific: true}, - 'n': {name: 'n', value: 1e-27, scientific: true}, - 'p': {name: 'p', value: 1e-36, scientific: true}, - 'f': {name: 'f', value: 1e-45, scientific: true}, - 'a': {name: 'a', value: 1e-54, scientific: true}, - 'z': {name: 'z', value: 1e-63, scientific: true}, - 'y': {name: 'y', value: 1e-72, scientific: true} - }, - BINARY_SHORT: { - '': {name: '', value: 1, scientific: true}, - 'k': {name: 'k', value: 1e3, scientific: true}, - 'M': {name: 'M', value: 1e6, scientific: true}, - 'G': {name: 'G', value: 1e9, scientific: true}, - 'T': {name: 'T', value: 1e12, scientific: true}, - 'P': {name: 'P', value: 1e15, scientific: true}, - 'E': {name: 'E', value: 1e18, scientific: true}, - 'Z': {name: 'Z', value: 1e21, scientific: true}, - 'Y': {name: 'Y', value: 1e24, scientific: true}, - - 'Ki': {name: 'Ki', value: 1024, scientific: true}, - 'Mi': {name: 'Mi', value: Math.pow(1024, 2), scientific: true}, - 'Gi': {name: 'Gi', value: Math.pow(1024, 3), scientific: true}, - 'Ti': {name: 'Ti', value: Math.pow(1024, 4), scientific: true}, - 'Pi': {name: 'Pi', value: Math.pow(1024, 5), scientific: true}, - 'Ei': {name: 'Ei', value: Math.pow(1024, 6), scientific: true}, - 'Zi': {name: 'Zi', value: Math.pow(1024, 7), scientific: true}, - 'Yi': {name: 'Yi', value: Math.pow(1024, 8), scientific: true} - }, - BINARY_LONG: { - '': {name: '', value: 1, scientific: true}, - 'kilo': {name: 'kilo', value: 1e3, scientific: true}, - 'mega': {name: 'mega', value: 1e6, scientific: true}, - 'giga': {name: 'giga', value: 1e9, scientific: true}, - 'tera': {name: 'tera', value: 1e12, scientific: true}, - 'peta': {name: 'peta', value: 1e15, scientific: true}, - 'exa': {name: 'exa', value: 1e18, scientific: true}, - 'zetta': {name: 'zetta', value: 1e21, scientific: true}, - 'yotta': {name: 'yotta', value: 1e24, scientific: true}, - - 'kibi': {name: 'kibi', value: 1024, scientific: true}, - 'mebi': {name: 'mebi', value: Math.pow(1024, 2), scientific: true}, - 'gibi': {name: 'gibi', value: Math.pow(1024, 3), scientific: true}, - 'tebi': {name: 'tebi', value: Math.pow(1024, 4), scientific: true}, - 'pebi': {name: 'pebi', value: Math.pow(1024, 5), scientific: true}, - 'exi': {name: 'exi', value: Math.pow(1024, 6), scientific: true}, - 'zebi': {name: 'zebi', value: Math.pow(1024, 7), scientific: true}, - 'yobi': {name: 'yobi', value: Math.pow(1024, 8), scientific: true} - }, - BTU: { - '': {name: '', value: 1, scientific: true}, - 'MM': {name: 'MM', value: 1e6, scientific: true} - } - }; - - // Add a prefix list for both short and long prefixes (for ohm in particular, since Mohm and megaohm are both acceptable): - PREFIXES.SHORTLONG = {}; - for (var key in PREFIXES.SHORT) { - if(PREFIXES.SHORT.hasOwnProperty(key)) { - PREFIXES.SHORTLONG[key] = PREFIXES.SHORT[key]; - } - } - for (var key in PREFIXES.LONG) { - if(PREFIXES.LONG.hasOwnProperty(key)) { - PREFIXES.SHORTLONG[key] = PREFIXES.LONG[key]; - } - } - - var PREFIX_NONE = {name: '', value: 1, scientific: true}; - - /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning: - * Index Dimension - * ----- --------- - * 0 Length - * 1 Mass - * 2 Time - * 3 Current - * 4 Temperature - * 5 Luminous intensity - * 6 Amount of substance - * 7 Angle - * 8 Bit (digital) - * For example, the unit "298.15 K" is a pure temperature and would have a value of 298.15 and a dimension array of [0, 0, 0, 0, 1, 0, 0, 0, 0]. The unit "1 cal / (gm °C)" can be written in terms of the 9 fundamental dimensions as [length^2] / ([time^2] * [temperature]), and would a value of (after conversion to SI) 4184.0 and a dimensions array of [2, 0, -2, 0, -1, 0, 0, 0, 0]. + * var a = math.complex(3, -4); // a = Complex 3 - 4i + * a.re = 5; // a = Complex 5 - 4i + * var i = a.im; // Number -4; + * var b = math.complex('2 + 6i'); // Complex 2 + 6i + * var c = math.complex(); // Complex 0 + 0i + * var d = math.add(a, b); // Complex 5 + 2i * - */ - - var BASE_DIMENSIONS = ["MASS", "LENGTH", "TIME", "CURRENT", "TEMPERATURE", "LUMINOUS_INTENSITY", "AMOUNT_OF_SUBSTANCE", "ANGLE", "BIT"]; - - var BASE_UNITS = { - NONE: { - dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 0] - }, - MASS: { - dimensions: [1, 0, 0, 0, 0, 0, 0, 0, 0] - }, - LENGTH: { - dimensions: [0, 1, 0, 0, 0, 0, 0, 0, 0] - }, - TIME: { - dimensions: [0, 0, 1, 0, 0, 0, 0, 0, 0] - }, - CURRENT: { - dimensions: [0, 0, 0, 1, 0, 0, 0, 0, 0] - }, - TEMPERATURE: { - dimensions: [0, 0, 0, 0, 1, 0, 0, 0, 0] - }, - LUMINOUS_INTENSITY: { - dimensions: [0, 0, 0, 0, 0, 1, 0, 0, 0] - }, - AMOUNT_OF_SUBSTANCE: { - dimensions: [0, 0, 0, 0, 0, 0, 1, 0, 0] - }, - - FORCE: { - dimensions: [1, 1, -2, 0, 0, 0, 0, 0, 0] - }, - SURFACE: { - dimensions: [0, 2, 0, 0, 0, 0, 0, 0, 0] - }, - VOLUME: { - dimensions: [0, 3, 0, 0, 0, 0, 0, 0, 0] - }, - ENERGY: { - dimensions: [1, 2, -2, 0, 0, 0, 0, 0, 0] - }, - POWER: { - dimensions: [1, 2, -3, 0, 0, 0, 0, 0, 0] - }, - PRESSURE: { - dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0] - }, - - ELECTRIC_CHARGE: { - dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0] - }, - ELECTRIC_CAPACITANCE: { - dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0] - }, - ELECTRIC_POTENTIAL: { - dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0] - }, - ELECTRIC_RESISTANCE: { - dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0] - }, - ELECTRIC_INDUCTANCE: { - dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0] - }, - ELECTRIC_CONDUCTANCE: { - dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0] - }, - MAGNETIC_FLUX: { - dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0] - }, - MAGNETIC_FLUX_DENSITY: { - dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0] - }, - - FREQUENCY: { - dimensions: [0, 0, -1, 0, 0, 0, 0, 0, 0] - }, - ANGLE: { - dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0] - }, - BIT: { - dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 1] - } - }; - - for(var key in BASE_UNITS) { - BASE_UNITS[key].key = key; - } - - var BASE_UNIT_NONE = {}; - - var UNIT_NONE = {name: '', base: BASE_UNIT_NONE, value: 1, offset: 0, dimensions: [0,0,0,0,0,0,0,0,0]}; - - var UNITS = { - // length - meter: { - name: 'meter', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - inch: { - name: 'inch', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.0254, - offset: 0 - }, - foot: { - name: 'foot', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.3048, - offset: 0 - }, - yard: { - name: 'yard', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.9144, - offset: 0 - }, - mile: { - name: 'mile', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 1609.344, - offset: 0 - }, - link: { - name: 'link', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.201168, - offset: 0 - }, - rod: { - name: 'rod', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 5.029210, - offset: 0 - }, - chain: { - name: 'chain', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 20.1168, - offset: 0 - }, - angstrom: { - name: 'angstrom', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 1e-10, - offset: 0 - }, - - m: { - name: 'm', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - 'in': { - name: 'in', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.0254, - offset: 0 - }, - ft: { - name: 'ft', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.3048, - offset: 0 - }, - yd: { - name: 'yd', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.9144, - offset: 0 - }, - mi: { - name: 'mi', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 1609.344, - offset: 0 - }, - li: { - name: 'li', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.201168, - offset: 0 - }, - rd: { - name: 'rd', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 5.029210, - offset: 0 - }, - ch: { - name: 'ch', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 20.1168, - offset: 0 - }, - mil: { - name: 'mil', - base: BASE_UNITS.LENGTH, - prefixes: PREFIXES.NONE, - value: 0.0000254, - offset: 0 - }, // 1/1000 inch - - // Surface - m2: { - name: 'm2', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.SQUARED, - value: 1, - offset: 0 - }, - sqin: { - name: 'sqin', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 0.00064516, - offset: 0 - }, // 645.16 mm2 - sqft: { - name: 'sqft', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 0.09290304, - offset: 0 - }, // 0.09290304 m2 - sqyd: { - name: 'sqyd', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 0.83612736, - offset: 0 - }, // 0.83612736 m2 - sqmi: { - name: 'sqmi', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 2589988.110336, - offset: 0 - }, // 2.589988110336 km2 - sqrd: { - name: 'sqrd', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 25.29295, - offset: 0 - }, // 25.29295 m2 - sqch: { - name: 'sqch', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 404.6873, - offset: 0 - }, // 404.6873 m2 - sqmil: { - name: 'sqmil', - base: BASE_UNITS.SURFACE, - prefixes: PREFIXES.NONE, - value: 6.4516e-10, - offset: 0 - }, // 6.4516 * 10^-10 m2 - - // Volume - m3: { - name: 'm3', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.CUBIC, - value: 1, - offset: 0 - }, - L: { - name: 'L', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.SHORT, - value: 0.001, - offset: 0 - }, // litre - l: { - name: 'l', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.SHORT, - value: 0.001, - offset: 0 - }, // litre - litre: { - name: 'litre', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.LONG, - value: 0.001, - offset: 0 - }, - cuin: { - name: 'cuin', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 1.6387064e-5, - offset: 0 - }, // 1.6387064e-5 m3 - cuft: { - name: 'cuft', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.028316846592, - offset: 0 - }, // 28.316 846 592 L - cuyd: { - name: 'cuyd', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.764554857984, - offset: 0 - }, // 764.554 857 984 L - teaspoon: { - name: 'teaspoon', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.000005, - offset: 0 - }, // 5 mL - tablespoon: { - name: 'tablespoon', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.000015, - offset: 0 - }, // 15 mL - //{name: 'cup', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.000240, offset: 0}, // 240 mL // not possible, we have already another cup - drop: { - name: 'drop', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 5e-8, - offset: 0 - }, // 0.05 mL = 5e-8 m3 - gtt: { - name: 'gtt', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 5e-8, - offset: 0 - }, // 0.05 mL = 5e-8 m3 - - // Liquid volume - minim: { - name: 'minim', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.00000006161152, - offset: 0 - }, // 0.06161152 mL - fluiddram: { - name: 'fluiddram', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0000036966911, - offset: 0 - }, // 3.696691 mL - fluidounce: { - name: 'fluidounce', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.00002957353, - offset: 0 - }, // 29.57353 mL - gill: { - name: 'gill', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0001182941, - offset: 0 - }, // 118.2941 mL - cc: { - name: 'cc', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 1e-6, - offset: 0 - }, // 1e-6 L - cup: { - name: 'cup', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0002365882, - offset: 0 - }, // 236.5882 mL - pint: { - name: 'pint', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0004731765, - offset: 0 - }, // 473.1765 mL - quart: { - name: 'quart', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0009463529, - offset: 0 - }, // 946.3529 mL - gallon: { - name: 'gallon', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.003785412, - offset: 0 - }, // 3.785412 L - beerbarrel: { - name: 'beerbarrel', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.1173478, - offset: 0 - }, // 117.3478 L - oilbarrel: { - name: 'oilbarrel', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.1589873, - offset: 0 - }, // 158.9873 L - hogshead: { - name: 'hogshead', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.2384810, - offset: 0 - }, // 238.4810 L - - //{name: 'min', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.00000006161152, offset: 0}, // 0.06161152 mL // min is already in use as minute - fldr: { - name: 'fldr', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0000036966911, - offset: 0 - }, // 3.696691 mL - floz: { - name: 'floz', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.00002957353, - offset: 0 - }, // 29.57353 mL - gi: { - name: 'gi', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0001182941, - offset: 0 - }, // 118.2941 mL - cp: { - name: 'cp', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0002365882, - offset: 0 - }, // 236.5882 mL - pt: { - name: 'pt', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0004731765, - offset: 0 - }, // 473.1765 mL - qt: { - name: 'qt', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.0009463529, - offset: 0 - }, // 946.3529 mL - gal: { - name: 'gal', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.003785412, - offset: 0 - }, // 3.785412 L - bbl: { - name: 'bbl', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.1173478, - offset: 0 - }, // 117.3478 L - obl: { - name: 'obl', - base: BASE_UNITS.VOLUME, - prefixes: PREFIXES.NONE, - value: 0.1589873, - offset: 0 - }, // 158.9873 L - //{name: 'hogshead', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.2384810, offset: 0}, // 238.4810 L // TODO: hh? - - // Mass - g: { - name: 'g', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.SHORT, - value: 0.001, - offset: 0 - }, - gram: { - name: 'gram', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.LONG, - value: 0.001, - offset: 0 - }, - - ton: { - name: 'ton', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.SHORT, - value: 907.18474, - offset: 0 - }, - tonne: { - name: 'tonne', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.SHORT, - value: 1000, - offset: 0 - }, - - grain: { - name: 'grain', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 64.79891e-6, - offset: 0 - }, - dram: { - name: 'dram', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 1.7718451953125e-3, - offset: 0 - }, - ounce: { - name: 'ounce', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 28.349523125e-3, - offset: 0 - }, - poundmass: { - name: 'poundmass', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 453.59237e-3, - offset: 0 - }, - hundredweight: { - name: 'hundredweight', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 45.359237, - offset: 0 - }, - stick: { - name: 'stick', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 115e-3, - offset: 0 - }, - stone: { - name: 'stone', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 6.35029318, - offset: 0 - }, - - gr: { - name: 'gr', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 64.79891e-6, - offset: 0 - }, - dr: { - name: 'dr', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 1.7718451953125e-3, - offset: 0 - }, - oz: { - name: 'oz', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 28.349523125e-3, - offset: 0 - }, - lbm: { - name: 'lbm', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 453.59237e-3, - offset: 0 - }, - cwt: { - name: 'cwt', - base: BASE_UNITS.MASS, - prefixes: PREFIXES.NONE, - value: 45.359237, - offset: 0 - }, - - // Time - s: { - name: 's', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - min: { - name: 'min', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.NONE, - value: 60, - offset: 0 - }, - h: { - name: 'h', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.NONE, - value: 3600, - offset: 0 - }, - second: { - name: 'second', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - sec: { - name: 'sec', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - minute: { - name: 'minute', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.NONE, - value: 60, - offset: 0 - }, - hour: { - name: 'hour', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.NONE, - value: 3600, - offset: 0 - }, - day: { - name: 'day', - base: BASE_UNITS.TIME, - prefixes: PREFIXES.NONE, - value: 86400, - offset: 0 - }, - - // Frequency - hertz: { - name: 'Hertz', - base: BASE_UNITS.FREQUENCY, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0, - reciprocal: true - }, - Hz: { - name: 'Hz', - base: BASE_UNITS.FREQUENCY, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0, - reciprocal: true - }, - - // Angle - rad: { - name: 'rad', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - // deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888 - deg: { - name: 'deg', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 0.017453292519943295769236907684888, - offset: 0 - }, - // grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399 - grad: { - name: 'grad', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 0.015707963267948966192313216916399, - offset: 0 - }, - // cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793 - cycle: { - name: 'cycle', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 6.2831853071795864769252867665793, - offset: 0 - }, - // arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795 - arcsec: { - name: 'arcsec', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 0.0000048481368110953599358991410235795, - offset: 0 - }, - // arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477 - arcmin: { - name: 'arcmin', - base: BASE_UNITS.ANGLE, - prefixes: PREFIXES.NONE, - value: 0.00029088820866572159615394846141477, - offset: 0 - }, - - // Electric current - A: { - name: 'A', - base: BASE_UNITS.CURRENT, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - ampere: { - name: 'ampere', - base: BASE_UNITS.CURRENT, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - - // Temperature - // K(C) = °C + 273.15 - // K(F) = (°F + 459.67) / 1.8 - // K(R) = °R / 1.8 - K: { - name: 'K', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - degC: { - name: 'degC', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 273.15 - }, - degF: { - name: 'degF', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1 / 1.8, - offset: 459.67 - }, - degR: { - name: 'degR', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1 / 1.8, - offset: 0 - }, - kelvin: { - name: 'kelvin', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - celsius: { - name: 'celsius', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 273.15 - }, - fahrenheit: { - name: 'fahrenheit', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1 / 1.8, - offset: 459.67 - }, - rankine: { - name: 'rankine', - base: BASE_UNITS.TEMPERATURE, - prefixes: PREFIXES.NONE, - value: 1 / 1.8, - offset: 0 - }, - - // amount of substance - mol: { - name: 'mol', - base: BASE_UNITS.AMOUNT_OF_SUBSTANCE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - mole: { - name: 'mole', - base: BASE_UNITS.AMOUNT_OF_SUBSTANCE, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - - // luminous intensity - cd: { - name: 'cd', - base: BASE_UNITS.LUMINOUS_INTENSITY, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - candela: { - name: 'candela', - base: BASE_UNITS.LUMINOUS_INTENSITY, - prefixes: PREFIXES.NONE, - value: 1, - offset: 0 - }, - // TODO: units STERADIAN - //{name: 'sr', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0}, - //{name: 'steradian', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0}, - - // Force - N: { - name: 'N', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - newton: { - name: 'newton', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - dyn: { - name: 'dyn', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.SHORT, - value: 0.00001, - offset: 0 - }, - dyne: { - name: 'dyne', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.LONG, - value: 0.00001, - offset: 0 - }, - lbf: { - name: 'lbf', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.NONE, - value: 4.4482216152605, - offset: 0 - }, - poundforce: { - name: 'poundforce', - base: BASE_UNITS.FORCE, - prefixes: PREFIXES.NONE, - value: 4.4482216152605, - offset: 0 - }, - // Energy - J: { - name: 'J', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - joule: { - name: 'joule', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - erg: { - name: 'erg', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.NONE, - value: 1e-5, - offset: 0 - }, - Wh: { - name: 'Wh', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.SHORT, - value: 3600, - offset: 0 - }, - BTU: { - name: 'BTU', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.BTU, - value: 1055.05585262, - offset: 0 - }, - eV: { - name: 'eV', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.SHORT, - value: 1.602176565e-19, - offset: 0 - }, - electronvolt: { - name: 'electronvolt', - base: BASE_UNITS.ENERGY, - prefixes: PREFIXES.LONG, - value: 1.602176565e-19, - offset: 0 - }, - - - // Power - W: { - name: 'W', - base: BASE_UNITS.POWER, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - watt: { - name: 'W', - base: BASE_UNITS.POWER, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - hp: { - name: 'hp', - base: BASE_UNITS.POWER, - prefixes: PREFIXES.NONE, - value: 745.6998715386, - offset: 0 - }, - - // Pressure - Pa: { - name: 'Pa', - base: BASE_UNITS.PRESSURE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - psi: { - name: 'psi', - base: BASE_UNITS.PRESSURE, - prefixes: PREFIXES.NONE, - value: 6894.75729276459, - offset: 0 - }, - atm: { - name: 'atm', - base: BASE_UNITS.PRESSURE, - prefixes: PREFIXES.NONE, - value: 101325, - offset: 0 - }, - - // Electric charge - coulomb: { - name: 'coulomb', - base: BASE_UNITS.ELECTRIC_CHARGE, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - C: { - name: 'C', - base: BASE_UNITS.ELECTRIC_CHARGE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Electric capacitance - farad: { - name: 'farad', - base: BASE_UNITS.ELECTRIC_CAPACITANCE, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - F: { - name: 'F', - base: BASE_UNITS.ELECTRIC_CAPACITANCE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Electric potential - volt: { - name: 'volt', - base: BASE_UNITS.ELECTRIC_POTENTIAL, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - V: { - name: 'V', - base: BASE_UNITS.ELECTRIC_POTENTIAL, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Electric resistance - ohm: { - name: 'ohm', - base: BASE_UNITS.ELECTRIC_RESISTANCE, - prefixes: PREFIXES.SHORTLONG, // Both Mohm and megaohm are acceptable - value: 1, - offset: 0 - }, - /* - * Unicode breaks in browsers if charset is not specified - Ω: { - name: 'Ω', - base: BASE_UNITS.ELECTRIC_RESISTANCE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - */ - // Electric inductance - henry: { - name: 'henry', - base: BASE_UNITS.ELECTRIC_INDUCTANCE, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - H: { - name: 'H', - base: BASE_UNITS.ELECTRIC_INDUCTANCE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Electric conductance - siemens: { - name: 'siemens', - base: BASE_UNITS.ELECTRIC_CONDUCTANCE, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - S: { - name: 'S', - base: BASE_UNITS.ELECTRIC_CONDUCTANCE, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Magnetic flux - weber: { - name: 'weber', - base: BASE_UNITS.MAGNETIC_FLUX, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - Wb: { - name: 'Wb', - base: BASE_UNITS.MAGNETIC_FLUX, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - // Magnetic flux density - tesla: { - name: 'tesla', - base: BASE_UNITS.MAGNETIC_FLUX_DENSITY, - prefixes: PREFIXES.LONG, - value: 1, - offset: 0 - }, - T: { - name: 'T', - base: BASE_UNITS.MAGNETIC_FLUX_DENSITY, - prefixes: PREFIXES.SHORT, - value: 1, - offset: 0 - }, - - // Binary - b: { - name: 'b', - base: BASE_UNITS.BIT, - prefixes: PREFIXES.BINARY_SHORT, - value: 1, - offset: 0 - }, - bits: { - name: 'bits', - base: BASE_UNITS.BIT, - prefixes: PREFIXES.BINARY_LONG, - value: 1, - offset: 0 - }, - B: { - name: 'B', - base: BASE_UNITS.BIT, - prefixes: PREFIXES.BINARY_SHORT, - value: 8, - offset: 0 - }, - bytes: { - name: 'bytes', - base: BASE_UNITS.BIT, - prefixes: PREFIXES.BINARY_LONG, - value: 8, - offset: 0 - } - }; - - // aliases (formerly plurals) - var ALIASES = { - meters: 'meter', - inches: 'inch', - feet: 'foot', - yards: 'yard', - miles: 'mile', - links: 'link', - rods: 'rod', - chains: 'chain', - angstroms: 'angstrom', - - lt: 'l', - litres: 'litre', - liter: 'litre', - liters: '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', - lb: 'lbm', - lbs: 'lbm', - - seconds: 'second', - minutes: 'minute', - hours: 'hour', - days: 'day', - - hertz: 'hertz', - - radians: 'rad', - degree: 'deg', - degrees: 'deg', - gradian: 'grad', - gradians: 'grad', - cycles: 'cycle', - arcsecond: 'arcsec', - arcseconds: 'arcsec', - arcminute: 'arcmin', - arcminutes: 'arcmin', - - BTUs: 'BTU', - watts: 'watt', - joules: 'joule', - - amperes: 'ampere', - coulombs: 'coulomb', - volts: 'volt', - ohms: 'ohm', - farads: 'farad', - webers: 'weber', - teslas: 'tesla', - electronvolts: 'electronvolt', - moles: 'mole' - - }; - - /** - * A unit system is a set of dimensionally independent base units plus a set of derived units, formed by multiplication and division of the base units, that are by convention used with the unit system. - * A user perhaps could issue a command to select a preferred unit system, or use the default (see below). - * Auto unit system: The default unit system is updated on the fly anytime a unit is parsed. The corresponding unit in the default unit system is updated, so that answers are given in the same units the user supplies. - */ - var UNIT_SYSTEMS = { - si: { - // Base units - NONE: {unit: UNIT_NONE, prefix: PREFIXES.NONE['']}, - LENGTH: {unit: UNITS.m, prefix: PREFIXES.SHORT['']}, - MASS: {unit: UNITS.g, prefix: PREFIXES.SHORT['k']}, - TIME: {unit: UNITS.s, prefix: PREFIXES.SHORT['']}, - CURRENT: {unit: UNITS.A, prefix: PREFIXES.SHORT['']}, - TEMPERATURE: {unit: UNITS.K, prefix: PREFIXES.SHORT['']}, - LUMINOUS_INTENSITY: {unit: UNITS.cd, prefix: PREFIXES.SHORT['']}, - AMOUNT_OF_SUBSTANCE: {unit: UNITS.mol, prefix: PREFIXES.SHORT['']}, - ANGLE: {unit: UNITS.rad, prefix: PREFIXES.SHORT['']}, - BIT: {unit: UNITS.bit, prefix: PREFIXES.SHORT['']}, - - // Derived units - FORCE: {unit: UNITS.N, prefix: PREFIXES.SHORT['']}, - ENERGY: {unit: UNITS.J, prefix: PREFIXES.SHORT['']}, - POWER: {unit: UNITS.W, prefix: PREFIXES.SHORT['']}, - PRESSURE: {unit: UNITS.Pa, prefix: PREFIXES.SHORT['']}, - ELECTRIC_CHARGE: {unit: UNITS.C, prefix: PREFIXES.SHORT['']}, - ELECTRIC_CAPACITANCE: {unit: UNITS.F, prefix: PREFIXES.SHORT['']}, - ELECTRIC_POTENTIAL: {unit: UNITS.V, prefix: PREFIXES.SHORT['']}, - ELECTRIC_RESISTANCE: {unit: UNITS.ohm, prefix: PREFIXES.SHORT['']}, - ELECTRIC_INDUCTANCE: {unit: UNITS.H, prefix: PREFIXES.SHORT['']}, - ELECTRIC_CONDUCTANCE: {unit: UNITS.S, prefix: PREFIXES.SHORT['']}, - MAGNETIC_FLUX: {unit: UNITS.Wb, prefix: PREFIXES.SHORT['']}, - MAGNETIC_FLUX_DENSITY: {unit: UNITS.T, prefix: PREFIXES.SHORT['']}, - FREQUENCY: {unit: UNITS.Hz, prefix: PREFIXES.SHORT['']} - } - }; - - // Clone to create the other unit systems - UNIT_SYSTEMS.cgs = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); - UNIT_SYSTEMS.cgs.LENGTH = {unit: UNITS.m, prefix: PREFIXES.SHORT['c']}; - UNIT_SYSTEMS.cgs.MASS = {unit: UNITS.g, prefix: PREFIXES.SHORT['']}; - UNIT_SYSTEMS.cgs.FORCE = {unit: UNITS.dyn, prefix: PREFIXES.SHORT['']}; - UNIT_SYSTEMS.cgs.ENERGY = {unit: UNITS.erg, prefix: PREFIXES.NONE['']}; - // there are wholly 4 unique cgs systems for electricity and magnetism, - // so let's not worry about it unless somebody complains - - UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); - UNIT_SYSTEMS.us.LENGTH = {unit: UNITS.ft, prefix: PREFIXES.NONE['']}; - UNIT_SYSTEMS.us.MASS = {unit: UNITS.lbm, prefix: PREFIXES.NONE['']}; - UNIT_SYSTEMS.us.TEMPERATURE = {unit: UNITS.degF, prefix: PREFIXES.NONE['']}; - UNIT_SYSTEMS.us.FORCE = {unit: UNITS.lbf, prefix: PREFIXES.NONE['']}; - UNIT_SYSTEMS.us.ENERGY = {unit: UNITS.BTU, prefix: PREFIXES.BTU['']}; - UNIT_SYSTEMS.us.POWER = {unit: UNITS.hp, prefix: PREFIXES.NONE['']}; - UNIT_SYSTEMS.us.PRESSURE = {unit: UNITS.psi, prefix: PREFIXES.NONE['']}; - - // Add additional unit systems here. - - - - // Choose a unit system to seed the auto unit system. - UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); - - // Set the current unit system - var currentUnitSystem = UNIT_SYSTEMS.auto; - - /** - * Set a unit system for formatting derived units. - * @param {string} [name] The name of the unit system. - */ - Unit.setUnitSystem = function(name) { - if(UNIT_SYSTEMS.hasOwnProperty(name)) { - currentUnitSystem = UNIT_SYSTEMS[name]; - } - else { - throw new Error('Unit system ' + name + ' does not exist. Choices are: ' + Object.keys(UNIT_SYSTEMS).join(', ')); - } - }; - - /** - * Return the current unit system. - * @return {string} The current unit system. - */ - Unit.getUnitSystem = function() { - for(var key in UNIT_SYSTEMS) { - if(UNIT_SYSTEMS[key] === currentUnitSystem) { - return key; - } - } - }; - - /** - * Converters to convert from number to an other numeric type like BigNumber - * or Fraction - */ - Unit.typeConverters = { - BigNumber: function (x) { - return new type.BigNumber(x + ''); // stringify to prevent constructor error - }, - - Fraction: function (x) { - return new type.Fraction(x); - }, - - number: function (x) { - return x; - } - }; - - /** - * Retrieve the right convertor function corresponding with the type - * of provided exampleValue. + * See also: * - * @param {string} type A string 'number', 'BigNumber', or 'Fraction' - * In case of an unknown type, - * @return {Function} + * bignumber, boolean, index, matrix, number, string, unit + * + * @param {* | Array | Matrix} [args] + * Arguments specifying the real and imaginary part of the complex number + * @return {Complex | Array | Matrix} Returns a complex value */ - Unit._getNumberConverter = function (type) { - if (!Unit.typeConverters[type]) { - throw new TypeError('Unsupported type "' + type + '"'); - } + var complex = typed('complex', { + '': function () { + return new type.Complex(0, 0); + }, - return Unit.typeConverters[type]; + 'number': function (x) { + return new type.Complex(x, 0); + }, + + 'number, number': function (re, im) { + return new type.Complex(re, im); + }, + + // TODO: this signature should be redundant + 'BigNumber, BigNumber': function (re, im) { + return new type.Complex(re.toNumber(), im.toNumber()); + }, + + 'Complex': function (x) { + return x.clone(); + }, + + 'string': function (x) { + return type.Complex.parse(x); // for example '2 + 3i' + }, + + 'Object': function (x) { + if('re' in x && 'im' in x) { + return new type.Complex(x.re, x.im); + } + + if ('r' in x && 'phi' in x) { + return type.Complex.fromPolar(x.r, x.phi); + } + + throw new Error('Expected object with either properties re and im, or properties r and phi.'); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, complex); + } + }); + + complex.toTex = { + 0: '0', + 1: '\\left(${args[0]}\\right)', + 2: '\\left(\\left(${args[0]}\\right)+' + + latex.symbols['i'] + '\\cdot\\left(${args[1]}\\right)\\right)' }; - // Add dimensions to each built-in unit - for (var key in UNITS) { - var unit = UNITS[key]; - unit.dimensions = unit.base.dimensions; - } - - // Create aliases - for (var name in ALIASES) { - /* istanbul ignore next (we cannot really test next statement) */ - if (ALIASES.hasOwnProperty(name)) { - var unit = UNITS[ALIASES[name]]; - var alias = Object.create(unit); - alias.name = name; - UNITS[name] = alias; - } - } - - Unit.PREFIXES = PREFIXES; - Unit.BASE_UNITS = BASE_UNITS; - Unit.UNITS = UNITS; - Unit.UNIT_SYSTEMS = UNIT_SYSTEMS; - - return Unit; + return complex; } - exports.name = 'Unit'; - exports.path = 'type'; + exports.name = 'complex'; exports.factory = factory; @@ -10936,313 +8494,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 | Fraction | Complex | Unit} x First value to add - * @param {number | BigNumber | Fraction | Complex} y Second value to add - * @return {number | BigNumber | Fraction | Complex | Unit} Sum of `x` and `y` - * @private - */ - var add = typed('add', { - - '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); - }, - - 'Fraction, Fraction': function (x, y) { - return x.add(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 = add(res.value, y.value); - res.fixPrefix = false; - return res; - } - }); - - return add; - } - - exports.factory = factory; - - -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var DimensionError = __webpack_require__(31); - - function factory (type, config, load, typed) { - var latex = __webpack_require__(32); - - var matrix = load(__webpack_require__(33)); - var addScalar = load(__webpack_require__(29)); - var unaryMinus = load(__webpack_require__(34)); - - var algorithm01 = load(__webpack_require__(35)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm05 = load(__webpack_require__(37)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); - - // TODO: split function subtract in two: subtract and subtractScalar - - /** - * Subtract two values, `x - y`. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.subtract(x, y) - * - * Examples: - * - * math.subtract(5.3, 2); // returns number 3.3 - * - * var a = math.complex(2, 3); - * var b = math.complex(4, 1); - * math.subtract(a, b); // returns Complex -2 + 2i - * - * math.subtract([5, 7, 4], 4); // returns Array [1, 3, 0] - * - * var c = math.unit('2.1 km'); - * var d = math.unit('500m'); - * math.subtract(c, d); // returns Unit 1.6 km - * - * See also: - * - * add - * - * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x - * Initial value - * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y - * Value to subtract from `x` - * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} - * Subtraction of `x` and `y` - */ - var subtract = typed('subtract', { - - '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.minus(y); - }, - - 'Fraction, Fraction': function (x, y) { - return x.sub(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 = subtract(res.value, y.value); - res.fixPrefix = false; - - return res; - }, - - 'Matrix, Matrix': function (x, y) { - // matrix sizes - var xsize = x.size(); - var ysize = y.size(); - - // check dimensions - if (xsize.length !== ysize.length) - throw new DimensionError(xsize.length, ysize.length); - - // result - var c; - - // process matrix storage - switch (x.storage()) { - case 'sparse': - switch (y.storage()) { - case 'sparse': - // sparse - sparse - c = algorithm05(x, y, subtract); - break; - default: - // sparse - dense - c = algorithm03(y, x, subtract, true); - break; - } - break; - default: - switch (y.storage()) { - case 'sparse': - // dense - sparse - c = algorithm01(x, y, subtract, false); - break; - default: - // dense - dense - c = algorithm13(x, y, subtract); - break; - } - break; - } - return c; - }, - - 'Array, Array': function (x, y) { - // use matrix implementation - return subtract(matrix(x), matrix(y)).valueOf(); - }, - - 'Array, Matrix': function (x, y) { - // use matrix implementation - return subtract(matrix(x), y); - }, - - 'Matrix, Array': function (x, y) { - // use matrix implementation - return subtract(x, matrix(y)); - }, - - 'Matrix, any': function (x, y) { - // result - var c; - // check storage format - switch (x.storage()) { - case 'sparse': - // algorithm 7 is faster than 9 since it calls f() for nonzero items only! - c = algorithm10(x, unaryMinus(y), addScalar); - break; - default: - c = algorithm14(x, y, subtract); - break; - } - return c; - }, - - 'any, Matrix': function (x, y) { - // result - var c; - // check storage format - switch (y.storage()) { - case 'sparse': - c = algorithm10(y, x, subtract, true); - break; - default: - c = algorithm14(y, x, subtract, true); - break; - } - return c; - }, - - 'Array, any': function (x, y) { - // use matrix implementation - return algorithm14(matrix(x), y, subtract, false).valueOf(); - }, - - 'any, Array': function (x, y) { - // use matrix implementation - return algorithm14(matrix(y), x, subtract, true).valueOf(); - } - }); - - subtract.toTex = '\\left(${args[0]}' + latex.operators['subtract'] + '${args[1]}\\right)'; - - return subtract; - } - - exports.name = 'subtract'; - exports.factory = factory; - - -/***/ }, -/* 31 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Create a range error with the message: - * 'Dimension mismatch ( != )' - * @param {number | number[]} actual The actual size - * @param {number | number[]} expected The expected size - * @param {string} [relation='!='] Optional relation between actual - * and expected size: '!=', '<', etc. - * @extends RangeError - */ - function DimensionError(actual, expected, relation) { - if (!(this instanceof DimensionError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.actual = actual; - this.expected = expected; - this.relation = relation; - - this.message = 'Dimension mismatch (' + - (Array.isArray(actual) ? ('[' + actual.join(', ') + ']') : actual) + - ' ' + (this.relation || '!=') + ' ' + - (Array.isArray(expected) ? ('[' + expected.join(', ') + ']') : expected) + - ')'; - - this.stack = (new Error()).stack; - } - - DimensionError.prototype = new RangeError(); - DimensionError.prototype.constructor = RangeError; - DimensionError.prototype.name = 'DimensionError'; - DimensionError.prototype.isDimensionError = true; - - module.exports = DimensionError; - - -/***/ }, -/* 32 */ -/***/ function(module, exports) { - - 'use strict'; - exports.symbols = { // GREEK LETTERS Alpha: 'A', alpha: '\\alpha', @@ -11348,4124 +8599,23 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 33 */ -/***/ function(module, exports) { - - 'use strict'; - - function factory (type, config, load, typed) { - /** - * Create a 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. - * Supported storage formats are 'dense' and 'sparse'. - * - * Syntax: - * - * math.matrix() // creates an empty matrix using default storage format (dense). - * math.matrix(data) // creates a matrix with initial data using default storage format (dense). - * math.matrix('dense') // creates an empty matrix using the given storage format. - * math.matrix(data, 'dense') // creates a matrix with initial data using the given storage format. - * math.matrix(data, 'sparse') // creates a sparse matrix with initial data. - * math.matrix(data, 'sparse', 'number') // creates a sparse matrix with initial data, number data type. - * - * Examples: - * - * var m = math.matrix([[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, sparse - * - * @param {Array | Matrix} [data] A multi dimensional array - * @param {string} [format] The Matrix storage format - * - * @return {Matrix} The created matrix - */ - var matrix = typed('matrix', { - '': function () { - return _create([]); - }, - - 'string': function (format) { - return _create([], format); - }, - - 'string, string': function (format, datatype) { - return _create([], format, datatype); - }, - - 'Array': function (data) { - return _create(data); - }, - - 'Matrix': function (data) { - return _create(data, data.storage()); - }, - - 'Array | Matrix, string': _create, - - 'Array | Matrix, string, string': _create - }); - - matrix.toTex = { - 0: '\\begin{bmatrix}\\end{bmatrix}', - 1: '\\left(${args[0]}\\right)', - 2: '\\left(${args[0]}\\right)' - }; - - return matrix; - - /** - * Create a new Matrix with given storage format - * @param {Array} data - * @param {string} [format] - * @param {string} [datatype] - * @returns {Matrix} Returns a new Matrix - * @private - */ - function _create(data, format, datatype) { - // get storage format constructor - var M = type.Matrix.storage(format || 'default'); - - // create instance - return new M(data, datatype); - } - } - - exports.name = 'matrix'; - exports.factory = factory; - - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - var latex = __webpack_require__(32); - - /** - * Inverse the sign of a value, apply a unary minus operation. - * - * For matrices, the function is evaluated element wise. Boolean values and - * strings will be converted to a number. For complex numbers, both real and - * complex value are inverted. - * - * Syntax: - * - * math.unaryMinus(x) - * - * Examples: - * - * math.unaryMinus(3.5); // returns -3.5 - * math.unaryMinus(-4.2); // returns 4.2 - * - * See also: - * - * add, subtract, unaryPlus - * - * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Number to be inverted. - * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Returns the value with inverted sign. - */ - var unaryMinus = typed('unaryMinus', { - 'number': function (x) { - return -x; - }, - - 'Complex': function (x) { - return new type.Complex(-x.re, -x.im); - }, - - 'BigNumber': function (x) { - return x.neg(); - }, - - 'Fraction': function (x) { - return x.neg(); - }, - - 'Unit': function (x) { - var res = x.clone(); - res.value = unaryMinus(x.value); - return res; - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since unaryMinus(0) = 0 - return deepMap(x, unaryMinus, true); - } - - // TODO: add support for string - }); - - unaryMinus.toTex = latex.operators['unaryMinus'] + '\\left(${args[0]}\\right)'; - - return unaryMinus; - } - - exports.name = 'unaryMinus'; - exports.factory = factory; - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var DimensionError = __webpack_require__(31); - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij). - * Callback function invoked NNZ times (number of nonzero items in SparseMatrix). - * - * - * ┌ f(Dij, Sij) ; S(i,j) !== 0 - * C(i,j) = ┤ - * └ Dij ; otherwise - * - * - * @param {Matrix} denseMatrix The DenseMatrix instance (D) - * @param {Matrix} sparseMatrix The SparseMatrix instance (S) - * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j) - * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij) - * - * @return {Matrix} DenseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571 - */ - var algorithm01 = function (denseMatrix, sparseMatrix, callback, inverse) { - // dense matrix arrays - var adata = denseMatrix._data; - var asize = denseMatrix._size; - var adt = denseMatrix._datatype; - // sparse matrix arrays - var bvalues = sparseMatrix._values; - var bindex = sparseMatrix._index; - var bptr = sparseMatrix._ptr; - var bsize = sparseMatrix._size; - var bdt = sparseMatrix._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // sparse matrix cannot be a Pattern matrix - if (!bvalues) - throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // process data types - var dt = typeof adt === 'string' && adt === bdt ? adt : undefined; - // callback function - var cf = dt ? typed.find(callback, [dt, dt]) : callback; - - // vars - var i, j; - - // result (DenseMatrix) - var cdata = []; - // initialize c - for (i = 0; i < rows; i++) - cdata[i] = []; - - // workspace - var x = []; - // marks indicating we have a value in x for a given column - var w = []; - - // loop columns in b - for (j = 0; j < columns; j++) { - // column mark - var mark = j + 1; - // values in column j - for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { - // row - i = bindex[k]; - // update workspace - x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); - // mark i as updated - w[i] = mark; - } - // loop rows - for (i = 0; i < rows; i++) { - // check row is in workspace - if (w[i] === mark) { - // c[i][j] was already calculated - cdata[i][j] = x[i]; - } - else { - // item does not exist in S - cdata[i][j] = adata[i][j]; - } - } - } - - // return dense matrix - return new DenseMatrix({ - data: cdata, - size: [rows, columns], - datatype: dt - }); - }; - - return algorithm01; - } - - exports.name = 'algorithm01'; - exports.factory = factory; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var DimensionError = __webpack_require__(31); - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over SparseMatrix items and invokes the callback function f(Dij, Sij). - * Callback function invoked M*N times. - * - * - * ┌ f(Dij, Sij) ; S(i,j) !== 0 - * C(i,j) = ┤ - * └ f(Dij, 0) ; otherwise - * - * - * @param {Matrix} denseMatrix The DenseMatrix instance (D) - * @param {Matrix} sparseMatrix The SparseMatrix instance (C) - * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j) - * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij) - * - * @return {Matrix} DenseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571 - */ - var algorithm03 = function (denseMatrix, sparseMatrix, callback, inverse) { - // dense matrix arrays - var adata = denseMatrix._data; - var asize = denseMatrix._size; - var adt = denseMatrix._datatype; - // sparse matrix arrays - var bvalues = sparseMatrix._values; - var bindex = sparseMatrix._index; - var bptr = sparseMatrix._ptr; - var bsize = sparseMatrix._size; - var bdt = sparseMatrix._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // sparse matrix cannot be a Pattern matrix - if (!bvalues) - throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result (DenseMatrix) - var cdata = []; - - // initialize dense matrix - for (var z = 0; z < rows; z++) { - // initialize row - cdata[z] = []; - } - - // workspace - var x = []; - // marks indicating we have a value in x for a given column - var w = []; - - // loop columns in b - for (var j = 0; j < columns; j++) { - // column mark - var mark = j + 1; - // values in column j - for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { - // row - var i = bindex[k]; - // update workspace - x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); - w[i] = mark; - } - // process workspace - for (var y = 0; y < rows; y++) { - // check we have a calculated value for current row - if (w[y] === mark) { - // use calculated value - cdata[y][j] = x[y]; - } - else { - // calculate value - cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero); - } - } - } - - // return dense matrix - return new DenseMatrix({ - data: cdata, - size: [rows, columns], - datatype: dt - }); - }; - - return algorithm03; - } - - exports.name = 'algorithm03'; - exports.factory = factory; - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var DimensionError = __webpack_require__(31); - - function factory (type, config, load, typed) { - - var equalScalar = load(__webpack_require__(38)); - - var SparseMatrix = type.SparseMatrix; - - /** - * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). - * Callback function invoked MAX(NNZA, NNZB) times - * - * - * ┌ f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0 - * C(i,j) = ┤ - * └ 0 ; otherwise - * - * - * @param {Matrix} a The SparseMatrix instance (A) - * @param {Matrix} b The SparseMatrix instance (B) - * @param {Function} callback The f(Aij,Bij) operation to invoke - * - * @return {Matrix} SparseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 - */ - var algorithm05 = function (a, b, callback) { - // sparse matrix arrays - var avalues = a._values; - var aindex = a._index; - var aptr = a._ptr; - var asize = a._size; - var adt = a._datatype; - // sparse matrix arrays - var bvalues = b._values; - var bindex = b._index; - var bptr = b._ptr; - var bsize = b._size; - var bdt = b._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // equal signature to use - var eq = equalScalar; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // find signature that matches (dt, dt) - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cvalues = avalues && bvalues ? [] : undefined; - var cindex = []; - var cptr = []; - // matrix - var c = new SparseMatrix({ - values: cvalues, - index: cindex, - ptr: cptr, - size: [rows, columns], - datatype: dt - }); - - // workspaces - var xa = cvalues ? [] : undefined; - var xb = cvalues ? [] : undefined; - // marks indicating we have a value in x for a given column - var wa = []; - var wb = []; - - // vars - var i, j, k, k1; - - // loop columns - for (j = 0; j < columns; j++) { - // update cptr - cptr[j] = cindex.length; - // columns mark - var mark = j + 1; - // loop values A(:,j) - for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) { - // row - i = aindex[k]; - // push index - cindex.push(i); - // update workspace - wa[i] = mark; - // check we need to process values - if (xa) - xa[i] = avalues[k]; - } - // loop values B(:,j) - for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) { - // row - i = bindex[k]; - // check row existed in A - if (wa[i] !== mark) { - // push index - cindex.push(i); - } - // update workspace - wb[i] = mark; - // check we need to process values - if (xb) - xb[i] = bvalues[k]; - } - // check we need to process values (non pattern matrix) - if (cvalues) { - // initialize first index in j - k = cptr[j]; - // loop index in j - while (k < cindex.length) { - // row - i = cindex[k]; - // marks - var wai = wa[i]; - var wbi = wb[i]; - // check Aij or Bij are nonzero - if (wai === mark || wbi === mark) { - // matrix values @ i,j - var va = wai === mark ? xa[i] : zero; - var vb = wbi === mark ? xb[i] : zero; - // Cij - var vc = cf(va, vb); - // check for zero - if (!eq(vc, zero)) { - // push value - cvalues.push(vc); - // increment pointer - k++; - } - else { - // remove value @ i, do not increment pointer - cindex.splice(k, 1); - } - } - } - } - } - // update cptr - cptr[columns] = cindex.length; - - // return sparse matrix - return c; - }; - - return algorithm05; - } - - exports.name = 'algorithm05'; - exports.factory = factory; - - -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var nearlyEqual = __webpack_require__(6).nearlyEqual; - - function factory (type, config, load, typed) { - - /** - * Test whether two values are equal. - * - * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare - * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare - * @return {boolean} Returns true when the compared values are equal, else returns false - * @private - */ - var equalScalar = typed('equalScalar', { - - '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.eq(y); - }, - - 'Fraction, Fraction': function (x, y) { - return x.equals(y); - }, - - 'Complex, Complex': function (x, y) { - return (x.re === y.re || nearlyEqual(x.re, y.re, config.epsilon)) && - (x.im === y.im || nearlyEqual(x.im, y.im, config.epsilon)); - }, - - 'Unit, Unit': function (x, y) { - if (!x.equalBase(y)) { - throw new Error('Cannot compare units with different base'); - } - return equalScalar(x.value, y.value); - }, - - 'string, string': function (x, y) { - return x === y; - } - }); - - return equalScalar; - } - - exports.factory = factory; - - -/***/ }, -/* 39 */ -/***/ function(module, exports) { - - 'use strict'; - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). - * Callback function invoked NZ times (number of nonzero items in S). - * - * - * ┌ f(Sij, b) ; S(i,j) !== 0 - * C(i,j) = ┤ - * └ b ; otherwise - * - * - * @param {Matrix} s The SparseMatrix instance (S) - * @param {Scalar} b The Scalar value - * @param {Function} callback The f(Aij,b) operation to invoke - * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) - * - * @return {Matrix} DenseMatrix (C) - * - * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 - */ - var algorithm10 = function (s, b, callback, inverse) { - // sparse matrix arrays - var avalues = s._values; - var aindex = s._index; - var aptr = s._ptr; - var asize = s._size; - var adt = s._datatype; - - // sparse matrix cannot be a Pattern matrix - if (!avalues) - throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string') { - // datatype - dt = adt; - // convert b to the same datatype - b = typed.convert(b, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cdata = []; - // matrix - var c = new DenseMatrix({ - data: cdata, - size: [rows, columns], - datatype: dt - }); - - // workspaces - var x = []; - // marks indicating we have a value in x for a given column - var w = []; - - // loop columns - for (var j = 0; j < columns; j++) { - // columns mark - var mark = j + 1; - // values in j - for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { - // row - var r = aindex[k]; - // update workspace - x[r] = avalues[k]; - w[r] = mark; - } - // loop rows - for (var i = 0; i < rows; i++) { - // initialize C on first column - if (j === 0) { - // create row array - cdata[i] = []; - } - // check sparse matrix has a value @ i,j - if (w[i] === mark) { - // invoke callback, update C - cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b); - } - else { - // dense matrix value @ i, j - cdata[i][j] = b; - } - } - } - - // return sparse matrix - return c; - }; - - return algorithm10; - } - - exports.name = 'algorithm10'; - exports.factory = factory; - - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var util = __webpack_require__(41); - var DimensionError = __webpack_require__(31); - - var string = util.string, - isString = string.isString; - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, Bij..z). - * Callback function invoked MxN times. - * - * C(i,j,...z) = f(Aij..z, Bij..z) - * - * @param {Matrix} a The DenseMatrix instance (A) - * @param {Matrix} b The DenseMatrix instance (B) - * @param {Function} callback The f(Aij..z,Bij..z) operation to invoke - * - * @return {Matrix} DenseMatrix (C) - * - * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658 - */ - var algorithm13 = function (a, b, callback) { - // a arrays - var adata = a._data; - var asize = a._size; - var adt = a._datatype; - // b arrays - var bdata = b._data; - var bsize = b._size; - var bdt = b._datatype; - // c arrays - var csize = []; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // validate each one of the dimension sizes - for (var s = 0; s < asize.length; s++) { - // must match - if (asize[s] !== bsize[s]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - // update dimension in c - csize[s] = asize[s]; - } - - // datatype - var dt; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // convert b to the same datatype - b = typed.convert(b, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // populate cdata, iterate through dimensions - var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : []; - - // c matrix - return new DenseMatrix({ - data: cdata, - size: csize, - datatype: dt - }); - }; - - // recursive function - var _iterate = function (f, level, s, n, av, bv) { - // initialize array for this level - var cv = []; - // check we reach the last level - if (level === s.length - 1) { - // loop arrays in last level - for (var i = 0; i < n; i++) { - // invoke callback and store value - cv[i] = f(av[i], bv[i]); - } - } - else { - // iterate current level - for (var j = 0; j < n; j++) { - // iterate next level - cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]); - } - } - return cv; - }; - - return algorithm13; - } - - exports.name = 'algorithm13'; - exports.factory = factory; - - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.array = __webpack_require__(42); - exports['boolean'] = __webpack_require__(45); - exports['function'] = __webpack_require__(46); - exports.number = __webpack_require__(6); - exports.object = __webpack_require__(3); - exports.string = __webpack_require__(23); - exports.types = __webpack_require__(43); - exports.emitter = __webpack_require__(8); - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var number = __webpack_require__(6); - var string = __webpack_require__(23); - var object = __webpack_require__(3); - var types = __webpack_require__(43); - - var DimensionError = __webpack_require__(31); - var IndexError = __webpack_require__(44); - - /** - * Calculate the size of a multi dimensional array. - * This function checks the size of the first entry, it does not validate - * whether all dimensions match. (use function `validate` for that) - * @param {Array} x - * @Return {Number[]} size - */ - exports.size = function (x) { - var s = []; - - while (Array.isArray(x)) { - s.push(x.length); - x = x[0]; - } - - return s; - }; - - /** - * Recursively validate whether each element in a multi dimensional array - * has a size corresponding to the provided size array. - * @param {Array} array Array to be validated - * @param {number[]} size Array with the size of each dimension - * @param {number} dim Current dimension - * @throws DimensionError - * @private - */ - function _validate(array, size, dim) { - var i; - var len = array.length; - - if (len != size[dim]) { - throw new DimensionError(len, size[dim]); - } - - if (dim < size.length - 1) { - // recursively validate each child array - var dimNext = dim + 1; - for (i = 0; i < len; i++) { - var child = array[i]; - if (!Array.isArray(child)) { - throw new DimensionError(size.length - 1, size.length, '<'); - } - _validate(array[i], size, dimNext); - } - } - else { - // last dimension. none of the childs may be an array - for (i = 0; i < len; i++) { - if (Array.isArray(array[i])) { - throw new DimensionError(size.length + 1, size.length, '>'); - } - } - } - } - - /** - * Validate whether each element in a multi dimensional array has - * a size corresponding to the provided size array. - * @param {Array} array Array to be validated - * @param {number[]} size Array with the size of each dimension - * @throws DimensionError - */ - exports.validate = function(array, size) { - var isScalar = (size.length == 0); - if (isScalar) { - // scalar - if (Array.isArray(array)) { - throw new DimensionError(array.length, 0); - } - } - else { - // array - _validate(array, size, 0); - } - }; - - /** - * Test whether index is an integer number with index >= 0 and index < length - * @param {number} index Zero-based index - * @param {number} [length] Length of the array - */ - exports.validateIndex = function(index, length) { - if (!number.isNumber(index) || !number.isInteger(index)) { - throw new TypeError('Index must be an integer (value: ' + index + ')'); - } - if (index < 0) { - throw new IndexError(index); - } - if (length !== undefined && index >= length) { - throw new IndexError(index, length); - } - }; - - // a constant used to specify an undefined defaultValue - exports.UNINITIALIZED = {}; - - /** - * Resize a multi dimensional array. The resized array is returned. - * @param {Array} array Array to be resized - * @param {Array.} size Array with the size of each dimension - * @param {*} [defaultValue=0] Value to be filled in in new entries, - * zero by default. To leave new entries undefined, - * specify array.UNINITIALIZED as defaultValue - * @return {Array} array The resized array - */ - exports.resize = function(array, size, defaultValue) { - // TODO: add support for scalars, having size=[] ? - - // check the type of the arguments - if (!Array.isArray(array) || !Array.isArray(size)) { - throw new TypeError('Array expected'); - } - if (size.length === 0) { - throw new Error('Resizing to scalar is not supported'); - } - - // check whether size contains positive integers - size.forEach(function (value) { - if (!number.isNumber(value) || !number.isInteger(value) || value < 0) { - throw new TypeError('Invalid size, must contain positive integers ' + - '(size: ' + string.format(size) + ')'); - } - }); - - // recursively resize the array - var _defaultValue = (defaultValue !== undefined) ? defaultValue : 0; - _resize(array, size, 0, _defaultValue); - - return array; - }; - - /** - * Recursively resize a multi dimensional array - * @param {Array} array Array to be resized - * @param {number[]} size Array with the size of each dimension - * @param {number} dim Current dimension - * @param {*} [defaultValue] Value to be filled in in new entries, - * undefined by default. - * @private - */ - function _resize (array, size, dim, defaultValue) { - var i; - var elem; - var oldLen = array.length; - var newLen = size[dim]; - var minLen = Math.min(oldLen, newLen); - - // apply new length - array.length = newLen; - - if (dim < size.length - 1) { - // non-last dimension - var dimNext = dim + 1; - - // resize existing child arrays - for (i = 0; i < minLen; i++) { - // resize child array - elem = array[i]; - if (!Array.isArray(elem)) { - elem = [elem]; // add a dimension - array[i] = elem; - } - _resize(elem, size, dimNext, defaultValue); - } - - // create new child arrays - for (i = minLen; i < newLen; i++) { - // get child array - elem = []; - array[i] = elem; - - // resize new child array - _resize(elem, size, dimNext, defaultValue); - } - } - else { - // last dimension - - // remove dimensions of existing values - for (i = 0; i < minLen; i++) { - while (Array.isArray(array[i])) { - array[i] = array[i][0]; - } - } - - if(defaultValue !== exports.UNINITIALIZED) { - // fill new elements with the default value - for (i = minLen; i < newLen; i++) { - array[i] = object.clone(defaultValue); - } - } - } - } - - /** - * Squeeze a multi dimensional array - * @param {Array} array - * @param {Array} [size] - * @returns {Array} returns the array itself - */ - exports.squeeze = function(array, size) { - var s = size || exports.size(array); - - // squeeze outer dimensions - while (Array.isArray(array) && array.length === 1) { - array = array[0]; - s.shift(); - } - - // find the first dimension to be squeezed - var dims = s.length; - while (s[dims - 1] === 1) { - dims--; - } - - // squeeze inner dimensions - if (dims < s.length) { - array = _squeeze(array, dims, 0); - s.length = dims; - } - - return array; - }; - - /** - * Recursively squeeze a multi dimensional array - * @param {Array} array - * @param {number} dims Required number of dimensions - * @param {number} dim Current dimension - * @returns {Array | *} Returns the squeezed array - * @private - */ - function _squeeze (array, dims, dim) { - var i, ii; - - if (dim < dims) { - var next = dim + 1; - for (i = 0, ii = array.length; i < ii; i++) { - array[i] = _squeeze(array[i], dims, next); - } - } - else { - while (Array.isArray(array)) { - array = array[0]; - } - } - - return array; - } - - /** - * Unsqueeze a multi dimensional array: add dimensions when missing - * @param {Array} array - * @param {number} dims Desired number of dimensions of the array - * @param {number} [outer] Number of outer dimensions to be added - * @param {Array} [size] Current size of array - * @returns {Array} returns the array itself - * @private - */ - exports.unsqueeze = function(array, dims, outer, size) { - var s = size || exports.size(array); - - // unsqueeze outer dimensions - if (outer) { - for (var i = 0; i < outer; i++) { - array = [array]; - s.unshift(1); - } - } - - // unsqueeze inner dimensions - array = _unsqueeze(array, dims, 0); - while (s.length < dims) { - s.push(1); - } - - return array; - }; - - /** - * Recursively unsqueeze a multi dimensional array - * @param {Array} array - * @param {number} dims Required number of dimensions - * @param {number} dim Current dimension - * @returns {Array | *} Returns the squeezed array - * @private - */ - function _unsqueeze (array, dims, dim) { - var i, ii; - - if (Array.isArray(array)) { - var next = dim + 1; - for (i = 0, ii = array.length; i < ii; i++) { - array[i] = _unsqueeze(array[i], dims, next); - } - } - else { - for (var d = dim; d < dims; d++) { - array = [array]; - } - } - - return array; - } - /** - * Flatten a multi dimensional array, put all elements in a one dimensional - * array - * @param {Array} array A multi dimensional array - * @return {Array} The flattened array (1 dimensional) - */ - exports.flatten = function(array) { - if (!Array.isArray(array)) { - //if not an array, return as is - return array; - } - var flat = []; - - array.forEach(function callback(value) { - if (Array.isArray(value)) { - value.forEach(callback); //traverse through sub-arrays recursively - } - else { - flat.push(value); - } - }); - - return flat; - }; - - /** - * Test whether an object is an array - * @param {*} value - * @return {boolean} isArray - */ - exports.isArray = Array.isArray; - - -/***/ }, -/* 43 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Determine the type of a variable - * - * type(x) - * - * The following types are recognized: - * - * 'undefined' - * 'null' - * 'boolean' - * 'number' - * 'string' - * 'Array' - * 'Function' - * 'Date' - * 'RegExp' - * 'Object' - * - * @param {*} x - * @return {string} Returns the name of the type. Primitive types are lower case, - * non-primitive types are upper-camel-case. - * For example 'number', 'string', 'Array', 'Date'. - */ - exports.type = function(x) { - var type = typeof x; - - if (type === 'object') { - if (x === null) return 'null'; - if (x instanceof Boolean) return 'boolean'; - if (x instanceof Number) return 'number'; - if (x instanceof String) return 'string'; - if (Array.isArray(x)) return 'Array'; - if (x instanceof Date) return 'Date'; - if (x instanceof RegExp) return 'RegExp'; - - return 'Object'; - } - - if (type === 'function') return 'Function'; - - return type; - }; - - -/***/ }, -/* 44 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Create a range error with the message: - * 'Index out of range (index < min)' - * 'Index out of range (index < max)' - * - * @param {number} index The actual index - * @param {number} [min=0] Minimum index (included) - * @param {number} [max] Maximum index (excluded) - * @extends RangeError - */ - function IndexError(index, min, max) { - if (!(this instanceof IndexError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.index = index; - if (arguments.length < 3) { - this.min = 0; - this.max = min; - } - else { - this.min = min; - this.max = max; - } - - if (this.min !== undefined && this.index < this.min) { - this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')'; - } - else if (this.max !== undefined && this.index >= this.max) { - this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')'; - } - else { - this.message = 'Index out of range (' + this.index + ')'; - } - - this.stack = (new Error()).stack; - } - - IndexError.prototype = new RangeError(); - IndexError.prototype.constructor = RangeError; - IndexError.prototype.name = 'IndexError'; - IndexError.prototype.isIndexError = true; - - module.exports = IndexError; - - -/***/ }, -/* 45 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Test whether value is a boolean - * @param {*} value - * @return {boolean} isBoolean - */ - exports.isBoolean = function(value) { - return typeof value == 'boolean'; - }; - - -/***/ }, -/* 46 */ -/***/ function(module, exports) { - - // function utils - - /* - * Memoize a given function by caching the computed result. - * The cache of a memoized function can be cleared by deleting the `cache` - * property of the function. - * - * @param {function} fn The function to be memoized. - * Must be a pure function. - * @param {function(args: Array)} [hasher] A custom hash builder. - * Is JSON.stringify by default. - * @return {function} Returns the memoized function - */ - exports.memoize = function(fn, hasher) { - return function memoize() { - if (typeof memoize.cache !== 'object') { - memoize.cache = {}; - } - - var args = []; - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - var hash = hasher ? hasher(args) : JSON.stringify(args); - if (!(hash in memoize.cache)) { - return memoize.cache[hash] = fn.apply(fn, args); - } - return memoize.cache[hash]; - }; - }; - - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var clone = __webpack_require__(3).clone; - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, b). - * Callback function invoked MxN times. - * - * C(i,j,...z) = f(Aij..z, b) - * - * @param {Matrix} a The DenseMatrix instance (A) - * @param {Scalar} b The Scalar value - * @param {Function} callback The f(Aij..z,b) operation to invoke - * @param {boolean} inverse A true value indicates callback should be invoked f(b,Aij..z) - * - * @return {Matrix} DenseMatrix (C) - * - * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042 - */ - var algorithm14 = function (a, b, callback, inverse) { - // a arrays - var adata = a._data; - var asize = a._size; - var adt = a._datatype; - - // datatype - var dt; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string') { - // datatype - dt = adt; - // convert b to the same datatype - b = typed.convert(b, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // populate cdata, iterate through dimensions - var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : []; - - // c matrix - return new DenseMatrix({ - data: cdata, - size: clone(asize), - datatype: dt - }); - }; - - // recursive function - var _iterate = function (f, level, s, n, av, bv, inverse) { - // initialize array for this level - var cv = []; - // check we reach the last level - if (level === s.length - 1) { - // loop arrays in last level - for (var i = 0; i < n; i++) { - // invoke callback and store value - cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv); - } - } - else { - // iterate current level - for (var j = 0; j < n; j++) { - // iterate next level - cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse); - } - } - return cv; - }; - - return algorithm14; - } - - exports.name = 'algorithm14'; - exports.factory = factory; - - -/***/ }, -/* 48 */ -/***/ function(module, exports) { - - 'use strict'; - - function factory(type, config, load, typed) { - - /** - * Multiply two scalar values, `x * y`. - * This function is meant for internal use: it is used by the public function - * `multiply` - * - * This function does not support collections (Array or Matrix), and does - * not validate the number of of inputs. - * - * @param {number | BigNumber | Fraction | Complex | Unit} x First value to multiply - * @param {number | BigNumber | Fraction | Complex} y Second value to multiply - * @return {number | BigNumber | Fraction | Complex | Unit} Multiplication of `x` and `y` - * @private - */ - var multiplyScalar = typed('multiplyScalar', { - - '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, - x.re * y.im + x.im * y.re - ); - }, - - 'BigNumber, BigNumber': function (x, y) { - return x.times(y); - }, - - 'Fraction, Fraction': function (x, y) { - return x.mul(y); - }, - - 'number | Fraction | BigNumber, Unit': function (x, y) { - var res = y.clone(); - res.value = (res.value === null) ? res._normalize(x) : multiplyScalar(res.value, x); - return res; - }, - - 'Unit, number | Fraction | BigNumber': function (x, y) { - var res = x.clone(); - res.value = (res.value === null) ? res._normalize(y) : multiplyScalar(res.value, y); - return res; - }, - - 'Unit, Unit': function (x, y) { - return x.multiply(y); - } - - }); - - return multiplyScalar; - } - - exports.factory = factory; - - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - function factory(type, config, load, typed) { - var multiplyScalar = load(__webpack_require__(48)); - - /** - * Divide two scalar values, `x / y`. - * This function is meant for internal use: it is used by the public functions - * `divide` and `inv`. - * - * This function does not support collections (Array or Matrix), and does - * not validate the number of of inputs. - * - * @param {number | BigNumber | Fraction | Complex | Unit} x Numerator - * @param {number | BigNumber | Fraction | Complex} y Denominator - * @return {number | BigNumber | Fraction | Complex | Unit} Quotient, `x / y` - * @private - */ - var divideScalar = typed('divide', { - 'number, number': function (x, y) { - return x / y; - }, - - 'Complex, Complex': _divideComplex, - - 'BigNumber, BigNumber': function (x, y) { - return x.div(y); - }, - - 'Fraction, Fraction': function (x, y) { - return x.div(y); - }, - - 'Unit, number | Fraction | BigNumber': function (x, y) { - var res = x.clone(); - // TODO: move the divide function to Unit.js, it uses internals of Unit - res.value = divideScalar(((res.value === null) ? res._normalize(1) : res.value), y); - return res; - }, - - 'number | Fraction | BigNumber, Unit': function (x, y) { - var res = y.pow(-1); - // TODO: move the divide function to Unit.js, it uses internals of Unit - res.value = multiplyScalar(((res.value === null) ? res._normalize(1) : res.value), x); - return res; - }, - - 'Unit, Unit': function (x, y) { - return x.divide(y); - } - - }); - - /** - * Divide two complex numbers. x / y or divide(x, y) - * @param {Complex} x - * @param {Complex} y - * @return {Complex} res - * @private - */ - function _divideComplex (x, y) { - var den = y.re * y.re + y.im * y.im; - if (den != 0) { - return new type.Complex( - (x.re * y.re + x.im * y.im) / den, - (x.im * y.re - x.re * y.im) / den - ); - } - else { - // both y.re and y.im are zero - return new type.Complex( - (x.re != 0) ? (x.re / 0) : 0, - (x.im != 0) ? (x.im / 0) : 0 - ); - } - } - - return divideScalar; - } - - exports.factory = factory; - - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var isInteger = __webpack_require__(6).isInteger; - var size = __webpack_require__(42).size; - - function factory (type, config, load, typed) { - var latex = __webpack_require__(32); - var exp = load(__webpack_require__(51)); - var eye = load(__webpack_require__(52)); - var log = load(__webpack_require__(53)); - var multiply = load(__webpack_require__(54)); - var matrix = load(__webpack_require__(33)); - - /** - * Calculates the power of x to y, `x ^ y`. - * Matrix exponentiation is supported for square matrices `x`, and positive - * integer exponents `y`. - * - * Syntax: - * - * math.pow(x, y) - * - * Examples: - * - * math.pow(2, 3); // returns number 8 - * - * var a = math.complex(2, 3); - * math.pow(a, 2) // returns Complex -5 + 12i - * - * var b = [[1, 2], [4, 3]]; - * math.pow(b, 2); // returns Array [[9, 8], [16, 17]] - * - * See also: - * - * multiply, sqrt - * - * @param {number | BigNumber | Complex | Array | Matrix} x The base - * @param {number | BigNumber | Complex} y The exponent - * @return {number | BigNumber | Complex | Array | Matrix} The value of `x` to the power `y` - */ - var pow = typed('pow', { - 'number, number': _pow, - - 'Complex, Complex': _powComplex, - - 'BigNumber, BigNumber': function (x, y) { - if (y.isInteger() || x >= 0 || config.predictable) { - return x.pow(y); - } - else { - return _powComplex(new type.Complex(x.toNumber(), 0), new type.Complex(y.toNumber(), 0)); - } - }, - - 'Fraction, Fraction': function (x, y) { - if (y.d !== 1) { - if (config.predictable) { - throw new Error('Function pow does not support non-integer exponents for fractions.'); - } - else { - return _pow(x.valueOf(), y.valueOf()); - } - } - else { - return x.pow(y); - } - }, - - 'Array, number': _powArray, - - 'Array, BigNumber': function (x, y) { - return _powArray(x, y.toNumber()); - }, - - 'Matrix, number': _powMatrix, - - 'Matrix, BigNumber': function (x, y) { - return _powMatrix(x, y.toNumber()); - }, - - 'Unit, number': function (x, y) { - return x.pow(y); - } - - }); - - /** - * Calculates the power of x to y, x^y, for two numbers. - * @param {number} x - * @param {number} y - * @return {number | Complex} res - * @private - */ - function _pow(x, y) { - if (isInteger(y) || x >= 0 || config.predictable) { - return Math.pow(x, y); - } - else { - return _powComplex(new type.Complex(x, 0), new type.Complex(y, 0)); - } - } - - /** - * Calculates the power of x to y, x^y, for two complex numbers. - * @param {Complex} x - * @param {Complex} y - * @return {Complex} res - * @private - */ - function _powComplex (x, y) { - // complex computation - // x^y = exp(log(x)*y) = exp((abs(x)+i*arg(x))*y) - // TODO: we can optimize this as we know x and y are Complex - // expComplex = exp.signatures['Complex,Complex'] - // multiplyComplex = multiply.signatures['Complex,Complex'] - // logComplex = log.signatures['Complex,Complex'] - // return expComplex(multiplyComplex(logComplex(x), y)); - return exp(multiply(log(x), y)); - } - - /** - * Calculate the power of a 2d array - * @param {Array} x must be a 2 dimensional, square matrix - * @param {number} y a positive, integer value - * @returns {Array} - * @private - */ - function _powArray(x, y) { - if (!isInteger(y) || y < 0) { - throw new TypeError('For A^b, b must be a positive integer (value is ' + y + ')'); - } - // verify that A is a 2 dimensional square matrix - var s = size(x); - if (s.length != 2) { - throw new Error('For A^b, A must be 2 dimensional (A has ' + s.length + ' dimensions)'); - } - if (s[0] != s[1]) { - throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')'); - } - - var res = eye(s[0]).valueOf(); - var px = x; - while (y >= 1) { - if ((y & 1) == 1) { - res = multiply(px, res); - } - y >>= 1; - px = multiply(px, px); - } - return res; - } - - /** - * Calculate the power of a 2d matrix - * @param {Matrix} x must be a 2 dimensional, square matrix - * @param {number} y a positive, integer value - * @returns {Matrix} - * @private - */ - function _powMatrix (x, y) { - return matrix(_powArray(x.valueOf(), y)); - } - - - - pow.toTex = '\\left(${args[0]}\\right)' + latex.operators['pow'] + '{${args[1]}}'; - - return pow; - } - - exports.name = 'pow'; - exports.factory = factory; - - -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - /** - * Calculate the exponent of a value. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.exp(x) - * - * Examples: - * - * math.exp(2); // returns number 7.3890560989306495 - * math.pow(math.e, 2); // returns number 7.3890560989306495 - * math.log(math.exp(2)); // returns number 2 - * - * math.exp([1, 2, 3]); - * // returns Array [ - * // 2.718281828459045, - * // 7.3890560989306495, - * // 20.085536923187668 - * // ] - * - * See also: - * - * log, pow - * - * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to exponentiate - * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x` - */ - var exp = typed('exp', { - 'number': Math.exp, - - 'Complex': function (x) { - var r = Math.exp(x.re); - return new type.Complex( - r * Math.cos(x.im), - r * Math.sin(x.im) - ); - }, - - 'BigNumber': function (x) { - return x.exp(); - }, - - 'Array | Matrix': function (x) { - // TODO: exp(sparse) should return a dense matrix since exp(0)==1 - return deepMap(x, exp); - } - }); - - exp.toTex = '\\exp\\left(${args[0]}\\right)'; - - return exp; - } - - exports.name = 'exp'; - exports.factory = factory; - - -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var array = __webpack_require__(42); - var isInteger = __webpack_require__(6).isInteger; - - function factory (type, config, load, typed) { - - var matrix = load(__webpack_require__(33)); - - /** - * Create a 2-dimensional identity matrix with size m x n or n x n. - * The matrix has ones on the diagonal and zeros elsewhere. - * - * Syntax: - * - * math.eye(n) - * math.eye(n, format) - * math.eye(m, n) - * math.eye(m, n, format) - * math.eye([m, n]) - * math.eye([m, n], format) - * - * Examples: - * - * math.eye(3); // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - * math.eye(3, 2); // returns [[1, 0], [0, 1], [0, 0]] - * - * var A = [[1, 2, 3], [4, 5, 6]]; - * math.eye(math.size(b)); // returns [[1, 0, 0], [0, 1, 0]] - * - * See also: - * - * diag, ones, zeros, size, range - * - * @param {...number | Matrix | Array} size The size for the matrix - * @param {string} [format] The Matrix storage format - * - * @return {Matrix | Array | number} A matrix with ones on the diagonal. - */ - var eye = typed('eye', { - '': function () { - return (config.matrix === 'matrix') ? matrix([]) : []; - }, - - 'string': function (format) { - return matrix(format); - }, - - 'number | BigNumber': function (rows) { - return _eye(rows, rows, config.matrix === 'matrix' ? 'default' : undefined); - }, - - 'number | BigNumber, string': function (rows, format) { - return _eye(rows, rows, format); - }, - - 'number | BigNumber, number | BigNumber': function (rows, cols) { - return _eye(rows, cols, config.matrix === 'matrix' ? 'default' : undefined); - }, - - 'number | BigNumber, number | BigNumber, string': function (rows, cols, format) { - return _eye(rows, cols, format); - }, - - 'Array': function (size) { - return _eyeVector(size); - }, - - 'Array, string': function (size, format) { - return _eyeVector(size, format); - }, - - 'Matrix': function (size) { - return _eyeVector(size.valueOf(), size.storage()); - }, - - 'Matrix, string': function (size, format) { - return _eyeVector(size.valueOf(), format); - } - }); - - eye.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; - - return eye; - - function _eyeVector (size, format) { - switch (size.length) { - case 0: return format ? matrix(format) : []; - case 1: return _eye(size[0], size[0], format); - case 2: return _eye(size[0], size[1], format); - default: throw new Error('Vector containing two values expected'); - } - } - - /** - * Create an identity matrix - * @param {number | BigNumber} rows - * @param {number | BigNumber} cols - * @param {string} [format] - * @returns {Matrix} - * @private - */ - function _eye (rows, cols, format) { - // BigNumber constructor with the right precision - var Big = (rows && rows.isBigNumber === true) - ? type.BigNumber - : (cols && cols.isBigNumber === true) - ? type.BigNumber - : null; - - if (rows && rows.isBigNumber === true) rows = rows.toNumber(); - if (cols && cols.isBigNumber === true) cols = cols.toNumber(); - - if (!isInteger(rows) || rows < 1) { - throw new Error('Parameters in function eye must be positive integers'); - } - if (!isInteger(cols) || cols < 1) { - throw new Error('Parameters in function eye must be positive integers'); - } - - var one = Big ? new type.BigNumber(1) : 1; - var defaultValue = Big ? new Big(0) : 0; - var size = [rows, cols]; - - // check we need to return a matrix - if (format) { - // get matrix storage constructor - var F = type.Matrix.storage(format); - // create diagonal matrix (use optimized implementation for storage format) - return F.diagonal(size, one, 0, defaultValue); - } - - // create and resize array - var res = array.resize([], size, defaultValue); - // fill in ones on the diagonal - var minimum = rows < cols ? rows : cols; - // fill diagonal - for (var d = 0; d < minimum; d++) { - res[d][d] = one; - } - return res; - } - } - - exports.name = 'eye'; - exports.factory = factory; - - -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - var divideScalar = load(__webpack_require__(49)); - - /** - * Calculate the logarithm of a value. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.log(x) - * math.log(x, base) - * - * Examples: - * - * math.log(3.5); // returns 1.252762968495368 - * math.exp(math.log(2.4)); // returns 2.4 - * - * math.pow(10, 4); // returns 10000 - * math.log(10000, 10); // returns 4 - * math.log(10000) / math.log(10); // returns 4 - * - * math.log(1024, 2); // returns 10 - * math.pow(2, 10); // returns 1024 - * - * See also: - * - * exp, log10 - * - * @param {number | BigNumber | Complex | Array | Matrix} x - * Value for which to calculate the logarithm. - * @param {number | BigNumber | Complex} [base=e] - * Optional base for the logarithm. If not provided, the natural - * logarithm of `x` is calculated. - * @return {number | BigNumber | Complex | Array | Matrix} - * Returns the logarithm of `x` - */ - var log = typed('log', { - 'number': _logNumber, - - 'Complex': _logComplex, - - 'BigNumber': function (x) { - if (!x.isNegative() || config.predictable) { - return x.ln(); - } - else { - // downgrade to number, return Complex valued result - return _logComplex(new type.Complex(x.toNumber(), 0)); - } - }, - - 'Array | Matrix': function (x) { - return deepMap(x, log); - }, - - 'any, any': function (x, base) { - // calculate logarithm for a specified base, log(x, base) - return divideScalar(log(x), log(base)); - } - }); - - /** - * Calculate the natural logarithm of a number - * @param {number} x - * @returns {number | Complex} - * @private - */ - function _logNumber(x) { - if (x >= 0 || config.predictable) { - return Math.log(x); - } - else { - // negative value -> complex value computation - return log(new type.Complex(x, 0)); - } - } - - /** - * Calculate the natural logarithm of a complex number - * @param {Complex} x - * @returns {Complex} - * @private - */ - function _logComplex(x) { - return new type.Complex ( - Math.log(Math.sqrt(x.re * x.re + x.im * x.im)), - Math.atan2(x.im, x.re) - ); - } - - log.toTex = { - 1: '\\ln\\left(${args[0]}\\right)', - 2: '\\log_{${args[1]}}\\left(${args[0]}\\right)' - }; - - return log; - } - - exports.name = 'log'; - exports.factory = factory; - - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var extend = __webpack_require__(3).extend; - var array = __webpack_require__(42); - - function factory (type, config, load, typed) { - var latex = __webpack_require__(32); - - var matrix = load(__webpack_require__(33)); - var addScalar = load(__webpack_require__(29)); - var multiplyScalar = load(__webpack_require__(48)); - var equalScalar = load(__webpack_require__(38)); - - var algorithm11 = load(__webpack_require__(55)); - var algorithm14 = load(__webpack_require__(47)); - - var DenseMatrix = type.DenseMatrix; - var SparseMatrix = type.SparseMatrix; - - /** - * Multiply two values, `x * y`. The result is squeezed. - * For matrices, the matrix product is calculated. - * - * Syntax: - * - * math.multiply(x, y) - * - * Examples: - * - * math.multiply(4, 5.2); // returns number 20.8 - * - * var a = math.complex(2, 3); - * var b = math.complex(4, 1); - * math.multiply(a, b); // returns Complex 5 + 14i - * - * var c = [[1, 2], [4, 3]]; - * var d = [[1, 2, 3], [3, -4, 7]]; - * math.multiply(c, d); // returns Array [[7, -6, 17], [13, -4, 33]] - * - * var e = math.unit('2.1 km'); - * math.multiply(3, e); // returns Unit 6.3 km - * - * See also: - * - * divide - * - * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First value to multiply - * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second value to multiply - * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y` - */ - var multiply = typed('multiply', extend({ - // we extend the signatures of multiplyScalar with signatures dealing with matrices - - 'Array, Array': function (x, y) { - // check dimensions - _validateMatrixDimensions(array.size(x), array.size(y)); - - // use dense matrix implementation - var m = multiply(matrix(x), matrix(y)); - // return array or scalar - return (m && m.isMatrix === true) ? m.valueOf() : m; - }, - - 'Matrix, Matrix': function (x, y) { - // dimensions - var xsize = x.size(); - var ysize = y.size(); - - // check dimensions - _validateMatrixDimensions(xsize, ysize); - - // process dimensions - if (xsize.length === 1) { - // process y dimensions - if (ysize.length === 1) { - // Vector * Vector - return _multiplyVectorVector(x, y, xsize[0]); - } - // Vector * Matrix - return _multiplyVectorMatrix(x, y); - } - // process y dimensions - if (ysize.length === 1) { - // Matrix * Vector - return _multiplyMatrixVector(x, y); - } - // Matrix * Matrix - return _multiplyMatrixMatrix(x, y); - }, - - 'Matrix, Array': function (x, y) { - // use Matrix * Matrix implementation - return multiply(x, matrix(y)); - }, - - 'Array, Matrix': function (x, y) { - // use Matrix * Matrix implementation - return multiply(matrix(x, y.storage()), y); - }, - - 'Matrix, any': function (x, y) { - // result - var c; - - // process storage format - switch (x.storage()) { - case 'sparse': - c = algorithm11(x, y, multiplyScalar, false); - break; - case 'dense': - c = algorithm14(x, y, multiplyScalar, false); - break; - } - return c; - }, - - 'any, Matrix': function (x, y) { - // result - var c; - // check storage format - switch (y.storage()) { - case 'sparse': - c = algorithm11(y, x, multiplyScalar, true); - break; - case 'dense': - c = algorithm14(y, x, multiplyScalar, true); - break; - } - return c; - }, - - 'Array, any': function (x, y) { - // use matrix implementation - return algorithm14(matrix(x), y, multiplyScalar, false).valueOf(); - }, - - 'any, Array': function (x, y) { - // use matrix implementation - return algorithm14(matrix(y), x, multiplyScalar, true).valueOf(); - } - }, multiplyScalar.signatures)); - - var _validateMatrixDimensions = function (size1, size2) { - // check left operand dimensions - switch (size1.length) { - case 1: - // check size2 - switch (size2.length) { - case 1: - // Vector x Vector - if (size1[0] !== size2[0]) { - // throw error - throw new RangeError('Dimension mismatch in multiplication. Vectors must have the same length'); - } - break; - case 2: - // Vector x Matrix - if (size1[0] !== size2[0]) { - // throw error - throw new RangeError('Dimension mismatch in multiplication. Vector length (' + size1[0] + ') must match Matrix rows (' + size2[0] + ')'); - } - break; - default: - throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)'); - } - break; - case 2: - // check size2 - switch (size2.length) { - case 1: - // Matrix x Vector - if (size1[1] !== size2[0]) { - // throw error - throw new RangeError('Dimension mismatch in multiplication. Matrix columns (' + size1[1] + ') must match Vector length (' + size2[0] + ')'); - } - break; - case 2: - // Matrix x Matrix - if (size1[1] !== size2[0]) { - // throw error - throw new RangeError('Dimension mismatch in multiplication. Matrix A columns (' + size1[1] + ') must match Matrix B rows (' + size2[0] + ')'); - } - break; - default: - throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)'); - } - break; - default: - throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix A has ' + size1.length + ' dimensions)'); - } - }; - - /** - * C = A * B - * - * @param {Matrix} a Dense Vector (N) - * @param {Matrix} b Dense Vector (N) - * - * @return {number} Scalar value - */ - var _multiplyVectorVector = function (a, b, n) { - // check empty vector - if (n === 0) - throw new Error('Cannot multiply two empty vectors'); - - // a dense - var adata = a._data; - var adt = a._datatype; - // b dense - var bdata = b._data; - var bdt = b._datatype; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - } - - // result (do not initialize it with zero) - var c = mf(adata[0], bdata[0]); - // loop data - for (var i = 1; i < n; i++) { - // multiply and accumulate - c = af(c, mf(adata[i], bdata[i])); - } - return c; - }; - - /** - * C = A * B - * - * @param {Matrix} a Dense Vector (M) - * @param {Matrix} b Matrix (MxN) - * - * @return {Matrix} Dense Vector (N) - */ - var _multiplyVectorMatrix = function (a, b) { - // process storage - switch (b.storage()) { - case 'dense': - return _multiplyVectorDenseMatrix(a, b); - } - throw new Error('Not implemented'); - }; - - /** - * C = A * B - * - * @param {Matrix} a Dense Vector (M) - * @param {Matrix} b Dense Matrix (MxN) - * - * @return {Matrix} Dense Vector (N) - */ - var _multiplyVectorDenseMatrix = function (a, b) { - // 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]; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - } - - // result - var c = []; - - // loop matrix columns - for (var j = 0; j < bcolumns; j++) { - // sum (do not initialize it with zero) - var sum = mf(adata[0], bdata[0][j]); - // loop vector - for (var i = 1; i < alength; i++) { - // multiply & accumulate - sum = af(sum, mf(adata[i], bdata[i][j])); - } - c[j] = sum; - } - - // check we need to squeeze the result into a scalar - if (bcolumns === 1) - return c[0]; - - // return matrix - return new DenseMatrix({ - data: c, - size: [bcolumns], - datatype: dt - }); - }; - - /** - * C = A * B - * - * @param {Matrix} a Matrix (MxN) - * @param {Matrix} b Dense Vector (N) - * - * @return {Matrix} Dense Vector (M) - */ - var _multiplyMatrixVector = function (a, b) { - // process storage - switch (a.storage()) { - case 'dense': - return _multiplyDenseMatrixVector(a, b); - case 'sparse': - return _multiplySparseMatrixVector(a, b); - } - }; - - /** - * C = A * B - * - * @param {Matrix} a Matrix (MxN) - * @param {Matrix} b Matrix (NxC) - * - * @return {Matrix} Matrix (MxC) - */ - var _multiplyMatrixMatrix = function (a, b) { - // process storage - switch (a.storage()) { - case 'dense': - // process storage - switch (b.storage()) { - case 'dense': - return _multiplyDenseMatrixDenseMatrix(a, b); - case 'sparse': - return _multiplyDenseMatrixSparseMatrix(a, b); - } - break; - case 'sparse': - // process storage - switch (b.storage()) { - case 'dense': - return _multiplySparseMatrixDenseMatrix(a, b); - case 'sparse': - return _multiplySparseMatrixSparseMatrix(a, b); - } - break; - } - }; - - /** - * C = A * B - * - * @param {Matrix} a DenseMatrix (MxN) - * @param {Matrix} b Dense Vector (N) - * - * @return {Matrix} Dense Vector (M) - */ - var _multiplyDenseMatrixVector = function (a, b) { - // 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]; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - } - - // result - var c = []; - - // loop matrix a rows - for (var i = 0; i < arows; i++) { - // current row - var row = adata[i]; - // sum (do not initialize it with zero) - var sum = mf(row[0], bdata[0]); - // loop matrix a columns - for (var j = 1; j < acolumns; j++) { - // multiply & accumulate - sum = af(sum, mf(row[j], bdata[j])); - } - c[i] = sum; - } - // check we need to squeeze the result into a scalar - if (arows === 1) - return c[0]; - - // return matrix - return new DenseMatrix({ - data: c, - size: [arows], - datatype: dt - }); - }; - - /** - * C = A * B - * - * @param {Matrix} a DenseMatrix (MxN) - * @param {Matrix} b DenseMatrix (NxC) - * - * @return {Matrix} DenseMatrix (MxC) - */ - var _multiplyDenseMatrixDenseMatrix = function (a, b) { - // 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 arows = asize[0]; - var acolumns = asize[1]; - var bcolumns = bsize[1]; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - } - - // result - var c = []; - - // loop matrix a rows - for (var i = 0; i < arows; i++) { - // current row - var row = adata[i]; - // initialize row array - c[i] = []; - // loop matrix b columns - for (var j = 0; j < bcolumns; j++) { - // sum (avoid initializing sum to zero) - var sum = mf(row[0], bdata[0][j]); - // loop matrix a columns - for (var x = 1; x < acolumns; x++) { - // multiply & accumulate - sum = af(sum, mf(row[x], bdata[x][j])); - } - c[i][j] = sum; - } - } - // check we need to squeeze the result into a scalar - if (arows === 1 && bcolumns === 1) - return c[0][0]; - - // return matrix - return new DenseMatrix({ - data: c, - size: [arows, bcolumns], - datatype: dt - }); - }; - - /** - * C = A * B - * - * @param {Matrix} a DenseMatrix (MxN) - * @param {Matrix} b SparseMatrix (NxC) - * - * @return {Matrix} SparseMatrix (MxC) - */ - var _multiplyDenseMatrixSparseMatrix = function (a, b) { - // a dense - var adata = a._data; - var asize = a._size; - var adt = a._datatype; - // b sparse - var bvalues = b._values; - var bindex = b._index; - var bptr = b._ptr; - var bsize = b._size; - var bdt = b._datatype; - // 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]; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - // equalScalar signature to use - var eq = equalScalar; - // zero value - var zero = 0; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - } - - // result - var cvalues = []; - var cindex = []; - var cptr = []; - // c matrix - var c = new SparseMatrix({ - values : cvalues, - index: cindex, - ptr: cptr, - size: [arows, bcolumns], - datatype: dt - }); - - // loop b columns - for (var jb = 0; jb < bcolumns; jb++) { - // update ptr - cptr[jb] = cindex.length; - // indeces in column jb - var kb0 = bptr[jb]; - var kb1 = bptr[jb + 1]; - // do not process column jb if no data exists - if (kb1 > kb0) { - // last row mark processed - var last = 0; - // loop a rows - for (var i = 0; i < arows; i++) { - // column mark - var mark = i + 1; - // C[i, jb] - var cij; - // values in b column j - for (var kb = kb0; kb < kb1; kb++) { - // row - var ib = bindex[kb]; - // check value has been initialized - if (last !== mark) { - // first value in column jb - cij = mf(adata[i][ib], bvalues[kb]); - // update mark - last = mark; - } - else { - // accumulate value - cij = af(cij, mf(adata[i][ib], bvalues[kb])); - } - } - // check column has been processed and value != 0 - if (last === mark && !eq(cij, zero)) { - // push row & value - cindex.push(i); - cvalues.push(cij); - } - } - } - } - // update ptr - cptr[bcolumns] = cindex.length; - - // check we need to squeeze the result into a scalar - if (arows === 1 && bcolumns === 1) - return cvalues.length === 1 ? cvalues[0] : 0; - - // return sparse matrix - return c; - }; - - /** - * C = A * B - * - * @param {Matrix} a SparseMatrix (MxN) - * @param {Matrix} b Dense Vector (N) - * - * @return {Matrix} SparseMatrix (M, 1) - */ - var _multiplySparseMatrixVector = function (a, b) { - // a sparse - 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 = []; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - // equalScalar signature to use - var eq = equalScalar; - // zero value - var zero = 0; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - } - - // workspace - var x = []; - // vector with marks indicating a value x[i] exists in a given column - var w = []; - - // update ptr - cptr[0] = 0; - // rows in b - for (var ib = 0; ib < brows; ib++) { - // b[ib] - var vbi = bdata[ib]; - // check b[ib] != 0, avoid loops - if (!eq(vbi, zero)) { - // A values & index in ib column - for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { - // a row - var ia = aindex[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])); - } - } - } - } - // 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[1] = cindex.length; - - // check we need to squeeze the result into a scalar - if (arows === 1) - return cvalues.length === 1 ? cvalues[0] : 0; - - // return sparse matrix - return new SparseMatrix({ - values : cvalues, - index: cindex, - ptr: cptr, - size: [arows, 1], - datatype: dt - }); - }; - - /** - * C = A * B - * - * @param {Matrix} a SparseMatrix (MxN) - * @param {Matrix} b DenseMatrix (NxC) - * - * @return {Matrix} SparseMatrix (MxC) - */ - var _multiplySparseMatrixDenseMatrix = function (a, b) { - // a sparse - 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]; - var bcolumns = b._size[1]; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - // equalScalar signature to use - var eq = equalScalar; - // zero value - var zero = 0; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - } - - // result - var cvalues = []; - var cindex = []; - var cptr = []; - // c matrix - var c = new SparseMatrix({ - values : cvalues, - index: cindex, - ptr: cptr, - size: [arows, bcolumns], - datatype: dt - }); - - // workspace - var x = []; - // vector with marks indicating a value x[i] exists in a given column - var w = []; - - // loop b columns - for (var jb = 0; jb < bcolumns; jb++) { - // update ptr - cptr[jb] = cindex.length; - // mark in workspace for current column - var mark = jb + 1; - // rows in jb - for (var ib = 0; ib < brows; ib++) { - // b[ib, jb] - var vbij = bdata[ib][jb]; - // check b[ib, jb] != 0, avoid loops - if (!eq(vbij, zero)) { - // A values & index in ib column - for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { - // a row - var ia = aindex[ka]; - // check value exists in current j - if (w[ia] !== mark) { - // ia is new entry in j - w[ia] = mark; - // add i to pattern of C - cindex.push(ia); - // x(ia) = A - x[ia] = mf(vbij, avalues[ka]); - } - else { - // i exists in C already - x[ia] = af(x[ia], mf(vbij, avalues[ka])); - } - } - } - } - // copy values from x to column jb of c - for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) { - // row - var ic = cindex[p]; - // copy value - cvalues[p] = x[ic]; - } - } - // update ptr - cptr[bcolumns] = cindex.length; - - // check we need to squeeze the result into a scalar - if (arows === 1 && bcolumns === 1) - return cvalues.length === 1 ? cvalues[0] : 0; - - // return sparse matrix - return c; - }; - - /** - * C = A * B - * - * @param {Matrix} a SparseMatrix (MxN) - * @param {Matrix} b SparseMatrix (NxC) - * - * @return {Matrix} SparseMatrix (MxC) - */ - var _multiplySparseMatrixSparseMatrix = function (a, b) { - // a sparse - var avalues = a._values; - var aindex = a._index; - var aptr = a._ptr; - var adt = a._datatype; - // b sparse - var bvalues = b._values; - var bindex = b._index; - var bptr = b._ptr; - var bdt = b._datatype; - - // rows & columns - var arows = a._size[0]; - var bcolumns = b._size[1]; - // flag indicating both matrices (a & b) contain data - var values = avalues && bvalues; - - // datatype - var dt; - // addScalar signature to use - var af = addScalar; - // multiplyScalar signature to use - var mf = multiplyScalar; - - // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { - // datatype - dt = adt; - // find signatures that matches (dt, dt) - af = typed.find(addScalar, [dt, dt]); - mf = typed.find(multiplyScalar, [dt, dt]); - } - - // result - var cvalues = values ? [] : undefined; - var cindex = []; - var cptr = []; - // c matrix - var c = new SparseMatrix({ - values : cvalues, - index: cindex, - ptr: cptr, - size: [arows, bcolumns], - datatype: dt - }); - - // workspace - var x = values ? [] : undefined; - // vector with marks indicating a value x[i] exists in a given column - var w = []; - // variables - var ka, ka0, ka1, kb, kb0, kb1, ia, ib; - // loop b columns - for (var jb = 0; jb < bcolumns; jb++) { - // update ptr - cptr[jb] = cindex.length; - // mark in workspace for current column - var mark = jb + 1; - // B values & index in j - for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) { - // b row - ib = bindex[kb]; - // check we need to process values - if (values) { - // loop values in a[:,ib] - for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { - // row - ia = aindex[ka]; - // check value exists in current j - if (w[ia] !== mark) { - // ia is new entry in j - w[ia] = mark; - // add i to pattern of C - cindex.push(ia); - // x(ia) = A - x[ia] = mf(bvalues[kb], avalues[ka]); - } - else { - // i exists in C already - x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka])); - } - } - } - else { - // loop values in a[:,ib] - for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { - // row - ia = aindex[ka]; - // check value exists in current j - if (w[ia] !== mark) { - // ia is new entry in j - w[ia] = mark; - // add i to pattern of C - cindex.push(ia); - } - } - } - } - // check we need to process matrix values (pattern matrix) - if (values) { - // copy values from x to column jb of c - for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) { - // row - var ic = cindex[p]; - // copy value - cvalues[p] = x[ic]; - } - } - } - // update ptr - cptr[bcolumns] = cindex.length; - - // check we need to squeeze the result into a scalar - if (arows === 1 && bcolumns === 1 && values) - return cvalues.length === 1 ? cvalues[0] : 0; - - // return sparse matrix - return c; - }; - - multiply.toTex = '\\left(${args[0]}' + latex.operators['multiply'] + '${args[1]}\\right)'; - - return multiply; - } - - exports.name = 'multiply'; - exports.factory = factory; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - function factory (type, config, load, typed) { - - var equalScalar = load(__webpack_require__(38)); - - var SparseMatrix = type.SparseMatrix; - - /** - * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). - * Callback function invoked NZ times (number of nonzero items in S). - * - * - * ┌ f(Sij, b) ; S(i,j) !== 0 - * C(i,j) = ┤ - * └ 0 ; otherwise - * - * - * @param {Matrix} s The SparseMatrix instance (S) - * @param {Scalar} b The Scalar value - * @param {Function} callback The f(Aij,b) operation to invoke - * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) - * - * @return {Matrix} SparseMatrix (C) - * - * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 - */ - var algorithm11 = function (s, b, callback, inverse) { - // sparse matrix arrays - var avalues = s._values; - var aindex = s._index; - var aptr = s._ptr; - var asize = s._size; - var adt = s._datatype; - - // sparse matrix cannot be a Pattern matrix - if (!avalues) - throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // equal signature to use - var eq = equalScalar; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string') { - // datatype - dt = adt; - // find signature that matches (dt, dt) - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // convert b to the same datatype - b = typed.convert(b, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cvalues = []; - var cindex = []; - var cptr = []; - // matrix - var c = new SparseMatrix({ - values: cvalues, - index: cindex, - ptr: cptr, - size: [rows, columns], - datatype: dt - }); - - // loop columns - for (var j = 0; j < columns; j++) { - // initialize ptr - cptr[j] = cindex.length; - // values in j - for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { - // row - var i = aindex[k]; - // invoke callback - var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b); - // check value is zero - if (!eq(v, zero)) { - // push index & value - cindex.push(i); - cvalues.push(v); - } - } - } - // update ptr - cptr[columns] = cindex.length; - - // return sparse matrix - return c; - }; - - return algorithm11; - } - - exports.name = 'algorithm11'; - exports.factory = factory; - - -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - function factory (type, config, load, typed) { - - var matrix = load(__webpack_require__(33)); - var equalScalar = load(__webpack_require__(38)); - - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); - - var latex = __webpack_require__(32); - - /** - * Test whether two values are equal. - * - * The function tests whether 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. - * In case of complex numbers, x.re must equal y.re, and x.im must equal y.im. - * - * Values `null` and `undefined` are compared strictly, thus `null` is only - * equal to `null` and nothing else, and `undefined` is only equal to - * `undefined` and nothing else. - * - * Syntax: - * - * math.equal(x, y) - * - * Examples: - * - * math.equal(2 + 2, 3); // returns false - * math.equal(2 + 2, 4); // returns true - * - * var a = math.unit('50 cm'); - * var b = math.unit('5 m'); - * math.equal(a, b); // returns true - * - * var c = [2, 5, 1]; - * var d = [2, 7, 1]; - * - * math.equal(c, d); // returns [true, false, true] - * math.deepEqual(c, d); // returns false - * - * math.equal(0, null); // returns false - * - * See also: - * - * unequal, smaller, smallerEq, larger, largerEq, compare, deepEqual - * - * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} x First value to compare - * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} y Second value to compare - * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false - */ - var equal = typed('equal', { - - 'any, any': function (x, y) { - // strict equality for null and undefined? - if (x === null) { return y === null; } - if (y === null) { return x === null; } - if (x === undefined) { return y === undefined; } - if (y === undefined) { return x === undefined; } - - return equalScalar(x, y); - }, - - 'Matrix, Matrix': function (x, y) { - // result - var c; - - // process matrix storage - switch (x.storage()) { - case 'sparse': - switch (y.storage()) { - case 'sparse': - // sparse + sparse - c = algorithm07(x, y, equalScalar); - break; - default: - // sparse + dense - c = algorithm03(y, x, equalScalar, true); - break; - } - break; - default: - switch (y.storage()) { - case 'sparse': - // dense + sparse - c = algorithm03(x, y, equalScalar, false); - break; - default: - // dense + dense - c = algorithm13(x, y, equalScalar); - break; - } - break; - } - return c; - }, - - 'Array, Array': function (x, y) { - // use matrix implementation - return equal(matrix(x), matrix(y)).valueOf(); - }, - - 'Array, Matrix': function (x, y) { - // use matrix implementation - return equal(matrix(x), y); - }, - - 'Matrix, Array': function (x, y) { - // use matrix implementation - return equal(x, matrix(y)); - }, - - 'Matrix, any': function (x, y) { - // result - var c; - // check storage format - switch (x.storage()) { - case 'sparse': - c = algorithm12(x, y, equalScalar, false); - break; - default: - c = algorithm14(x, y, equalScalar, false); - break; - } - return c; - }, - - 'any, Matrix': function (x, y) { - // result - var c; - // check storage format - switch (y.storage()) { - case 'sparse': - c = algorithm12(y, x, equalScalar, true); - break; - default: - c = algorithm14(y, x, equalScalar, true); - break; - } - return c; - }, - - 'Array, any': function (x, y) { - // use matrix implementation - return algorithm14(matrix(x), y, equalScalar, false).valueOf(); - }, - - 'any, Array': function (x, y) { - // use matrix implementation - return algorithm14(matrix(y), x, equalScalar, true).valueOf(); - } - }); - - equal.toTex = '\\left(${args[0]}' + latex.operators['equal'] + '${args[1]}\\right)'; - - return equal; - } - - exports.name = 'equal'; - exports.factory = factory; - - -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var DimensionError = __webpack_require__(31); - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij). - * Callback function invoked MxN times. - * - * C(i,j) = f(Aij, Bij) - * - * @param {Matrix} a The SparseMatrix instance (A) - * @param {Matrix} b The SparseMatrix instance (B) - * @param {Function} callback The f(Aij,Bij) operation to invoke - * - * @return {Matrix} DenseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 - */ - var algorithm07 = function (a, b, callback) { - // sparse matrix arrays - var asize = a._size; - var adt = a._datatype; - // sparse matrix arrays - var bsize = b._size; - var bdt = b._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // vars - var i, j; - - // result arrays - var cdata = []; - // initialize c - for (i = 0; i < rows; i++) - cdata[i] = []; - - // matrix - var c = new DenseMatrix({ - data: cdata, - size: [rows, columns], - datatype: dt - }); - - // workspaces - var xa = []; - var xb = []; - // marks indicating we have a value in x for a given column - var wa = []; - var wb = []; - - // loop columns - for (j = 0; j < columns; j++) { - // columns mark - var mark = j + 1; - // scatter the values of A(:,j) into workspace - _scatter(a, j, wa, xa, mark); - // scatter the values of B(:,j) into workspace - _scatter(b, j, wb, xb, mark); - // loop rows - for (i = 0; i < rows; i++) { - // matrix values @ i,j - var va = wa[i] === mark ? xa[i] : zero; - var vb = wb[i] === mark ? xb[i] : zero; - // invoke callback - cdata[i][j] = cf(va, vb); - } - } - - // return sparse matrix - return c; - }; - - var _scatter = function (m, j, w, x, mark) { - // a arrays - var values = m._values; - var index = m._index; - var ptr = m._ptr; - // loop values in column j - for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) { - // row - var i = index[k]; - // update workspace - w[i] = mark; - x[i] = values[k]; - } - }; - - return algorithm07; - } - - exports.name = 'algorithm07'; - exports.factory = factory; - - -/***/ }, -/* 58 */ -/***/ function(module, exports) { - - 'use strict'; - - function factory (type, config, load, typed) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). - * Callback function invoked MxN times. - * - * - * ┌ f(Sij, b) ; S(i,j) !== 0 - * C(i,j) = ┤ - * └ f(0, b) ; otherwise - * - * - * @param {Matrix} s The SparseMatrix instance (S) - * @param {Scalar} b The Scalar value - * @param {Function} callback The f(Aij,b) operation to invoke - * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) - * - * @return {Matrix} DenseMatrix (C) - * - * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 - */ - var algorithm12 = function (s, b, callback, inverse) { - // sparse matrix arrays - var avalues = s._values; - var aindex = s._index; - var aptr = s._ptr; - var asize = s._size; - var adt = s._datatype; - - // sparse matrix cannot be a Pattern matrix - if (!avalues) - throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string') { - // datatype - dt = adt; - // convert b to the same datatype - b = typed.convert(b, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cdata = []; - // matrix - var c = new DenseMatrix({ - data: cdata, - size: [rows, columns], - datatype: dt - }); - - // workspaces - var x = []; - // marks indicating we have a value in x for a given column - var w = []; - - // loop columns - for (var j = 0; j < columns; j++) { - // columns mark - var mark = j + 1; - // values in j - for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { - // row - var r = aindex[k]; - // update workspace - x[r] = avalues[k]; - w[r] = mark; - } - // loop rows - for (var i = 0; i < rows; i++) { - // initialize C on first column - if (j === 0) { - // create row array - cdata[i] = []; - } - // check sparse matrix has a value @ i,j - if (w[i] === mark) { - // invoke callback, update C - cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b); - } - else { - // dense matrix value @ i, j - cdata[i][j] = inverse ? cf(b, 0) : cf(0, b); - } - } - } - - // return sparse matrix - return c; - }; - - return algorithm12; - } - - exports.name = 'algorithm12'; - exports.factory = factory; - - -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - var number = __webpack_require__(6); - - function factory (type, config, load, typed) { - /** - * Test whether a value is an numeric value. - * - * The function is evaluated element-wise in case of Array or Matrix input. - * - * Syntax: - * - * math.isNumeric(x) - * - * Examples: - * - * math.isNumeric(2); // returns true - * math.isNumeric(0); // returns true - * math.isNumeric(math.bignumber(500)); // returns true - * math.isNumeric(math.fraction(4)); // returns true - * math.isNumeric(math.complex('2 - 4i'); // returns false - * math.isNumeric('3'); // returns false - * math.isNumeric([2.3, 'foo', false]); // returns [true, false, true] - * - * See also: - * - * isZero, isPositive, isNegative, isInteger - * - * @param {*} x Value to be tested - * @return {boolean} Returns true when `x` is a `number`, `BigNumber`, - * `Fraction`, or `boolean`. Returns false for other types. - * Throws an error in case of unknown types. - */ - var isNumeric = typed('isNumeric', { - 'number | BigNumber | Fraction | boolean': function () { - return true; - }, - - 'Complex | Unit | string': function () { - return false; - }, - - 'Array | Matrix': function (x) { - return deepMap(x, isNumeric); - } - }); - - return isNumeric; - } - - exports.name = 'isNumeric'; - exports.factory = factory; - - -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var string = __webpack_require__(23); - - function factory (type, config, load, typed) { - /** - * Format a value of any type into a string. - * - * Syntax: - * - * math.format(value) - * math.format(value, options) - * math.format(value, precision) - * math.format(value, fn) - * - * Where: - * - * - `value: *` - * The value to be formatted - * - `options: Object` - * An object with formatting options. Available options: - * - `notation: string` - * Number notation. Choose from: - * - 'fixed' - * Always use regular number notation. - * For example '123.40' and '14000000' - * - 'exponential' - * Always use exponential notation. - * For example '1.234e+2' and '1.4e+7' - * - 'auto' (default) - * Regular number notation for numbers having an absolute value between - * `lower` and `upper` bounds, and uses exponential notation elsewhere. - * Lower bound is included, upper bound is excluded. - * For example '123.4' and '1.4e7'. - * - `precision: number` - * A number between 0 and 16 to round the digits of the number. In case - * of notations 'exponential' and 'auto', `precision` defines the total - * number of significant digits returned and is undefined by default. - * In case of notation 'fixed', `precision` defines the number of - * significant digits after the decimal point, and is 0 by default. - * - `exponential: Object` - * An object containing two parameters, {number} lower and {number} upper, - * used by notation 'auto' to determine when to return exponential - * notation. Default values are `lower=1e-3` and `upper=1e5`. Only - * applicable for notation `auto`. - * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'. - * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is - * configured, and will output `0.(3)` when 'decimal' is configured. - * - `fn: Function` - * A custom formatting function. Can be used to override the built-in notations. - * Function `fn` is called with `value` as parameter and must return a string. - * Is useful for example to format all values inside a matrix in a particular way. - * - * Examples: - * - * math.format(6.4); // returns '6.4' - * math.format(1240000); // returns '1.24e6' - * math.format(1/3); // returns '0.3333333333333333' - * math.format(1/3, 3); // returns '0.333' - * math.format(21385, 2); // returns '21000' - * math.format(12.071, {notation: 'fixed'}); // returns '12' - * math.format(2.3, {notation: 'fixed', precision: 2}); // returns '2.30' - * math.format(52.8, {notation: 'exponential'}); // returns '5.28e+1' - * - * See also: - * - * print - * - * @param {*} value Value to be stringified - * @param {Object | Function | number} [options] Formatting options - * @return {string} The formatted value - */ - var format = typed('format', { - 'any': string.format, - 'any, Object | function | number': string.format - }); - - format.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; - - return format; - } - - exports.name = 'format'; - exports.factory = factory; - - -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var types = __webpack_require__(43); - - function factory (type, config, load, typed) { - /** - * Determine the type of a variable. - * - * Function `typeof` recognizes the following types of objects: - * - * Object | Returns | Example - * ---------------------- | ------------- | ------------------------------------------ - * null | `'null'` | `math.typeof(null)` - * number | `'number'` | `math.typeof(3.5)` - * boolean | `'boolean'` | `math.typeof (true)` - * string | `'string'` | `math.typeof ('hello world')` - * Array | `'Array'` | `math.typeof ([1, 2, 3])` - * Date | `'Date'` | `math.typeof (new Date())` - * Function | `'Function'` | `math.typeof (function () {})` - * Object | `'Object'` | `math.typeof ({a: 2, b: 3})` - * RegExp | `'RegExp'` | `math.typeof (/a regexp/)` - * undefined | `'undefined'` | `math.typeof(undefined)` - * math.type.BigNumber | `'BigNumber'` | `math.typeof (math.bignumber('2.3e500'))` - * math.type.Chain | `'Chain'` | `math.typeof (math.chain(2))` - * math.type.Complex | `'Complex'` | `math.typeof (math.complex(2, 3))` - * math.type.Fraction | `'Fraction'` | `math.typeof (math.fraction(1, 3))` - * math.type.Help | `'Help'` | `math.typeof (math.help('sqrt'))` - * math.type.Index | `'Index'` | `math.typeof (math.index(1, 3))` - * math.type.Matrix | `'Matrix'` | `math.typeof (math.matrix([[1,2], [3, 4]]))` - * math.type.Range | `'Range'` | `math.typeof (math.range(0, 10))` - * math.type.Unit | `'Unit'` | `math.typeof (math.unit('45 deg'))` - * - * Syntax: - * - * math.typeof(x) - * - * Examples: - * - * math.typeof(3.5); // returns 'number' - * math.typeof(math.complex('2 - 4i')); // returns 'Complex' - * math.typeof(math.unit('45 deg')); // returns 'Unit' - * math.typeof('hello world'); // returns 'string' - * - * @param {*} x The variable for which to test the type. - * @return {string} Returns the name of the type. Primitive types are lower case, - * non-primitive types are upper-camel-case. - * For example 'number', 'string', 'Array', 'Date'. - */ - var _typeof = typed('_typeof', { - 'any': function (x) { - // JavaScript types - var t = types.type(x); - - // math.js types - if (t === 'Object') { - if (x.isBigNumber === true) return 'BigNumber'; - if (x.isComplex === true) return 'Complex'; - if (x.isFraction === true) return 'Fraction'; - if (x.isMatrix === true) return 'Matrix'; - if (x.isUnit === true) return 'Unit'; - if (x.isIndex === true) return 'Index'; - if (x.isRange === true) return 'Range'; - if (x.isChain === true) return 'Chain'; - if (x.isHelp === true) return 'Help'; - } - - return t; - } - }); - - _typeof.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; - - return _typeof; - } - - exports.name = 'typeof'; - exports.factory = factory; - - -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - /** - * Create a number or convert a string, boolean, or unit to a number. - * When value is a matrix, all elements will be converted to number. - * - * Syntax: - * - * math.number(value) - * math.number(unit, valuelessUnit) - * - * Examples: - * - * math.number(2); // returns number 2 - * math.number('7.2'); // returns number 7.2 - * math.number(true); // returns number 1 - * math.number([true, false, true, true]); // returns [1, 0, 1, 1] - * math.number(math.unit('52cm'), 'm'); // returns 0.52 - * - * See also: - * - * bignumber, boolean, complex, index, matrix, string, unit - * - * @param {string | number | BigNumber | Fraction | boolean | Array | Matrix | Unit | null} [value] Value to be converted - * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number - * @return {number | Array | Matrix} The created number - */ - var number = typed('number', { - '': function () { - return 0; - }, - - 'number': function (x) { - return x; - }, - - 'string': function (x) { - var num = Number(x); - if (isNaN(num)) { - throw new SyntaxError('String "' + x + '" is no valid number'); - } - return num; - }, - - 'BigNumber': function (x) { - return x.toNumber(); - }, - - 'Fraction': function (x) { - return x.valueOf(); - }, - - 'Unit': function (x) { - throw new Error('Second argument with valueless unit expected'); - }, - - 'Unit, string | Unit': function (unit, valuelessUnit) { - return unit.toNumber(valuelessUnit); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, number); - } - }); - - number.toTex = { - 0: '0', - 1: '\\left(${args[0]}\\right)', - 2: '\\left(\\left(${args[0]}\\right)${args[1]}\\right)' - }; - - return number; - } - - exports.name = 'number'; - exports.factory = factory; - - -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - var latex = __webpack_require__(32); - - /** - * Create a complex value or convert a value to a complex value. - * - * Syntax: - * - * math.complex() // creates a complex value with zero - * // as real and imaginary part. - * math.complex(re : number, im : string) // creates a complex value with provided - * // values for real and imaginary part. - * math.complex(re : number) // creates a complex value with provided - * // real value and zero imaginary part. - * math.complex(complex : Complex) // clones the provided complex value. - * math.complex(arg : string) // parses a string into a complex value. - * math.complex(array : Array) // converts the elements of the array - * // or matrix element wise into a - * // complex value. - * math.complex({re: number, im: number}) // creates a complex value with provided - * // values for real an imaginary part. - * math.complex({r: number, phi: number}) // creates a complex value with provided - * // polar coordinates - * - * Examples: - * - * var a = math.complex(3, -4); // a = Complex 3 - 4i - * a.re = 5; // a = Complex 5 - 4i - * var i = a.im; // Number -4; - * var b = math.complex('2 + 6i'); // Complex 2 + 6i - * var c = math.complex(); // Complex 0 + 0i - * var d = math.add(a, b); // Complex 5 + 2i - * - * See also: - * - * bignumber, boolean, index, matrix, number, string, unit - * - * @param {* | Array | Matrix} [args] - * Arguments specifying the real and imaginary part of the complex number - * @return {Complex | Array | Matrix} Returns a complex value - */ - var complex = typed('complex', { - '': function () { - return new type.Complex(0, 0); - }, - - 'number': function (x) { - return new type.Complex(x, 0); - }, - - 'number, number': function (re, im) { - return new type.Complex(re, im); - }, - - // TODO: this signature should be redundant - 'BigNumber, BigNumber': function (re, im) { - return new type.Complex(re.toNumber(), im.toNumber()); - }, - - 'Complex': function (x) { - return x.clone(); - }, - - 'string': function (x) { - return type.Complex.parse(x); // for example '2 + 3i' - }, - - 'Object': function (x) { - if('re' in x && 'im' in x) { - return new type.Complex(x.re, x.im); - } - - if ('r' in x && 'phi' in x) { - return type.Complex.fromPolar(x.r, x.phi); - } - - throw new Error('Expected object with either properties re and im, or properties r and phi.'); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, complex); - } - }); - - complex.toTex = { - 0: '0', - 1: '\\left(${args[0]}\\right)', - 2: '\\left(\\left(${args[0]}\\right)+' - + latex.symbols['i'] + '\\cdot\\left(${args[1]}\\right)\\right)' - }; - - return complex; - } - - exports.name = 'complex'; - exports.factory = factory; - - -/***/ }, -/* 64 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(65), + __webpack_require__(31), // construction function - __webpack_require__(69) + __webpack_require__(35) ]; /***/ }, -/* 65 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { - var Fraction = __webpack_require__(66); + var Fraction = __webpack_require__(32); /** * Attach type information @@ -15507,7 +8657,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 32 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {/** @@ -16237,7 +9387,7 @@ return /******/ (function(modules) { // webpackBootstrap } }; - if ("function" === "function" && __webpack_require__(68)["amd"]) { + if ("function" === "function" && __webpack_require__(34)["amd"]) { !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { return Fraction; }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); @@ -16249,10 +9399,10 @@ return /******/ (function(modules) { // webpackBootstrap })(this); - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(67)(module))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33)(module))) /***/ }, -/* 67 */ +/* 33 */ /***/ function(module, exports) { module.exports = function(module) { @@ -16268,14 +9418,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 34 */ /***/ function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }, -/* 69 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16346,34 +9496,34 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 70 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ // types - __webpack_require__(71), - __webpack_require__(72), - __webpack_require__(73), - __webpack_require__(74), - __webpack_require__(77), - __webpack_require__(80), - __webpack_require__(81), - __webpack_require__(82), + __webpack_require__(37), + __webpack_require__(45), + __webpack_require__(46), + __webpack_require__(48), + __webpack_require__(57), + __webpack_require__(63), + __webpack_require__(64), + __webpack_require__(65), // construction functions - __webpack_require__(83), - __webpack_require__(33), - __webpack_require__(84) + __webpack_require__(66), + __webpack_require__(50), + __webpack_require__(67) ]; /***/ }, -/* 71 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var string = util.string; @@ -16626,13 +9776,577 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 72 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); - var DimensionError = __webpack_require__(31); + exports.array = __webpack_require__(39); + exports['boolean'] = __webpack_require__(43); + exports['function'] = __webpack_require__(44); + exports.number = __webpack_require__(6); + exports.object = __webpack_require__(3); + exports.string = __webpack_require__(23); + exports.types = __webpack_require__(40); + exports.emitter = __webpack_require__(8); + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var number = __webpack_require__(6); + var string = __webpack_require__(23); + var object = __webpack_require__(3); + var types = __webpack_require__(40); + + var DimensionError = __webpack_require__(41); + var IndexError = __webpack_require__(42); + + /** + * Calculate the size of a multi dimensional array. + * This function checks the size of the first entry, it does not validate + * whether all dimensions match. (use function `validate` for that) + * @param {Array} x + * @Return {Number[]} size + */ + exports.size = function (x) { + var s = []; + + while (Array.isArray(x)) { + s.push(x.length); + x = x[0]; + } + + return s; + }; + + /** + * Recursively validate whether each element in a multi dimensional array + * has a size corresponding to the provided size array. + * @param {Array} array Array to be validated + * @param {number[]} size Array with the size of each dimension + * @param {number} dim Current dimension + * @throws DimensionError + * @private + */ + function _validate(array, size, dim) { + var i; + var len = array.length; + + if (len != size[dim]) { + throw new DimensionError(len, size[dim]); + } + + if (dim < size.length - 1) { + // recursively validate each child array + var dimNext = dim + 1; + for (i = 0; i < len; i++) { + var child = array[i]; + if (!Array.isArray(child)) { + throw new DimensionError(size.length - 1, size.length, '<'); + } + _validate(array[i], size, dimNext); + } + } + else { + // last dimension. none of the childs may be an array + for (i = 0; i < len; i++) { + if (Array.isArray(array[i])) { + throw new DimensionError(size.length + 1, size.length, '>'); + } + } + } + } + + /** + * Validate whether each element in a multi dimensional array has + * a size corresponding to the provided size array. + * @param {Array} array Array to be validated + * @param {number[]} size Array with the size of each dimension + * @throws DimensionError + */ + exports.validate = function(array, size) { + var isScalar = (size.length == 0); + if (isScalar) { + // scalar + if (Array.isArray(array)) { + throw new DimensionError(array.length, 0); + } + } + else { + // array + _validate(array, size, 0); + } + }; + + /** + * Test whether index is an integer number with index >= 0 and index < length + * @param {number} index Zero-based index + * @param {number} [length] Length of the array + */ + exports.validateIndex = function(index, length) { + if (!number.isNumber(index) || !number.isInteger(index)) { + throw new TypeError('Index must be an integer (value: ' + index + ')'); + } + if (index < 0) { + throw new IndexError(index); + } + if (length !== undefined && index >= length) { + throw new IndexError(index, length); + } + }; + + // a constant used to specify an undefined defaultValue + exports.UNINITIALIZED = {}; + + /** + * Resize a multi dimensional array. The resized array is returned. + * @param {Array} array Array to be resized + * @param {Array.} size Array with the size of each dimension + * @param {*} [defaultValue=0] Value to be filled in in new entries, + * zero by default. To leave new entries undefined, + * specify array.UNINITIALIZED as defaultValue + * @return {Array} array The resized array + */ + exports.resize = function(array, size, defaultValue) { + // TODO: add support for scalars, having size=[] ? + + // check the type of the arguments + if (!Array.isArray(array) || !Array.isArray(size)) { + throw new TypeError('Array expected'); + } + if (size.length === 0) { + throw new Error('Resizing to scalar is not supported'); + } + + // check whether size contains positive integers + size.forEach(function (value) { + if (!number.isNumber(value) || !number.isInteger(value) || value < 0) { + throw new TypeError('Invalid size, must contain positive integers ' + + '(size: ' + string.format(size) + ')'); + } + }); + + // recursively resize the array + var _defaultValue = (defaultValue !== undefined) ? defaultValue : 0; + _resize(array, size, 0, _defaultValue); + + return array; + }; + + /** + * Recursively resize a multi dimensional array + * @param {Array} array Array to be resized + * @param {number[]} size Array with the size of each dimension + * @param {number} dim Current dimension + * @param {*} [defaultValue] Value to be filled in in new entries, + * undefined by default. + * @private + */ + function _resize (array, size, dim, defaultValue) { + var i; + var elem; + var oldLen = array.length; + var newLen = size[dim]; + var minLen = Math.min(oldLen, newLen); + + // apply new length + array.length = newLen; + + if (dim < size.length - 1) { + // non-last dimension + var dimNext = dim + 1; + + // resize existing child arrays + for (i = 0; i < minLen; i++) { + // resize child array + elem = array[i]; + if (!Array.isArray(elem)) { + elem = [elem]; // add a dimension + array[i] = elem; + } + _resize(elem, size, dimNext, defaultValue); + } + + // create new child arrays + for (i = minLen; i < newLen; i++) { + // get child array + elem = []; + array[i] = elem; + + // resize new child array + _resize(elem, size, dimNext, defaultValue); + } + } + else { + // last dimension + + // remove dimensions of existing values + for (i = 0; i < minLen; i++) { + while (Array.isArray(array[i])) { + array[i] = array[i][0]; + } + } + + if(defaultValue !== exports.UNINITIALIZED) { + // fill new elements with the default value + for (i = minLen; i < newLen; i++) { + array[i] = object.clone(defaultValue); + } + } + } + } + + /** + * Squeeze a multi dimensional array + * @param {Array} array + * @param {Array} [size] + * @returns {Array} returns the array itself + */ + exports.squeeze = function(array, size) { + var s = size || exports.size(array); + + // squeeze outer dimensions + while (Array.isArray(array) && array.length === 1) { + array = array[0]; + s.shift(); + } + + // find the first dimension to be squeezed + var dims = s.length; + while (s[dims - 1] === 1) { + dims--; + } + + // squeeze inner dimensions + if (dims < s.length) { + array = _squeeze(array, dims, 0); + s.length = dims; + } + + return array; + }; + + /** + * Recursively squeeze a multi dimensional array + * @param {Array} array + * @param {number} dims Required number of dimensions + * @param {number} dim Current dimension + * @returns {Array | *} Returns the squeezed array + * @private + */ + function _squeeze (array, dims, dim) { + var i, ii; + + if (dim < dims) { + var next = dim + 1; + for (i = 0, ii = array.length; i < ii; i++) { + array[i] = _squeeze(array[i], dims, next); + } + } + else { + while (Array.isArray(array)) { + array = array[0]; + } + } + + return array; + } + + /** + * Unsqueeze a multi dimensional array: add dimensions when missing + * @param {Array} array + * @param {number} dims Desired number of dimensions of the array + * @param {number} [outer] Number of outer dimensions to be added + * @param {Array} [size] Current size of array + * @returns {Array} returns the array itself + * @private + */ + exports.unsqueeze = function(array, dims, outer, size) { + var s = size || exports.size(array); + + // unsqueeze outer dimensions + if (outer) { + for (var i = 0; i < outer; i++) { + array = [array]; + s.unshift(1); + } + } + + // unsqueeze inner dimensions + array = _unsqueeze(array, dims, 0); + while (s.length < dims) { + s.push(1); + } + + return array; + }; + + /** + * Recursively unsqueeze a multi dimensional array + * @param {Array} array + * @param {number} dims Required number of dimensions + * @param {number} dim Current dimension + * @returns {Array | *} Returns the squeezed array + * @private + */ + function _unsqueeze (array, dims, dim) { + var i, ii; + + if (Array.isArray(array)) { + var next = dim + 1; + for (i = 0, ii = array.length; i < ii; i++) { + array[i] = _unsqueeze(array[i], dims, next); + } + } + else { + for (var d = dim; d < dims; d++) { + array = [array]; + } + } + + return array; + } + /** + * Flatten a multi dimensional array, put all elements in a one dimensional + * array + * @param {Array} array A multi dimensional array + * @return {Array} The flattened array (1 dimensional) + */ + exports.flatten = function(array) { + if (!Array.isArray(array)) { + //if not an array, return as is + return array; + } + var flat = []; + + array.forEach(function callback(value) { + if (Array.isArray(value)) { + value.forEach(callback); //traverse through sub-arrays recursively + } + else { + flat.push(value); + } + }); + + return flat; + }; + + /** + * Test whether an object is an array + * @param {*} value + * @return {boolean} isArray + */ + exports.isArray = Array.isArray; + + +/***/ }, +/* 40 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Determine the type of a variable + * + * type(x) + * + * The following types are recognized: + * + * 'undefined' + * 'null' + * 'boolean' + * 'number' + * 'string' + * 'Array' + * 'Function' + * 'Date' + * 'RegExp' + * 'Object' + * + * @param {*} x + * @return {string} Returns the name of the type. Primitive types are lower case, + * non-primitive types are upper-camel-case. + * For example 'number', 'string', 'Array', 'Date'. + */ + exports.type = function(x) { + var type = typeof x; + + if (type === 'object') { + if (x === null) return 'null'; + if (x instanceof Boolean) return 'boolean'; + if (x instanceof Number) return 'number'; + if (x instanceof String) return 'string'; + if (Array.isArray(x)) return 'Array'; + if (x instanceof Date) return 'Date'; + if (x instanceof RegExp) return 'RegExp'; + + return 'Object'; + } + + if (type === 'function') return 'Function'; + + return type; + }; + + +/***/ }, +/* 41 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Create a range error with the message: + * 'Dimension mismatch ( != )' + * @param {number | number[]} actual The actual size + * @param {number | number[]} expected The expected size + * @param {string} [relation='!='] Optional relation between actual + * and expected size: '!=', '<', etc. + * @extends RangeError + */ + function DimensionError(actual, expected, relation) { + if (!(this instanceof DimensionError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.actual = actual; + this.expected = expected; + this.relation = relation; + + this.message = 'Dimension mismatch (' + + (Array.isArray(actual) ? ('[' + actual.join(', ') + ']') : actual) + + ' ' + (this.relation || '!=') + ' ' + + (Array.isArray(expected) ? ('[' + expected.join(', ') + ']') : expected) + + ')'; + + this.stack = (new Error()).stack; + } + + DimensionError.prototype = new RangeError(); + DimensionError.prototype.constructor = RangeError; + DimensionError.prototype.name = 'DimensionError'; + DimensionError.prototype.isDimensionError = true; + + module.exports = DimensionError; + + +/***/ }, +/* 42 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Create a range error with the message: + * 'Index out of range (index < min)' + * 'Index out of range (index < max)' + * + * @param {number} index The actual index + * @param {number} [min=0] Minimum index (included) + * @param {number} [max] Maximum index (excluded) + * @extends RangeError + */ + function IndexError(index, min, max) { + if (!(this instanceof IndexError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.index = index; + if (arguments.length < 3) { + this.min = 0; + this.max = min; + } + else { + this.min = min; + this.max = max; + } + + if (this.min !== undefined && this.index < this.min) { + this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')'; + } + else if (this.max !== undefined && this.index >= this.max) { + this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')'; + } + else { + this.message = 'Index out of range (' + this.index + ')'; + } + + this.stack = (new Error()).stack; + } + + IndexError.prototype = new RangeError(); + IndexError.prototype.constructor = RangeError; + IndexError.prototype.name = 'IndexError'; + IndexError.prototype.isIndexError = true; + + module.exports = IndexError; + + +/***/ }, +/* 43 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Test whether value is a boolean + * @param {*} value + * @return {boolean} isBoolean + */ + exports.isBoolean = function(value) { + return typeof value == 'boolean'; + }; + + +/***/ }, +/* 44 */ +/***/ function(module, exports) { + + // function utils + + /* + * Memoize a given function by caching the computed result. + * The cache of a memoized function can be cleared by deleting the `cache` + * property of the function. + * + * @param {function} fn The function to be memoized. + * Must be a pure function. + * @param {function(args: Array)} [hasher] A custom hash builder. + * Is JSON.stringify by default. + * @return {function} Returns the memoized function + */ + exports.memoize = function(fn, hasher) { + return function memoize() { + if (typeof memoize.cache !== 'object') { + memoize.cache = {}; + } + + var args = []; + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + + var hash = hasher ? hasher(args) : JSON.stringify(args); + if (!(hash in memoize.cache)) { + return memoize.cache[hash] = fn.apply(fn, args); + } + return memoize.cache[hash]; + }; + }; + + +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(38); + var DimensionError = __webpack_require__(41); var string = util.string; var array = util.array; @@ -16647,7 +10361,7 @@ return /******/ (function(modules) { // webpackBootstrap var validateIndex = array.validateIndex; function factory (type, config, load, typed) { - var Matrix = load(__webpack_require__(71)); // force loading Matrix (do not use via type.Matrix) + var Matrix = load(__webpack_require__(37)); // force loading Matrix (do not use via type.Matrix) function DenseMatrix(data, datatype) { if (!(this instanceof DenseMatrix)) @@ -17459,13 +11173,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.lazy = false; // no lazy loading, as we alter type.Matrix._storage /***/ }, -/* 73 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); - var DimensionError = __webpack_require__(31); + var util = __webpack_require__(38); + var DimensionError = __webpack_require__(41); var array = util.array; var object = util.object; @@ -17480,8 +11194,8 @@ return /******/ (function(modules) { // webpackBootstrap var validateIndex = array.validateIndex; function factory (type, config, load, typed) { - var Matrix = load(__webpack_require__(71)); // force loading Matrix (do not use via type.Matrix) - var equalScalar = load(__webpack_require__(38)); + var Matrix = load(__webpack_require__(37)); // force loading Matrix (do not use via type.Matrix) + var equalScalar = load(__webpack_require__(47)); /** * Sparse Matrix implementation. This type implements a Compressed Column Storage format @@ -18782,15 +12496,74 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 74 */ +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var nearlyEqual = __webpack_require__(6).nearlyEqual; + + function factory (type, config, load, typed) { + + /** + * Test whether two values are equal. + * + * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare + * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare + * @return {boolean} Returns true when the compared values are equal, else returns false + * @private + */ + var equalScalar = typed('equalScalar', { + + '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.eq(y); + }, + + 'Fraction, Fraction': function (x, y) { + return x.equals(y); + }, + + 'Complex, Complex': function (x, y) { + return (x.re === y.re || nearlyEqual(x.re, y.re, config.epsilon)) && + (x.im === y.im || nearlyEqual(x.im, y.im, config.epsilon)); + }, + + 'Unit, Unit': function (x, y) { + if (!x.equalBase(y)) { + throw new Error('Cannot compare units with different base'); + } + return equalScalar(x.value, y.value); + }, + + 'string, string': function (x, y) { + return x === y; + } + }); + + return equalScalar; + } + + exports.factory = factory; + + +/***/ }, +/* 48 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load) { - var add = load(__webpack_require__(75)); - var equalScalar = load(__webpack_require__(38)); + var add = load(__webpack_require__(49)); + var equalScalar = load(__webpack_require__(47)); /** * An ordered Sparse Accumulator is a representation for a sparse vector that includes a dense array @@ -18929,7 +12702,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 75 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18938,15 +12711,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var addScalar = load(__webpack_require__(29)); - var latex = __webpack_require__(32); + var matrix = load(__webpack_require__(50)); + var addScalar = load(__webpack_require__(51)); + var latex = __webpack_require__(29); - var algorithm01 = load(__webpack_require__(35)); - var algorithm04 = load(__webpack_require__(76)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm01 = load(__webpack_require__(52)); + var algorithm04 = load(__webpack_require__(53)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Add two values, `x + y`. @@ -19083,16 +12856,290 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 76 */ +/* 50 */ +/***/ function(module, exports) { + + 'use strict'; + + function factory (type, config, load, typed) { + /** + * Create a 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. + * Supported storage formats are 'dense' and 'sparse'. + * + * Syntax: + * + * math.matrix() // creates an empty matrix using default storage format (dense). + * math.matrix(data) // creates a matrix with initial data using default storage format (dense). + * math.matrix('dense') // creates an empty matrix using the given storage format. + * math.matrix(data, 'dense') // creates a matrix with initial data using the given storage format. + * math.matrix(data, 'sparse') // creates a sparse matrix with initial data. + * math.matrix(data, 'sparse', 'number') // creates a sparse matrix with initial data, number data type. + * + * Examples: + * + * var m = math.matrix([[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, sparse + * + * @param {Array | Matrix} [data] A multi dimensional array + * @param {string} [format] The Matrix storage format + * + * @return {Matrix} The created matrix + */ + var matrix = typed('matrix', { + '': function () { + return _create([]); + }, + + 'string': function (format) { + return _create([], format); + }, + + 'string, string': function (format, datatype) { + return _create([], format, datatype); + }, + + 'Array': function (data) { + return _create(data); + }, + + 'Matrix': function (data) { + return _create(data, data.storage()); + }, + + 'Array | Matrix, string': _create, + + 'Array | Matrix, string, string': _create + }); + + matrix.toTex = { + 0: '\\begin{bmatrix}\\end{bmatrix}', + 1: '\\left(${args[0]}\\right)', + 2: '\\left(${args[0]}\\right)' + }; + + return matrix; + + /** + * Create a new Matrix with given storage format + * @param {Array} data + * @param {string} [format] + * @param {string} [datatype] + * @returns {Matrix} Returns a new Matrix + * @private + */ + function _create(data, format, datatype) { + // get storage format constructor + var M = type.Matrix.storage(format || 'default'); + + // create instance + return new M(data, datatype); + } + } + + exports.name = 'matrix'; + exports.factory = factory; + + +/***/ }, +/* 51 */ +/***/ function(module, exports) { + + '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 | Fraction | Complex | Unit} x First value to add + * @param {number | BigNumber | Fraction | Complex} y Second value to add + * @return {number | BigNumber | Fraction | Complex | Unit} Sum of `x` and `y` + * @private + */ + var add = typed('add', { + + '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); + }, + + 'Fraction, Fraction': function (x, y) { + return x.add(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 = add(res.value, y.value); + res.fixPrefix = false; + return res; + } + }); + + return add; + } + + exports.factory = factory; + + +/***/ }, +/* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var equalScalar = load(__webpack_require__(38)); + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over SparseMatrix nonzero items and invokes the callback function f(Dij, Sij). + * Callback function invoked NNZ times (number of nonzero items in SparseMatrix). + * + * + * ┌ f(Dij, Sij) ; S(i,j) !== 0 + * C(i,j) = ┤ + * └ Dij ; otherwise + * + * + * @param {Matrix} denseMatrix The DenseMatrix instance (D) + * @param {Matrix} sparseMatrix The SparseMatrix instance (S) + * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j) + * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij) + * + * @return {Matrix} DenseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571 + */ + var algorithm01 = function (denseMatrix, sparseMatrix, callback, inverse) { + // dense matrix arrays + var adata = denseMatrix._data; + var asize = denseMatrix._size; + var adt = denseMatrix._datatype; + // sparse matrix arrays + var bvalues = sparseMatrix._values; + var bindex = sparseMatrix._index; + var bptr = sparseMatrix._ptr; + var bsize = sparseMatrix._size; + var bdt = sparseMatrix._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // sparse matrix cannot be a Pattern matrix + if (!bvalues) + throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // process data types + var dt = typeof adt === 'string' && adt === bdt ? adt : undefined; + // callback function + var cf = dt ? typed.find(callback, [dt, dt]) : callback; + + // vars + var i, j; + + // result (DenseMatrix) + var cdata = []; + // initialize c + for (i = 0; i < rows; i++) + cdata[i] = []; + + // workspace + var x = []; + // marks indicating we have a value in x for a given column + var w = []; + + // loop columns in b + for (j = 0; j < columns; j++) { + // column mark + var mark = j + 1; + // values in column j + for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { + // row + i = bindex[k]; + // update workspace + x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); + // mark i as updated + w[i] = mark; + } + // loop rows + for (i = 0; i < rows; i++) { + // check row is in workspace + if (w[i] === mark) { + // c[i][j] was already calculated + cdata[i][j] = x[i]; + } + else { + // item does not exist in S + cdata[i][j] = adata[i][j]; + } + } + } + + // return dense matrix + return new DenseMatrix({ + data: cdata, + size: [rows, columns], + datatype: dt + }); + }; + + return algorithm01; + } + + exports.name = 'algorithm01'; + exports.factory = factory; + + +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var DimensionError = __webpack_require__(41); + + function factory (type, config, load, typed) { + + var equalScalar = load(__webpack_require__(47)); var SparseMatrix = type.SparseMatrix; @@ -19276,15 +13323,329 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 77 */ +/* 54 */ +/***/ function(module, exports) { + + 'use strict'; + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). + * Callback function invoked NZ times (number of nonzero items in S). + * + * + * ┌ f(Sij, b) ; S(i,j) !== 0 + * C(i,j) = ┤ + * └ b ; otherwise + * + * + * @param {Matrix} s The SparseMatrix instance (S) + * @param {Scalar} b The Scalar value + * @param {Function} callback The f(Aij,b) operation to invoke + * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) + * + * @return {Matrix} DenseMatrix (C) + * + * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 + */ + var algorithm10 = function (s, b, callback, inverse) { + // sparse matrix arrays + var avalues = s._values; + var aindex = s._index; + var aptr = s._ptr; + var asize = s._size; + var adt = s._datatype; + + // sparse matrix cannot be a Pattern matrix + if (!avalues) + throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string') { + // datatype + dt = adt; + // convert b to the same datatype + b = typed.convert(b, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cdata = []; + // matrix + var c = new DenseMatrix({ + data: cdata, + size: [rows, columns], + datatype: dt + }); + + // workspaces + var x = []; + // marks indicating we have a value in x for a given column + var w = []; + + // loop columns + for (var j = 0; j < columns; j++) { + // columns mark + var mark = j + 1; + // values in j + for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { + // row + var r = aindex[k]; + // update workspace + x[r] = avalues[k]; + w[r] = mark; + } + // loop rows + for (var i = 0; i < rows; i++) { + // initialize C on first column + if (j === 0) { + // create row array + cdata[i] = []; + } + // check sparse matrix has a value @ i,j + if (w[i] === mark) { + // invoke callback, update C + cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b); + } + else { + // dense matrix value @ i, j + cdata[i][j] = b; + } + } + } + + // return sparse matrix + return c; + }; + + return algorithm10; + } + + exports.name = 'algorithm10'; + exports.factory = factory; + + +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(38); + var DimensionError = __webpack_require__(41); + + var string = util.string, + isString = string.isString; + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, Bij..z). + * Callback function invoked MxN times. + * + * C(i,j,...z) = f(Aij..z, Bij..z) + * + * @param {Matrix} a The DenseMatrix instance (A) + * @param {Matrix} b The DenseMatrix instance (B) + * @param {Function} callback The f(Aij..z,Bij..z) operation to invoke + * + * @return {Matrix} DenseMatrix (C) + * + * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658 + */ + var algorithm13 = function (a, b, callback) { + // a arrays + var adata = a._data; + var asize = a._size; + var adt = a._datatype; + // b arrays + var bdata = b._data; + var bsize = b._size; + var bdt = b._datatype; + // c arrays + var csize = []; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // validate each one of the dimension sizes + for (var s = 0; s < asize.length; s++) { + // must match + if (asize[s] !== bsize[s]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + // update dimension in c + csize[s] = asize[s]; + } + + // datatype + var dt; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // convert b to the same datatype + b = typed.convert(b, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // populate cdata, iterate through dimensions + var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : []; + + // c matrix + return new DenseMatrix({ + data: cdata, + size: csize, + datatype: dt + }); + }; + + // recursive function + var _iterate = function (f, level, s, n, av, bv) { + // initialize array for this level + var cv = []; + // check we reach the last level + if (level === s.length - 1) { + // loop arrays in last level + for (var i = 0; i < n; i++) { + // invoke callback and store value + cv[i] = f(av[i], bv[i]); + } + } + else { + // iterate current level + for (var j = 0; j < n; j++) { + // iterate next level + cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]); + } + } + return cv; + }; + + return algorithm13; + } + + exports.name = 'algorithm13'; + exports.factory = factory; + + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var clone = __webpack_require__(3).clone; + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over DenseMatrix items and invokes the callback function f(Aij..z, b). + * Callback function invoked MxN times. + * + * C(i,j,...z) = f(Aij..z, b) + * + * @param {Matrix} a The DenseMatrix instance (A) + * @param {Scalar} b The Scalar value + * @param {Function} callback The f(Aij..z,b) operation to invoke + * @param {boolean} inverse A true value indicates callback should be invoked f(b,Aij..z) + * + * @return {Matrix} DenseMatrix (C) + * + * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042 + */ + var algorithm14 = function (a, b, callback, inverse) { + // a arrays + var adata = a._data; + var asize = a._size; + var adt = a._datatype; + + // datatype + var dt; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string') { + // datatype + dt = adt; + // convert b to the same datatype + b = typed.convert(b, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // populate cdata, iterate through dimensions + var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : []; + + // c matrix + return new DenseMatrix({ + data: cdata, + size: clone(asize), + datatype: dt + }); + }; + + // recursive function + var _iterate = function (f, level, s, n, av, bv, inverse) { + // initialize array for this level + var cv = []; + // check we reach the last level + if (level === s.length - 1) { + // loop arrays in last level + for (var i = 0; i < n; i++) { + // invoke callback and store value + cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv); + } + } + else { + // iterate current level + for (var j = 0; j < n; j++) { + // iterate next level + cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse); + } + } + return cv; + }; + + return algorithm14; + } + + exports.name = 'algorithm14'; + exports.factory = factory; + + +/***/ }, +/* 57 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var smaller = load(__webpack_require__(78)); - var larger = load(__webpack_require__(79)); + var smaller = load(__webpack_require__(58)); + var larger = load(__webpack_require__(62)); var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0); @@ -19616,7 +13977,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 78 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19625,15 +13986,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Test whether value x is smaller than y. @@ -19798,7 +14159,384 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 79 */ +/* 59 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var DimensionError = __webpack_require__(41); + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over SparseMatrix items and invokes the callback function f(Dij, Sij). + * Callback function invoked M*N times. + * + * + * ┌ f(Dij, Sij) ; S(i,j) !== 0 + * C(i,j) = ┤ + * └ f(Dij, 0) ; otherwise + * + * + * @param {Matrix} denseMatrix The DenseMatrix instance (D) + * @param {Matrix} sparseMatrix The SparseMatrix instance (C) + * @param {Function} callback The f(Dij,Sij) operation to invoke, where Dij = DenseMatrix(i,j) and Sij = SparseMatrix(i,j) + * @param {boolean} inverse A true value indicates callback should be invoked f(Sij,Dij) + * + * @return {Matrix} DenseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571 + */ + var algorithm03 = function (denseMatrix, sparseMatrix, callback, inverse) { + // dense matrix arrays + var adata = denseMatrix._data; + var asize = denseMatrix._size; + var adt = denseMatrix._datatype; + // sparse matrix arrays + var bvalues = sparseMatrix._values; + var bindex = sparseMatrix._index; + var bptr = sparseMatrix._ptr; + var bsize = sparseMatrix._size; + var bdt = sparseMatrix._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // sparse matrix cannot be a Pattern matrix + if (!bvalues) + throw new Error('Cannot perform operation on Dense Matrix and Pattern Sparse Matrix'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result (DenseMatrix) + var cdata = []; + + // initialize dense matrix + for (var z = 0; z < rows; z++) { + // initialize row + cdata[z] = []; + } + + // workspace + var x = []; + // marks indicating we have a value in x for a given column + var w = []; + + // loop columns in b + for (var j = 0; j < columns; j++) { + // column mark + var mark = j + 1; + // values in column j + for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { + // row + var i = bindex[k]; + // update workspace + x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]); + w[i] = mark; + } + // process workspace + for (var y = 0; y < rows; y++) { + // check we have a calculated value for current row + if (w[y] === mark) { + // use calculated value + cdata[y][j] = x[y]; + } + else { + // calculate value + cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero); + } + } + } + + // return dense matrix + return new DenseMatrix({ + data: cdata, + size: [rows, columns], + datatype: dt + }); + }; + + return algorithm03; + } + + exports.name = 'algorithm03'; + exports.factory = factory; + + +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var DimensionError = __webpack_require__(41); + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij). + * Callback function invoked MxN times. + * + * C(i,j) = f(Aij, Bij) + * + * @param {Matrix} a The SparseMatrix instance (A) + * @param {Matrix} b The SparseMatrix instance (B) + * @param {Function} callback The f(Aij,Bij) operation to invoke + * + * @return {Matrix} DenseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 + */ + var algorithm07 = function (a, b, callback) { + // sparse matrix arrays + var asize = a._size; + var adt = a._datatype; + // sparse matrix arrays + var bsize = b._size; + var bdt = b._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // vars + var i, j; + + // result arrays + var cdata = []; + // initialize c + for (i = 0; i < rows; i++) + cdata[i] = []; + + // matrix + var c = new DenseMatrix({ + data: cdata, + size: [rows, columns], + datatype: dt + }); + + // workspaces + var xa = []; + var xb = []; + // marks indicating we have a value in x for a given column + var wa = []; + var wb = []; + + // loop columns + for (j = 0; j < columns; j++) { + // columns mark + var mark = j + 1; + // scatter the values of A(:,j) into workspace + _scatter(a, j, wa, xa, mark); + // scatter the values of B(:,j) into workspace + _scatter(b, j, wb, xb, mark); + // loop rows + for (i = 0; i < rows; i++) { + // matrix values @ i,j + var va = wa[i] === mark ? xa[i] : zero; + var vb = wb[i] === mark ? xb[i] : zero; + // invoke callback + cdata[i][j] = cf(va, vb); + } + } + + // return sparse matrix + return c; + }; + + var _scatter = function (m, j, w, x, mark) { + // a arrays + var values = m._values; + var index = m._index; + var ptr = m._ptr; + // loop values in column j + for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) { + // row + var i = index[k]; + // update workspace + w[i] = mark; + x[i] = values[k]; + } + }; + + return algorithm07; + } + + exports.name = 'algorithm07'; + exports.factory = factory; + + +/***/ }, +/* 61 */ +/***/ function(module, exports) { + + 'use strict'; + + function factory (type, config, load, typed) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). + * Callback function invoked MxN times. + * + * + * ┌ f(Sij, b) ; S(i,j) !== 0 + * C(i,j) = ┤ + * └ f(0, b) ; otherwise + * + * + * @param {Matrix} s The SparseMatrix instance (S) + * @param {Scalar} b The Scalar value + * @param {Function} callback The f(Aij,b) operation to invoke + * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) + * + * @return {Matrix} DenseMatrix (C) + * + * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 + */ + var algorithm12 = function (s, b, callback, inverse) { + // sparse matrix arrays + var avalues = s._values; + var aindex = s._index; + var aptr = s._ptr; + var asize = s._size; + var adt = s._datatype; + + // sparse matrix cannot be a Pattern matrix + if (!avalues) + throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string') { + // datatype + dt = adt; + // convert b to the same datatype + b = typed.convert(b, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cdata = []; + // matrix + var c = new DenseMatrix({ + data: cdata, + size: [rows, columns], + datatype: dt + }); + + // workspaces + var x = []; + // marks indicating we have a value in x for a given column + var w = []; + + // loop columns + for (var j = 0; j < columns; j++) { + // columns mark + var mark = j + 1; + // values in j + for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { + // row + var r = aindex[k]; + // update workspace + x[r] = avalues[k]; + w[r] = mark; + } + // loop rows + for (var i = 0; i < rows; i++) { + // initialize C on first column + if (j === 0) { + // create row array + cdata[i] = []; + } + // check sparse matrix has a value @ i,j + if (w[i] === mark) { + // invoke callback, update C + cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b); + } + else { + // dense matrix value @ i, j + cdata[i][j] = inverse ? cf(b, 0) : cf(0, b); + } + } + } + + // return sparse matrix + return c; + }; + + return algorithm12; + } + + exports.name = 'algorithm12'; + exports.factory = factory; + + +/***/ }, +/* 62 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -19807,15 +14545,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Test whether value x is larger than y. @@ -19980,12 +14718,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 80 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var string = util.string; var object = util.object; @@ -19995,9 +14733,9 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load) { - var DenseMatrix = load(__webpack_require__(72)); + var DenseMatrix = load(__webpack_require__(45)); - var smaller = load(__webpack_require__(78)); + var smaller = load(__webpack_require__(58)); function ImmutableDenseMatrix(data, datatype) { if (!(this instanceof ImmutableDenseMatrix)) @@ -20210,7 +14948,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 81 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20260,7 +14998,9 @@ return /******/ (function(modules) { // webpackBootstrap // size var size = m.size(); // scalar - this._isScalar = size.length === 1 && size[0] === 1; + if (size.length !== 1 || size[0] !== 1) { + this._isScalar = false; + } } else if (typeof arg === 'number') { this._dimensions.push(_createImmutableMatrix([arg])); @@ -20454,7 +15194,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 82 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -20763,7 +15503,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 83 */ +/* 66 */ /***/ function(module, exports) { 'use strict'; @@ -20832,7 +15572,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 84 */ +/* 67 */ /***/ function(module, exports) { 'use strict'; @@ -20899,17 +15639,102 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 85 */ +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + + function factory (type, config, load, typed) { + /** + * Create a number or convert a string, boolean, or unit to a number. + * When value is a matrix, all elements will be converted to number. + * + * Syntax: + * + * math.number(value) + * math.number(unit, valuelessUnit) + * + * Examples: + * + * math.number(2); // returns number 2 + * math.number('7.2'); // returns number 7.2 + * math.number(true); // returns number 1 + * math.number([true, false, true, true]); // returns [1, 0, 1, 1] + * math.number(math.unit('52cm'), 'm'); // returns 0.52 + * + * See also: + * + * bignumber, boolean, complex, index, matrix, string, unit + * + * @param {string | number | BigNumber | Fraction | boolean | Array | Matrix | Unit | null} [value] Value to be converted + * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number + * @return {number | Array | Matrix} The created number + */ + var number = typed('number', { + '': function () { + return 0; + }, + + 'number': function (x) { + return x; + }, + + 'string': function (x) { + var num = Number(x); + if (isNaN(num)) { + throw new SyntaxError('String "' + x + '" is no valid number'); + } + return num; + }, + + 'BigNumber': function (x) { + return x.toNumber(); + }, + + 'Fraction': function (x) { + return x.valueOf(); + }, + + 'Unit': function (x) { + throw new Error('Second argument with valueless unit expected'); + }, + + 'Unit, string | Unit': function (unit, valuelessUnit) { + return unit.toNumber(valuelessUnit); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, number); + } + }); + + number.toTex = { + 0: '0', + 1: '\\left(${args[0]}\\right)', + 2: '\\left(\\left(${args[0]}\\right)${args[1]}\\right)' + }; + + return number; + } + + exports.name = 'number'; + exports.factory = factory; + + +/***/ }, +/* 69 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(86) + __webpack_require__(70) ]; /***/ }, -/* 86 */ +/* 70 */ /***/ function(module, exports) { 'use strict'; @@ -20981,7 +15806,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 87 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -21056,27 +15881,5467 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 88 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(28), + __webpack_require__(73), // construction function - __webpack_require__(89), + __webpack_require__(90), // physical constants - __webpack_require__(90) + __webpack_require__(91) ]; +/***/ }, +/* 73 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var endsWith = __webpack_require__(23).endsWith; + var clone = __webpack_require__(3).clone; + + function factory (type, config, load, typed) { + var add = load(__webpack_require__(51)); + var subtract = load(__webpack_require__(74)); + var multiply = load(__webpack_require__(77)); + var divide = load(__webpack_require__(78)); + var pow = load(__webpack_require__(79)); + var abs = load(__webpack_require__(85)); + var equal = load(__webpack_require__(86)); + var isNumeric = load(__webpack_require__(87)); + var format = load(__webpack_require__(88)); + var getTypeOf = load(__webpack_require__(89)); + var toNumber = load(__webpack_require__(68)); + var Complex = load(__webpack_require__(27)); + + /** + * @constructor Unit + * + * A unit can be constructed in the following ways: + * var a = new Unit(value, name); + * var b = new Unit(null, name); + * var c = Unit.parse(str); + * + * Example usage: + * var a = new Unit(5, 'cm'); // 50 mm + * var b = Unit.parse('23 kg'); // 23 kg + * var c = math.in(a, new Unit(null, 'm'); // 0.05 m + * var d = new Unit(9.81, "m/s^2"); // 9.81 m/s^2 + * + * @param {number | BigNumber | Fraction | Complex | boolean} [value] A value like 5.2 + * @param {string} [name] A unit name like "cm" or "inch", or a derived unit of the form: "u1[^ex1] [u2[^ex2] ...] [/ u3[^ex3] [u4[^ex4]]]", such as "kg m^2/s^2", where each unit appearing after the forward slash is taken to be in the denominator. "kg m^2 s^-2" is a synonym and is also acceptable. Any of the units can include a prefix. + */ + function Unit(value, name) { + if (!(this instanceof Unit)) { + throw new Error('Constructor must be called with the new operator'); + } + + if (!(value === undefined || isNumeric(value) || value.isComplex)) { + throw new TypeError('First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined'); + } + if (name != undefined && (typeof name !== 'string' || name == '')) { + throw new TypeError('Second parameter in Unit constructor must be a string'); + } + + if (name != undefined) { + var u = Unit.parse(name); + this.units = u.units; + this.dimensions = u.dimensions; + } + else { + this.units = [ + { + unit: UNIT_NONE, + prefix: PREFIX_NONE, // link to a list with supported prefixes + power: 0 + } + ]; + this.dimensions = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + } + + this.value = (value != undefined) ? this._normalize(value) : null; + + this.fixPrefix = false; // if true, function format will not search for the + // best prefix but leave it as initially provided. + // fixPrefix is set true by the method Unit.to + + // The justification behind this is that if the constructor is explicitly called, + // the caller wishes the units to be returned exactly as he supplied. + this.isUnitListSimplified = true; + + } + + /** + * Attach type information + */ + Unit.prototype.type = 'Unit'; + Unit.prototype.isUnit = true; + + // private variables and functions for the Unit parser + var text, index, c; + + function skipWhitespace() { + while (c == ' ' || c == '\t') { + next(); + } + } + + function isDigitDot(c) { + return ((c >= '0' && c <= '9') || c == '.'); + } + + function isDigit(c) { + return ((c >= '0' && c <= '9')); + } + + function next() { + index++; + c = text.charAt(index); + } + + function revert(oldIndex) { + index = oldIndex; + c = text.charAt(index); + } + + function parseNumber() { + var number = ''; + var oldIndex; + oldIndex = index; + + if (c == '+') { + next(); + } + else if (c == '-') { + number += c; + next(); + } + + if (!isDigitDot(c)) { + // a + or - must be followed by a digit + revert(oldIndex); + return null; + } + + // get number, can have a single dot + if (c == '.') { + number += c; + next(); + if (!isDigit(c)) { + // this is no legal number, it is just a dot + revert(oldIndex); + return null; + } + } + else { + while (isDigit(c)) { + number += c; + next(); + } + if (c == '.') { + number += c; + next(); + } + } + while (isDigit(c)) { + number += c; + next(); + } + + // check for exponential notation like "2.3e-4" or "1.23e50" + if (c == 'E' || c == 'e') { + // The grammar branches here. This could either be part of an exponent or the start of a unit that begins with the letter e, such as "4exabytes" + + var tentativeNumber = ''; + var tentativeIndex = index; + + tentativeNumber += c; + next(); + + if (c == '+' || c == '-') { + tentativeNumber += c; + next(); + } + + // Scientific notation MUST be followed by an exponent (otherwise we assume it is not scientific notation) + if (!isDigit(c)) { + // The e or E must belong to something else, so return the number without the e or E. + revert(tentativeIndex); + return number; + } + + // We can now safely say that this is scientific notation. + number = number + tentativeNumber; + while (isDigit(c)) { + number += c; + next(); + } + } + + return number; + } + + function parseUnit() { + var unitName = ''; + + // Alphanumeric characters only; matches [a-zA-Z0-9] + var code = text.charCodeAt(index); + while ( (code >= 48 && code <= 57) || + (code >= 65 && code <= 90) || + (code >= 97 && code <= 122)) { + unitName += c; + next(); + code = text.charCodeAt(index); + } + + // Must begin with [a-zA-Z] + code = unitName.charCodeAt(0); + if ((code >= 65 && code <= 90) || + (code >= 97 && code <= 122)) { + return unitName || null; + } + else { + return null; + } + } + + function parseCharacter(toFind) { + if (c === toFind) { + next(); + return toFind; + } + else { + return null; + } + } + + /** + * Parse a string into a unit. The value of the unit is parsed as number, + * BigNumber, or Fraction depending on the math.js config setting `number`. + * + * Throws an exception if the provided string does not contain a valid unit or + * cannot be parsed. + * @param {string} str A string like "5.2 inch", "4e2 cm/s^2" + * @return {Unit} unit + */ + Unit.parse = function (str) { + text = str; + index = -1; + c = ''; + + if (typeof text !== 'string') { + throw new TypeError('Invalid argument in Unit.parse, string expected'); + } + + var unit = new Unit(); + unit.units = []; + + // A unit should follow this pattern: + // [number]unit[^number] [unit[^number]]...[/unit[^number] [unit[^number]]] + + // Rules: + // number is any floating point number. + // unit is any alphanumeric string beginning with an alpha. Units with names like e3 should be avoided because they look like the exponent of a floating point number! + // The string may optionally begin with a number. + // Each unit may optionally be followed by ^number. + // Whitespace or a forward slash is recommended between consecutive units, although the following technically is parseable: + // 2m^2kg/s^2 + // it is not good form. If a unit starts with e, then it could be confused as a floating point number: + // 4erg + + next(); + skipWhitespace(); + // Optional number at the start of the string + var valueStr = parseNumber(); + var value = null; + if(valueStr) { + if (config.number === 'bignumber') { + value = new type.BigNumber(valueStr); + } + else if (config.number === 'fraction') { + value = new type.Fraction(valueStr); + } + else { // number + value = parseFloat(valueStr); + } + } + skipWhitespace(); // Whitespace is not required here + + // Next, we read any number of unit[^number] + var powerMultiplierCurrent = 1; + var expectingUnit = false; + + // Stack to keep track of powerMultipliers applied to each parentheses group + var powerMultiplierStack = []; + + // Running product of all elements in powerMultiplierStack + var powerMultiplierStackProduct = 1; + + while (true) { + skipWhitespace(); + + // Check for and consume opening parentheses, pushing powerMultiplierCurrent to the stack + // A '(' will always appear directly before a unit. + while (c === '(') { + powerMultiplierStack.push(powerMultiplierCurrent); + powerMultiplierStackProduct *= powerMultiplierCurrent; + powerMultiplierCurrent = 1; + next(); + skipWhitespace(); + } + + // Is there something here? + if(c) { + var oldC = c; + var uStr = parseUnit(); + if(uStr == null) { + throw new SyntaxError('Unexpected "' + oldC + '" in "' + text + '" at index ' + index.toString()); + } + } + else { + // End of input. + break; + } + + // Verify the unit exists and get the prefix (if any) + var res = _findUnit(uStr); + if(res == null) { + // Unit not found. + throw new SyntaxError('Unit "' + uStr + '" not found.'); + } + + var power = powerMultiplierCurrent * powerMultiplierStackProduct; + // Is there a "^ number"? + skipWhitespace(); + if (parseCharacter('^')) { + skipWhitespace(); + var p = parseNumber(); + if(p == null) { + // No valid number found for the power! + throw new SyntaxError('In "' + str + '", "^" must be followed by a floating-point number'); + } + power *= p; + } + + // Add the unit to the list + unit.units.push( { + unit: res.unit, + prefix: res.prefix, + power: power + }); + for(var i=0; i 1 || Math.abs(this.units[0].power - 1.0) > 1e-15; + }; + + /** + * Normalize a value, based on its currently set unit(s) + * @param {number | BigNumber | Fraction | boolean} value + * @return {number | BigNumber | Fraction | boolean} normalized value + * @private + */ + Unit.prototype._normalize = function (value) { + var unitValue, unitOffset, unitPower, unitPrefixValue; + var convert; + + if (value == null || this.units.length === 0) { + return value; + } + else if (this._isDerived()) { + // This is a derived unit, so do not apply offsets. + // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset. + var res = value; + convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed + + for(var i=0; i < this.units.length; i++) { + unitValue = convert(this.units[i].unit.value); + unitPrefixValue = convert(this.units[i].prefix.value); + unitPower = convert(this.units[i].power); + res = multiply(res, pow(multiply(unitValue, unitPrefixValue), unitPower)); + } + + return res; + } + else { + // This is a single unit of power 1, like kg or degC + convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed + + unitValue = convert(this.units[0].unit.value); + unitOffset = convert(this.units[0].unit.offset); + unitPrefixValue = convert(this.units[0].prefix.value); + + return multiply(add(value, unitOffset), multiply(unitValue, unitPrefixValue)); + } + }; + + /** + * Denormalize a value, based on its currently set unit(s) + * @param {number} value + * @param {number} [prefixValue] Optional prefix value to be used (ignored if this is a derived unit) + * @return {number} denormalized value + * @private + */ + Unit.prototype._denormalize = function (value, prefixValue) { + var unitValue, unitOffset, unitPower, unitPrefixValue; + var convert; + + if (value == null || this.units.length === 0) { + return value; + } + else if (this._isDerived()) { + // This is a derived unit, so do not apply offsets. + // For example, with J kg^-1 degC^-1 you would NOT want to apply the offset. + // Also, prefixValue is ignored--but we will still use the prefix value stored in each unit, since kg is usually preferable to g unless the user decides otherwise. + var res = value; + convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed + + for (var i = 0; i < this.units.length; i++) { + unitValue = convert(this.units[i].unit.value); + unitPrefixValue = convert(this.units[i].prefix.value); + unitPower = convert(this.units[i].power); + res = divide(res, pow(multiply(unitValue, unitPrefixValue), unitPower)); + } + + return res; + } + else { + // This is a single unit of power 1, like kg or degC + convert = Unit._getNumberConverter(getTypeOf(value)); // convert to Fraction or BigNumber if needed + + unitValue = convert(this.units[0].unit.value); + unitPrefixValue = convert(this.units[0].prefix.value); + unitOffset = convert(this.units[0].unit.offset); + + if (prefixValue == undefined) { + return subtract(divide(divide(value, unitValue), unitPrefixValue), unitOffset); + } + else { + return subtract(divide(divide(value, unitValue), prefixValue), unitOffset); + } + } + }; + + /** + * Find a unit from a string + * @param {string} str A string like 'cm' or 'inch' + * @returns {Object | null} result When found, an object with fields unit and + * prefix is returned. Else, null is returned. + * @private + */ + function _findUnit(str) { + for (var name in UNITS) { + if (UNITS.hasOwnProperty(name)) { + if (endsWith(str, name)) { + var unit = UNITS[name]; + var prefixLen = (str.length - name.length); + var prefixName = str.substring(0, prefixLen); + var prefix = unit.prefixes[prefixName]; + if (prefix !== undefined) { + // store unit, prefix, and value + return { + unit: unit, + prefix: prefix + }; + } + } + } + } + + return null; + } + + /** + * Test if the given expression is a unit. + * The unit can have a prefix but cannot have a value. + * @param {string} name A string to be tested whether it is a value less unit. + * The unit can have prefix, like "cm" + * @return {boolean} true if the given string is a unit + */ + Unit.isValuelessUnit = function (name) { + return (_findUnit(name) != null); + }; + + /** + * check if this unit has given base unit + * If this unit is a derived unit, this will ALWAYS return false, since by definition base units are not derived. + * @param {BASE_UNITS | STRING | undefined} base + */ + Unit.prototype.hasBase = function (base) { + + if(typeof(base) === "string") { + base = BASE_UNITS[base]; + } + + if(!base) + return false; + + + // All dimensions must be the same + for(var i=0; i 1e-12) { + return false; + } + } + return true; + + }; + + /** + * Check if this unit has a base or bases equal to another base or bases + * For derived units, the exponent on each base also must match + * @param {Unit} other + * @return {boolean} true if equal base + */ + Unit.prototype.equalBase = function (other) { + // All dimensions must be the same + for(var i=0; i 1e-12) { + return false; + } + } + return true; + }; + + /** + * Check if this unit equals another unit + * @param {Unit} other + * @return {boolean} true if both units are equal + */ + Unit.prototype.equals = function (other) { + return (this.equalBase(other) && equal(this.value, other.value)); + }; + + /** + * Multiply this unit with another one + * @param {Unit} other + * @return {Unit} product of this unit and the other unit + */ + Unit.prototype.multiply = function (other) { + var res = this.clone(); + + for(var i = 0; i 1e-12) { + proposedUnitList.push({ + unit: currentUnitSystem[baseDim].unit, + prefix: currentUnitSystem[baseDim].prefix, + power: this.dimensions[i] + }); + } + } + + // Is the proposed unit list "simpler" than the existing one? + if(proposedUnitList.length < this.units.length) { + // Replace this unit list with the proposed list + this.units = proposedUnitList; + } + } + } + + this.isUnitListSimplified = true; + }; + + /** + * Get a string representation of the units of this Unit, without the value. + * @return {string} + */ + Unit.prototype.formatUnits = function () { + + // Lazy evaluation of the unit list + this.simplifyUnitListLazy(); + + var strNum = ""; + var strDen = ""; + var nNum = 0; + var nDen = 0; + + for(var i=0; i 0) { + nNum++; + strNum += " " + this.units[i].prefix.name + this.units[i].unit.name; + if(Math.abs(this.units[i].power - 1.0) > 1e-15) { + strNum += "^" + this.units[i].power; + } + } + else if(this.units[i].power < 0) { + nDen++; + } + } + + if(nDen > 0) { + for(var i=0; i 0) { + strDen += " " + this.units[i].prefix.name + this.units[i].unit.name; + if(Math.abs(this.units[i].power + 1.0) > 1e-15) { + strDen += "^" + (-this.units[i].power); + } + } + else { + strDen += " " + this.units[i].prefix.name + this.units[i].unit.name; + strDen += "^" + (this.units[i].power); + } + } + } + } + // Remove leading " " + strNum = strNum.substr(1); + strDen = strDen.substr(1); + + // Add parans for better copy/paste back into the eval, for example, or for better pretty print formatting + if(nNum > 1 && nDen > 0) { + strNum = "(" + strNum + ")"; + } + if(nDen > 1 && nNum > 0) { + strDen = "(" + strDen + ")"; + } + + var str = strNum; + if(nNum > 0 && nDen > 0) { + str += " / "; + } + str += strDen; + + return str; + }; + + /** + * Get a string representation of the Unit, with optional formatting options. + * @param {Object | number | Function} [options] Formatting options. See + * lib/utils/number:format for a + * description of the available + * options. + * @return {string} + */ + Unit.prototype.format = function (options) { + + // Simplfy the unit list, if necessary + this.simplifyUnitListLazy(); + + // Apply some custom logic for handling VA and VAR. The goal is to express the value of the unit as a real value, if possible. Otherwise, use a real-valued unit instead of a complex-valued one. + var isImaginary = false; + var isReal = true; + if(typeof(this.value) !== 'undefined' && this.value !== null && this.value.isComplex) { + // TODO: Make this better, for example, use relative magnitude of re and im rather than absolute + isImaginary = Math.abs(this.value.re) < 1e-14; + isReal = Math.abs(this.value.im) < 1e-14; + } + + for(var i in this.units) { + if(this.units[i].unit) { + if(this.units[i].unit.name === 'VA' && isImaginary) { + this.units[i].unit = UNITS["VAR"]; + } + else if(this.units[i].unit.name === 'VAR' && !isImaginary) { + this.units[i].unit = UNITS["VA"]; + } + } + } + + + // Now apply the best prefix + // Units must have only one unit and not have the fixPrefix flag set + if (this.units.length === 1 && !this.fixPrefix) { + // Units must have integer powers, otherwise the prefix will change the + // outputted value by not-an-integer-power-of-ten + if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) < 1e-14) { + // Apply the best prefix + this.units[0].prefix = this._bestPrefix(); + } + } + + var value = this._denormalize(this.value); + var str = (this.value !== null) ? format(value, options || {}) : ''; + var unitStr = this.formatUnits(); + if(this.value && this.value.isComplex) { + str = "(" + str + ")"; // Surround complex values with ( ) to enable better parsing + } + if(unitStr.length > 0 && str.length > 0) { + str += " "; + } + str += unitStr; + + return str; + }; + + /** + * Calculate the best prefix using current value. + * @returns {Object} prefix + * @private + */ + Unit.prototype._bestPrefix = function () { + if (this.units.length !== 1) { + throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!"); + } + if (Math.abs(this.units[0].power - Math.round(this.units[0].power)) >= 1e-14) { + throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!"); + } + + // find the best prefix value (resulting in the value of which + // the absolute value of the log10 is closest to zero, + // though with a little offset of 1.2 for nicer values: you get a + // sequence 1mm 100mm 500mm 0.6m 1m 10m 100m 500m 0.6km 1km ... + + // Note: the units value can be any numeric type, but to find the best + // prefix it's enough to work with limited precision of a regular number + // Update: using mathjs abs since we also allow complex numbers + var absValue = abs(this.value); + var absUnitValue = abs(this.units[0].unit.value); + var bestPrefix = this.units[0].prefix; + if (absValue === 0) { + return bestPrefix; + } + var power = this.units[0].power; + var bestDiff = Math.abs( + Math.log(absValue / Math.pow(bestPrefix.value * absUnitValue, power)) / Math.LN10 - 1.2); + + var prefixes = this.units[0].unit.prefixes; + for (var p in prefixes) { + if (prefixes.hasOwnProperty(p)) { + var prefix = prefixes[p]; + if (prefix.scientific) { + + var diff = Math.abs( + Math.log(absValue / Math.pow(prefix.value * absUnitValue, power)) / Math.LN10 - 1.2); + + if (diff < bestDiff + || (diff === bestDiff && prefix.name.length < bestPrefix.name.length)) { + // choose the prefix with the smallest diff, or if equal, choose the one + // with the shortest name (can happen with SHORTLONG for example) + bestPrefix = prefix; + bestDiff = diff; + } + } + } + } + + return bestPrefix; + }; + + var PREFIXES = { + NONE: { + '': {name: '', value: 1, scientific: true} + }, + SHORT: { + '': {name: '', value: 1, scientific: true}, + + 'da': {name: 'da', value: 1e1, scientific: false}, + 'h': {name: 'h', value: 1e2, scientific: false}, + 'k': {name: 'k', value: 1e3, scientific: true}, + 'M': {name: 'M', value: 1e6, scientific: true}, + 'G': {name: 'G', value: 1e9, scientific: true}, + 'T': {name: 'T', value: 1e12, scientific: true}, + 'P': {name: 'P', value: 1e15, scientific: true}, + 'E': {name: 'E', value: 1e18, scientific: true}, + 'Z': {name: 'Z', value: 1e21, scientific: true}, + 'Y': {name: 'Y', value: 1e24, scientific: true}, + + 'd': {name: 'd', value: 1e-1, scientific: false}, + 'c': {name: 'c', value: 1e-2, scientific: false}, + 'm': {name: 'm', value: 1e-3, scientific: true}, + 'u': {name: 'u', value: 1e-6, scientific: true}, + 'n': {name: 'n', value: 1e-9, scientific: true}, + 'p': {name: 'p', value: 1e-12, scientific: true}, + 'f': {name: 'f', value: 1e-15, scientific: true}, + 'a': {name: 'a', value: 1e-18, scientific: true}, + 'z': {name: 'z', value: 1e-21, scientific: true}, + 'y': {name: 'y', value: 1e-24, scientific: true} + }, + LONG: { + '': {name: '', value: 1, scientific: true}, + + 'deca': {name: 'deca', value: 1e1, scientific: false}, + 'hecto': {name: 'hecto', value: 1e2, scientific: false}, + 'kilo': {name: 'kilo', value: 1e3, scientific: true}, + 'mega': {name: 'mega', value: 1e6, scientific: true}, + 'giga': {name: 'giga', value: 1e9, scientific: true}, + 'tera': {name: 'tera', value: 1e12, scientific: true}, + 'peta': {name: 'peta', value: 1e15, scientific: true}, + 'exa': {name: 'exa', value: 1e18, scientific: true}, + 'zetta': {name: 'zetta', value: 1e21, scientific: true}, + 'yotta': {name: 'yotta', value: 1e24, scientific: true}, + + 'deci': {name: 'deci', value: 1e-1, scientific: false}, + 'centi': {name: 'centi', value: 1e-2, scientific: false}, + 'milli': {name: 'milli', value: 1e-3, scientific: true}, + 'micro': {name: 'micro', value: 1e-6, scientific: true}, + 'nano': {name: 'nano', value: 1e-9, scientific: true}, + 'pico': {name: 'pico', value: 1e-12, scientific: true}, + 'femto': {name: 'femto', value: 1e-15, scientific: true}, + 'atto': {name: 'atto', value: 1e-18, scientific: true}, + 'zepto': {name: 'zepto', value: 1e-21, scientific: true}, + 'yocto': {name: 'yocto', value: 1e-24, scientific: true} + }, + SQUARED: { + '': {name: '', value: 1, scientific: true}, + + 'da': {name: 'da', value: 1e2, scientific: false}, + 'h': {name: 'h', value: 1e4, scientific: false}, + 'k': {name: 'k', value: 1e6, scientific: true}, + 'M': {name: 'M', value: 1e12, scientific: true}, + 'G': {name: 'G', value: 1e18, scientific: true}, + 'T': {name: 'T', value: 1e24, scientific: true}, + 'P': {name: 'P', value: 1e30, scientific: true}, + 'E': {name: 'E', value: 1e36, scientific: true}, + 'Z': {name: 'Z', value: 1e42, scientific: true}, + 'Y': {name: 'Y', value: 1e48, scientific: true}, + + 'd': {name: 'd', value: 1e-2, scientific: false}, + 'c': {name: 'c', value: 1e-4, scientific: false}, + 'm': {name: 'm', value: 1e-6, scientific: true}, + 'u': {name: 'u', value: 1e-12, scientific: true}, + 'n': {name: 'n', value: 1e-18, scientific: true}, + 'p': {name: 'p', value: 1e-24, scientific: true}, + 'f': {name: 'f', value: 1e-30, scientific: true}, + 'a': {name: 'a', value: 1e-36, scientific: true}, + 'z': {name: 'z', value: 1e-42, scientific: true}, + 'y': {name: 'y', value: 1e-48, scientific: true} + }, + CUBIC: { + '': {name: '', value: 1, scientific: true}, + + 'da': {name: 'da', value: 1e3, scientific: false}, + 'h': {name: 'h', value: 1e6, scientific: false}, + 'k': {name: 'k', value: 1e9, scientific: true}, + 'M': {name: 'M', value: 1e18, scientific: true}, + 'G': {name: 'G', value: 1e27, scientific: true}, + 'T': {name: 'T', value: 1e36, scientific: true}, + 'P': {name: 'P', value: 1e45, scientific: true}, + 'E': {name: 'E', value: 1e54, scientific: true}, + 'Z': {name: 'Z', value: 1e63, scientific: true}, + 'Y': {name: 'Y', value: 1e72, scientific: true}, + + 'd': {name: 'd', value: 1e-3, scientific: false}, + 'c': {name: 'c', value: 1e-6, scientific: false}, + 'm': {name: 'm', value: 1e-9, scientific: true}, + 'u': {name: 'u', value: 1e-18, scientific: true}, + 'n': {name: 'n', value: 1e-27, scientific: true}, + 'p': {name: 'p', value: 1e-36, scientific: true}, + 'f': {name: 'f', value: 1e-45, scientific: true}, + 'a': {name: 'a', value: 1e-54, scientific: true}, + 'z': {name: 'z', value: 1e-63, scientific: true}, + 'y': {name: 'y', value: 1e-72, scientific: true} + }, + BINARY_SHORT: { + '': {name: '', value: 1, scientific: true}, + 'k': {name: 'k', value: 1e3, scientific: true}, + 'M': {name: 'M', value: 1e6, scientific: true}, + 'G': {name: 'G', value: 1e9, scientific: true}, + 'T': {name: 'T', value: 1e12, scientific: true}, + 'P': {name: 'P', value: 1e15, scientific: true}, + 'E': {name: 'E', value: 1e18, scientific: true}, + 'Z': {name: 'Z', value: 1e21, scientific: true}, + 'Y': {name: 'Y', value: 1e24, scientific: true}, + + 'Ki': {name: 'Ki', value: 1024, scientific: true}, + 'Mi': {name: 'Mi', value: Math.pow(1024, 2), scientific: true}, + 'Gi': {name: 'Gi', value: Math.pow(1024, 3), scientific: true}, + 'Ti': {name: 'Ti', value: Math.pow(1024, 4), scientific: true}, + 'Pi': {name: 'Pi', value: Math.pow(1024, 5), scientific: true}, + 'Ei': {name: 'Ei', value: Math.pow(1024, 6), scientific: true}, + 'Zi': {name: 'Zi', value: Math.pow(1024, 7), scientific: true}, + 'Yi': {name: 'Yi', value: Math.pow(1024, 8), scientific: true} + }, + BINARY_LONG: { + '': {name: '', value: 1, scientific: true}, + 'kilo': {name: 'kilo', value: 1e3, scientific: true}, + 'mega': {name: 'mega', value: 1e6, scientific: true}, + 'giga': {name: 'giga', value: 1e9, scientific: true}, + 'tera': {name: 'tera', value: 1e12, scientific: true}, + 'peta': {name: 'peta', value: 1e15, scientific: true}, + 'exa': {name: 'exa', value: 1e18, scientific: true}, + 'zetta': {name: 'zetta', value: 1e21, scientific: true}, + 'yotta': {name: 'yotta', value: 1e24, scientific: true}, + + 'kibi': {name: 'kibi', value: 1024, scientific: true}, + 'mebi': {name: 'mebi', value: Math.pow(1024, 2), scientific: true}, + 'gibi': {name: 'gibi', value: Math.pow(1024, 3), scientific: true}, + 'tebi': {name: 'tebi', value: Math.pow(1024, 4), scientific: true}, + 'pebi': {name: 'pebi', value: Math.pow(1024, 5), scientific: true}, + 'exi': {name: 'exi', value: Math.pow(1024, 6), scientific: true}, + 'zebi': {name: 'zebi', value: Math.pow(1024, 7), scientific: true}, + 'yobi': {name: 'yobi', value: Math.pow(1024, 8), scientific: true} + }, + BTU: { + '': {name: '', value: 1, scientific: true}, + 'MM': {name: 'MM', value: 1e6, scientific: true} + } + }; + + // Add a prefix list for both short and long prefixes (for ohm in particular, since Mohm and megaohm are both acceptable): + PREFIXES.SHORTLONG = {}; + for (var key in PREFIXES.SHORT) { + if(PREFIXES.SHORT.hasOwnProperty(key)) { + PREFIXES.SHORTLONG[key] = PREFIXES.SHORT[key]; + } + } + for (var key in PREFIXES.LONG) { + if(PREFIXES.LONG.hasOwnProperty(key)) { + PREFIXES.SHORTLONG[key] = PREFIXES.LONG[key]; + } + } + + var PREFIX_NONE = {name: '', value: 1, scientific: true}; + + /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning: + * Index Dimension + * ----- --------- + * 0 Length + * 1 Mass + * 2 Time + * 3 Current + * 4 Temperature + * 5 Luminous intensity + * 6 Amount of substance + * 7 Angle + * 8 Bit (digital) + * For example, the unit "298.15 K" is a pure temperature and would have a value of 298.15 and a dimension array of [0, 0, 0, 0, 1, 0, 0, 0, 0]. The unit "1 cal / (gm °C)" can be written in terms of the 9 fundamental dimensions as [length^2] / ([time^2] * [temperature]), and would a value of (after conversion to SI) 4184.0 and a dimensions array of [2, 0, -2, 0, -1, 0, 0, 0, 0]. + * + */ + + var BASE_DIMENSIONS = ["MASS", "LENGTH", "TIME", "CURRENT", "TEMPERATURE", "LUMINOUS_INTENSITY", "AMOUNT_OF_SUBSTANCE", "ANGLE", "BIT"]; + + var BASE_UNITS = { + NONE: { + dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 0] + }, + MASS: { + dimensions: [1, 0, 0, 0, 0, 0, 0, 0, 0] + }, + LENGTH: { + dimensions: [0, 1, 0, 0, 0, 0, 0, 0, 0] + }, + TIME: { + dimensions: [0, 0, 1, 0, 0, 0, 0, 0, 0] + }, + CURRENT: { + dimensions: [0, 0, 0, 1, 0, 0, 0, 0, 0] + }, + TEMPERATURE: { + dimensions: [0, 0, 0, 0, 1, 0, 0, 0, 0] + }, + LUMINOUS_INTENSITY: { + dimensions: [0, 0, 0, 0, 0, 1, 0, 0, 0] + }, + AMOUNT_OF_SUBSTANCE: { + dimensions: [0, 0, 0, 0, 0, 0, 1, 0, 0] + }, + + FORCE: { + dimensions: [1, 1, -2, 0, 0, 0, 0, 0, 0] + }, + SURFACE: { + dimensions: [0, 2, 0, 0, 0, 0, 0, 0, 0] + }, + VOLUME: { + dimensions: [0, 3, 0, 0, 0, 0, 0, 0, 0] + }, + ENERGY: { + dimensions: [1, 2, -2, 0, 0, 0, 0, 0, 0] + }, + POWER: { + dimensions: [1, 2, -3, 0, 0, 0, 0, 0, 0] + }, + PRESSURE: { + dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0] + }, + + ELECTRIC_CHARGE: { + dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0] + }, + ELECTRIC_CAPACITANCE: { + dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0] + }, + ELECTRIC_POTENTIAL: { + dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0] + }, + ELECTRIC_RESISTANCE: { + dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0] + }, + ELECTRIC_INDUCTANCE: { + dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0] + }, + ELECTRIC_CONDUCTANCE: { + dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0] + }, + MAGNETIC_FLUX: { + dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0] + }, + MAGNETIC_FLUX_DENSITY: { + dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0] + }, + + FREQUENCY: { + dimensions: [0, 0, -1, 0, 0, 0, 0, 0, 0] + }, + ANGLE: { + dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0] + }, + BIT: { + dimensions: [0, 0, 0, 0, 0, 0, 0, 0, 1] + } + }; + + for(var key in BASE_UNITS) { + BASE_UNITS[key].key = key; + } + + var BASE_UNIT_NONE = {}; + + var UNIT_NONE = {name: '', base: BASE_UNIT_NONE, value: 1, offset: 0, dimensions: [0,0,0,0,0,0,0,0,0]}; + + var UNITS = { + // length + meter: { + name: 'meter', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + inch: { + name: 'inch', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.0254, + offset: 0 + }, + foot: { + name: 'foot', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.3048, + offset: 0 + }, + yard: { + name: 'yard', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.9144, + offset: 0 + }, + mile: { + name: 'mile', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 1609.344, + offset: 0 + }, + link: { + name: 'link', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.201168, + offset: 0 + }, + rod: { + name: 'rod', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 5.029210, + offset: 0 + }, + chain: { + name: 'chain', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 20.1168, + offset: 0 + }, + angstrom: { + name: 'angstrom', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 1e-10, + offset: 0 + }, + + m: { + name: 'm', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + 'in': { + name: 'in', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.0254, + offset: 0 + }, + ft: { + name: 'ft', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.3048, + offset: 0 + }, + yd: { + name: 'yd', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.9144, + offset: 0 + }, + mi: { + name: 'mi', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 1609.344, + offset: 0 + }, + li: { + name: 'li', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.201168, + offset: 0 + }, + rd: { + name: 'rd', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 5.029210, + offset: 0 + }, + ch: { + name: 'ch', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 20.1168, + offset: 0 + }, + mil: { + name: 'mil', + base: BASE_UNITS.LENGTH, + prefixes: PREFIXES.NONE, + value: 0.0000254, + offset: 0 + }, // 1/1000 inch + + // Surface + m2: { + name: 'm2', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.SQUARED, + value: 1, + offset: 0 + }, + sqin: { + name: 'sqin', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 0.00064516, + offset: 0 + }, // 645.16 mm2 + sqft: { + name: 'sqft', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 0.09290304, + offset: 0 + }, // 0.09290304 m2 + sqyd: { + name: 'sqyd', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 0.83612736, + offset: 0 + }, // 0.83612736 m2 + sqmi: { + name: 'sqmi', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 2589988.110336, + offset: 0 + }, // 2.589988110336 km2 + sqrd: { + name: 'sqrd', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 25.29295, + offset: 0 + }, // 25.29295 m2 + sqch: { + name: 'sqch', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 404.6873, + offset: 0 + }, // 404.6873 m2 + sqmil: { + name: 'sqmil', + base: BASE_UNITS.SURFACE, + prefixes: PREFIXES.NONE, + value: 6.4516e-10, + offset: 0 + }, // 6.4516 * 10^-10 m2 + + // Volume + m3: { + name: 'm3', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.CUBIC, + value: 1, + offset: 0 + }, + L: { + name: 'L', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.SHORT, + value: 0.001, + offset: 0 + }, // litre + l: { + name: 'l', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.SHORT, + value: 0.001, + offset: 0 + }, // litre + litre: { + name: 'litre', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.LONG, + value: 0.001, + offset: 0 + }, + cuin: { + name: 'cuin', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 1.6387064e-5, + offset: 0 + }, // 1.6387064e-5 m3 + cuft: { + name: 'cuft', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.028316846592, + offset: 0 + }, // 28.316 846 592 L + cuyd: { + name: 'cuyd', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.764554857984, + offset: 0 + }, // 764.554 857 984 L + teaspoon: { + name: 'teaspoon', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.000005, + offset: 0 + }, // 5 mL + tablespoon: { + name: 'tablespoon', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.000015, + offset: 0 + }, // 15 mL + //{name: 'cup', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.000240, offset: 0}, // 240 mL // not possible, we have already another cup + drop: { + name: 'drop', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 5e-8, + offset: 0 + }, // 0.05 mL = 5e-8 m3 + gtt: { + name: 'gtt', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 5e-8, + offset: 0 + }, // 0.05 mL = 5e-8 m3 + + // Liquid volume + minim: { + name: 'minim', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.00000006161152, + offset: 0 + }, // 0.06161152 mL + fluiddram: { + name: 'fluiddram', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0000036966911, + offset: 0 + }, // 3.696691 mL + fluidounce: { + name: 'fluidounce', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.00002957353, + offset: 0 + }, // 29.57353 mL + gill: { + name: 'gill', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0001182941, + offset: 0 + }, // 118.2941 mL + cc: { + name: 'cc', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 1e-6, + offset: 0 + }, // 1e-6 L + cup: { + name: 'cup', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0002365882, + offset: 0 + }, // 236.5882 mL + pint: { + name: 'pint', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0004731765, + offset: 0 + }, // 473.1765 mL + quart: { + name: 'quart', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0009463529, + offset: 0 + }, // 946.3529 mL + gallon: { + name: 'gallon', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.003785412, + offset: 0 + }, // 3.785412 L + beerbarrel: { + name: 'beerbarrel', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.1173478, + offset: 0 + }, // 117.3478 L + oilbarrel: { + name: 'oilbarrel', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.1589873, + offset: 0 + }, // 158.9873 L + hogshead: { + name: 'hogshead', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.2384810, + offset: 0 + }, // 238.4810 L + + //{name: 'min', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.00000006161152, offset: 0}, // 0.06161152 mL // min is already in use as minute + fldr: { + name: 'fldr', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0000036966911, + offset: 0 + }, // 3.696691 mL + floz: { + name: 'floz', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.00002957353, + offset: 0 + }, // 29.57353 mL + gi: { + name: 'gi', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0001182941, + offset: 0 + }, // 118.2941 mL + cp: { + name: 'cp', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0002365882, + offset: 0 + }, // 236.5882 mL + pt: { + name: 'pt', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0004731765, + offset: 0 + }, // 473.1765 mL + qt: { + name: 'qt', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.0009463529, + offset: 0 + }, // 946.3529 mL + gal: { + name: 'gal', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.003785412, + offset: 0 + }, // 3.785412 L + bbl: { + name: 'bbl', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.1173478, + offset: 0 + }, // 117.3478 L + obl: { + name: 'obl', + base: BASE_UNITS.VOLUME, + prefixes: PREFIXES.NONE, + value: 0.1589873, + offset: 0 + }, // 158.9873 L + //{name: 'hogshead', base: BASE_UNITS.VOLUME, prefixes: PREFIXES.NONE, value: 0.2384810, offset: 0}, // 238.4810 L // TODO: hh? + + // Mass + g: { + name: 'g', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.SHORT, + value: 0.001, + offset: 0 + }, + gram: { + name: 'gram', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.LONG, + value: 0.001, + offset: 0 + }, + + ton: { + name: 'ton', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.SHORT, + value: 907.18474, + offset: 0 + }, + tonne: { + name: 'tonne', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.SHORT, + value: 1000, + offset: 0 + }, + + grain: { + name: 'grain', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 64.79891e-6, + offset: 0 + }, + dram: { + name: 'dram', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 1.7718451953125e-3, + offset: 0 + }, + ounce: { + name: 'ounce', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 28.349523125e-3, + offset: 0 + }, + poundmass: { + name: 'poundmass', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 453.59237e-3, + offset: 0 + }, + hundredweight: { + name: 'hundredweight', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 45.359237, + offset: 0 + }, + stick: { + name: 'stick', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 115e-3, + offset: 0 + }, + stone: { + name: 'stone', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 6.35029318, + offset: 0 + }, + + gr: { + name: 'gr', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 64.79891e-6, + offset: 0 + }, + dr: { + name: 'dr', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 1.7718451953125e-3, + offset: 0 + }, + oz: { + name: 'oz', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 28.349523125e-3, + offset: 0 + }, + lbm: { + name: 'lbm', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 453.59237e-3, + offset: 0 + }, + cwt: { + name: 'cwt', + base: BASE_UNITS.MASS, + prefixes: PREFIXES.NONE, + value: 45.359237, + offset: 0 + }, + + // Time + s: { + name: 's', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + min: { + name: 'min', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 60, + offset: 0 + }, + h: { + name: 'h', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 3600, + offset: 0 + }, + second: { + name: 'second', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + sec: { + name: 'sec', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + minute: { + name: 'minute', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 60, + offset: 0 + }, + hour: { + name: 'hour', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 3600, + offset: 0 + }, + day: { + name: 'day', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 86400, + offset: 0 + }, + week: { + name: 'week', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 7*86400, + offset: 0 + }, + month: { + name: 'month', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 2629800, //1/12th of Julian year + offset: 0 + }, + year: { + name: 'year', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 31557600, //Julian year + offset: 0 + }, + decade: { + name: 'year', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 315576000, //Julian decade + offset: 0 + }, + century: { + name: 'century', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 3155760000, //Julian century + offset: 0 + }, + millennium: { + name: 'millennium', + base: BASE_UNITS.TIME, + prefixes: PREFIXES.NONE, + value: 31557600000, //Julian millennium + offset: 0 + }, + + // Frequency + hertz: { + name: 'Hertz', + base: BASE_UNITS.FREQUENCY, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0, + reciprocal: true + }, + Hz: { + name: 'Hz', + base: BASE_UNITS.FREQUENCY, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0, + reciprocal: true + }, + + // Angle + rad: { + name: 'rad', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + // deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888 + deg: { + name: 'deg', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 0.017453292519943295769236907684888, + offset: 0 + }, + // grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399 + grad: { + name: 'grad', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 0.015707963267948966192313216916399, + offset: 0 + }, + // cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793 + cycle: { + name: 'cycle', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 6.2831853071795864769252867665793, + offset: 0 + }, + // arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795 + arcsec: { + name: 'arcsec', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 0.0000048481368110953599358991410235795, + offset: 0 + }, + // arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477 + arcmin: { + name: 'arcmin', + base: BASE_UNITS.ANGLE, + prefixes: PREFIXES.NONE, + value: 0.00029088820866572159615394846141477, + offset: 0 + }, + + // Electric current + A: { + name: 'A', + base: BASE_UNITS.CURRENT, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + ampere: { + name: 'ampere', + base: BASE_UNITS.CURRENT, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + + // Temperature + // K(C) = °C + 273.15 + // K(F) = (°F + 459.67) / 1.8 + // K(R) = °R / 1.8 + K: { + name: 'K', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + degC: { + name: 'degC', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 273.15 + }, + degF: { + name: 'degF', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1 / 1.8, + offset: 459.67 + }, + degR: { + name: 'degR', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1 / 1.8, + offset: 0 + }, + kelvin: { + name: 'kelvin', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + celsius: { + name: 'celsius', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 273.15 + }, + fahrenheit: { + name: 'fahrenheit', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1 / 1.8, + offset: 459.67 + }, + rankine: { + name: 'rankine', + base: BASE_UNITS.TEMPERATURE, + prefixes: PREFIXES.NONE, + value: 1 / 1.8, + offset: 0 + }, + + // amount of substance + mol: { + name: 'mol', + base: BASE_UNITS.AMOUNT_OF_SUBSTANCE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + mole: { + name: 'mole', + base: BASE_UNITS.AMOUNT_OF_SUBSTANCE, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + + // luminous intensity + cd: { + name: 'cd', + base: BASE_UNITS.LUMINOUS_INTENSITY, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + candela: { + name: 'candela', + base: BASE_UNITS.LUMINOUS_INTENSITY, + prefixes: PREFIXES.NONE, + value: 1, + offset: 0 + }, + // TODO: units STERADIAN + //{name: 'sr', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0}, + //{name: 'steradian', base: BASE_UNITS.STERADIAN, prefixes: PREFIXES.NONE, value: 1, offset: 0}, + + // Force + N: { + name: 'N', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + newton: { + name: 'newton', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + dyn: { + name: 'dyn', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.SHORT, + value: 0.00001, + offset: 0 + }, + dyne: { + name: 'dyne', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.LONG, + value: 0.00001, + offset: 0 + }, + lbf: { + name: 'lbf', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.NONE, + value: 4.4482216152605, + offset: 0 + }, + poundforce: { + name: 'poundforce', + base: BASE_UNITS.FORCE, + prefixes: PREFIXES.NONE, + value: 4.4482216152605, + offset: 0 + }, + // Energy + J: { + name: 'J', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + joule: { + name: 'joule', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + erg: { + name: 'erg', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.NONE, + value: 1e-5, + offset: 0 + }, + Wh: { + name: 'Wh', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.SHORT, + value: 3600, + offset: 0 + }, + BTU: { + name: 'BTU', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.BTU, + value: 1055.05585262, + offset: 0 + }, + eV: { + name: 'eV', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.SHORT, + value: 1.602176565e-19, + offset: 0 + }, + electronvolt: { + name: 'electronvolt', + base: BASE_UNITS.ENERGY, + prefixes: PREFIXES.LONG, + value: 1.602176565e-19, + offset: 0 + }, + + + // Power + W: { + name: 'W', + base: BASE_UNITS.POWER, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + watt: { + name: 'W', + base: BASE_UNITS.POWER, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + hp: { + name: 'hp', + base: BASE_UNITS.POWER, + prefixes: PREFIXES.NONE, + value: 745.6998715386, + offset: 0 + }, + + // Electrical power units + VAR: { + name: 'VAR', + base: BASE_UNITS.POWER, + prefixes: PREFIXES.SHORT, + value: new Complex(0,1), + offset: 0 + }, + + VA: { + name: 'VA', + base: BASE_UNITS.POWER, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + + // Pressure + Pa: { + name: 'Pa', + base: BASE_UNITS.PRESSURE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + psi: { + name: 'psi', + base: BASE_UNITS.PRESSURE, + prefixes: PREFIXES.NONE, + value: 6894.75729276459, + offset: 0 + }, + atm: { + name: 'atm', + base: BASE_UNITS.PRESSURE, + prefixes: PREFIXES.NONE, + value: 101325, + offset: 0 + }, + + // Electric charge + coulomb: { + name: 'coulomb', + base: BASE_UNITS.ELECTRIC_CHARGE, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + C: { + name: 'C', + base: BASE_UNITS.ELECTRIC_CHARGE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Electric capacitance + farad: { + name: 'farad', + base: BASE_UNITS.ELECTRIC_CAPACITANCE, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + F: { + name: 'F', + base: BASE_UNITS.ELECTRIC_CAPACITANCE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Electric potential + volt: { + name: 'volt', + base: BASE_UNITS.ELECTRIC_POTENTIAL, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + V: { + name: 'V', + base: BASE_UNITS.ELECTRIC_POTENTIAL, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Electric resistance + ohm: { + name: 'ohm', + base: BASE_UNITS.ELECTRIC_RESISTANCE, + prefixes: PREFIXES.SHORTLONG, // Both Mohm and megaohm are acceptable + value: 1, + offset: 0 + }, + /* + * Unicode breaks in browsers if charset is not specified + Ω: { + name: 'Ω', + base: BASE_UNITS.ELECTRIC_RESISTANCE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + */ + // Electric inductance + henry: { + name: 'henry', + base: BASE_UNITS.ELECTRIC_INDUCTANCE, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + H: { + name: 'H', + base: BASE_UNITS.ELECTRIC_INDUCTANCE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Electric conductance + siemens: { + name: 'siemens', + base: BASE_UNITS.ELECTRIC_CONDUCTANCE, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + S: { + name: 'S', + base: BASE_UNITS.ELECTRIC_CONDUCTANCE, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Magnetic flux + weber: { + name: 'weber', + base: BASE_UNITS.MAGNETIC_FLUX, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + Wb: { + name: 'Wb', + base: BASE_UNITS.MAGNETIC_FLUX, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + // Magnetic flux density + tesla: { + name: 'tesla', + base: BASE_UNITS.MAGNETIC_FLUX_DENSITY, + prefixes: PREFIXES.LONG, + value: 1, + offset: 0 + }, + T: { + name: 'T', + base: BASE_UNITS.MAGNETIC_FLUX_DENSITY, + prefixes: PREFIXES.SHORT, + value: 1, + offset: 0 + }, + + // Binary + b: { + name: 'b', + base: BASE_UNITS.BIT, + prefixes: PREFIXES.BINARY_SHORT, + value: 1, + offset: 0 + }, + bits: { + name: 'bits', + base: BASE_UNITS.BIT, + prefixes: PREFIXES.BINARY_LONG, + value: 1, + offset: 0 + }, + B: { + name: 'B', + base: BASE_UNITS.BIT, + prefixes: PREFIXES.BINARY_SHORT, + value: 8, + offset: 0 + }, + bytes: { + name: 'bytes', + base: BASE_UNITS.BIT, + prefixes: PREFIXES.BINARY_LONG, + value: 8, + offset: 0 + } + }; + + // aliases (formerly plurals) + var ALIASES = { + meters: 'meter', + inches: 'inch', + feet: 'foot', + yards: 'yard', + miles: 'mile', + links: 'link', + rods: 'rod', + chains: 'chain', + angstroms: 'angstrom', + + lt: 'l', + litres: 'litre', + liter: 'litre', + liters: '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', + lb: 'lbm', + lbs: 'lbm', + + seconds: 'second', + minutes: 'minute', + hours: 'hour', + days: 'day', + + hertz: 'hertz', + + radians: 'rad', + degree: 'deg', + degrees: 'deg', + gradian: 'grad', + gradians: 'grad', + cycles: 'cycle', + arcsecond: 'arcsec', + arcseconds: 'arcsec', + arcminute: 'arcmin', + arcminutes: 'arcmin', + + BTUs: 'BTU', + watts: 'watt', + joules: 'joule', + + amperes: 'ampere', + coulombs: 'coulomb', + volts: 'volt', + ohms: 'ohm', + farads: 'farad', + webers: 'weber', + teslas: 'tesla', + electronvolts: 'electronvolt', + moles: 'mole' + + }; + + /** + * A unit system is a set of dimensionally independent base units plus a set of derived units, formed by multiplication and division of the base units, that are by convention used with the unit system. + * A user perhaps could issue a command to select a preferred unit system, or use the default (see below). + * Auto unit system: The default unit system is updated on the fly anytime a unit is parsed. The corresponding unit in the default unit system is updated, so that answers are given in the same units the user supplies. + */ + var UNIT_SYSTEMS = { + si: { + // Base units + NONE: {unit: UNIT_NONE, prefix: PREFIXES.NONE['']}, + LENGTH: {unit: UNITS.m, prefix: PREFIXES.SHORT['']}, + MASS: {unit: UNITS.g, prefix: PREFIXES.SHORT['k']}, + TIME: {unit: UNITS.s, prefix: PREFIXES.SHORT['']}, + CURRENT: {unit: UNITS.A, prefix: PREFIXES.SHORT['']}, + TEMPERATURE: {unit: UNITS.K, prefix: PREFIXES.SHORT['']}, + LUMINOUS_INTENSITY: {unit: UNITS.cd, prefix: PREFIXES.SHORT['']}, + AMOUNT_OF_SUBSTANCE: {unit: UNITS.mol, prefix: PREFIXES.SHORT['']}, + ANGLE: {unit: UNITS.rad, prefix: PREFIXES.SHORT['']}, + BIT: {unit: UNITS.bit, prefix: PREFIXES.SHORT['']}, + + // Derived units + FORCE: {unit: UNITS.N, prefix: PREFIXES.SHORT['']}, + ENERGY: {unit: UNITS.J, prefix: PREFIXES.SHORT['']}, + POWER: {unit: UNITS.W, prefix: PREFIXES.SHORT['']}, + PRESSURE: {unit: UNITS.Pa, prefix: PREFIXES.SHORT['']}, + ELECTRIC_CHARGE: {unit: UNITS.C, prefix: PREFIXES.SHORT['']}, + ELECTRIC_CAPACITANCE: {unit: UNITS.F, prefix: PREFIXES.SHORT['']}, + ELECTRIC_POTENTIAL: {unit: UNITS.V, prefix: PREFIXES.SHORT['']}, + ELECTRIC_RESISTANCE: {unit: UNITS.ohm, prefix: PREFIXES.SHORT['']}, + ELECTRIC_INDUCTANCE: {unit: UNITS.H, prefix: PREFIXES.SHORT['']}, + ELECTRIC_CONDUCTANCE: {unit: UNITS.S, prefix: PREFIXES.SHORT['']}, + MAGNETIC_FLUX: {unit: UNITS.Wb, prefix: PREFIXES.SHORT['']}, + MAGNETIC_FLUX_DENSITY: {unit: UNITS.T, prefix: PREFIXES.SHORT['']}, + FREQUENCY: {unit: UNITS.Hz, prefix: PREFIXES.SHORT['']} + } + }; + + // Clone to create the other unit systems + UNIT_SYSTEMS.cgs = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); + UNIT_SYSTEMS.cgs.LENGTH = {unit: UNITS.m, prefix: PREFIXES.SHORT['c']}; + UNIT_SYSTEMS.cgs.MASS = {unit: UNITS.g, prefix: PREFIXES.SHORT['']}; + UNIT_SYSTEMS.cgs.FORCE = {unit: UNITS.dyn, prefix: PREFIXES.SHORT['']}; + UNIT_SYSTEMS.cgs.ENERGY = {unit: UNITS.erg, prefix: PREFIXES.NONE['']}; + // there are wholly 4 unique cgs systems for electricity and magnetism, + // so let's not worry about it unless somebody complains + + UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); + UNIT_SYSTEMS.us.LENGTH = {unit: UNITS.ft, prefix: PREFIXES.NONE['']}; + UNIT_SYSTEMS.us.MASS = {unit: UNITS.lbm, prefix: PREFIXES.NONE['']}; + UNIT_SYSTEMS.us.TEMPERATURE = {unit: UNITS.degF, prefix: PREFIXES.NONE['']}; + UNIT_SYSTEMS.us.FORCE = {unit: UNITS.lbf, prefix: PREFIXES.NONE['']}; + UNIT_SYSTEMS.us.ENERGY = {unit: UNITS.BTU, prefix: PREFIXES.BTU['']}; + UNIT_SYSTEMS.us.POWER = {unit: UNITS.hp, prefix: PREFIXES.NONE['']}; + UNIT_SYSTEMS.us.PRESSURE = {unit: UNITS.psi, prefix: PREFIXES.NONE['']}; + + // Add additional unit systems here. + + + + // Choose a unit system to seed the auto unit system. + UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si)); + + // Set the current unit system + var currentUnitSystem = UNIT_SYSTEMS.auto; + + /** + * Set a unit system for formatting derived units. + * @param {string} [name] The name of the unit system. + */ + Unit.setUnitSystem = function(name) { + if(UNIT_SYSTEMS.hasOwnProperty(name)) { + currentUnitSystem = UNIT_SYSTEMS[name]; + } + else { + throw new Error('Unit system ' + name + ' does not exist. Choices are: ' + Object.keys(UNIT_SYSTEMS).join(', ')); + } + }; + + /** + * Return the current unit system. + * @return {string} The current unit system. + */ + Unit.getUnitSystem = function() { + for(var key in UNIT_SYSTEMS) { + if(UNIT_SYSTEMS[key] === currentUnitSystem) { + return key; + } + } + }; + + /** + * Converters to convert from number to an other numeric type like BigNumber + * or Fraction + */ + Unit.typeConverters = { + BigNumber: function (x) { + return new type.BigNumber(x + ''); // stringify to prevent constructor error + }, + + Fraction: function (x) { + return new type.Fraction(x); + }, + + Complex: function (x) { + return x; + }, + + number: function (x) { + return x; + } + }; + + /** + * Retrieve the right convertor function corresponding with the type + * of provided exampleValue. + * + * @param {string} type A string 'number', 'BigNumber', or 'Fraction' + * In case of an unknown type, + * @return {Function} + */ + Unit._getNumberConverter = function (type) { + if (!Unit.typeConverters[type]) { + throw new TypeError('Unsupported type "' + type + '"'); + } + + return Unit.typeConverters[type]; + }; + + // Add dimensions to each built-in unit + for (var key in UNITS) { + var unit = UNITS[key]; + unit.dimensions = unit.base.dimensions; + } + + // Create aliases + for (var name in ALIASES) { + /* istanbul ignore next (we cannot really test next statement) */ + if (ALIASES.hasOwnProperty(name)) { + var unit = UNITS[ALIASES[name]]; + var alias = Object.create(unit); + alias.name = name; + UNITS[name] = alias; + } + } + + Unit.PREFIXES = PREFIXES; + Unit.BASE_UNITS = BASE_UNITS; + Unit.UNITS = UNITS; + Unit.UNIT_SYSTEMS = UNIT_SYSTEMS; + + return Unit; + } + + exports.name = 'Unit'; + exports.path = 'type'; + exports.factory = factory; + + +/***/ }, +/* 74 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var DimensionError = __webpack_require__(41); + + function factory (type, config, load, typed) { + var latex = __webpack_require__(29); + + var matrix = load(__webpack_require__(50)); + var addScalar = load(__webpack_require__(51)); + var unaryMinus = load(__webpack_require__(75)); + + var algorithm01 = load(__webpack_require__(52)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm05 = load(__webpack_require__(76)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); + + // TODO: split function subtract in two: subtract and subtractScalar + + /** + * Subtract two values, `x - y`. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.subtract(x, y) + * + * Examples: + * + * math.subtract(5.3, 2); // returns number 3.3 + * + * var a = math.complex(2, 3); + * var b = math.complex(4, 1); + * math.subtract(a, b); // returns Complex -2 + 2i + * + * math.subtract([5, 7, 4], 4); // returns Array [1, 3, 0] + * + * var c = math.unit('2.1 km'); + * var d = math.unit('500m'); + * math.subtract(c, d); // returns Unit 1.6 km + * + * See also: + * + * add + * + * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x + * Initial value + * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y + * Value to subtract from `x` + * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} + * Subtraction of `x` and `y` + */ + var subtract = typed('subtract', { + + '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.minus(y); + }, + + 'Fraction, Fraction': function (x, y) { + return x.sub(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 = subtract(res.value, y.value); + res.fixPrefix = false; + + return res; + }, + + 'Matrix, Matrix': function (x, y) { + // matrix sizes + var xsize = x.size(); + var ysize = y.size(); + + // check dimensions + if (xsize.length !== ysize.length) + throw new DimensionError(xsize.length, ysize.length); + + // result + var c; + + // process matrix storage + switch (x.storage()) { + case 'sparse': + switch (y.storage()) { + case 'sparse': + // sparse - sparse + c = algorithm05(x, y, subtract); + break; + default: + // sparse - dense + c = algorithm03(y, x, subtract, true); + break; + } + break; + default: + switch (y.storage()) { + case 'sparse': + // dense - sparse + c = algorithm01(x, y, subtract, false); + break; + default: + // dense - dense + c = algorithm13(x, y, subtract); + break; + } + break; + } + return c; + }, + + 'Array, Array': function (x, y) { + // use matrix implementation + return subtract(matrix(x), matrix(y)).valueOf(); + }, + + 'Array, Matrix': function (x, y) { + // use matrix implementation + return subtract(matrix(x), y); + }, + + 'Matrix, Array': function (x, y) { + // use matrix implementation + return subtract(x, matrix(y)); + }, + + 'Matrix, any': function (x, y) { + // result + var c; + // check storage format + switch (x.storage()) { + case 'sparse': + // algorithm 7 is faster than 9 since it calls f() for nonzero items only! + c = algorithm10(x, unaryMinus(y), addScalar); + break; + default: + c = algorithm14(x, y, subtract); + break; + } + return c; + }, + + 'any, Matrix': function (x, y) { + // result + var c; + // check storage format + switch (y.storage()) { + case 'sparse': + c = algorithm10(y, x, subtract, true); + break; + default: + c = algorithm14(y, x, subtract, true); + break; + } + return c; + }, + + 'Array, any': function (x, y) { + // use matrix implementation + return algorithm14(matrix(x), y, subtract, false).valueOf(); + }, + + 'any, Array': function (x, y) { + // use matrix implementation + return algorithm14(matrix(y), x, subtract, true).valueOf(); + } + }); + + subtract.toTex = '\\left(${args[0]}' + latex.operators['subtract'] + '${args[1]}\\right)'; + + return subtract; + } + + exports.name = 'subtract'; + exports.factory = factory; + + +/***/ }, +/* 75 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + + function factory (type, config, load, typed) { + var latex = __webpack_require__(29); + + /** + * Inverse the sign of a value, apply a unary minus operation. + * + * For matrices, the function is evaluated element wise. Boolean values and + * strings will be converted to a number. For complex numbers, both real and + * complex value are inverted. + * + * Syntax: + * + * math.unaryMinus(x) + * + * Examples: + * + * math.unaryMinus(3.5); // returns -3.5 + * math.unaryMinus(-4.2); // returns 4.2 + * + * See also: + * + * add, subtract, unaryPlus + * + * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Number to be inverted. + * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Returns the value with inverted sign. + */ + var unaryMinus = typed('unaryMinus', { + 'number': function (x) { + return -x; + }, + + 'Complex': function (x) { + return new type.Complex(-x.re, -x.im); + }, + + 'BigNumber': function (x) { + return x.neg(); + }, + + 'Fraction': function (x) { + return x.neg(); + }, + + 'Unit': function (x) { + var res = x.clone(); + res.value = unaryMinus(x.value); + return res; + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since unaryMinus(0) = 0 + return deepMap(x, unaryMinus, true); + } + + // TODO: add support for string + }); + + unaryMinus.toTex = latex.operators['unaryMinus'] + '\\left(${args[0]}\\right)'; + + return unaryMinus; + } + + exports.name = 'unaryMinus'; + exports.factory = factory; + + +/***/ }, +/* 76 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var DimensionError = __webpack_require__(41); + + function factory (type, config, load, typed) { + + var equalScalar = load(__webpack_require__(47)); + + var SparseMatrix = type.SparseMatrix; + + /** + * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). + * Callback function invoked MAX(NNZA, NNZB) times + * + * + * ┌ f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0 + * C(i,j) = ┤ + * └ 0 ; otherwise + * + * + * @param {Matrix} a The SparseMatrix instance (A) + * @param {Matrix} b The SparseMatrix instance (B) + * @param {Function} callback The f(Aij,Bij) operation to invoke + * + * @return {Matrix} SparseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 + */ + var algorithm05 = function (a, b, callback) { + // sparse matrix arrays + var avalues = a._values; + var aindex = a._index; + var aptr = a._ptr; + var asize = a._size; + var adt = a._datatype; + // sparse matrix arrays + var bvalues = b._values; + var bindex = b._index; + var bptr = b._ptr; + var bsize = b._size; + var bdt = b._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // equal signature to use + var eq = equalScalar; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // find signature that matches (dt, dt) + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cvalues = avalues && bvalues ? [] : undefined; + var cindex = []; + var cptr = []; + // matrix + var c = new SparseMatrix({ + values: cvalues, + index: cindex, + ptr: cptr, + size: [rows, columns], + datatype: dt + }); + + // workspaces + var xa = cvalues ? [] : undefined; + var xb = cvalues ? [] : undefined; + // marks indicating we have a value in x for a given column + var wa = []; + var wb = []; + + // vars + var i, j, k, k1; + + // loop columns + for (j = 0; j < columns; j++) { + // update cptr + cptr[j] = cindex.length; + // columns mark + var mark = j + 1; + // loop values A(:,j) + for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) { + // row + i = aindex[k]; + // push index + cindex.push(i); + // update workspace + wa[i] = mark; + // check we need to process values + if (xa) + xa[i] = avalues[k]; + } + // loop values B(:,j) + for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) { + // row + i = bindex[k]; + // check row existed in A + if (wa[i] !== mark) { + // push index + cindex.push(i); + } + // update workspace + wb[i] = mark; + // check we need to process values + if (xb) + xb[i] = bvalues[k]; + } + // check we need to process values (non pattern matrix) + if (cvalues) { + // initialize first index in j + k = cptr[j]; + // loop index in j + while (k < cindex.length) { + // row + i = cindex[k]; + // marks + var wai = wa[i]; + var wbi = wb[i]; + // check Aij or Bij are nonzero + if (wai === mark || wbi === mark) { + // matrix values @ i,j + var va = wai === mark ? xa[i] : zero; + var vb = wbi === mark ? xb[i] : zero; + // Cij + var vc = cf(va, vb); + // check for zero + if (!eq(vc, zero)) { + // push value + cvalues.push(vc); + // increment pointer + k++; + } + else { + // remove value @ i, do not increment pointer + cindex.splice(k, 1); + } + } + } + } + } + // update cptr + cptr[columns] = cindex.length; + + // return sparse matrix + return c; + }; + + return algorithm05; + } + + exports.name = 'algorithm05'; + exports.factory = factory; + + +/***/ }, +/* 77 */ +/***/ function(module, exports) { + + 'use strict'; + + function factory(type, config, load, typed) { + + /** + * Multiply two scalar values, `x * y`. + * This function is meant for internal use: it is used by the public function + * `multiply` + * + * This function does not support collections (Array or Matrix), and does + * not validate the number of of inputs. + * + * @param {number | BigNumber | Fraction | Complex | Unit} x First value to multiply + * @param {number | BigNumber | Fraction | Complex} y Second value to multiply + * @return {number | BigNumber | Fraction | Complex | Unit} Multiplication of `x` and `y` + * @private + */ + var multiplyScalar = typed('multiplyScalar', { + + '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, + x.re * y.im + x.im * y.re + ); + }, + + 'BigNumber, BigNumber': function (x, y) { + return x.times(y); + }, + + 'Fraction, Fraction': function (x, y) { + return x.mul(y); + }, + + 'number | Fraction | BigNumber | Complex, Unit': function (x, y) { + var res = y.clone(); + res.value = (res.value === null) ? res._normalize(x) : multiplyScalar(res.value, x); + return res; + }, + + 'Unit, number | Fraction | BigNumber | Complex': function (x, y) { + var res = x.clone(); + res.value = (res.value === null) ? res._normalize(y) : multiplyScalar(res.value, y); + return res; + }, + + 'Unit, Unit': function (x, y) { + return x.multiply(y); + } + + }); + + return multiplyScalar; + } + + exports.factory = factory; + + +/***/ }, +/* 78 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + function factory(type, config, load, typed) { + var multiplyScalar = load(__webpack_require__(77)); + + /** + * Divide two scalar values, `x / y`. + * This function is meant for internal use: it is used by the public functions + * `divide` and `inv`. + * + * This function does not support collections (Array or Matrix), and does + * not validate the number of of inputs. + * + * @param {number | BigNumber | Fraction | Complex | Unit} x Numerator + * @param {number | BigNumber | Fraction | Complex} y Denominator + * @return {number | BigNumber | Fraction | Complex | Unit} Quotient, `x / y` + * @private + */ + var divideScalar = typed('divide', { + 'number, number': function (x, y) { + return x / y; + }, + + 'Complex, Complex': _divideComplex, + + 'BigNumber, BigNumber': function (x, y) { + return x.div(y); + }, + + 'Fraction, Fraction': function (x, y) { + return x.div(y); + }, + + 'Unit, number | Fraction | BigNumber': function (x, y) { + var res = x.clone(); + // TODO: move the divide function to Unit.js, it uses internals of Unit + res.value = divideScalar(((res.value === null) ? res._normalize(1) : res.value), y); + return res; + }, + + 'number | Fraction | BigNumber, Unit': function (x, y) { + var res = y.pow(-1); + // TODO: move the divide function to Unit.js, it uses internals of Unit + res.value = multiplyScalar(((res.value === null) ? res._normalize(1) : res.value), x); + return res; + }, + + 'Unit, Unit': function (x, y) { + return x.divide(y); + } + + }); + + /** + * Divide two complex numbers. x / y or divide(x, y) + * @param {Complex} x + * @param {Complex} y + * @return {Complex} res + * @private + */ + function _divideComplex (x, y) { + var den = y.re * y.re + y.im * y.im; + if (den != 0) { + return new type.Complex( + (x.re * y.re + x.im * y.im) / den, + (x.im * y.re - x.re * y.im) / den + ); + } + else { + // both y.re and y.im are zero + return new type.Complex( + (x.re != 0) ? (x.re / 0) : 0, + (x.im != 0) ? (x.im / 0) : 0 + ); + } + } + + return divideScalar; + } + + exports.factory = factory; + + +/***/ }, +/* 79 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var isInteger = __webpack_require__(6).isInteger; + var size = __webpack_require__(39).size; + + function factory (type, config, load, typed) { + var latex = __webpack_require__(29); + var exp = load(__webpack_require__(80)); + var eye = load(__webpack_require__(81)); + var log = load(__webpack_require__(82)); + var multiply = load(__webpack_require__(83)); + var matrix = load(__webpack_require__(50)); + + /** + * Calculates the power of x to y, `x ^ y`. + * Matrix exponentiation is supported for square matrices `x`, and positive + * integer exponents `y`. + * + * Syntax: + * + * math.pow(x, y) + * + * Examples: + * + * math.pow(2, 3); // returns number 8 + * + * var a = math.complex(2, 3); + * math.pow(a, 2) // returns Complex -5 + 12i + * + * var b = [[1, 2], [4, 3]]; + * math.pow(b, 2); // returns Array [[9, 8], [16, 17]] + * + * See also: + * + * multiply, sqrt + * + * @param {number | BigNumber | Complex | Array | Matrix} x The base + * @param {number | BigNumber | Complex} y The exponent + * @return {number | BigNumber | Complex | Array | Matrix} The value of `x` to the power `y` + */ + var pow = typed('pow', { + 'number, number': _pow, + + 'Complex, Complex': _powComplex, + + 'BigNumber, BigNumber': function (x, y) { + if (y.isInteger() || x >= 0 || config.predictable) { + return x.pow(y); + } + else { + return _powComplex(new type.Complex(x.toNumber(), 0), new type.Complex(y.toNumber(), 0)); + } + }, + + 'Fraction, Fraction': function (x, y) { + if (y.d !== 1) { + if (config.predictable) { + throw new Error('Function pow does not support non-integer exponents for fractions.'); + } + else { + return _pow(x.valueOf(), y.valueOf()); + } + } + else { + return x.pow(y); + } + }, + + 'Array, number': _powArray, + + 'Array, BigNumber': function (x, y) { + return _powArray(x, y.toNumber()); + }, + + 'Matrix, number': _powMatrix, + + 'Matrix, BigNumber': function (x, y) { + return _powMatrix(x, y.toNumber()); + }, + + 'Unit, number': function (x, y) { + return x.pow(y); + } + + }); + + /** + * Calculates the power of x to y, x^y, for two numbers. + * @param {number} x + * @param {number} y + * @return {number | Complex} res + * @private + */ + function _pow(x, y) { + if (isInteger(y) || x >= 0 || config.predictable) { + return Math.pow(x, y); + } + else { + return _powComplex(new type.Complex(x, 0), new type.Complex(y, 0)); + } + } + + /** + * Calculates the power of x to y, x^y, for two complex numbers. + * @param {Complex} x + * @param {Complex} y + * @return {Complex} res + * @private + */ + function _powComplex (x, y) { + // complex computation + // x^y = exp(log(x)*y) = exp((abs(x)+i*arg(x))*y) + // TODO: we can optimize this as we know x and y are Complex + // expComplex = exp.signatures['Complex,Complex'] + // multiplyComplex = multiply.signatures['Complex,Complex'] + // logComplex = log.signatures['Complex,Complex'] + // return expComplex(multiplyComplex(logComplex(x), y)); + return exp(multiply(log(x), y)); + } + + /** + * Calculate the power of a 2d array + * @param {Array} x must be a 2 dimensional, square matrix + * @param {number} y a positive, integer value + * @returns {Array} + * @private + */ + function _powArray(x, y) { + if (!isInteger(y) || y < 0) { + throw new TypeError('For A^b, b must be a positive integer (value is ' + y + ')'); + } + // verify that A is a 2 dimensional square matrix + var s = size(x); + if (s.length != 2) { + throw new Error('For A^b, A must be 2 dimensional (A has ' + s.length + ' dimensions)'); + } + if (s[0] != s[1]) { + throw new Error('For A^b, A must be square (size is ' + s[0] + 'x' + s[1] + ')'); + } + + var res = eye(s[0]).valueOf(); + var px = x; + while (y >= 1) { + if ((y & 1) == 1) { + res = multiply(px, res); + } + y >>= 1; + px = multiply(px, px); + } + return res; + } + + /** + * Calculate the power of a 2d matrix + * @param {Matrix} x must be a 2 dimensional, square matrix + * @param {number} y a positive, integer value + * @returns {Matrix} + * @private + */ + function _powMatrix (x, y) { + return matrix(_powArray(x.valueOf(), y)); + } + + + + pow.toTex = '\\left(${args[0]}\\right)' + latex.operators['pow'] + '{${args[1]}}'; + + return pow; + } + + exports.name = 'pow'; + exports.factory = factory; + + +/***/ }, +/* 80 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + + function factory (type, config, load, typed) { + /** + * Calculate the exponent of a value. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.exp(x) + * + * Examples: + * + * math.exp(2); // returns number 7.3890560989306495 + * math.pow(math.e, 2); // returns number 7.3890560989306495 + * math.log(math.exp(2)); // returns number 2 + * + * math.exp([1, 2, 3]); + * // returns Array [ + * // 2.718281828459045, + * // 7.3890560989306495, + * // 20.085536923187668 + * // ] + * + * See also: + * + * log, pow + * + * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to exponentiate + * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x` + */ + var exp = typed('exp', { + 'number': Math.exp, + + 'Complex': function (x) { + var r = Math.exp(x.re); + return new type.Complex( + r * Math.cos(x.im), + r * Math.sin(x.im) + ); + }, + + 'BigNumber': function (x) { + return x.exp(); + }, + + 'Array | Matrix': function (x) { + // TODO: exp(sparse) should return a dense matrix since exp(0)==1 + return deepMap(x, exp); + } + }); + + exp.toTex = '\\exp\\left(${args[0]}\\right)'; + + return exp; + } + + exports.name = 'exp'; + exports.factory = factory; + + +/***/ }, +/* 81 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var array = __webpack_require__(39); + var isInteger = __webpack_require__(6).isInteger; + + function factory (type, config, load, typed) { + + var matrix = load(__webpack_require__(50)); + + /** + * Create a 2-dimensional identity matrix with size m x n or n x n. + * The matrix has ones on the diagonal and zeros elsewhere. + * + * Syntax: + * + * math.eye(n) + * math.eye(n, format) + * math.eye(m, n) + * math.eye(m, n, format) + * math.eye([m, n]) + * math.eye([m, n], format) + * + * Examples: + * + * math.eye(3); // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + * math.eye(3, 2); // returns [[1, 0], [0, 1], [0, 0]] + * + * var A = [[1, 2, 3], [4, 5, 6]]; + * math.eye(math.size(b)); // returns [[1, 0, 0], [0, 1, 0]] + * + * See also: + * + * diag, ones, zeros, size, range + * + * @param {...number | Matrix | Array} size The size for the matrix + * @param {string} [format] The Matrix storage format + * + * @return {Matrix | Array | number} A matrix with ones on the diagonal. + */ + var eye = typed('eye', { + '': function () { + return (config.matrix === 'matrix') ? matrix([]) : []; + }, + + 'string': function (format) { + return matrix(format); + }, + + 'number | BigNumber': function (rows) { + return _eye(rows, rows, config.matrix === 'matrix' ? 'default' : undefined); + }, + + 'number | BigNumber, string': function (rows, format) { + return _eye(rows, rows, format); + }, + + 'number | BigNumber, number | BigNumber': function (rows, cols) { + return _eye(rows, cols, config.matrix === 'matrix' ? 'default' : undefined); + }, + + 'number | BigNumber, number | BigNumber, string': function (rows, cols, format) { + return _eye(rows, cols, format); + }, + + 'Array': function (size) { + return _eyeVector(size); + }, + + 'Array, string': function (size, format) { + return _eyeVector(size, format); + }, + + 'Matrix': function (size) { + return _eyeVector(size.valueOf(), size.storage()); + }, + + 'Matrix, string': function (size, format) { + return _eyeVector(size.valueOf(), format); + } + }); + + eye.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; + + return eye; + + function _eyeVector (size, format) { + switch (size.length) { + case 0: return format ? matrix(format) : []; + case 1: return _eye(size[0], size[0], format); + case 2: return _eye(size[0], size[1], format); + default: throw new Error('Vector containing two values expected'); + } + } + + /** + * Create an identity matrix + * @param {number | BigNumber} rows + * @param {number | BigNumber} cols + * @param {string} [format] + * @returns {Matrix} + * @private + */ + function _eye (rows, cols, format) { + // BigNumber constructor with the right precision + var Big = (rows && rows.isBigNumber === true) + ? type.BigNumber + : (cols && cols.isBigNumber === true) + ? type.BigNumber + : null; + + if (rows && rows.isBigNumber === true) rows = rows.toNumber(); + if (cols && cols.isBigNumber === true) cols = cols.toNumber(); + + if (!isInteger(rows) || rows < 1) { + throw new Error('Parameters in function eye must be positive integers'); + } + if (!isInteger(cols) || cols < 1) { + throw new Error('Parameters in function eye must be positive integers'); + } + + var one = Big ? new type.BigNumber(1) : 1; + var defaultValue = Big ? new Big(0) : 0; + var size = [rows, cols]; + + // check we need to return a matrix + if (format) { + // get matrix storage constructor + var F = type.Matrix.storage(format); + // create diagonal matrix (use optimized implementation for storage format) + return F.diagonal(size, one, 0, defaultValue); + } + + // create and resize array + var res = array.resize([], size, defaultValue); + // fill in ones on the diagonal + var minimum = rows < cols ? rows : cols; + // fill diagonal + for (var d = 0; d < minimum; d++) { + res[d][d] = one; + } + return res; + } + } + + exports.name = 'eye'; + exports.factory = factory; + + +/***/ }, +/* 82 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + + function factory (type, config, load, typed) { + var divideScalar = load(__webpack_require__(78)); + + /** + * Calculate the logarithm of a value. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.log(x) + * math.log(x, base) + * + * Examples: + * + * math.log(3.5); // returns 1.252762968495368 + * math.exp(math.log(2.4)); // returns 2.4 + * + * math.pow(10, 4); // returns 10000 + * math.log(10000, 10); // returns 4 + * math.log(10000) / math.log(10); // returns 4 + * + * math.log(1024, 2); // returns 10 + * math.pow(2, 10); // returns 1024 + * + * See also: + * + * exp, log10 + * + * @param {number | BigNumber | Complex | Array | Matrix} x + * Value for which to calculate the logarithm. + * @param {number | BigNumber | Complex} [base=e] + * Optional base for the logarithm. If not provided, the natural + * logarithm of `x` is calculated. + * @return {number | BigNumber | Complex | Array | Matrix} + * Returns the logarithm of `x` + */ + var log = typed('log', { + 'number': _logNumber, + + 'Complex': _logComplex, + + 'BigNumber': function (x) { + if (!x.isNegative() || config.predictable) { + return x.ln(); + } + else { + // downgrade to number, return Complex valued result + return _logComplex(new type.Complex(x.toNumber(), 0)); + } + }, + + 'Array | Matrix': function (x) { + return deepMap(x, log); + }, + + 'any, any': function (x, base) { + // calculate logarithm for a specified base, log(x, base) + return divideScalar(log(x), log(base)); + } + }); + + /** + * Calculate the natural logarithm of a number + * @param {number} x + * @returns {number | Complex} + * @private + */ + function _logNumber(x) { + if (x >= 0 || config.predictable) { + return Math.log(x); + } + else { + // negative value -> complex value computation + return log(new type.Complex(x, 0)); + } + } + + /** + * Calculate the natural logarithm of a complex number + * @param {Complex} x + * @returns {Complex} + * @private + */ + function _logComplex(x) { + return new type.Complex ( + Math.log(Math.sqrt(x.re * x.re + x.im * x.im)), + Math.atan2(x.im, x.re) + ); + } + + log.toTex = { + 1: '\\ln\\left(${args[0]}\\right)', + 2: '\\log_{${args[1]}}\\left(${args[0]}\\right)' + }; + + return log; + } + + exports.name = 'log'; + exports.factory = factory; + + +/***/ }, +/* 83 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var extend = __webpack_require__(3).extend; + var array = __webpack_require__(39); + + function factory (type, config, load, typed) { + var latex = __webpack_require__(29); + + var matrix = load(__webpack_require__(50)); + var addScalar = load(__webpack_require__(51)); + var multiplyScalar = load(__webpack_require__(77)); + var equalScalar = load(__webpack_require__(47)); + + var algorithm11 = load(__webpack_require__(84)); + var algorithm14 = load(__webpack_require__(56)); + + var DenseMatrix = type.DenseMatrix; + var SparseMatrix = type.SparseMatrix; + + /** + * Multiply two values, `x * y`. The result is squeezed. + * For matrices, the matrix product is calculated. + * + * Syntax: + * + * math.multiply(x, y) + * + * Examples: + * + * math.multiply(4, 5.2); // returns number 20.8 + * + * var a = math.complex(2, 3); + * var b = math.complex(4, 1); + * math.multiply(a, b); // returns Complex 5 + 14i + * + * var c = [[1, 2], [4, 3]]; + * var d = [[1, 2, 3], [3, -4, 7]]; + * math.multiply(c, d); // returns Array [[7, -6, 17], [13, -4, 33]] + * + * var e = math.unit('2.1 km'); + * math.multiply(3, e); // returns Unit 6.3 km + * + * See also: + * + * divide + * + * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First value to multiply + * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second value to multiply + * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y` + */ + var multiply = typed('multiply', extend({ + // we extend the signatures of multiplyScalar with signatures dealing with matrices + + 'Array, Array': function (x, y) { + // check dimensions + _validateMatrixDimensions(array.size(x), array.size(y)); + + // use dense matrix implementation + var m = multiply(matrix(x), matrix(y)); + // return array or scalar + return (m && m.isMatrix === true) ? m.valueOf() : m; + }, + + 'Matrix, Matrix': function (x, y) { + // dimensions + var xsize = x.size(); + var ysize = y.size(); + + // check dimensions + _validateMatrixDimensions(xsize, ysize); + + // process dimensions + if (xsize.length === 1) { + // process y dimensions + if (ysize.length === 1) { + // Vector * Vector + return _multiplyVectorVector(x, y, xsize[0]); + } + // Vector * Matrix + return _multiplyVectorMatrix(x, y); + } + // process y dimensions + if (ysize.length === 1) { + // Matrix * Vector + return _multiplyMatrixVector(x, y); + } + // Matrix * Matrix + return _multiplyMatrixMatrix(x, y); + }, + + 'Matrix, Array': function (x, y) { + // use Matrix * Matrix implementation + return multiply(x, matrix(y)); + }, + + 'Array, Matrix': function (x, y) { + // use Matrix * Matrix implementation + return multiply(matrix(x, y.storage()), y); + }, + + 'Matrix, any': function (x, y) { + // result + var c; + + // process storage format + switch (x.storage()) { + case 'sparse': + c = algorithm11(x, y, multiplyScalar, false); + break; + case 'dense': + c = algorithm14(x, y, multiplyScalar, false); + break; + } + return c; + }, + + 'any, Matrix': function (x, y) { + // result + var c; + // check storage format + switch (y.storage()) { + case 'sparse': + c = algorithm11(y, x, multiplyScalar, true); + break; + case 'dense': + c = algorithm14(y, x, multiplyScalar, true); + break; + } + return c; + }, + + 'Array, any': function (x, y) { + // use matrix implementation + return algorithm14(matrix(x), y, multiplyScalar, false).valueOf(); + }, + + 'any, Array': function (x, y) { + // use matrix implementation + return algorithm14(matrix(y), x, multiplyScalar, true).valueOf(); + } + }, multiplyScalar.signatures)); + + var _validateMatrixDimensions = function (size1, size2) { + // check left operand dimensions + switch (size1.length) { + case 1: + // check size2 + switch (size2.length) { + case 1: + // Vector x Vector + if (size1[0] !== size2[0]) { + // throw error + throw new RangeError('Dimension mismatch in multiplication. Vectors must have the same length'); + } + break; + case 2: + // Vector x Matrix + if (size1[0] !== size2[0]) { + // throw error + throw new RangeError('Dimension mismatch in multiplication. Vector length (' + size1[0] + ') must match Matrix rows (' + size2[0] + ')'); + } + break; + default: + throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)'); + } + break; + case 2: + // check size2 + switch (size2.length) { + case 1: + // Matrix x Vector + if (size1[1] !== size2[0]) { + // throw error + throw new RangeError('Dimension mismatch in multiplication. Matrix columns (' + size1[1] + ') must match Vector length (' + size2[0] + ')'); + } + break; + case 2: + // Matrix x Matrix + if (size1[1] !== size2[0]) { + // throw error + throw new RangeError('Dimension mismatch in multiplication. Matrix A columns (' + size1[1] + ') must match Matrix B rows (' + size2[0] + ')'); + } + break; + default: + throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix B has ' + size2.length + ' dimensions)'); + } + break; + default: + throw new Error('Can only multiply a 1 or 2 dimensional matrix (Matrix A has ' + size1.length + ' dimensions)'); + } + }; + + /** + * C = A * B + * + * @param {Matrix} a Dense Vector (N) + * @param {Matrix} b Dense Vector (N) + * + * @return {number} Scalar value + */ + var _multiplyVectorVector = function (a, b, n) { + // check empty vector + if (n === 0) + throw new Error('Cannot multiply two empty vectors'); + + // a dense + var adata = a._data; + var adt = a._datatype; + // b dense + var bdata = b._data; + var bdt = b._datatype; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + } + + // result (do not initialize it with zero) + var c = mf(adata[0], bdata[0]); + // loop data + for (var i = 1; i < n; i++) { + // multiply and accumulate + c = af(c, mf(adata[i], bdata[i])); + } + return c; + }; + + /** + * C = A * B + * + * @param {Matrix} a Dense Vector (M) + * @param {Matrix} b Matrix (MxN) + * + * @return {Matrix} Dense Vector (N) + */ + var _multiplyVectorMatrix = function (a, b) { + // process storage + switch (b.storage()) { + case 'dense': + return _multiplyVectorDenseMatrix(a, b); + } + throw new Error('Not implemented'); + }; + + /** + * C = A * B + * + * @param {Matrix} a Dense Vector (M) + * @param {Matrix} b Dense Matrix (MxN) + * + * @return {Matrix} Dense Vector (N) + */ + var _multiplyVectorDenseMatrix = function (a, b) { + // 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]; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + } + + // result + var c = []; + + // loop matrix columns + for (var j = 0; j < bcolumns; j++) { + // sum (do not initialize it with zero) + var sum = mf(adata[0], bdata[0][j]); + // loop vector + for (var i = 1; i < alength; i++) { + // multiply & accumulate + sum = af(sum, mf(adata[i], bdata[i][j])); + } + c[j] = sum; + } + + // check we need to squeeze the result into a scalar + if (bcolumns === 1) + return c[0]; + + // return matrix + return new DenseMatrix({ + data: c, + size: [bcolumns], + datatype: dt + }); + }; + + /** + * C = A * B + * + * @param {Matrix} a Matrix (MxN) + * @param {Matrix} b Dense Vector (N) + * + * @return {Matrix} Dense Vector (M) + */ + var _multiplyMatrixVector = function (a, b) { + // process storage + switch (a.storage()) { + case 'dense': + return _multiplyDenseMatrixVector(a, b); + case 'sparse': + return _multiplySparseMatrixVector(a, b); + } + }; + + /** + * C = A * B + * + * @param {Matrix} a Matrix (MxN) + * @param {Matrix} b Matrix (NxC) + * + * @return {Matrix} Matrix (MxC) + */ + var _multiplyMatrixMatrix = function (a, b) { + // process storage + switch (a.storage()) { + case 'dense': + // process storage + switch (b.storage()) { + case 'dense': + return _multiplyDenseMatrixDenseMatrix(a, b); + case 'sparse': + return _multiplyDenseMatrixSparseMatrix(a, b); + } + break; + case 'sparse': + // process storage + switch (b.storage()) { + case 'dense': + return _multiplySparseMatrixDenseMatrix(a, b); + case 'sparse': + return _multiplySparseMatrixSparseMatrix(a, b); + } + break; + } + }; + + /** + * C = A * B + * + * @param {Matrix} a DenseMatrix (MxN) + * @param {Matrix} b Dense Vector (N) + * + * @return {Matrix} Dense Vector (M) + */ + var _multiplyDenseMatrixVector = function (a, b) { + // 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]; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + } + + // result + var c = []; + + // loop matrix a rows + for (var i = 0; i < arows; i++) { + // current row + var row = adata[i]; + // sum (do not initialize it with zero) + var sum = mf(row[0], bdata[0]); + // loop matrix a columns + for (var j = 1; j < acolumns; j++) { + // multiply & accumulate + sum = af(sum, mf(row[j], bdata[j])); + } + c[i] = sum; + } + // check we need to squeeze the result into a scalar + if (arows === 1) + return c[0]; + + // return matrix + return new DenseMatrix({ + data: c, + size: [arows], + datatype: dt + }); + }; + + /** + * C = A * B + * + * @param {Matrix} a DenseMatrix (MxN) + * @param {Matrix} b DenseMatrix (NxC) + * + * @return {Matrix} DenseMatrix (MxC) + */ + var _multiplyDenseMatrixDenseMatrix = function (a, b) { + // 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 arows = asize[0]; + var acolumns = asize[1]; + var bcolumns = bsize[1]; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + } + + // result + var c = []; + + // loop matrix a rows + for (var i = 0; i < arows; i++) { + // current row + var row = adata[i]; + // initialize row array + c[i] = []; + // loop matrix b columns + for (var j = 0; j < bcolumns; j++) { + // sum (avoid initializing sum to zero) + var sum = mf(row[0], bdata[0][j]); + // loop matrix a columns + for (var x = 1; x < acolumns; x++) { + // multiply & accumulate + sum = af(sum, mf(row[x], bdata[x][j])); + } + c[i][j] = sum; + } + } + // check we need to squeeze the result into a scalar + if (arows === 1 && bcolumns === 1) + return c[0][0]; + + // return matrix + return new DenseMatrix({ + data: c, + size: [arows, bcolumns], + datatype: dt + }); + }; + + /** + * C = A * B + * + * @param {Matrix} a DenseMatrix (MxN) + * @param {Matrix} b SparseMatrix (NxC) + * + * @return {Matrix} SparseMatrix (MxC) + */ + var _multiplyDenseMatrixSparseMatrix = function (a, b) { + // a dense + var adata = a._data; + var asize = a._size; + var adt = a._datatype; + // b sparse + var bvalues = b._values; + var bindex = b._index; + var bptr = b._ptr; + var bsize = b._size; + var bdt = b._datatype; + // 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]; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + // equalScalar signature to use + var eq = equalScalar; + // zero value + var zero = 0; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + } + + // result + var cvalues = []; + var cindex = []; + var cptr = []; + // c matrix + var c = new SparseMatrix({ + values : cvalues, + index: cindex, + ptr: cptr, + size: [arows, bcolumns], + datatype: dt + }); + + // loop b columns + for (var jb = 0; jb < bcolumns; jb++) { + // update ptr + cptr[jb] = cindex.length; + // indeces in column jb + var kb0 = bptr[jb]; + var kb1 = bptr[jb + 1]; + // do not process column jb if no data exists + if (kb1 > kb0) { + // last row mark processed + var last = 0; + // loop a rows + for (var i = 0; i < arows; i++) { + // column mark + var mark = i + 1; + // C[i, jb] + var cij; + // values in b column j + for (var kb = kb0; kb < kb1; kb++) { + // row + var ib = bindex[kb]; + // check value has been initialized + if (last !== mark) { + // first value in column jb + cij = mf(adata[i][ib], bvalues[kb]); + // update mark + last = mark; + } + else { + // accumulate value + cij = af(cij, mf(adata[i][ib], bvalues[kb])); + } + } + // check column has been processed and value != 0 + if (last === mark && !eq(cij, zero)) { + // push row & value + cindex.push(i); + cvalues.push(cij); + } + } + } + } + // update ptr + cptr[bcolumns] = cindex.length; + + // check we need to squeeze the result into a scalar + if (arows === 1 && bcolumns === 1) + return cvalues.length === 1 ? cvalues[0] : 0; + + // return sparse matrix + return c; + }; + + /** + * C = A * B + * + * @param {Matrix} a SparseMatrix (MxN) + * @param {Matrix} b Dense Vector (N) + * + * @return {Matrix} SparseMatrix (M, 1) + */ + var _multiplySparseMatrixVector = function (a, b) { + // a sparse + 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 = []; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + // equalScalar signature to use + var eq = equalScalar; + // zero value + var zero = 0; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + } + + // workspace + var x = []; + // vector with marks indicating a value x[i] exists in a given column + var w = []; + + // update ptr + cptr[0] = 0; + // rows in b + for (var ib = 0; ib < brows; ib++) { + // b[ib] + var vbi = bdata[ib]; + // check b[ib] != 0, avoid loops + if (!eq(vbi, zero)) { + // A values & index in ib column + for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { + // a row + var ia = aindex[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])); + } + } + } + } + // 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[1] = cindex.length; + + // check we need to squeeze the result into a scalar + if (arows === 1) + return cvalues.length === 1 ? cvalues[0] : 0; + + // return sparse matrix + return new SparseMatrix({ + values : cvalues, + index: cindex, + ptr: cptr, + size: [arows, 1], + datatype: dt + }); + }; + + /** + * C = A * B + * + * @param {Matrix} a SparseMatrix (MxN) + * @param {Matrix} b DenseMatrix (NxC) + * + * @return {Matrix} SparseMatrix (MxC) + */ + var _multiplySparseMatrixDenseMatrix = function (a, b) { + // a sparse + 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]; + var bcolumns = b._size[1]; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + // equalScalar signature to use + var eq = equalScalar; + // zero value + var zero = 0; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + } + + // result + var cvalues = []; + var cindex = []; + var cptr = []; + // c matrix + var c = new SparseMatrix({ + values : cvalues, + index: cindex, + ptr: cptr, + size: [arows, bcolumns], + datatype: dt + }); + + // workspace + var x = []; + // vector with marks indicating a value x[i] exists in a given column + var w = []; + + // loop b columns + for (var jb = 0; jb < bcolumns; jb++) { + // update ptr + cptr[jb] = cindex.length; + // mark in workspace for current column + var mark = jb + 1; + // rows in jb + for (var ib = 0; ib < brows; ib++) { + // b[ib, jb] + var vbij = bdata[ib][jb]; + // check b[ib, jb] != 0, avoid loops + if (!eq(vbij, zero)) { + // A values & index in ib column + for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { + // a row + var ia = aindex[ka]; + // check value exists in current j + if (w[ia] !== mark) { + // ia is new entry in j + w[ia] = mark; + // add i to pattern of C + cindex.push(ia); + // x(ia) = A + x[ia] = mf(vbij, avalues[ka]); + } + else { + // i exists in C already + x[ia] = af(x[ia], mf(vbij, avalues[ka])); + } + } + } + } + // copy values from x to column jb of c + for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) { + // row + var ic = cindex[p]; + // copy value + cvalues[p] = x[ic]; + } + } + // update ptr + cptr[bcolumns] = cindex.length; + + // check we need to squeeze the result into a scalar + if (arows === 1 && bcolumns === 1) + return cvalues.length === 1 ? cvalues[0] : 0; + + // return sparse matrix + return c; + }; + + /** + * C = A * B + * + * @param {Matrix} a SparseMatrix (MxN) + * @param {Matrix} b SparseMatrix (NxC) + * + * @return {Matrix} SparseMatrix (MxC) + */ + var _multiplySparseMatrixSparseMatrix = function (a, b) { + // a sparse + var avalues = a._values; + var aindex = a._index; + var aptr = a._ptr; + var adt = a._datatype; + // b sparse + var bvalues = b._values; + var bindex = b._index; + var bptr = b._ptr; + var bdt = b._datatype; + + // rows & columns + var arows = a._size[0]; + var bcolumns = b._size[1]; + // flag indicating both matrices (a & b) contain data + var values = avalues && bvalues; + + // datatype + var dt; + // addScalar signature to use + var af = addScalar; + // multiplyScalar signature to use + var mf = multiplyScalar; + + // process data types + if (adt && bdt && adt === bdt && typeof adt === 'string') { + // datatype + dt = adt; + // find signatures that matches (dt, dt) + af = typed.find(addScalar, [dt, dt]); + mf = typed.find(multiplyScalar, [dt, dt]); + } + + // result + var cvalues = values ? [] : undefined; + var cindex = []; + var cptr = []; + // c matrix + var c = new SparseMatrix({ + values : cvalues, + index: cindex, + ptr: cptr, + size: [arows, bcolumns], + datatype: dt + }); + + // workspace + var x = values ? [] : undefined; + // vector with marks indicating a value x[i] exists in a given column + var w = []; + // variables + var ka, ka0, ka1, kb, kb0, kb1, ia, ib; + // loop b columns + for (var jb = 0; jb < bcolumns; jb++) { + // update ptr + cptr[jb] = cindex.length; + // mark in workspace for current column + var mark = jb + 1; + // B values & index in j + for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) { + // b row + ib = bindex[kb]; + // check we need to process values + if (values) { + // loop values in a[:,ib] + for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { + // row + ia = aindex[ka]; + // check value exists in current j + if (w[ia] !== mark) { + // ia is new entry in j + w[ia] = mark; + // add i to pattern of C + cindex.push(ia); + // x(ia) = A + x[ia] = mf(bvalues[kb], avalues[ka]); + } + else { + // i exists in C already + x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka])); + } + } + } + else { + // loop values in a[:,ib] + for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) { + // row + ia = aindex[ka]; + // check value exists in current j + if (w[ia] !== mark) { + // ia is new entry in j + w[ia] = mark; + // add i to pattern of C + cindex.push(ia); + } + } + } + } + // check we need to process matrix values (pattern matrix) + if (values) { + // copy values from x to column jb of c + for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) { + // row + var ic = cindex[p]; + // copy value + cvalues[p] = x[ic]; + } + } + } + // update ptr + cptr[bcolumns] = cindex.length; + + // check we need to squeeze the result into a scalar + if (arows === 1 && bcolumns === 1 && values) + return cvalues.length === 1 ? cvalues[0] : 0; + + // return sparse matrix + return c; + }; + + multiply.toTex = '\\left(${args[0]}' + latex.operators['multiply'] + '${args[1]}\\right)'; + + return multiply; + } + + exports.name = 'multiply'; + exports.factory = factory; + + +/***/ }, +/* 84 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + function factory (type, config, load, typed) { + + var equalScalar = load(__webpack_require__(47)); + + var SparseMatrix = type.SparseMatrix; + + /** + * Iterates over SparseMatrix S nonzero items and invokes the callback function f(Sij, b). + * Callback function invoked NZ times (number of nonzero items in S). + * + * + * ┌ f(Sij, b) ; S(i,j) !== 0 + * C(i,j) = ┤ + * └ 0 ; otherwise + * + * + * @param {Matrix} s The SparseMatrix instance (S) + * @param {Scalar} b The Scalar value + * @param {Function} callback The f(Aij,b) operation to invoke + * @param {boolean} inverse A true value indicates callback should be invoked f(b,Sij) + * + * @return {Matrix} SparseMatrix (C) + * + * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813 + */ + var algorithm11 = function (s, b, callback, inverse) { + // sparse matrix arrays + var avalues = s._values; + var aindex = s._index; + var aptr = s._ptr; + var asize = s._size; + var adt = s._datatype; + + // sparse matrix cannot be a Pattern matrix + if (!avalues) + throw new Error('Cannot perform operation on Pattern Sparse Matrix and Scalar value'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // equal signature to use + var eq = equalScalar; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string') { + // datatype + dt = adt; + // find signature that matches (dt, dt) + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // convert b to the same datatype + b = typed.convert(b, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cvalues = []; + var cindex = []; + var cptr = []; + // matrix + var c = new SparseMatrix({ + values: cvalues, + index: cindex, + ptr: cptr, + size: [rows, columns], + datatype: dt + }); + + // loop columns + for (var j = 0; j < columns; j++) { + // initialize ptr + cptr[j] = cindex.length; + // values in j + for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { + // row + var i = aindex[k]; + // invoke callback + var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b); + // check value is zero + if (!eq(v, zero)) { + // push index & value + cindex.push(i); + cvalues.push(v); + } + } + } + // update ptr + cptr[columns] = cindex.length; + + // return sparse matrix + return c; + }; + + return algorithm11; + } + + exports.name = 'algorithm11'; + exports.factory = factory; + + +/***/ }, +/* 85 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + + function factory (type, config, load, typed) { + /** + * Calculate the absolute value of a number. For matrices, the function is + * evaluated element wise. + * + * Syntax: + * + * math.abs(x) + * + * Examples: + * + * math.abs(3.5); // returns number 3.5 + * math.abs(-4.2); // returns number 4.2 + * + * math.abs([3, -5, -1, 0, 2]); // returns Array [3, 5, 1, 0, 2] + * + * See also: + * + * sign + * + * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x + * A number or matrix for which to get the absolute value + * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} + * Absolute value of `x` + */ + var abs = typed('abs', { + 'number': Math.abs, + + 'Complex': function (x) { + var re = Math.abs(x.re); + var im = Math.abs(x.im); + if (re < 1000 && im < 1000) { + return Math.sqrt(re * re + im * im); + } + else { + // prevent overflow for large numbers + if (re >= im) { + var i = im / re; + return re * Math.sqrt(1 + i * i); + } + else { + var j = re / im; + return im * Math.sqrt(1 + j * j); + } + } + }, + + 'BigNumber': function (x) { + return x.abs(); + }, + + 'Fraction': function (x) { + return x.abs(); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since abs(0) = 0 + return deepMap(x, abs, true); + }, + + 'Unit': function(x) { + return x.abs(); + } + }); + + abs.toTex = '\\left|${args[0]}\\right|'; + + return abs; + } + + exports.name = 'abs'; + exports.factory = factory; + + +/***/ }, +/* 86 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + function factory (type, config, load, typed) { + + var matrix = load(__webpack_require__(50)); + var equalScalar = load(__webpack_require__(47)); + + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); + + var latex = __webpack_require__(29); + + /** + * Test whether two values are equal. + * + * The function tests whether 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. + * In case of complex numbers, x.re must equal y.re, and x.im must equal y.im. + * + * Values `null` and `undefined` are compared strictly, thus `null` is only + * equal to `null` and nothing else, and `undefined` is only equal to + * `undefined` and nothing else. + * + * Syntax: + * + * math.equal(x, y) + * + * Examples: + * + * math.equal(2 + 2, 3); // returns false + * math.equal(2 + 2, 4); // returns true + * + * var a = math.unit('50 cm'); + * var b = math.unit('5 m'); + * math.equal(a, b); // returns true + * + * var c = [2, 5, 1]; + * var d = [2, 7, 1]; + * + * math.equal(c, d); // returns [true, false, true] + * math.deepEqual(c, d); // returns false + * + * math.equal(0, null); // returns false + * + * See also: + * + * unequal, smaller, smallerEq, larger, largerEq, compare, deepEqual + * + * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} x First value to compare + * @param {number | BigNumber | boolean | Complex | Unit | string | Array | Matrix} y Second value to compare + * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false + */ + var equal = typed('equal', { + + 'any, any': function (x, y) { + // strict equality for null and undefined? + if (x === null) { return y === null; } + if (y === null) { return x === null; } + if (x === undefined) { return y === undefined; } + if (y === undefined) { return x === undefined; } + + return equalScalar(x, y); + }, + + 'Matrix, Matrix': function (x, y) { + // result + var c; + + // process matrix storage + switch (x.storage()) { + case 'sparse': + switch (y.storage()) { + case 'sparse': + // sparse + sparse + c = algorithm07(x, y, equalScalar); + break; + default: + // sparse + dense + c = algorithm03(y, x, equalScalar, true); + break; + } + break; + default: + switch (y.storage()) { + case 'sparse': + // dense + sparse + c = algorithm03(x, y, equalScalar, false); + break; + default: + // dense + dense + c = algorithm13(x, y, equalScalar); + break; + } + break; + } + return c; + }, + + 'Array, Array': function (x, y) { + // use matrix implementation + return equal(matrix(x), matrix(y)).valueOf(); + }, + + 'Array, Matrix': function (x, y) { + // use matrix implementation + return equal(matrix(x), y); + }, + + 'Matrix, Array': function (x, y) { + // use matrix implementation + return equal(x, matrix(y)); + }, + + 'Matrix, any': function (x, y) { + // result + var c; + // check storage format + switch (x.storage()) { + case 'sparse': + c = algorithm12(x, y, equalScalar, false); + break; + default: + c = algorithm14(x, y, equalScalar, false); + break; + } + return c; + }, + + 'any, Matrix': function (x, y) { + // result + var c; + // check storage format + switch (y.storage()) { + case 'sparse': + c = algorithm12(y, x, equalScalar, true); + break; + default: + c = algorithm14(y, x, equalScalar, true); + break; + } + return c; + }, + + 'Array, any': function (x, y) { + // use matrix implementation + return algorithm14(matrix(x), y, equalScalar, false).valueOf(); + }, + + 'any, Array': function (x, y) { + // use matrix implementation + return algorithm14(matrix(y), x, equalScalar, true).valueOf(); + } + }); + + equal.toTex = '\\left(${args[0]}' + latex.operators['equal'] + '${args[1]}\\right)'; + + return equal; + } + + exports.name = 'equal'; + exports.factory = factory; + + +/***/ }, +/* 87 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var deepMap = __webpack_require__(19); + var number = __webpack_require__(6); + + function factory (type, config, load, typed) { + /** + * Test whether a value is an numeric value. + * + * The function is evaluated element-wise in case of Array or Matrix input. + * + * Syntax: + * + * math.isNumeric(x) + * + * Examples: + * + * math.isNumeric(2); // returns true + * math.isNumeric(0); // returns true + * math.isNumeric(math.bignumber(500)); // returns true + * math.isNumeric(math.fraction(4)); // returns true + * math.isNumeric(math.complex('2 - 4i'); // returns false + * math.isNumeric('3'); // returns false + * math.isNumeric([2.3, 'foo', false]); // returns [true, false, true] + * + * See also: + * + * isZero, isPositive, isNegative, isInteger + * + * @param {*} x Value to be tested + * @return {boolean} Returns true when `x` is a `number`, `BigNumber`, + * `Fraction`, or `boolean`. Returns false for other types. + * Throws an error in case of unknown types. + */ + var isNumeric = typed('isNumeric', { + 'number | BigNumber | Fraction | boolean': function () { + return true; + }, + + 'Complex | Unit | string': function () { + return false; + }, + + 'Array | Matrix': function (x) { + return deepMap(x, isNumeric); + } + }); + + return isNumeric; + } + + exports.name = 'isNumeric'; + exports.factory = factory; + + +/***/ }, +/* 88 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var string = __webpack_require__(23); + + function factory (type, config, load, typed) { + /** + * Format a value of any type into a string. + * + * Syntax: + * + * math.format(value) + * math.format(value, options) + * math.format(value, precision) + * math.format(value, fn) + * + * Where: + * + * - `value: *` + * The value to be formatted + * - `options: Object` + * An object with formatting options. Available options: + * - `notation: string` + * Number notation. Choose from: + * - 'fixed' + * Always use regular number notation. + * For example '123.40' and '14000000' + * - 'exponential' + * Always use exponential notation. + * For example '1.234e+2' and '1.4e+7' + * - 'auto' (default) + * Regular number notation for numbers having an absolute value between + * `lower` and `upper` bounds, and uses exponential notation elsewhere. + * Lower bound is included, upper bound is excluded. + * For example '123.4' and '1.4e7'. + * - `precision: number` + * A number between 0 and 16 to round the digits of the number. In case + * of notations 'exponential' and 'auto', `precision` defines the total + * number of significant digits returned and is undefined by default. + * In case of notation 'fixed', `precision` defines the number of + * significant digits after the decimal point, and is 0 by default. + * - `exponential: Object` + * An object containing two parameters, {number} lower and {number} upper, + * used by notation 'auto' to determine when to return exponential + * notation. Default values are `lower=1e-3` and `upper=1e5`. Only + * applicable for notation `auto`. + * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'. + * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is + * configured, and will output `0.(3)` when 'decimal' is configured. + * - `fn: Function` + * A custom formatting function. Can be used to override the built-in notations. + * Function `fn` is called with `value` as parameter and must return a string. + * Is useful for example to format all values inside a matrix in a particular way. + * + * Examples: + * + * math.format(6.4); // returns '6.4' + * math.format(1240000); // returns '1.24e6' + * math.format(1/3); // returns '0.3333333333333333' + * math.format(1/3, 3); // returns '0.333' + * math.format(21385, 2); // returns '21000' + * math.format(12.071, {notation: 'fixed'}); // returns '12' + * math.format(2.3, {notation: 'fixed', precision: 2}); // returns '2.30' + * math.format(52.8, {notation: 'exponential'}); // returns '5.28e+1' + * + * See also: + * + * print + * + * @param {*} value Value to be stringified + * @param {Object | Function | number} [options] Formatting options + * @return {string} The formatted value + */ + var format = typed('format', { + 'any': string.format, + 'any, Object | function | number': string.format + }); + + format.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; + + return format; + } + + exports.name = 'format'; + exports.factory = factory; + + /***/ }, /* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; + var types = __webpack_require__(40); + + function factory (type, config, load, typed) { + /** + * Determine the type of a variable. + * + * Function `typeof` recognizes the following types of objects: + * + * Object | Returns | Example + * ---------------------- | ------------- | ------------------------------------------ + * null | `'null'` | `math.typeof(null)` + * number | `'number'` | `math.typeof(3.5)` + * boolean | `'boolean'` | `math.typeof (true)` + * string | `'string'` | `math.typeof ('hello world')` + * Array | `'Array'` | `math.typeof ([1, 2, 3])` + * Date | `'Date'` | `math.typeof (new Date())` + * Function | `'Function'` | `math.typeof (function () {})` + * Object | `'Object'` | `math.typeof ({a: 2, b: 3})` + * RegExp | `'RegExp'` | `math.typeof (/a regexp/)` + * undefined | `'undefined'` | `math.typeof(undefined)` + * math.type.BigNumber | `'BigNumber'` | `math.typeof (math.bignumber('2.3e500'))` + * math.type.Chain | `'Chain'` | `math.typeof (math.chain(2))` + * math.type.Complex | `'Complex'` | `math.typeof (math.complex(2, 3))` + * math.type.Fraction | `'Fraction'` | `math.typeof (math.fraction(1, 3))` + * math.type.Help | `'Help'` | `math.typeof (math.help('sqrt'))` + * math.type.Index | `'Index'` | `math.typeof (math.index(1, 3))` + * math.type.Matrix | `'Matrix'` | `math.typeof (math.matrix([[1,2], [3, 4]]))` + * math.type.Range | `'Range'` | `math.typeof (math.range(0, 10))` + * math.type.Unit | `'Unit'` | `math.typeof (math.unit('45 deg'))` + * + * Syntax: + * + * math.typeof(x) + * + * Examples: + * + * math.typeof(3.5); // returns 'number' + * math.typeof(math.complex('2 - 4i')); // returns 'Complex' + * math.typeof(math.unit('45 deg')); // returns 'Unit' + * math.typeof('hello world'); // returns 'string' + * + * @param {*} x The variable for which to test the type. + * @return {string} Returns the name of the type. Primitive types are lower case, + * non-primitive types are upper-camel-case. + * For example 'number', 'string', 'Array', 'Date'. + */ + var _typeof = typed('_typeof', { + 'any': function (x) { + // JavaScript types + var t = types.type(x); + + // math.js types + if (t === 'Object') { + if (x.isBigNumber === true) return 'BigNumber'; + if (x.isComplex === true) return 'Complex'; + if (x.isFraction === true) return 'Fraction'; + if (x.isMatrix === true) return 'Matrix'; + if (x.isUnit === true) return 'Unit'; + if (x.isIndex === true) return 'Index'; + if (x.isRange === true) return 'Range'; + if (x.isChain === true) return 'Chain'; + if (x.isHelp === true) return 'Help'; + } + + return t; + } + }); + + _typeof.toTex = '\\mathrm{${name}}\\left(${args}\\right)'; + + return _typeof; + } + + exports.name = 'typeof'; + exports.factory = factory; + + +/***/ }, +/* 90 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { @@ -21117,7 +21382,7 @@ return /******/ (function(modules) { // webpackBootstrap return type.Unit.parse(x); // a unit with value, like '5cm' }, - 'number | BigNumber | Fraction, string': function (value, unit) { + 'number | BigNumber | Fraction | Complex, string': function (value, unit) { return new type.Unit(value, unit); }, @@ -21139,7 +21404,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 90 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { var lazy = __webpack_require__(3).lazy; @@ -21229,13 +21494,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 91 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var object = __webpack_require__(3); - var bigConstants = __webpack_require__(92); + var bigConstants = __webpack_require__(93); function factory (type, config, load, typed, math) { // listen for changed in the configuration, automatically reload @@ -21249,7 +21514,7 @@ return /******/ (function(modules) { // webpackBootstrap math['true'] = true; math['false'] = false; math['null'] = null; - math['uninitialized'] = __webpack_require__(42).UNINITIALIZED; + math['uninitialized'] = __webpack_require__(39).UNINITIALIZED; if (config.number === 'bignumber') { math['Infinity'] = new type.BigNumber(Infinity); @@ -21294,7 +21559,7 @@ return /******/ (function(modules) { // webpackBootstrap math.i = new type.Complex(0, 1); // meta information - math.version = __webpack_require__(94); + math.version = __webpack_require__(95); } exports.factory = factory; @@ -21302,11 +21567,11 @@ return /******/ (function(modules) { // webpackBootstrap exports.math = true; // request access to the math namespace /***/ }, -/* 92 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { - var memoize = __webpack_require__(46).memoize; - var atan = __webpack_require__(93); + var memoize = __webpack_require__(44).memoize; + var atan = __webpack_require__(94); /** * Calculate BigNumber e @@ -21372,7 +21637,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 93 */ +/* 94 */ /***/ function(module, exports) { /** @@ -21404,32 +21669,32 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ +/* 95 */ /***/ function(module, exports) { - module.exports = '2.5.0'; + module.exports = '2.6.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. /***/ }, -/* 95 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(96), - __webpack_require__(266), - __webpack_require__(290), + __webpack_require__(97), + __webpack_require__(267), __webpack_require__(291), + __webpack_require__(292), - __webpack_require__(318), - __webpack_require__(268), - __webpack_require__(289) + __webpack_require__(319), + __webpack_require__(269), + __webpack_require__(290) ]; /***/ }, -/* 96 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { function factory (type, config, load, typed) { @@ -21437,37 +21702,37 @@ return /******/ (function(modules) { // webpackBootstrap // construction functions - docs.bignumber = __webpack_require__(97); - docs['boolean'] = __webpack_require__(98); - docs.complex = __webpack_require__(99); - docs.fraction = __webpack_require__(100); - docs.index = __webpack_require__(101); - docs.matrix = __webpack_require__(102); - docs.number = __webpack_require__(103); - docs.sparse = __webpack_require__(104); - docs.string = __webpack_require__(105); - docs.unit = __webpack_require__(106); + docs.bignumber = __webpack_require__(98); + docs['boolean'] = __webpack_require__(99); + docs.complex = __webpack_require__(100); + docs.fraction = __webpack_require__(101); + docs.index = __webpack_require__(102); + docs.matrix = __webpack_require__(103); + docs.number = __webpack_require__(104); + docs.sparse = __webpack_require__(105); + docs.string = __webpack_require__(106); + docs.unit = __webpack_require__(107); // constants - docs.e = __webpack_require__(107); - docs.E = __webpack_require__(107); - docs['false'] = __webpack_require__(108); - docs.i = __webpack_require__(109); - docs['Infinity'] = __webpack_require__(110); - docs.LN2 = __webpack_require__(111); - docs.LN10 = __webpack_require__(112); - docs.LOG2E = __webpack_require__(113); - docs.LOG10E = __webpack_require__(114); - docs.NaN = __webpack_require__(115); - docs['null'] = __webpack_require__(116); - docs.pi = __webpack_require__(117); - docs.PI = __webpack_require__(117); - docs.phi = __webpack_require__(118); - docs.SQRT1_2 = __webpack_require__(119); - docs.SQRT2 = __webpack_require__(120); - docs.tau = __webpack_require__(121); - docs['true'] = __webpack_require__(122); - docs.version = __webpack_require__(123); + docs.e = __webpack_require__(108); + docs.E = __webpack_require__(108); + docs['false'] = __webpack_require__(109); + docs.i = __webpack_require__(110); + docs['Infinity'] = __webpack_require__(111); + docs.LN2 = __webpack_require__(112); + docs.LN10 = __webpack_require__(113); + docs.LOG2E = __webpack_require__(114); + docs.LOG10E = __webpack_require__(115); + docs.NaN = __webpack_require__(116); + docs['null'] = __webpack_require__(117); + docs.pi = __webpack_require__(118); + docs.PI = __webpack_require__(118); + docs.phi = __webpack_require__(119); + docs.SQRT1_2 = __webpack_require__(120); + docs.SQRT2 = __webpack_require__(121); + docs.tau = __webpack_require__(122); + docs['true'] = __webpack_require__(123); + docs.version = __webpack_require__(124); // physical constants // TODO: more detailed docs for physical constants @@ -21530,178 +21795,178 @@ return /******/ (function(modules) { // webpackBootstrap docs.planckTemperature = {description: 'Planck temperature', examples: ['planckTemperature']}; // functions - algebra - docs.lsolve = __webpack_require__(124); - docs.lup = __webpack_require__(125); - docs.lusolve = __webpack_require__(126); - docs.slu = __webpack_require__(127); - docs.usolve = __webpack_require__(128); + docs.lsolve = __webpack_require__(125); + docs.lup = __webpack_require__(126); + docs.lusolve = __webpack_require__(127); + docs.slu = __webpack_require__(128); + docs.usolve = __webpack_require__(129); // functions - arithmetic - docs.abs = __webpack_require__(129); - docs.add = __webpack_require__(130); - docs.cbrt = __webpack_require__(131); - docs.ceil = __webpack_require__(132); - docs.cube = __webpack_require__(133); - docs.divide = __webpack_require__(134); - docs.dotDivide = __webpack_require__(135); - docs.dotMultiply = __webpack_require__(136); - docs.dotPow = __webpack_require__(137); - docs.exp = __webpack_require__(138); - docs.fix = __webpack_require__(139); - docs.floor = __webpack_require__(140); - docs.gcd = __webpack_require__(141); - docs.hypot = __webpack_require__(142); - docs.lcm = __webpack_require__(143); - docs.log = __webpack_require__(144); - docs.log10 = __webpack_require__(145); - docs.mod = __webpack_require__(146); - docs.multiply = __webpack_require__(147); - docs.norm = __webpack_require__(148); - docs.nthRoot = __webpack_require__(149); - docs.pow = __webpack_require__(150); - docs.round = __webpack_require__(151); - docs.sign = __webpack_require__(152); - docs.sqrt = __webpack_require__(153); - docs.square = __webpack_require__(154); - docs.subtract = __webpack_require__(155); - docs.unaryMinus = __webpack_require__(156); - docs.unaryPlus = __webpack_require__(157); - docs.xgcd = __webpack_require__(158); + docs.abs = __webpack_require__(130); + docs.add = __webpack_require__(131); + docs.cbrt = __webpack_require__(132); + docs.ceil = __webpack_require__(133); + docs.cube = __webpack_require__(134); + docs.divide = __webpack_require__(135); + docs.dotDivide = __webpack_require__(136); + docs.dotMultiply = __webpack_require__(137); + docs.dotPow = __webpack_require__(138); + docs.exp = __webpack_require__(139); + docs.fix = __webpack_require__(140); + docs.floor = __webpack_require__(141); + docs.gcd = __webpack_require__(142); + docs.hypot = __webpack_require__(143); + docs.lcm = __webpack_require__(144); + docs.log = __webpack_require__(145); + docs.log10 = __webpack_require__(146); + docs.mod = __webpack_require__(147); + docs.multiply = __webpack_require__(148); + docs.norm = __webpack_require__(149); + docs.nthRoot = __webpack_require__(150); + docs.pow = __webpack_require__(151); + docs.round = __webpack_require__(152); + docs.sign = __webpack_require__(153); + docs.sqrt = __webpack_require__(154); + docs.square = __webpack_require__(155); + docs.subtract = __webpack_require__(156); + docs.unaryMinus = __webpack_require__(157); + docs.unaryPlus = __webpack_require__(158); + docs.xgcd = __webpack_require__(159); // functions - bitwise - docs.bitAnd = __webpack_require__(159); - docs.bitNot = __webpack_require__(160); - docs.bitOr = __webpack_require__(161); - docs.bitXor = __webpack_require__(162); - docs.leftShift = __webpack_require__(163); - docs.rightArithShift = __webpack_require__(164); - docs.rightLogShift = __webpack_require__(165); + docs.bitAnd = __webpack_require__(160); + docs.bitNot = __webpack_require__(161); + docs.bitOr = __webpack_require__(162); + docs.bitXor = __webpack_require__(163); + docs.leftShift = __webpack_require__(164); + docs.rightArithShift = __webpack_require__(165); + docs.rightLogShift = __webpack_require__(166); // functions - combinatorics - docs.bellNumbers = __webpack_require__(166); - docs.catalan = __webpack_require__(167); - docs.composition = __webpack_require__(168); - docs.stirlingS2 = __webpack_require__(169); + docs.bellNumbers = __webpack_require__(167); + docs.catalan = __webpack_require__(168); + docs.composition = __webpack_require__(169); + docs.stirlingS2 = __webpack_require__(170); // functions - complex - docs.arg = __webpack_require__(170); - docs.conj = __webpack_require__(171); - docs.re = __webpack_require__(172); - docs.im = __webpack_require__(173); + docs.arg = __webpack_require__(171); + docs.conj = __webpack_require__(172); + docs.re = __webpack_require__(173); + docs.im = __webpack_require__(174); // functions - expression - docs['eval'] = __webpack_require__(174); - docs.help = __webpack_require__(175); + docs['eval'] = __webpack_require__(175); + docs.help = __webpack_require__(176); // functions - geometry - docs.distance = __webpack_require__(176); - docs.intersect = __webpack_require__(177); + docs.distance = __webpack_require__(177); + docs.intersect = __webpack_require__(178); // functions - logical - docs['and'] = __webpack_require__(178); - docs['not'] = __webpack_require__(179); - docs['or'] = __webpack_require__(180); - docs['xor'] = __webpack_require__(181); + docs['and'] = __webpack_require__(179); + docs['not'] = __webpack_require__(180); + docs['or'] = __webpack_require__(181); + docs['xor'] = __webpack_require__(182); // functions - matrix - docs['concat'] = __webpack_require__(182); - docs.cross = __webpack_require__(183); - docs.det = __webpack_require__(184); - docs.diag = __webpack_require__(185); - docs.dot = __webpack_require__(186); - docs.eye = __webpack_require__(187); - docs.flatten = __webpack_require__(188); - docs.inv = __webpack_require__(189); - docs.ones = __webpack_require__(190); - docs.range = __webpack_require__(191); - docs.resize = __webpack_require__(192); - docs.size = __webpack_require__(193); - docs.squeeze = __webpack_require__(194); - docs.subset = __webpack_require__(195); - docs.trace = __webpack_require__(196); - docs.transpose = __webpack_require__(197); - docs.zeros = __webpack_require__(198); + docs['concat'] = __webpack_require__(183); + docs.cross = __webpack_require__(184); + docs.det = __webpack_require__(185); + docs.diag = __webpack_require__(186); + docs.dot = __webpack_require__(187); + docs.eye = __webpack_require__(188); + docs.flatten = __webpack_require__(189); + docs.inv = __webpack_require__(190); + docs.ones = __webpack_require__(191); + docs.range = __webpack_require__(192); + docs.resize = __webpack_require__(193); + docs.size = __webpack_require__(194); + docs.squeeze = __webpack_require__(195); + docs.subset = __webpack_require__(196); + docs.trace = __webpack_require__(197); + docs.transpose = __webpack_require__(198); + docs.zeros = __webpack_require__(199); // functions - probability - docs.combinations = __webpack_require__(199); + docs.combinations = __webpack_require__(200); //docs.distribution = require('./function/probability/distribution'); - docs.factorial = __webpack_require__(200); - docs.gamma = __webpack_require__(201); - docs.kldivergence = __webpack_require__(202); - docs.multinomial = __webpack_require__(203); - docs.permutations = __webpack_require__(204); - docs.pickRandom = __webpack_require__(205); - docs.random = __webpack_require__(206); - docs.randomInt = __webpack_require__(207); + docs.factorial = __webpack_require__(201); + docs.gamma = __webpack_require__(202); + docs.kldivergence = __webpack_require__(203); + docs.multinomial = __webpack_require__(204); + docs.permutations = __webpack_require__(205); + docs.pickRandom = __webpack_require__(206); + docs.random = __webpack_require__(207); + docs.randomInt = __webpack_require__(208); // functions - relational - docs.compare = __webpack_require__(208); - docs.deepEqual = __webpack_require__(209); - docs['equal'] = __webpack_require__(210); - docs.larger = __webpack_require__(211); - docs.largerEq = __webpack_require__(212); - docs.smaller = __webpack_require__(213); - docs.smallerEq = __webpack_require__(214); - docs.unequal = __webpack_require__(215); + docs.compare = __webpack_require__(209); + docs.deepEqual = __webpack_require__(210); + docs['equal'] = __webpack_require__(211); + docs.larger = __webpack_require__(212); + docs.largerEq = __webpack_require__(213); + docs.smaller = __webpack_require__(214); + docs.smallerEq = __webpack_require__(215); + docs.unequal = __webpack_require__(216); // functions - statistics - docs.max = __webpack_require__(216); - docs.mean = __webpack_require__(217); - docs.median = __webpack_require__(218); - docs.min = __webpack_require__(219); - docs.mode = __webpack_require__(220); - docs.prod = __webpack_require__(221); - docs.quantileSeq = __webpack_require__(222); - docs.std = __webpack_require__(223); - docs.sum = __webpack_require__(224); - docs['var'] = __webpack_require__(225); + docs.max = __webpack_require__(217); + docs.mean = __webpack_require__(218); + docs.median = __webpack_require__(219); + docs.min = __webpack_require__(220); + docs.mode = __webpack_require__(221); + docs.prod = __webpack_require__(222); + docs.quantileSeq = __webpack_require__(223); + docs.std = __webpack_require__(224); + docs.sum = __webpack_require__(225); + docs['var'] = __webpack_require__(226); // functions - trigonometry - docs.acos = __webpack_require__(226); - docs.acosh = __webpack_require__(227); - docs.acot = __webpack_require__(228); - docs.acoth = __webpack_require__(229); - docs.acsc = __webpack_require__(230); - docs.acsch = __webpack_require__(231); - docs.asec = __webpack_require__(232); - docs.asech = __webpack_require__(233); - docs.asin = __webpack_require__(234); - docs.asinh = __webpack_require__(235); - docs.atan = __webpack_require__(236); - docs.atanh = __webpack_require__(237); - docs.atan2 = __webpack_require__(238); - docs.cos = __webpack_require__(239); - docs.cosh = __webpack_require__(240); - docs.cot = __webpack_require__(241); - docs.coth = __webpack_require__(242); - docs.csc = __webpack_require__(243); - docs.csch = __webpack_require__(244); - docs.sec = __webpack_require__(245); - docs.sech = __webpack_require__(246); - docs.sin = __webpack_require__(247); - docs.sinh = __webpack_require__(248); - docs.tan = __webpack_require__(249); - docs.tanh = __webpack_require__(250); + docs.acos = __webpack_require__(227); + docs.acosh = __webpack_require__(228); + docs.acot = __webpack_require__(229); + docs.acoth = __webpack_require__(230); + docs.acsc = __webpack_require__(231); + docs.acsch = __webpack_require__(232); + docs.asec = __webpack_require__(233); + docs.asech = __webpack_require__(234); + docs.asin = __webpack_require__(235); + docs.asinh = __webpack_require__(236); + docs.atan = __webpack_require__(237); + docs.atanh = __webpack_require__(238); + docs.atan2 = __webpack_require__(239); + docs.cos = __webpack_require__(240); + docs.cosh = __webpack_require__(241); + docs.cot = __webpack_require__(242); + docs.coth = __webpack_require__(243); + docs.csc = __webpack_require__(244); + docs.csch = __webpack_require__(245); + docs.sec = __webpack_require__(246); + docs.sech = __webpack_require__(247); + docs.sin = __webpack_require__(248); + docs.sinh = __webpack_require__(249); + docs.tan = __webpack_require__(250); + docs.tanh = __webpack_require__(251); // functions - units - docs.to = __webpack_require__(251); + docs.to = __webpack_require__(252); // functions - utils - docs.clone = __webpack_require__(252); - docs.map = __webpack_require__(253); - docs.partitionSelect = __webpack_require__(254); - docs.filter = __webpack_require__(255); - docs.forEach = __webpack_require__(256); - docs.format = __webpack_require__(257); - docs.isInteger = __webpack_require__(258); - docs.isNegative = __webpack_require__(259); - docs.isNumeric = __webpack_require__(260); - docs.isPositive = __webpack_require__(261); - docs.isZero = __webpack_require__(262); + docs.clone = __webpack_require__(253); + docs.map = __webpack_require__(254); + docs.partitionSelect = __webpack_require__(255); + docs.filter = __webpack_require__(256); + docs.forEach = __webpack_require__(257); + docs.format = __webpack_require__(258); + docs.isInteger = __webpack_require__(259); + docs.isNegative = __webpack_require__(260); + docs.isNumeric = __webpack_require__(261); + docs.isPositive = __webpack_require__(262); + docs.isZero = __webpack_require__(263); // docs.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. - docs['import'] = __webpack_require__(263); - docs.sort = __webpack_require__(264); - docs['typeof'] = __webpack_require__(265); + docs['import'] = __webpack_require__(264); + docs.sort = __webpack_require__(265); + docs['typeof'] = __webpack_require__(266); return docs; } @@ -21712,7 +21977,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 97 */ +/* 98 */ /***/ function(module, exports) { module.exports = { @@ -21737,7 +22002,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 98 */ +/* 99 */ /***/ function(module, exports) { module.exports = { @@ -21764,7 +22029,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 99 */ +/* 100 */ /***/ function(module, exports) { module.exports = { @@ -21789,7 +22054,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 100 */ +/* 101 */ /***/ function(module, exports) { module.exports = { @@ -21812,7 +22077,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 101 */ +/* 102 */ /***/ function(module, exports) { module.exports = { @@ -21843,7 +22108,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 102 */ +/* 103 */ /***/ function(module, exports) { module.exports = { @@ -21874,7 +22139,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 103 */ +/* 104 */ /***/ function(module, exports) { module.exports = { @@ -21903,7 +22168,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports) { module.exports = { @@ -21928,7 +22193,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports) { module.exports = { @@ -21952,7 +22217,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports) { module.exports = { @@ -21978,7 +22243,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports) { module.exports = { @@ -21999,7 +22264,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports) { module.exports = { @@ -22017,7 +22282,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports) { module.exports = { @@ -22037,7 +22302,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports) { module.exports = { @@ -22056,7 +22321,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports) { module.exports = { @@ -22075,7 +22340,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports) { module.exports = { @@ -22094,7 +22359,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports) { module.exports = { @@ -22113,7 +22378,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports) { module.exports = { @@ -22132,7 +22397,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports) { module.exports = { @@ -22151,7 +22416,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports) { module.exports = { @@ -22169,7 +22434,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports) { module.exports = { @@ -22188,7 +22453,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports) { module.exports = { @@ -22206,7 +22471,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports) { module.exports = { @@ -22225,7 +22490,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports) { module.exports = { @@ -22244,7 +22509,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 121 */ +/* 122 */ /***/ function(module, exports) { module.exports = { @@ -22263,7 +22528,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 123 */ /***/ function(module, exports) { module.exports = { @@ -22281,7 +22546,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 124 */ /***/ function(module, exports) { module.exports = { @@ -22299,7 +22564,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 125 */ /***/ function(module, exports) { module.exports = { @@ -22322,7 +22587,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 126 */ /***/ function(module, exports) { module.exports = { @@ -22345,7 +22610,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 127 */ /***/ function(module, exports) { module.exports = { @@ -22368,7 +22633,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 128 */ /***/ function(module, exports) { module.exports = { @@ -22388,7 +22653,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 129 */ /***/ function(module, exports) { module.exports = { @@ -22409,7 +22674,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 130 */ /***/ function(module, exports) { module.exports = { @@ -22428,7 +22693,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 131 */ /***/ function(module, exports) { module.exports = { @@ -22453,7 +22718,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 132 */ /***/ function(module, exports) { module.exports = { @@ -22484,7 +22749,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 132 */ +/* 133 */ /***/ function(module, exports) { module.exports = { @@ -22505,7 +22770,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 134 */ /***/ function(module, exports) { module.exports = { @@ -22529,7 +22794,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 134 */ +/* 135 */ /***/ function(module, exports) { module.exports = { @@ -22555,7 +22820,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 136 */ /***/ function(module, exports) { module.exports = { @@ -22580,7 +22845,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 136 */ +/* 137 */ /***/ function(module, exports) { module.exports = { @@ -22605,7 +22870,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 137 */ +/* 138 */ /***/ function(module, exports) { module.exports = { @@ -22628,7 +22893,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 138 */ +/* 139 */ /***/ function(module, exports) { module.exports = { @@ -22653,7 +22918,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 139 */ +/* 140 */ /***/ function(module, exports) { module.exports = { @@ -22675,7 +22940,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 140 */ +/* 141 */ /***/ function(module, exports) { module.exports = { @@ -22696,7 +22961,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 141 */ +/* 142 */ /***/ function(module, exports) { module.exports = { @@ -22717,7 +22982,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 142 */ +/* 143 */ /***/ function(module, exports) { module.exports = { @@ -22739,7 +23004,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 143 */ +/* 144 */ /***/ function(module, exports) { module.exports = { @@ -22759,7 +23024,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 145 */ /***/ function(module, exports) { module.exports = { @@ -22787,7 +23052,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 145 */ +/* 146 */ /***/ function(module, exports) { module.exports = { @@ -22812,7 +23077,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 147 */ /***/ function(module, exports) { module.exports = { @@ -22838,7 +23103,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 148 */ /***/ function(module, exports) { module.exports = { @@ -22863,7 +23128,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 149 */ /***/ function(module, exports) { module.exports = { @@ -22889,7 +23154,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 149 */ +/* 150 */ /***/ function(module, exports) { module.exports = { @@ -22915,7 +23180,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 150 */ +/* 151 */ /***/ function(module, exports) { module.exports = { @@ -22937,7 +23202,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 152 */ /***/ function(module, exports) { module.exports = { @@ -22962,7 +23227,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 152 */ +/* 153 */ /***/ function(module, exports) { module.exports = { @@ -22985,7 +23250,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 153 */ +/* 154 */ /***/ function(module, exports) { module.exports = { @@ -23009,7 +23274,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 154 */ +/* 155 */ /***/ function(module, exports) { module.exports = { @@ -23036,7 +23301,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 155 */ +/* 156 */ /***/ function(module, exports) { module.exports = { @@ -23061,7 +23326,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 156 */ +/* 157 */ /***/ function(module, exports) { module.exports = { @@ -23085,7 +23350,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 157 */ +/* 158 */ /***/ function(module, exports) { module.exports = { @@ -23108,7 +23373,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 158 */ +/* 159 */ /***/ function(module, exports) { module.exports = { @@ -23128,7 +23393,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 159 */ +/* 160 */ /***/ function(module, exports) { module.exports = { @@ -23151,7 +23416,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 160 */ +/* 161 */ /***/ function(module, exports) { module.exports = { @@ -23174,7 +23439,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 161 */ +/* 162 */ /***/ function(module, exports) { module.exports = { @@ -23196,7 +23461,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 162 */ +/* 163 */ /***/ function(module, exports) { module.exports = { @@ -23217,7 +23482,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 163 */ +/* 164 */ /***/ function(module, exports) { module.exports = { @@ -23239,7 +23504,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 164 */ +/* 165 */ /***/ function(module, exports) { module.exports = { @@ -23262,7 +23527,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 165 */ +/* 166 */ /***/ function(module, exports) { module.exports = { @@ -23285,7 +23550,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 166 */ +/* 167 */ /***/ function(module, exports) { module.exports = { @@ -23303,7 +23568,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 167 */ +/* 168 */ /***/ function(module, exports) { module.exports = { @@ -23321,7 +23586,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 168 */ +/* 169 */ /***/ function(module, exports) { module.exports = { @@ -23338,7 +23603,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 169 */ +/* 170 */ /***/ function(module, exports) { module.exports = { @@ -23356,7 +23621,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 170 */ +/* 171 */ /***/ function(module, exports) { module.exports = { @@ -23382,7 +23647,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 171 */ +/* 172 */ /***/ function(module, exports) { module.exports = { @@ -23408,7 +23673,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 172 */ +/* 173 */ /***/ function(module, exports) { module.exports = { @@ -23434,7 +23699,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 173 */ +/* 174 */ /***/ function(module, exports) { module.exports = { @@ -23460,7 +23725,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 174 */ +/* 175 */ /***/ function(module, exports) { module.exports = { @@ -23480,7 +23745,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 175 */ +/* 176 */ /***/ function(module, exports) { module.exports = { @@ -23500,7 +23765,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 176 */ +/* 177 */ /***/ function(module, exports) { module.exports = { @@ -23520,7 +23785,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 177 */ +/* 178 */ /***/ function(module, exports) { module.exports = { @@ -23540,7 +23805,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 178 */ +/* 179 */ /***/ function(module, exports) { module.exports = { @@ -23563,7 +23828,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 179 */ +/* 180 */ /***/ function(module, exports) { module.exports = { @@ -23587,7 +23852,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 180 */ +/* 181 */ /***/ function(module, exports) { module.exports = { @@ -23610,7 +23875,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 181 */ +/* 182 */ /***/ function(module, exports) { module.exports = { @@ -23634,7 +23899,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 182 */ +/* 183 */ /***/ function(module, exports) { module.exports = { @@ -23659,7 +23924,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 183 */ +/* 184 */ /***/ function(module, exports) { module.exports = { @@ -23682,7 +23947,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 184 */ +/* 185 */ /***/ function(module, exports) { module.exports = { @@ -23703,7 +23968,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 185 */ +/* 186 */ /***/ function(module, exports) { module.exports = { @@ -23727,7 +23992,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 186 */ +/* 187 */ /***/ function(module, exports) { module.exports = { @@ -23751,7 +24016,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 187 */ +/* 188 */ /***/ function(module, exports) { module.exports = { @@ -23777,7 +24042,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 188 */ +/* 189 */ /***/ function(module, exports) { module.exports = { @@ -23800,7 +24065,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 189 */ +/* 190 */ /***/ function(module, exports) { module.exports = { @@ -23822,7 +24087,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 190 */ +/* 191 */ /***/ function(module, exports) { module.exports = { @@ -23852,7 +24117,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 191 */ +/* 192 */ /***/ function(module, exports) { module.exports = { @@ -23883,7 +24148,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 192 */ +/* 193 */ /***/ function(module, exports) { module.exports = { @@ -23908,7 +24173,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 193 */ +/* 194 */ /***/ function(module, exports) { module.exports = { @@ -23932,7 +24197,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 194 */ +/* 195 */ /***/ function(module, exports) { module.exports = { @@ -23955,7 +24220,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 195 */ +/* 196 */ /***/ function(module, exports) { module.exports = { @@ -23986,7 +24251,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 196 */ +/* 197 */ /***/ function(module, exports) { module.exports = { @@ -24007,7 +24272,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 197 */ +/* 198 */ /***/ function(module, exports) { module.exports = { @@ -24030,7 +24295,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 198 */ +/* 199 */ /***/ function(module, exports) { module.exports = { @@ -24059,7 +24324,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 199 */ +/* 200 */ /***/ function(module, exports) { module.exports = { @@ -24077,7 +24342,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 200 */ +/* 201 */ /***/ function(module, exports) { module.exports = { @@ -24097,7 +24362,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 201 */ +/* 202 */ /***/ function(module, exports) { module.exports = { @@ -24118,7 +24383,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 202 */ +/* 203 */ /***/ function(module, exports) { module.exports = { @@ -24137,7 +24402,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 203 */ +/* 204 */ /***/ function(module, exports) { module.exports = { @@ -24154,7 +24419,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 204 */ +/* 205 */ /***/ function(module, exports) { module.exports = { @@ -24174,7 +24439,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 205 */ +/* 206 */ /***/ function(module, exports) { module.exports = { @@ -24194,7 +24459,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 206 */ +/* 207 */ /***/ function(module, exports) { module.exports = { @@ -24220,7 +24485,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 207 */ +/* 208 */ /***/ function(module, exports) { module.exports = { @@ -24243,7 +24508,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 208 */ +/* 209 */ /***/ function(module, exports) { module.exports = { @@ -24268,7 +24533,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 209 */ +/* 210 */ /***/ function(module, exports) { module.exports = { @@ -24290,7 +24555,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 210 */ +/* 211 */ /***/ function(module, exports) { module.exports = { @@ -24317,7 +24582,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 211 */ +/* 212 */ /***/ function(module, exports) { module.exports = { @@ -24345,7 +24610,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 212 */ +/* 213 */ /***/ function(module, exports) { module.exports = { @@ -24371,7 +24636,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 213 */ +/* 214 */ /***/ function(module, exports) { module.exports = { @@ -24398,7 +24663,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 214 */ +/* 215 */ /***/ function(module, exports) { module.exports = { @@ -24424,7 +24689,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 215 */ +/* 216 */ /***/ function(module, exports) { module.exports = { @@ -24452,7 +24717,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 216 */ +/* 217 */ /***/ function(module, exports) { module.exports = { @@ -24486,7 +24751,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 217 */ +/* 218 */ /***/ function(module, exports) { module.exports = { @@ -24519,7 +24784,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 218 */ +/* 219 */ /***/ function(module, exports) { module.exports = { @@ -24547,7 +24812,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 219 */ +/* 220 */ /***/ function(module, exports) { module.exports = { @@ -24581,7 +24846,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 220 */ +/* 221 */ /***/ function(module, exports) { module.exports = { @@ -24611,7 +24876,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 221 */ +/* 222 */ /***/ function(module, exports) { module.exports = { @@ -24641,7 +24906,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 222 */ +/* 223 */ /***/ function(module, exports) { module.exports = { @@ -24672,7 +24937,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 223 */ +/* 224 */ /***/ function(module, exports) { module.exports = { @@ -24705,7 +24970,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 224 */ +/* 225 */ /***/ function(module, exports) { module.exports = { @@ -24735,7 +25000,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 225 */ +/* 226 */ /***/ function(module, exports) { module.exports = { @@ -24768,7 +25033,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 226 */ +/* 227 */ /***/ function(module, exports) { module.exports = { @@ -24791,7 +25056,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 227 */ +/* 228 */ /***/ function(module, exports) { module.exports = { @@ -24812,7 +25077,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 228 */ +/* 229 */ /***/ function(module, exports) { module.exports = { @@ -24835,7 +25100,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 229 */ +/* 230 */ /***/ function(module, exports) { module.exports = { @@ -24855,7 +25120,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 230 */ +/* 231 */ /***/ function(module, exports) { module.exports = { @@ -24879,7 +25144,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 231 */ +/* 232 */ /***/ function(module, exports) { module.exports = { @@ -24900,7 +25165,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 232 */ +/* 233 */ /***/ function(module, exports) { module.exports = { @@ -24924,7 +25189,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 233 */ +/* 234 */ /***/ function(module, exports) { module.exports = { @@ -24945,7 +25210,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 234 */ +/* 235 */ /***/ function(module, exports) { module.exports = { @@ -24968,7 +25233,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 235 */ +/* 236 */ /***/ function(module, exports) { module.exports = { @@ -24989,7 +25254,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 236 */ +/* 237 */ /***/ function(module, exports) { module.exports = { @@ -25012,7 +25277,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 237 */ +/* 238 */ /***/ function(module, exports) { module.exports = { @@ -25033,7 +25298,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 238 */ +/* 239 */ /***/ function(module, exports) { module.exports = { @@ -25060,7 +25325,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 239 */ +/* 240 */ /***/ function(module, exports) { module.exports = { @@ -25086,7 +25351,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 240 */ +/* 241 */ /***/ function(module, exports) { module.exports = { @@ -25108,7 +25373,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 241 */ +/* 242 */ /***/ function(module, exports) { module.exports = { @@ -25131,7 +25396,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 242 */ +/* 243 */ /***/ function(module, exports) { module.exports = { @@ -25154,7 +25419,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 243 */ +/* 244 */ /***/ function(module, exports) { module.exports = { @@ -25177,7 +25442,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 244 */ +/* 245 */ /***/ function(module, exports) { module.exports = { @@ -25200,7 +25465,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 245 */ +/* 246 */ /***/ function(module, exports) { module.exports = { @@ -25223,7 +25488,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 246 */ +/* 247 */ /***/ function(module, exports) { module.exports = { @@ -25246,7 +25511,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 247 */ +/* 248 */ /***/ function(module, exports) { module.exports = { @@ -25272,7 +25537,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 248 */ +/* 249 */ /***/ function(module, exports) { module.exports = { @@ -25293,7 +25558,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 249 */ +/* 250 */ /***/ function(module, exports) { module.exports = { @@ -25318,7 +25583,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 250 */ +/* 251 */ /***/ function(module, exports) { module.exports = { @@ -25340,7 +25605,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 251 */ +/* 252 */ /***/ function(module, exports) { module.exports = { @@ -25361,7 +25626,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 252 */ +/* 253 */ /***/ function(module, exports) { module.exports = { @@ -25383,7 +25648,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 253 */ +/* 254 */ /***/ function(module, exports) { module.exports = { @@ -25401,7 +25666,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 254 */ +/* 255 */ /***/ function(module, exports) { module.exports = { @@ -25421,7 +25686,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 255 */ +/* 256 */ /***/ function(module, exports) { module.exports = { @@ -25441,7 +25706,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 256 */ +/* 257 */ /***/ function(module, exports) { module.exports = { @@ -25459,7 +25724,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 257 */ +/* 258 */ /***/ function(module, exports) { module.exports = { @@ -25481,7 +25746,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 258 */ +/* 259 */ /***/ function(module, exports) { module.exports = { @@ -25501,7 +25766,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 259 */ +/* 260 */ /***/ function(module, exports) { module.exports = { @@ -25522,7 +25787,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 260 */ +/* 261 */ /***/ function(module, exports) { module.exports = { @@ -25547,7 +25812,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 261 */ +/* 262 */ /***/ function(module, exports) { module.exports = { @@ -25568,7 +25833,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 262 */ +/* 263 */ /***/ function(module, exports) { module.exports = { @@ -25589,7 +25854,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 263 */ +/* 264 */ /***/ function(module, exports) { module.exports = { @@ -25608,7 +25873,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 264 */ +/* 265 */ /***/ function(module, exports) { module.exports = { @@ -25630,7 +25895,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 265 */ +/* 266 */ /***/ function(module, exports) { module.exports = { @@ -25651,20 +25916,20 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 266 */ +/* 267 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(267), - __webpack_require__(285), + __webpack_require__(268), __webpack_require__(286), __webpack_require__(287), - __webpack_require__(288) + __webpack_require__(288), + __webpack_require__(289) ]; /***/ }, -/* 267 */ +/* 268 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -25672,7 +25937,7 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var parse = load(__webpack_require__(268)); + var parse = load(__webpack_require__(269)); /** * Parse and compile an expression. @@ -25726,7 +25991,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 268 */ +/* 269 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -25735,19 +26000,19 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var ArrayNode = load(__webpack_require__(269)); - var AssignmentNode = load(__webpack_require__(272)); - var BlockNode = load(__webpack_require__(274)); - var ConditionalNode = load(__webpack_require__(275)); - var ConstantNode = load(__webpack_require__(276)); - var FunctionAssignmentNode = load(__webpack_require__(277)); - var IndexNode = load(__webpack_require__(278)); - var OperatorNode = load(__webpack_require__(281)); - var ParenthesisNode = load(__webpack_require__(283)); - var FunctionNode = load(__webpack_require__(282)); - var RangeNode = load(__webpack_require__(279)); - var SymbolNode = load(__webpack_require__(280)); - var UpdateNode = load(__webpack_require__(284)); + var ArrayNode = load(__webpack_require__(270)); + var AssignmentNode = load(__webpack_require__(273)); + var BlockNode = load(__webpack_require__(275)); + var ConditionalNode = load(__webpack_require__(276)); + var ConstantNode = load(__webpack_require__(277)); + var FunctionAssignmentNode = load(__webpack_require__(278)); + var IndexNode = load(__webpack_require__(279)); + var OperatorNode = load(__webpack_require__(282)); + var ParenthesisNode = load(__webpack_require__(284)); + var FunctionNode = load(__webpack_require__(283)); + var RangeNode = load(__webpack_require__(280)); + var SymbolNode = load(__webpack_require__(281)); + var UpdateNode = load(__webpack_require__(285)); /** @@ -27138,7 +27403,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 269 */ +/* 270 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -27146,7 +27411,7 @@ return /******/ (function(modules) { // webpackBootstrap var string = __webpack_require__(23); function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * @constructor ArrayNode @@ -27274,12 +27539,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 270 */ +/* 271 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keywords = __webpack_require__(271); + var keywords = __webpack_require__(272); var extend = __webpack_require__(3).extend; function factory (type, config, load, typed, math) { @@ -27638,7 +27903,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 271 */ +/* 272 */ /***/ function(module, exports) { 'use strict'; @@ -27650,19 +27915,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 272 */ +/* 273 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); - var ArrayNode = load(__webpack_require__(269)); + var Node = load(__webpack_require__(271)); + var ArrayNode = load(__webpack_require__(270)); - var keywords = __webpack_require__(271); - var operators = __webpack_require__(273); + var keywords = __webpack_require__(272); + var operators = __webpack_require__(274); /** * @constructor AssignmentNode @@ -27785,7 +28050,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 273 */ +/* 274 */ /***/ function(module, exports) { 'use strict' @@ -28107,14 +28372,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 274 */ +/* 275 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); - var ResultSet = load(__webpack_require__(86)); + var Node = load(__webpack_require__(271)); + var ResultSet = load(__webpack_require__(70)); /** * @constructor BlockNode @@ -28259,16 +28524,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 275 */ +/* 276 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var latex = __webpack_require__(32); - var operators = __webpack_require__(273); + var latex = __webpack_require__(29); + var operators = __webpack_require__(274); function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr' @@ -28429,11 +28694,11 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} str */ ConditionalNode.prototype._toTex = function (options) { - return '\\left\\{\\begin{array}{l l}{' - + this.trueExpr.toTex(options) + '}, &\\quad{\\text{if}\\;' + return '\\begin{cases} {' + + this.trueExpr.toTex(options) + '}, &\\quad{\\text{if }\\;' + this.condition.toTex(options) + '}\\\\{' + this.falseExpr.toTex(options) - + '}, &\\quad{\\text{otherwise}}\\end{array}\\right.'; + + '}, &\\quad{\\text{otherwise}}\\end{cases}'; }; return ConditionalNode; @@ -28445,15 +28710,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 276 */ +/* 277 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var getType = __webpack_require__(43).type; + var getType = __webpack_require__(40).type; function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * A ConstantNode holds a constant value like a number or string. A ConstantNode @@ -28650,21 +28915,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 277 */ +/* 278 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keywords = __webpack_require__(271); - var latex = __webpack_require__(32); - var operators = __webpack_require__(273); + var keywords = __webpack_require__(272); + var latex = __webpack_require__(29); + var operators = __webpack_require__(274); function isString (x) { return typeof x === 'string'; } function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * @constructor FunctionAssignmentNode @@ -28815,17 +29080,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 278 */ +/* 279 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); - var RangeNode = load(__webpack_require__(279)); - var SymbolNode = load(__webpack_require__(280)); + var Node = load(__webpack_require__(271)); + var RangeNode = load(__webpack_require__(280)); + var SymbolNode = load(__webpack_require__(281)); - var Range = load(__webpack_require__(82)); + var Range = load(__webpack_require__(65)); var isArray = Array.isArray; @@ -29090,15 +29355,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 279 */ +/* 280 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var operators = __webpack_require__(273); + var operators = __webpack_require__(274); function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * @constructor RangeNode @@ -29287,17 +29552,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 280 */ +/* 281 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); function factory (type, config, load, typed, math) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); - var Unit = load(__webpack_require__(28)); + var Unit = load(__webpack_require__(73)); /** * @constructor SymbolNode @@ -29432,19 +29697,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 281 */ +/* 282 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var latex = __webpack_require__(32); - var operators = __webpack_require__(273); + var latex = __webpack_require__(29); + var operators = __webpack_require__(274); function factory (type, config, load, typed, math) { - var Node = load(__webpack_require__(270)); - var ConstantNode = load(__webpack_require__(276)); - var SymbolNode = load(__webpack_require__(280)); - var FunctionNode = load(__webpack_require__(282)); + var Node = load(__webpack_require__(271)); + var ConstantNode = load(__webpack_require__(277)); + var SymbolNode = load(__webpack_require__(281)); + var FunctionNode = load(__webpack_require__(283)); /** * @constructor OperatorNode @@ -29853,16 +30118,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 282 */ +/* 283 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); function factory (type, config, load, typed, math) { - var Node = load(__webpack_require__(270)); - var SymbolNode = load(__webpack_require__(280)); + var Node = load(__webpack_require__(271)); + var SymbolNode = load(__webpack_require__(281)); /** * @constructor FunctionNode @@ -30176,13 +30441,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 283 */ +/* 284 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); + var Node = load(__webpack_require__(271)); /** * @constructor ParenthesisNode @@ -30297,14 +30562,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 284 */ +/* 285 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var Node = load(__webpack_require__(270)); - var IndexNode = load(__webpack_require__(278)); + var Node = load(__webpack_require__(271)); + var IndexNode = load(__webpack_require__(279)); /** * @constructor UpdateNode @@ -30423,7 +30688,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 285 */ +/* 286 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -30431,7 +30696,7 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var parse = load(__webpack_require__(268)); + var parse = load(__webpack_require__(269)); /** * Evaluate an expression. @@ -30491,13 +30756,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; /***/ }, -/* 286 */ +/* 287 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed, math) { - var docs = load(__webpack_require__(96)); + var docs = load(__webpack_require__(97)); /** * Retrieve help on a function or data type. @@ -30561,13 +30826,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 287 */ +/* 288 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var parse = load(__webpack_require__(268)); + var parse = load(__webpack_require__(269)); /** * Parse an expression. Returns a node tree, which can be evaluated by @@ -30616,13 +30881,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 288 */ +/* 289 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed, math) { - var Parser = load(__webpack_require__(289)); + var Parser = load(__webpack_require__(290)); /** * Create a parser. The function creates a new `math.expression.Parser` object. @@ -30680,13 +30945,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 289 */ +/* 290 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed, math) { - var _parse = load(__webpack_require__(268)); + var _parse = load(__webpack_require__(269)); /** * @constructor Parser @@ -30835,53 +31100,53 @@ return /******/ (function(modules) { // webpackBootstrap exports.math = true; // requires the math namespace as 5th argument -/***/ }, -/* 290 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = [ - __webpack_require__(269), - __webpack_require__(272), - __webpack_require__(274), - __webpack_require__(275), - __webpack_require__(276), - __webpack_require__(278), - __webpack_require__(277), - __webpack_require__(282), - __webpack_require__(270), - __webpack_require__(281), - __webpack_require__(283), - __webpack_require__(279), - __webpack_require__(280), - __webpack_require__(284) - ]; - - /***/ }, /* 291 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(292), - __webpack_require__(295), - __webpack_require__(297), - __webpack_require__(299), - __webpack_require__(300), - __webpack_require__(302), - __webpack_require__(307), - __webpack_require__(312), - __webpack_require__(314), - __webpack_require__(316) + __webpack_require__(270), + __webpack_require__(273), + __webpack_require__(275), + __webpack_require__(276), + __webpack_require__(277), + __webpack_require__(279), + __webpack_require__(278), + __webpack_require__(283), + __webpack_require__(271), + __webpack_require__(282), + __webpack_require__(284), + __webpack_require__(280), + __webpack_require__(281), + __webpack_require__(285) ]; /***/ }, /* 292 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = [ + __webpack_require__(293), + __webpack_require__(296), + __webpack_require__(298), + __webpack_require__(300), + __webpack_require__(301), + __webpack_require__(303), + __webpack_require__(308), + __webpack_require__(313), + __webpack_require__(315), + __webpack_require__(317) + ]; + + +/***/ }, +/* 293 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(293).transform; + var errorTransform = __webpack_require__(294).transform; /** * Attach a transform function to math.range @@ -30891,7 +31156,7 @@ return /******/ (function(modules) { // webpackBootstrap * from one-based to zero based */ function factory (type, config, load, typed) { - var concat = load(__webpack_require__(294)); + var concat = load(__webpack_require__(295)); // @see: comment of concat itself return typed('concat', { @@ -30922,10 +31187,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 293 */ +/* 294 */ /***/ function(module, exports, __webpack_require__) { - var IndexError = __webpack_require__(44); + var IndexError = __webpack_require__(42); /** * Transform zero-based indices to one-based indices in errors @@ -30942,19 +31207,19 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 294 */ +/* 295 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var clone = __webpack_require__(3).clone; var isInteger = __webpack_require__(6).isInteger; - var array = __webpack_require__(42); - var IndexError = __webpack_require__(44); - var DimensionError = __webpack_require__(31); + var array = __webpack_require__(39); + var IndexError = __webpack_require__(42); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Concatenate two or more matrices. @@ -31096,7 +31361,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 295 */ +/* 296 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31109,8 +31374,8 @@ return /******/ (function(modules) { // webpackBootstrap * so you can do something like 'filter([3, -2, 5], x > 0)'. */ function factory (type, config, load, typed) { - var filter = load(__webpack_require__(296)); - var SymbolNode = load(__webpack_require__(280)); + var filter = load(__webpack_require__(297)); + var SymbolNode = load(__webpack_require__(281)); function filterTransform(args, math, scope) { var x, test; @@ -31166,15 +31431,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 296 */ +/* 297 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(42).size; + var size = __webpack_require__(39).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Filter the items in an array or one dimensional matrix. @@ -31261,7 +31526,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 297 */ +/* 298 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31273,7 +31538,7 @@ return /******/ (function(modules) { // webpackBootstrap * This transform creates a one-based index instead of a zero-based index */ function factory (type, config, load, typed) { - var forEach = load(__webpack_require__(298)); + var forEach = load(__webpack_require__(299)); return typed('forEach', { 'Array | Matrix, function': function (array, callback) { @@ -31299,7 +31564,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 298 */ +/* 299 */ /***/ function(module, exports) { 'use strict'; @@ -31367,7 +31632,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 299 */ +/* 300 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31381,7 +31646,7 @@ return /******/ (function(modules) { // webpackBootstrap * This transform creates a one-based index instead of a zero-based index */ function factory (type, config, load) { - var indexFactory = load(__webpack_require__(83)); + var indexFactory = load(__webpack_require__(66)); return function indexTransform() { var args = []; @@ -31424,7 +31689,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 300 */ +/* 301 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31436,8 +31701,8 @@ return /******/ (function(modules) { // webpackBootstrap * This transform creates a one-based index instead of a zero-based index */ function factory (type, config, load, typed) { - var map = load(__webpack_require__(301)); - var matrix = load(__webpack_require__(33)); + var map = load(__webpack_require__(302)); + var matrix = load(__webpack_require__(50)); return typed('max', { 'Array, function': function (x, callback) { @@ -31480,7 +31745,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 301 */ +/* 302 */ /***/ function(module, exports) { 'use strict'; @@ -31551,13 +31816,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 302 */ +/* 303 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(293).transform; - var isCollection = __webpack_require__(303); + var errorTransform = __webpack_require__(294).transform; + var isCollection = __webpack_require__(304); /** * Attach a transform function to math.max @@ -31567,7 +31832,7 @@ return /******/ (function(modules) { // webpackBootstrap * from one-based to zero based */ function factory (type, config, load, typed) { - var max = load(__webpack_require__(304)); + var max = load(__webpack_require__(305)); return typed('max', { '...any': function (args) { @@ -31598,7 +31863,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 303 */ +/* 304 */ /***/ function(module, exports) { 'use strict'; @@ -31614,16 +31879,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 304 */ +/* 305 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var deepForEach = __webpack_require__(305); - var reduce = __webpack_require__(306); + var deepForEach = __webpack_require__(306); + var reduce = __webpack_require__(307); function factory (type, config, load, typed) { - var larger = load(__webpack_require__(79)); + var larger = load(__webpack_require__(62)); /** * Compute the maximum value of a matrix or a list with values. @@ -31714,7 +31979,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 305 */ +/* 306 */ /***/ function(module, exports) { 'use strict'; @@ -31745,13 +32010,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 306 */ +/* 307 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var arraySize = __webpack_require__(42).size; - var IndexError = __webpack_require__(44); + var arraySize = __webpack_require__(39).size; + var IndexError = __webpack_require__(42); /** * Reduce a given matrix or array to a new matrix or @@ -31838,13 +32103,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 307 */ +/* 308 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(293).transform; - var isCollection = __webpack_require__(303); + var errorTransform = __webpack_require__(294).transform; + var isCollection = __webpack_require__(304); /** * Attach a transform function to math.mean @@ -31854,7 +32119,7 @@ return /******/ (function(modules) { // webpackBootstrap * from one-based to zero based */ function factory (type, config, load, typed) { - var mean = load(__webpack_require__(308)); + var mean = load(__webpack_require__(309)); return typed('mean', { '...any': function (args) { @@ -31885,18 +32150,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 308 */ +/* 309 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var size = __webpack_require__(42).size; - var deepForEach = __webpack_require__(305); - var reduce = __webpack_require__(306); + var size = __webpack_require__(39).size; + var deepForEach = __webpack_require__(306); + var reduce = __webpack_require__(307); function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var divide = load(__webpack_require__(309)); + var add = load(__webpack_require__(49)); + var divide = load(__webpack_require__(310)); /** * Compute the mean value of matrix or a list with values. @@ -31984,7 +32249,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 309 */ +/* 310 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -31993,13 +32258,13 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var divideScalar = load(__webpack_require__(49)); - var multiply = load(__webpack_require__(54)); - var inv = load(__webpack_require__(310)); - var matrix = load(__webpack_require__(33)); + var divideScalar = load(__webpack_require__(78)); + var multiply = load(__webpack_require__(83)); + var inv = load(__webpack_require__(311)); + var matrix = load(__webpack_require__(50)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm14 = load(__webpack_require__(56)); /** * Divide two values, `x / y`. @@ -32079,21 +32344,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 310 */ +/* 311 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var divideScalar = load(__webpack_require__(49)); - var addScalar = load(__webpack_require__(29)); - var multiply = load(__webpack_require__(54)); - var unaryMinus = load(__webpack_require__(34)); - var det = load(__webpack_require__(311)); - var eye = load(__webpack_require__(52)); + var matrix = load(__webpack_require__(50)); + var divideScalar = load(__webpack_require__(78)); + var addScalar = load(__webpack_require__(51)); + var multiply = load(__webpack_require__(83)); + var unaryMinus = load(__webpack_require__(75)); + var det = load(__webpack_require__(312)); + var eye = load(__webpack_require__(81)); /** * Calculate the inverse of a square matrix. @@ -32292,21 +32557,21 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 311 */ +/* 312 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var object = util.object; var string = util.string; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var add = load(__webpack_require__(75)); - var subtract = load(__webpack_require__(30)); - var multiply = load(__webpack_require__(54)); - var unaryMinus = load(__webpack_require__(34)); + var matrix = load(__webpack_require__(50)); + var add = load(__webpack_require__(49)); + var subtract = load(__webpack_require__(74)); + var multiply = load(__webpack_require__(83)); + var unaryMinus = load(__webpack_require__(75)); /** * Calculate the determinant of a matrix. @@ -32466,13 +32731,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 312 */ +/* 313 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(293).transform; - var isCollection = __webpack_require__(303); + var errorTransform = __webpack_require__(294).transform; + var isCollection = __webpack_require__(304); /** * Attach a transform function to math.min @@ -32482,7 +32747,7 @@ return /******/ (function(modules) { // webpackBootstrap * from one-based to zero based */ function factory (type, config, load, typed) { - var min = load(__webpack_require__(313)); + var min = load(__webpack_require__(314)); return typed('min', { '...any': function (args) { @@ -32513,16 +32778,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 313 */ +/* 314 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var deepForEach = __webpack_require__(305); - var reduce = __webpack_require__(306); + var deepForEach = __webpack_require__(306); + var reduce = __webpack_require__(307); function factory (type, config, load, typed) { - var smaller = load(__webpack_require__(78)); + var smaller = load(__webpack_require__(58)); /** * Compute the maximum value of a matrix or a list of values. @@ -32613,7 +32878,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 314 */ +/* 315 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -32625,7 +32890,7 @@ return /******/ (function(modules) { // webpackBootstrap * This transform creates a range which includes the end value */ function factory (type, config, load, typed) { - var range = load(__webpack_require__(315)); + var range = load(__webpack_require__(316)); return typed('range', { '...any': function (args) { @@ -32647,13 +32912,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 315 */ +/* 316 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var ZERO = new type.BigNumber(0); var ONE = new type.BigNumber(1); @@ -32932,12 +33197,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 316 */ +/* 317 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(293).transform; + var errorTransform = __webpack_require__(294).transform; /** * Attach a transform function to math.subset @@ -32946,7 +33211,7 @@ return /******/ (function(modules) { // webpackBootstrap * This transform creates a range which includes the end value */ function factory (type, config, load, typed) { - var subset = load(__webpack_require__(317)); + var subset = load(__webpack_require__(318)); return typed('subset', { '...any': function (args) { @@ -32966,17 +33231,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 317 */ +/* 318 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var clone = __webpack_require__(3).clone; - var validateIndex = __webpack_require__(42).validateIndex; - var DimensionError = __webpack_require__(31); + var validateIndex = __webpack_require__(39).validateIndex; + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Get or set a subset of a matrix or string. @@ -33153,7 +33418,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 318 */ +/* 319 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -33162,7 +33427,7 @@ return /******/ (function(modules) { // webpackBootstrap var string = __webpack_require__(23); function factory (type, config, load, typed) { - var parser = load(__webpack_require__(288))(); + var parser = load(__webpack_require__(289))(); /** * Documentation object @@ -33276,11 +33541,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 319 */ +/* 320 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(320), + __webpack_require__(321), __webpack_require__(348), __webpack_require__(378), __webpack_require__(394), @@ -33298,12 +33563,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 320 */ +/* 321 */ /***/ function(module, exports, __webpack_require__) { module.exports = [ // decomposition - __webpack_require__(321), + __webpack_require__(322), __webpack_require__(323), // solver @@ -33314,26 +33579,26 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 321 */ +/* 322 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var object = util.object; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var abs = load(__webpack_require__(322)); - var addScalar = load(__webpack_require__(29)); - var divideScalar = load(__webpack_require__(49)); - var multiplyScalar = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(30)); - var larger = load(__webpack_require__(79)); - var equalScalar = load(__webpack_require__(38)); - var unaryMinus = load(__webpack_require__(34)); + var matrix = load(__webpack_require__(50)); + var abs = load(__webpack_require__(85)); + var addScalar = load(__webpack_require__(51)); + var divideScalar = load(__webpack_require__(78)); + var multiplyScalar = load(__webpack_require__(77)); + var subtract = load(__webpack_require__(74)); + var larger = load(__webpack_require__(62)); + var equalScalar = load(__webpack_require__(47)); + var unaryMinus = load(__webpack_require__(75)); var SparseMatrix = type.SparseMatrix; var DenseMatrix = type.DenseMatrix; @@ -33706,99 +33971,13 @@ return /******/ (function(modules) { // webpackBootstrap exports.factory = factory; -/***/ }, -/* 322 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var deepMap = __webpack_require__(19); - - function factory (type, config, load, typed) { - /** - * Calculate the absolute value of a number. For matrices, the function is - * evaluated element wise. - * - * Syntax: - * - * math.abs(x) - * - * Examples: - * - * math.abs(3.5); // returns number 3.5 - * math.abs(-4.2); // returns number 4.2 - * - * math.abs([3, -5, -1, 0, 2]); // returns Array [3, 5, 1, 0, 2] - * - * See also: - * - * sign - * - * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x - * A number or matrix for which to get the absolute value - * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} - * Absolute value of `x` - */ - var abs = typed('abs', { - 'number': Math.abs, - - 'Complex': function (x) { - var re = Math.abs(x.re); - var im = Math.abs(x.im); - if (re < 1000 && im < 1000) { - return Math.sqrt(re * re + im * im); - } - else { - // prevent overflow for large numbers - if (re >= im) { - var i = im / re; - return re * Math.sqrt(1 + i * i); - } - else { - var j = re / im; - return im * Math.sqrt(1 + j * j); - } - } - }, - - 'BigNumber': function (x) { - return x.abs(); - }, - - 'Fraction': function (x) { - return x.abs(); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since abs(0) = 0 - return deepMap(x, abs, true); - }, - - 'Unit': function(x) { - // This gives correct, but unexpected, results for units with an offset. - // For example, abs(-283.15 degC) = -263.15 degC !!! - var ret = x.clone(); - ret.value = abs(ret.value); - return ret; - } - }); - - abs.toTex = '\\left|${args[0]}\\right|'; - - return abs; - } - - exports.name = 'abs'; - exports.factory = factory; - - /***/ }, /* 323 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var number = util.number, @@ -34051,8 +34230,8 @@ return /******/ (function(modules) { // webpackBootstrap var cs_fkeep = load(__webpack_require__(327)); var cs_tdfs = load(__webpack_require__(328)); - var add = load(__webpack_require__(75)); - var multiply = load(__webpack_require__(54)); + var add = load(__webpack_require__(49)); + var multiply = load(__webpack_require__(83)); var transpose = load(__webpack_require__(329)); /** @@ -34206,7 +34385,7 @@ return /******/ (function(modules) { // webpackBootstrap // scan, no entry in the w array is greater than or equal to mark. // clear w if necessary - mark = _wclear(mark, lemax, w, n); + mark = _wclear(mark, lemax, W, w, n); // scan 1: find |Le\Lk| for (pk = pk1; pk < pk2; pk++) { i = cindex[pk]; @@ -34320,7 +34499,7 @@ return /******/ (function(modules) { // webpackBootstrap W[degree + k] = dk; lemax = Math.max(lemax, dk); // clear w - mark = _wclear(mark + lemax, lemax, w, n); + mark = _wclear(mark + lemax, lemax, W, w, n); // Supernode detection. Supernode detection relies on the hash function h(i) computed for each node i. // If two nodes have identical adjacency lists, their hash functions wil be identical. @@ -34541,7 +34720,7 @@ return /******/ (function(modules) { // webpackBootstrap W[degree + i] = W[len + i]; } // clear w - var mark = _wclear(0, 0, w, n); + var mark = _wclear(0, 0, W, w, n); // n is a dead element W[elen + n] = -2; // n is a root of assembly tree @@ -34594,15 +34773,15 @@ return /******/ (function(modules) { // webpackBootstrap return nel; }; - var _wclear = function(mark, lemax, w, n) { + var _wclear = function(mark, lemax, W, w, n) { if (mark < 2 || (mark + lemax < 0)) { for (var k = 0; k < n; k++) { - if (w[k] !== 0) - w[k] = 1; + if (W[w + k] !== 0) + W[w + k] = 1; } mark = 2 ; } - // at this point, w [0..n-1] < mark holds + // at this point, W [0..n-1] < mark holds return mark; }; @@ -34785,9 +34964,9 @@ return /******/ (function(modules) { // webpackBootstrap var format = __webpack_require__(23).format; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var DenseMatrix = type.DenseMatrix, SparseMatrix = type.SparseMatrix; @@ -35388,11 +35567,11 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load) { - var abs = load(__webpack_require__(322)); - var divideScalar = load(__webpack_require__(49)); - var multiply = load(__webpack_require__(54)); + var abs = load(__webpack_require__(85)); + var divideScalar = load(__webpack_require__(78)); + var multiply = load(__webpack_require__(83)); - var larger = load(__webpack_require__(79)); + var larger = load(__webpack_require__(62)); var largerEq = load(__webpack_require__(336)); var cs_spsolve = load(__webpack_require__(337)); @@ -35574,15 +35753,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Test whether value x is larger or equal to y. @@ -35750,9 +35929,9 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load) { - var divideScalar = load(__webpack_require__(49)); - var multiply = load(__webpack_require__(54)); - var subtract = load(__webpack_require__(30)); + var divideScalar = load(__webpack_require__(78)); + var multiply = load(__webpack_require__(83)); + var subtract = load(__webpack_require__(74)); var cs_reach = load(__webpack_require__(338)); @@ -36090,11 +36269,11 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var divideScalar = load(__webpack_require__(49)); - var multiplyScalar = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(30)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var divideScalar = load(__webpack_require__(78)); + var multiplyScalar = load(__webpack_require__(77)); + var subtract = load(__webpack_require__(74)); + var equalScalar = load(__webpack_require__(47)); var solveValidation = load(__webpack_require__(344)); @@ -36281,7 +36460,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(41); + var util = __webpack_require__(38); var string = util.string; var array = util.array; @@ -36452,8 +36631,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var lup = load(__webpack_require__(321)); + var matrix = load(__webpack_require__(50)); + var lup = load(__webpack_require__(322)); var slu = load(__webpack_require__(323)); var cs_ipvec = load(__webpack_require__(346)); @@ -36628,11 +36807,11 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var divideScalar = load(__webpack_require__(49)); - var multiplyScalar = load(__webpack_require__(48)); - var subtract = load(__webpack_require__(30)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var divideScalar = load(__webpack_require__(78)); + var multiplyScalar = load(__webpack_require__(77)); + var subtract = load(__webpack_require__(74)); + var equalScalar = load(__webpack_require__(47)); var solveValidation = load(__webpack_require__(344)); @@ -36819,35 +36998,35 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(322), - __webpack_require__(75), - __webpack_require__(29), + __webpack_require__(85), + __webpack_require__(49), + __webpack_require__(51), __webpack_require__(349), __webpack_require__(351), __webpack_require__(352), - __webpack_require__(309), + __webpack_require__(310), __webpack_require__(353), __webpack_require__(355), __webpack_require__(357), - __webpack_require__(51), + __webpack_require__(80), __webpack_require__(358), __webpack_require__(359), __webpack_require__(360), __webpack_require__(361), __webpack_require__(364), - __webpack_require__(53), + __webpack_require__(82), __webpack_require__(367), __webpack_require__(368), - __webpack_require__(54), + __webpack_require__(83), __webpack_require__(369), __webpack_require__(371), - __webpack_require__(50), + __webpack_require__(79), __webpack_require__(372), __webpack_require__(374), __webpack_require__(362), __webpack_require__(375), - __webpack_require__(30), - __webpack_require__(34), + __webpack_require__(74), + __webpack_require__(75), __webpack_require__(376), __webpack_require__(377) ]; @@ -36862,11 +37041,11 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var unaryMinus = load(__webpack_require__(34)); + var unaryMinus = load(__webpack_require__(75)); var isNegative = load(__webpack_require__(350)); - var matrix = load(__webpack_require__(33)); - var complexMultiply = typed.find(load(__webpack_require__(48)), ['Complex,Complex']); - var complexExp = typed.find(load(__webpack_require__(51)), ['Complex']); + var matrix = load(__webpack_require__(50)); + var complexMultiply = typed.find(load(__webpack_require__(77)), ['Complex,Complex']); + var complexExp = typed.find(load(__webpack_require__(80)), ['Complex']); /** * Calculate the cubic root of a value. @@ -37031,30 +37210,39 @@ return /******/ (function(modules) { // webpackBootstrap * @private */ function _cbrtUnit(x) { - var negate = isNegative(x.value); - if (negate) { - x.value = unaryMinus(x.value); - } - - // TODO: create a helper function for this - var third; - if (x.value && x.value.isBigNumber) { - third = new type.BigNumber(1).div(3); - } - else if (x.value && x.value.isFraction) { - third = new type.Fraction(1, 3); + if(x.value && x.value.isComplex) { + var result = x.clone(); + result.value = 1.0; + result = result.pow(1.0/3); // Compute the units + result.value = _cbrtComplex(x.value); // Compute the value + return result; } else { - third = 1/3; + var negate = isNegative(x.value); + if (negate) { + x.value = unaryMinus(x.value); + } + + // TODO: create a helper function for this + var third; + if (x.value && x.value.isBigNumber) { + third = new type.BigNumber(1).div(3); + } + else if (x.value && x.value.isFraction) { + third = new type.Fraction(1, 3); + } + else { + third = 1/3; + } + + var result = x.pow(third); + + if (negate) { + result.value = unaryMinus(result.value); + } + + return result; } - - var result = x.pow(third); - - if (negate) { - result.value = unaryMinus(result.value); - } - - return result; } cbrt.toTex = '\\sqrt[3]{${args[0]}}'; @@ -37213,7 +37401,7 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var complexMultiply = typed.find(load(__webpack_require__(48)), ['Complex,Complex']); + var complexMultiply = typed.find(load(__webpack_require__(77)), ['Complex,Complex']); /** * Compute the cube of a value, `x * x * x`. @@ -37283,17 +37471,17 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var divideScalar = load(__webpack_require__(49)); - var latex = __webpack_require__(32); + var matrix = load(__webpack_require__(50)); + var divideScalar = load(__webpack_require__(78)); + var latex = __webpack_require__(29); var algorithm02 = load(__webpack_require__(354)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Divide two matrices element wise. The function accepts both matrices and @@ -37430,11 +37618,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var equalScalar = load(__webpack_require__(38)); + var equalScalar = load(__webpack_require__(47)); var SparseMatrix = type.SparseMatrix; @@ -37557,15 +37745,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var multiplyScalar = load(__webpack_require__(48)); - var latex = __webpack_require__(32); + var matrix = load(__webpack_require__(50)); + var multiplyScalar = load(__webpack_require__(77)); + var latex = __webpack_require__(29); var algorithm02 = load(__webpack_require__(354)); var algorithm09 = load(__webpack_require__(356)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Multiply two matrices element wise. The function accepts both matrices and @@ -37702,11 +37890,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var equalScalar = load(__webpack_require__(38)); + var equalScalar = load(__webpack_require__(47)); var SparseMatrix = type.SparseMatrix; @@ -37859,16 +38047,16 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var pow = load(__webpack_require__(50)); - var latex = __webpack_require__(32); + var matrix = load(__webpack_require__(50)); + var pow = load(__webpack_require__(79)); + var latex = __webpack_require__(29); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculates the power of x to y element wise. @@ -38146,13 +38334,13 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm01 = load(__webpack_require__(35)); - var algorithm04 = load(__webpack_require__(76)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm01 = load(__webpack_require__(52)); + var algorithm04 = load(__webpack_require__(53)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculate the greatest common divisor for two or more values or arrays. @@ -38347,15 +38535,15 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var flatten = __webpack_require__(42).flatten; + var flatten = __webpack_require__(39).flatten; function factory (type, config, load, typed) { - var abs = load(__webpack_require__(322)); - var add = load(__webpack_require__(29)); - var divide = load(__webpack_require__(49)); - var multiply = load(__webpack_require__(48)); + var abs = load(__webpack_require__(85)); + var add = load(__webpack_require__(51)); + var divide = load(__webpack_require__(78)); + var multiply = load(__webpack_require__(77)); var sqrt = load(__webpack_require__(362)); - var smaller = load(__webpack_require__(78)); + var smaller = load(__webpack_require__(58)); var isPositive = load(__webpack_require__(363)); /** @@ -38628,13 +38816,13 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var algorithm02 = load(__webpack_require__(354)); var algorithm06 = load(__webpack_require__(365)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculate the least common multiple for two or more values or arrays. @@ -38848,11 +39036,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var scatter = __webpack_require__(366); - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var equalScalar = load(__webpack_require__(38)); + var equalScalar = load(__webpack_require__(47)); var SparseMatrix = type.SparseMatrix; @@ -39173,16 +39361,16 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var latex = __webpack_require__(32); + var matrix = load(__webpack_require__(50)); + var latex = __webpack_require__(29); var algorithm02 = load(__webpack_require__(354)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm05 = load(__webpack_require__(37)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm05 = load(__webpack_require__(76)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculates the modulus, the remainder of an integer division. @@ -39361,15 +39549,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var abs = load(__webpack_require__(322)); - var add = load(__webpack_require__(75)); - var pow = load(__webpack_require__(50)); + var abs = load(__webpack_require__(85)); + var add = load(__webpack_require__(49)); + var pow = load(__webpack_require__(79)); var sqrt = load(__webpack_require__(362)); - var multiply = load(__webpack_require__(54)); - var equalScalar = load(__webpack_require__(38)); - var larger = load(__webpack_require__(79)); - var smaller = load(__webpack_require__(78)); - var matrix = load(__webpack_require__(33)); + var multiply = load(__webpack_require__(83)); + var equalScalar = load(__webpack_require__(47)); + var larger = load(__webpack_require__(62)); + var smaller = load(__webpack_require__(58)); + var matrix = load(__webpack_require__(50)); var trace = load(__webpack_require__(370)); var transpose = load(__webpack_require__(329)); @@ -39584,8 +39772,8 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var add = load(__webpack_require__(75)); + var matrix = load(__webpack_require__(50)); + var add = load(__webpack_require__(49)); /** * Calculate the trace of a matrix: the sum of the elements on the main @@ -39734,14 +39922,14 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm01 = load(__webpack_require__(35)); + var algorithm01 = load(__webpack_require__(52)); var algorithm02 = load(__webpack_require__(354)); var algorithm06 = load(__webpack_require__(365)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculate the nth root of a value. @@ -40043,13 +40231,13 @@ return /******/ (function(modules) { // webpackBootstrap var NO_INT = 'Number of decimals in function round must be an integer'; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var equalScalar = load(__webpack_require__(47)); var zeros = load(__webpack_require__(373)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm14 = load(__webpack_require__(56)); /** * Round a value towards the nearest integer. @@ -40220,10 +40408,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var isInteger = __webpack_require__(6).isInteger; - var resize = __webpack_require__(42).resize; + var resize = __webpack_require__(39).resize; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Create a matrix filled with zeros. The created matrix can have one or @@ -40512,7 +40700,7 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Unary plus operation. @@ -40588,7 +40776,7 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(6).isInteger; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Calculate the extended greatest common divisor for two values. @@ -40744,15 +40932,15 @@ return /******/ (function(modules) { // webpackBootstrap var bigBitAnd = __webpack_require__(380); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var algorithm02 = load(__webpack_require__(354)); var algorithm06 = load(__webpack_require__(365)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise AND two values, `x & y`. @@ -41129,7 +41317,7 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(6).isInteger; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Bitwise NOT value, `~x`. @@ -41188,15 +41376,15 @@ return /******/ (function(modules) { // webpackBootstrap var bigBitOr = __webpack_require__(385); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm01 = load(__webpack_require__(35)); - var algorithm04 = load(__webpack_require__(76)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm01 = load(__webpack_require__(52)); + var algorithm04 = load(__webpack_require__(53)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise OR two values, `x | y`. @@ -41400,15 +41588,15 @@ return /******/ (function(modules) { // webpackBootstrap var bigBitXor = __webpack_require__(387); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise XOR two values, `x ^ y`. @@ -41619,19 +41807,19 @@ return /******/ (function(modules) { // webpackBootstrap var bigLeftShift = __webpack_require__(389); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var equalScalar = load(__webpack_require__(47)); var zeros = load(__webpack_require__(373)); - var algorithm01 = load(__webpack_require__(35)); + var algorithm01 = load(__webpack_require__(52)); var algorithm02 = load(__webpack_require__(354)); var algorithm08 = load(__webpack_require__(390)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise left logical shift of a value x by y number of bits, `x << y`. @@ -41828,11 +42016,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); function factory (type, config, load, typed) { - var equalScalar = load(__webpack_require__(38)); + var equalScalar = load(__webpack_require__(47)); var SparseMatrix = type.SparseMatrix; @@ -41998,19 +42186,19 @@ return /******/ (function(modules) { // webpackBootstrap var bigRightArithShift = __webpack_require__(392); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var equalScalar = load(__webpack_require__(47)); var zeros = load(__webpack_require__(373)); - var algorithm01 = load(__webpack_require__(35)); + var algorithm01 = load(__webpack_require__(52)); var algorithm02 = load(__webpack_require__(354)); var algorithm08 = load(__webpack_require__(390)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise right arithmetic shift of a value x by y number of bits, `x >> y`. @@ -42216,19 +42404,19 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(6).isInteger; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); - var equalScalar = load(__webpack_require__(38)); + var matrix = load(__webpack_require__(50)); + var equalScalar = load(__webpack_require__(47)); var zeros = load(__webpack_require__(373)); - var algorithm01 = load(__webpack_require__(35)); + var algorithm01 = load(__webpack_require__(52)); var algorithm02 = load(__webpack_require__(354)); var algorithm08 = load(__webpack_require__(390)); - var algorithm10 = load(__webpack_require__(39)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm10 = load(__webpack_require__(54)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Bitwise right logical shift of value x by y number of bits, `x >>> y`. @@ -42392,7 +42580,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); + var add = load(__webpack_require__(49)); var stirlingS2 = load(__webpack_require__(396)); var isNegative = load(__webpack_require__(350)); var isInteger = load(__webpack_require__(400)); @@ -42451,16 +42639,16 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var subtract = load(__webpack_require__(30)); - var multiply = load(__webpack_require__(54)); - var divide = load(__webpack_require__(309)); - var pow = load(__webpack_require__(50)); + var add = load(__webpack_require__(49)); + var subtract = load(__webpack_require__(74)); + var multiply = load(__webpack_require__(83)); + var divide = load(__webpack_require__(310)); + var pow = load(__webpack_require__(79)); var factorial = load(__webpack_require__(397)); var combinations = load(__webpack_require__(399)); var isNegative = load(__webpack_require__(350)); var isInteger = load(__webpack_require__(400)); - var larger = load(__webpack_require__(79)); + var larger = load(__webpack_require__(62)); /** * The Stirling numbers of the second kind, counts the number of ways to partition @@ -42526,11 +42714,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var deepMap = __webpack_require__(19); - var constants = __webpack_require__(92); + var constants = __webpack_require__(93); function factory (type, config, load, typed) { var gamma = load(__webpack_require__(398)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Compute the factorial of a value @@ -42595,8 +42783,8 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(6).isInteger; function factory (type, config, load, typed) { - var multiply = load(__webpack_require__(54)); - var pow = load(__webpack_require__(50)); + var multiply = load(__webpack_require__(83)); + var pow = load(__webpack_require__(79)); /** * Compute the gamma function of a value using Lanczos approximation for @@ -42960,10 +43148,10 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var combinations = load(__webpack_require__(399)); - var add = load(__webpack_require__(29)); + var add = load(__webpack_require__(51)); var isPositive = load(__webpack_require__(363)); var isInteger = load(__webpack_require__(400)); - var larger = load(__webpack_require__(79)); + var larger = load(__webpack_require__(62)); /** * The composition counts of n into k parts. @@ -43016,9 +43204,9 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var divide = load(__webpack_require__(309)); - var multiply = load(__webpack_require__(54)); + var add = load(__webpack_require__(49)); + var divide = load(__webpack_require__(310)); + var multiply = load(__webpack_require__(83)); var combinations = load(__webpack_require__(399)); var isNegative = load(__webpack_require__(350)); var isInteger = load(__webpack_require__(400)); @@ -43343,7 +43531,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Calculates the point of intersection of two lines in two or three dimensions @@ -43494,7 +43682,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Calculates: @@ -43813,18 +44001,18 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var zeros = load(__webpack_require__(373)); var not = load(__webpack_require__(413)); var isZero = load(__webpack_require__(414)); var algorithm02 = load(__webpack_require__(354)); var algorithm06 = load(__webpack_require__(365)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Logical `and`. Test whether two values are both defined with a nonzero/nonempty value. @@ -43990,7 +44178,7 @@ return /******/ (function(modules) { // webpackBootstrap var deepMap = __webpack_require__(19); function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Logical `not`. Flips boolean value of a given parameter. @@ -44131,15 +44319,15 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm05 = load(__webpack_require__(37)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm05 = load(__webpack_require__(76)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value. @@ -44293,15 +44481,15 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Logical `xor`. Test whether one and only one value is defined with a nonzero/nonempty value. @@ -44453,20 +44641,20 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(294), + __webpack_require__(295), __webpack_require__(418), - __webpack_require__(311), + __webpack_require__(312), __webpack_require__(419), __webpack_require__(420), - __webpack_require__(52), + __webpack_require__(81), __webpack_require__(421), - __webpack_require__(310), + __webpack_require__(311), __webpack_require__(422), - __webpack_require__(315), + __webpack_require__(316), __webpack_require__(423), __webpack_require__(424), __webpack_require__(425), - __webpack_require__(317), + __webpack_require__(318), __webpack_require__(370), __webpack_require__(329), __webpack_require__(373) @@ -44479,12 +44667,12 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var size = __webpack_require__(42).size; + var size = __webpack_require__(39).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var subtract = load(__webpack_require__(30)); - var multiply = load(__webpack_require__(54)); + var matrix = load(__webpack_require__(50)); + var subtract = load(__webpack_require__(74)); + var multiply = load(__webpack_require__(83)); /** * Calculate the cross product for two vectors in three dimensional space. @@ -44569,13 +44757,13 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var array = __webpack_require__(42); + var array = __webpack_require__(39); var clone = __webpack_require__(3).clone; var isInteger = __webpack_require__(6).isInteger; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Create a diagonal matrix or retrieve the diagonal of a matrix @@ -44745,11 +44933,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var size = __webpack_require__(42).size; + var size = __webpack_require__(39).size; function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var multiply = load(__webpack_require__(54)); + var add = load(__webpack_require__(49)); + var multiply = load(__webpack_require__(83)); /** * Calculate the dot product of two vectors. The dot product of @@ -44831,10 +45019,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var clone = __webpack_require__(3).clone; - var _flatten = __webpack_require__(42).flatten; + var _flatten = __webpack_require__(39).flatten; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Flatten a multi dimensional matrix into a single dimensional matrix. @@ -44882,10 +45070,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var isInteger = __webpack_require__(6).isInteger; - var resize = __webpack_require__(42).resize; + var resize = __webpack_require__(39).resize; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Create a matrix filled with ones. The created matrix can have one or @@ -45021,16 +45209,16 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var DimensionError = __webpack_require__(31); + var DimensionError = __webpack_require__(41); var ArgumentsError = __webpack_require__(11); var isInteger = __webpack_require__(6).isInteger; var format = __webpack_require__(23).format; var clone = __webpack_require__(3).clone; - var array = __webpack_require__(42); + var array = __webpack_require__(39); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Resize a matrix @@ -45165,10 +45353,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var array = __webpack_require__(42); + var array = __webpack_require__(39); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Calculate the size of a matrix or scalar. @@ -45227,10 +45415,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var object = __webpack_require__(3); - var array = __webpack_require__(42); + var array = __webpack_require__(39); function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); /** * Squeeze a matrix, remove inner and outer singleton dimensions from a matrix. @@ -45313,13 +45501,13 @@ return /******/ (function(modules) { // webpackBootstrap function factory(type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var divide = load(__webpack_require__(309)); + var matrix = load(__webpack_require__(50)); + var divide = load(__webpack_require__(310)); var sum = load(__webpack_require__(428)); - var multiply = load(__webpack_require__(54)); + var multiply = load(__webpack_require__(83)); var dotDivide = load(__webpack_require__(353)); - var log = load(__webpack_require__(53)); - var isNumeric = load(__webpack_require__(59)); + var log = load(__webpack_require__(82)); + var isNumeric = load(__webpack_require__(87)); /** * Calculate the Kullback-Leibler (KL) divergence between two distributions @@ -45408,10 +45596,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var deepForEach = __webpack_require__(305); + var deepForEach = __webpack_require__(306); function factory (type, config, load, typed) { - var add = load(__webpack_require__(29)); + var add = load(__webpack_require__(51)); /** * Compute the sum of a matrix or a list with values. @@ -45498,12 +45686,12 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var deepForEach = __webpack_require__(305); + var deepForEach = __webpack_require__(306); function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var multiply = load(__webpack_require__(54)); - var divide = load(__webpack_require__(309)); + var add = load(__webpack_require__(49)); + var multiply = load(__webpack_require__(83)); + var divide = load(__webpack_require__(310)); var factorial = load(__webpack_require__(397)); var isInteger = load(__webpack_require__(400)); var isPositive = load(__webpack_require__(363)); @@ -45698,13 +45886,13 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var ArgumentsError = __webpack_require__(11); - var isCollection = __webpack_require__(303); + var isCollection = __webpack_require__(304); // TODO: rethink math.distribution // TODO: rework to a typed function function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); - var array = __webpack_require__(42); + var matrix = load(__webpack_require__(50)); + var array = __webpack_require__(39); /** * Create a distribution object with a set of random functions for given @@ -46016,10 +46204,10 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = [ __webpack_require__(436), __webpack_require__(437), - __webpack_require__(56), - __webpack_require__(79), + __webpack_require__(86), + __webpack_require__(62), __webpack_require__(336), - __webpack_require__(78), + __webpack_require__(58), __webpack_require__(438), __webpack_require__(439) ]; @@ -46035,13 +46223,13 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm05 = load(__webpack_require__(37)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm05 = load(__webpack_require__(76)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y. @@ -46215,7 +46403,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var equal = load(__webpack_require__(56)); + var equal = load(__webpack_require__(86)); /** * Test element wise whether two matrices are equal. @@ -46305,15 +46493,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Test whether value x is smaller or equal to y. @@ -46482,15 +46670,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm03 = load(__webpack_require__(36)); - var algorithm07 = load(__webpack_require__(57)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm03 = load(__webpack_require__(59)); + var algorithm07 = load(__webpack_require__(60)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); /** * Test whether two values are unequal. @@ -46685,10 +46873,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(304), - __webpack_require__(308), + __webpack_require__(305), + __webpack_require__(309), __webpack_require__(441), - __webpack_require__(313), + __webpack_require__(314), __webpack_require__(443), __webpack_require__(444), __webpack_require__(445), @@ -46703,11 +46891,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var flatten = __webpack_require__(42).flatten; + var flatten = __webpack_require__(39).flatten; function factory (type, config, load, typed) { - var add = load(__webpack_require__(29)); - var divide = load(__webpack_require__(49)); + var add = load(__webpack_require__(51)); + var divide = load(__webpack_require__(78)); var compare = load(__webpack_require__(436)); var partitionSelect = load(__webpack_require__(442)); @@ -46963,7 +47151,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var flatten = __webpack_require__(42).flatten; + var flatten = __webpack_require__(39).flatten; function factory (type, config, load, typed) { @@ -47045,10 +47233,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var deepForEach = __webpack_require__(305); + var deepForEach = __webpack_require__(306); function factory (type, config, load, typed) { - var multiply = load(__webpack_require__(48)); + var multiply = load(__webpack_require__(77)); /** * Compute the product of a matrix or a list with values. @@ -47129,12 +47317,12 @@ return /******/ (function(modules) { // webpackBootstrap var isInteger = __webpack_require__(6).isInteger; var isNumber = __webpack_require__(6).isNumber; - var flatten = __webpack_require__(42).flatten; - var isCollection = __webpack_require__(303); + var flatten = __webpack_require__(39).flatten; + var isCollection = __webpack_require__(304); function factory (type, config, load, typed) { - var add = load(__webpack_require__(75)); - var multiply = load(__webpack_require__(54)); + var add = load(__webpack_require__(49)); + var multiply = load(__webpack_require__(83)); var partitionSelect = load(__webpack_require__(442)); var compare = load(__webpack_require__(436)); @@ -47472,13 +47660,13 @@ return /******/ (function(modules) { // webpackBootstrap var DEFAULT_NORMALIZATION = 'unbiased'; - var deepForEach = __webpack_require__(305); + var deepForEach = __webpack_require__(306); function factory (type, config, load, typed) { - var add = load(__webpack_require__(29)); - var subtract = load(__webpack_require__(30)); - var multiply = load(__webpack_require__(48)); - var divide = load(__webpack_require__(49)); + var add = load(__webpack_require__(51)); + var subtract = load(__webpack_require__(74)); + var multiply = load(__webpack_require__(77)); + var divide = load(__webpack_require__(78)); /** * Compute the variance of a matrix or a list with values. @@ -47642,7 +47830,7 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var complexSqrt = typed.find(load(__webpack_require__(362)), ['Complex']); - var complexLog = typed.find(load(__webpack_require__(53)), ['Complex']); + var complexLog = typed.find(load(__webpack_require__(82)), ['Complex']); /** * Calculate the inverse cosine of a value. @@ -47727,7 +47915,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 450 */ /***/ function(module, exports, __webpack_require__) { - var pi = __webpack_require__(92).pi; + var pi = __webpack_require__(93).pi; var atanAcot = __webpack_require__(451); /** @@ -47773,9 +47961,9 @@ return /******/ (function(modules) { // webpackBootstrap /* 451 */ /***/ function(module, exports, __webpack_require__) { - var constants = __webpack_require__(92); + var constants = __webpack_require__(93); var asinAcsc = __webpack_require__(452); - var atan = __webpack_require__(93); + var atan = __webpack_require__(94); /** * Calculate the arctangent or arccotangent of x @@ -47839,7 +48027,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 452 */ /***/ function(module, exports, __webpack_require__) { - var pi = __webpack_require__(92).pi; + var pi = __webpack_require__(93).pi; var asin = __webpack_require__(453); var asinNewton = __webpack_require__(454); @@ -48117,7 +48305,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 456 */ /***/ function(module, exports, __webpack_require__) { - var constants = __webpack_require__(92); + var constants = __webpack_require__(93); /** * Reduce x within a period of pi (0, pi] with guard digits. @@ -48460,7 +48648,7 @@ return /******/ (function(modules) { // webpackBootstrap var atanAcot = __webpack_require__(451); function factory (type, config, load, typed) { - var complexLog = typed.find(load(__webpack_require__(53)), ['Complex']); + var complexLog = typed.find(load(__webpack_require__(82)), ['Complex']); /** * Calculate the inverse tangent of a value. @@ -48871,7 +49059,7 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { var complexSqrt = typed.find(load(__webpack_require__(362)), ['Complex']); - var complexLog = typed.find(load(__webpack_require__(53)), ['Complex']); + var complexLog = typed.find(load(__webpack_require__(82)), ['Complex']); /** * Calculate the inverse sine of a value. @@ -49298,15 +49486,15 @@ return /******/ (function(modules) { // webpackBootstrap function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var algorithm02 = load(__webpack_require__(354)); - var algorithm03 = load(__webpack_require__(36)); + var algorithm03 = load(__webpack_require__(59)); var algorithm09 = load(__webpack_require__(356)); - var algorithm11 = load(__webpack_require__(55)); - var algorithm12 = load(__webpack_require__(58)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm11 = load(__webpack_require__(84)); + var algorithm12 = load(__webpack_require__(61)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Calculate the inverse tangent function with two arguments, y/x. @@ -49450,7 +49638,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 473 */ /***/ function(module, exports, __webpack_require__) { - var constants = __webpack_require__(92); + var constants = __webpack_require__(93); var atanAcot = __webpack_require__(451); /** @@ -49849,7 +50037,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 479 */ /***/ function(module, exports, __webpack_require__) { - var constants = __webpack_require__(92); + var constants = __webpack_require__(93); var cosSinSecCsc = __webpack_require__(455); var sinToCos = __webpack_require__(458); var reduceToPeriod = __webpack_require__(456); @@ -50593,12 +50781,12 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; function factory (type, config, load, typed) { - var latex = __webpack_require__(32); + var latex = __webpack_require__(29); - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); - var algorithm13 = load(__webpack_require__(40)); - var algorithm14 = load(__webpack_require__(47)); + var algorithm13 = load(__webpack_require__(55)); + var algorithm14 = load(__webpack_require__(56)); /** * Change the unit of a value. @@ -50686,19 +50874,19 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = [ __webpack_require__(492), - __webpack_require__(296), - __webpack_require__(60), + __webpack_require__(297), + __webpack_require__(88), __webpack_require__(400), __webpack_require__(350), - __webpack_require__(59), + __webpack_require__(87), __webpack_require__(363), __webpack_require__(414), - __webpack_require__(301), + __webpack_require__(302), __webpack_require__(442), __webpack_require__(493), __webpack_require__(494), - __webpack_require__(61), - __webpack_require__(298) + __webpack_require__(89), + __webpack_require__(299) ]; @@ -50838,10 +51026,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var size = __webpack_require__(42).size; + var size = __webpack_require__(39).size; function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(33)); + var matrix = load(__webpack_require__(50)); var asc = load(__webpack_require__(436)); var desc = function (a, b) { return -asc(a, b); @@ -51002,8 +51190,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; var ArgumentsError = __webpack_require__(11); - var DimensionError = __webpack_require__(31); - var IndexError = __webpack_require__(44); + var DimensionError = __webpack_require__(41); + var IndexError = __webpack_require__(42); module.exports = [ { diff --git a/dist/math.map b/dist/math.map index 2e3c980f1..095053429 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","core","isFactory","deepExtend","typedFactory","emitter","importFactory","configFactory","options","load","Error","instance","index","factories","indexOf","type","_config","typed","push","instances","Object","mixin","expression","transform","epsilon","matrix","number","precision","predictable","clone","x","undefined","Array","isArray","map","value","Number","valueOf","String","Boolean","Date","isBigNumber","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","constructor","deepEqual","i","len","length","canDefineProperty","defineProperty","get","e","lazy","object","fn","_value","_uninitialized","set","configurable","enumerable","traverse","path","obj","names","split","name","typedFunction","digits","createTyped","types","test","isComplex","isFraction","isUnit","isMatrix","isDenseMatrix","isSparseMatrix","isImmutableDenseMatrix","isRange","isIndex","isResultSet","isHelp","conversions","from","to","convert","BigNumber","Complex","toNumber","Fraction","n","isNaN","array","DenseMatrix","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","apply","getTypeTest","entry","hint","toLowerCase","getName","fns","err","data","actual","expected","createError","argCount","message","actualType","getTypeOf","_expected","_fn","anyType","contains","join","Refs","categories","Param","varArgs","_types","trim","_varArgs","substr","Signature","params","_params","param","SyntaxError","Node","signature","childs","parseSignatures","rawSignatures","keys","signatures","ignore","expanded","expand","signature_i","toString","existing","cmp","compare","sort","t","j","other","splice","mapSignatures","normalized","hasConversions","parseTree","nodeSignature","filtered","entries","filter","overlapping","concat","getArgs","count","args","_typed","refs","_signatures","node","code","_name","_args","maxParams","toCode","body","Function","max","find","arr","str","match","conversion","prototype","add","category","cat","ac","bc","ai","bi","slice","toConversion","recurse","newParam","prefix","ref","comment","getTests","arg","tests","bind","allTypes","exactTypes","conversion_i","_innerCode","nextAnyType","exceptions","_exceptions","string, Object","...Function","addType","addConversion","NumberFormatter","isNumber","isInteger","isFinite","Math","round","sign","format","Infinity","notation","toFixed","toExponential","toPrecision","exponential","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","diff","abs","coefficients","exponent","parseFloat","dot","zeros","d","parseInt","rounded","roundDigits","pp","first","shift","lower","upper","pow","unshift","removed","pop","Emitter","on","off","once","emit","E","callback","ctx","self","evtArr","evts","liveEvents","math_import","num","ArgumentsError","_importFactory","forEach","isSupportedType","_import","silent","wrap","_wrap","isTypedFunction","override","_importTransform","wrapper","namespace","resolver","min","stack","isArgumentsError","prev","curr","Decimal","toJSON","mathjs","fromJSON","json","global","coefficientToString","s","z","r","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","k","rd","ceil","mathpow","checkRM","method","outOfRange","ifExceptionsThrow","checkArg","MAX_DIGITS","exp","pr","denom","guard","sd","sum","rep","one","NaN","external","log","LN10","rnd","div","charAt","getCoeffLength","v","more","error","intPow","ln","c0","x1","x2","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","floor","NUMERALS","P","EXP_LIMIT","INT_POW_LIMIT","yc","l","base","base10","inf","sd10","xLTy","reverse","q","half","sqrt","dp","neg","pos","isNeg","f","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","u","strL","xe","toBaseOut","baseIn","baseOut","arrL","multiplyInteger","temp","carry","aL","bL","subtract","logbase","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","parse","maxOrMin","ltgt","random","rand","Uint32Array","copy","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","isNum","orig","valid","search","substring","bignumber","string","Array | Matrix","deepMap","toTex",1,"skipZeros","bool","boolean","isZero","lcase","Chain","isChain","createProxy","chainify","createLazyProxy","done","arg0","arg1","formatArray","formatNumber","formatBigNumber","isString","endsWith","text","start","end","fraction","syntax","gt","toExpNeg","toExpPos","gte","lt","toSignificantDigits","any","re","im","construct","fromPolar","phi","skipWhitespace","next","isDigitDot","isDigit","revert","oldIndex","parseNumber","parseComplex","cnext","unexpectedEnd","Unit","separator","second","hasBase","BASE_UNITS","ANGLE","cos","sin","toPolar","atan2","equals","strRe","strIm","isNumeric","units","dimensions","unit","UNIT_NONE","PREFIX_NONE","power","_normalize","fixPrefix","isUnitListSimplified","tentativeNumber","tentativeIndex","parseUnit","unitName","parseCharacter","toFind","_findUnit","UNITS","prefixLen","prefixName","prefixes","multiply","divide","equal","valueStr","powerMultiplierCurrent","expectingUnit","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","res","BASE_DIMENSIONS","baseDim","UNIT_SYSTEMS","auto","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","offset","_denormalize","prefixValue","isValuelessUnit","equalBase","inverted","JSON","stringify","valThis","valOther","valuelessUnit","toNumeric","formatUnits","simplifyUnitListLazy","matchingBase","proposedUnitList","currentUnitSystem","matchingUnit","strNum","strDen","nNum","nDen","_bestPrefix","unitStr","absValue","bestPrefix","bestDiff","scientific","PREFIXES","NONE","SHORT","da","h","M","G","T","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","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","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","sec","minute","hour","day","hertz","reciprocal","Hz","rad","deg","grad","cycle","arcsec","arcmin","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","dyn","dyne","lbf","poundforce","J","joule","erg","Wh","eV","electronvolt","W","watt","hp","Pa","psi","atm","coulomb","C","farad","F","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","B","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","seconds","minutes","hours","days","radians","degree","degrees","gradian","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","number, number","Complex, Complex","BigNumber, BigNumber","plus","Fraction, Fraction","Unit, Unit","latex","addScalar","unaryMinus","algorithm01","algorithm03","algorithm05","algorithm10","algorithm13","algorithm14","minus","sub","Matrix, Matrix","xsize","size","ysize","DimensionError","storage","Array, Array","Array, Matrix","Matrix, Array","Matrix, any","any, Matrix","Array, any","any, Array","operators","relation","RangeError","isDimensionError","symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","Omicron","omicron","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","Omega","omega","true","false","Inf","infinity","oo","lim","transpose","factorial","dotPow","unaryPlus","bitNot","not","dotMultiply","dotDivide","mod","leftShift","rightArithShift","rightLogShift","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","toSymbol","_create","datatype","Matrix","string, string","Array | Matrix, string","Array | Matrix, string, string",2,"denseMatrix","sparseMatrix","inverse","adata","_data","asize","_size","adt","_datatype","bvalues","_values","bindex","_index","bptr","_ptr","bsize","bdt","rows","columns","dt","cf","cdata","w","mark","k0","k1","zero","equalScalar","SparseMatrix","avalues","aindex","aptr","eq","cvalues","cindex","cptr","values","ptr","xa","xb","wa","wb","wai","wbi","va","vb","vc","boolean, boolean","bdata","csize","_iterate","level","av","bv","cv","util","_validate","dim","dimNext","child","_resize","defaultValue","elem","oldLen","newLen","minLen","UNINITIALIZED","_squeeze","dims","ii","_unsqueeze","IndexError","validate","isScalar","validateIndex","resize","_defaultValue","squeeze","unsqueeze","outer","flatten","flat","isIndexError","isBoolean","memoize","hasher","cache","hash","multiplyScalar","times","mul","number | Fraction | BigNumber, Unit","Unit, number | Fraction | BigNumber","_divideComplex","den","divideScalar","_pow","_powComplex","_powArray","eye","px","_powMatrix","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","Unit, number","_eyeVector","_eye","cols","Big","diagonal","minimum","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","Array, string","Matrix, string","_logNumber","_logComplex","isNegative","any, any","algorithm11","_validateMatrixDimensions","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","row","jb","kb0","kb1","last","cij","kb","ib","brows","vbi","ka0","ka1","ka","ia","p1","ic","vbij","p0","algorithm07","algorithm12","_scatter","number | BigNumber | Fraction | boolean","Complex | Unit | string","any, Object | function | number","_typeof","Unit, string | Unit","complex","assign","thorwInvalidParam","gcd","MAX_CYCLE_LEN","p2","D","modpow","cycleLen","cycleStart","rem1","rem2","lcm","divisible","toFraction","excludeWhole","whole","toLatex","ret","cycLen","cycOff","webpackPolyfill","deprecate","paths","children","numerator","denominator","_storage","subset","replacement","toArray","preprocess","_get","_getSubmatrix","range","dimension","_set","submatrix","sSize","iSize","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","index_i","me","kSuper","kSub","ms","swapRows","_swapRows","vi","dense","_createFromMatrix","_createFromArray","source","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","pv","x0","y0","_getValueIndex","_remove","_insert","top","bottom","ins","invoke","_map","minRow","maxRow","minColumn","maxColumn","_toArray","_forEachRow","kx","ky","vx","vy","sparse","Spa","_heap","FibonacciHeap","isSpa","insert","accumulate","heap","nodes","extractMinimum","swap","nodei","nodej","remove","algorithm04","_minimum","oneOverLogPhi","isFibonacciHeap","left","right","clear","isEmpty","numberOfChildren","tempRight","parent","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","_linkNodes","arraySize","numRoots","ImmutableDenseMatrix","_min","_max","Index","ranges","_dimensions","_isScalar","_createImmutableMatrix","strings","Range","step","nums","invalid","some","...number | BigNumber | Range | Array | Matrix","ResultSet","null","number | BigNumber | Fraction, string","fixedUnit","bigConstants","PI","LN2","LOG2E","LOG10E","SQRT1_2","SQRT2","version","atan","pi4th","yPrev","docs","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","lsolve","lup","lusolve","slu","usolve","cbrt","cube","fix","hypot","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","inv","ones","trace","combinations","kldivergence","multinomial","permutations","pickRandom","randomInt","mean","median","mode","quantileSeq","std","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","partitionSelect","isPositive","seealso","expr","compile","extra_nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","currentIsAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","parseBlock","visible","blocks","ConstantNode","parseFunctionAssignment","BlockNode","parseAssignment","parseConditional","isSymbolNode","AssignmentNode","isIndexNode","UpdateNode","isFunctionNode","FunctionAssignmentNode","parseLogicalOr","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","SymbolNode","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","isConstantNode","~","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","FunctionNode","IndexNode","tPrev","parseMatrix","parseRow","ArrayNode","parseParentheses","ParenthesisNode","parseEnd","col",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","every","isNode","isArrayNode","_compile","defs","asMatrix","_ifNode","_toString","_toTex","childNode","_validateScope","scope","symbol","keywords","eval","defsCode","factoryCode","_traverse","_transform","customString","customTex","getIdentifier","getContent","needParenthesis","parenthesis","precedence","getPrecedence","exprPrecedence","isAssignmentNode","_node","identifier","properties","getAssociativity","property","associativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","associativeWith","latexLeftParens","latexRightParens","latexParens","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","block","isBlockNode","js","isConditionalNode","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","getType","SUPPORTED_TYPES","numConfig","isFunctionAssignmentNode","childArgs","variable","jsExpr","compileSubset","someUseEnd","rangesUseEnd","useEnd","isRangeNode","objectName","calculateNecessaryParentheses","parens","startPrecedence","stepPrecedence","endPrecedence","undef","op","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","lhsPrecedence","assocWithLhs","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","isOperatorNode","jsArgs","assoc","operand","lhs","rhs","lhsTex","rhsTex","expandTemplate","template","regex","inputPos","exec","ReferenceError","isRaw","rawArgs","paramsName","nodeToString","nodeToTex","latexConverter","customToTex","content","isParenthesisNode","isUpdateNode","Array | Matrix, Object","doc","Help","string | Array | Matrix","string | Array | Matrix, Object","Parser","_parse","isParser","...any","lastIndex","errorTransform","...Array | Matrix | number | BigNumber","prevDim","matrices","_concat","...string","concatDim","filterTransform","_scope","Array, function","_filterCallback","Array, RegExp","_filterRegExp","Matrix, function","Matrix, RegExp","regexp","Array | Matrix, function","_forEach","isSet","isCollection","_largest","deepForEach","Array | Matrix, number | BigNumber","reduce","...","_reduce","mat","val","tran","_switch","I","tmp","_nmean","_mean","Array | Matrix, Array | Matrix","any, Array | Matrix","_inv","Ac","Bc","Ar","Br","_det","compute_mu","fa","_smallest","_out","_strRange","includeEnd","_bigRangeInc","_bigRangeEx","_rangeInc","_rangeEx","ZERO","lte","ONE","string, boolean","number, number, number","number, number, boolean","number, number, number, boolean","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","BigNumber, BigNumber, BigNumber, boolean","_getSubstring","strLen","_setSubstring","chars","Array, Index","Matrix, Index","string, Index","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","string, Index, string, string","parser","desc","_denseLUP","_sparseLUP","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","swapIndeces","spa","vkj","vik","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","qr","post","_vcount","unz","lnz","leftmost","head","tail","nque","pa","cs_flip","cs_fkeep","cs_tdfs","lemax","cm","_createTargetMatrix","_diag","k2","pj","nvi","pk","eln","pn","cnz","nv","elen","hhead","_initializeQuotientGraph","nel","_initializeDegreeLists","mindeg","elenk","nvk","dk","pk1","pk2","_wclear","wnvi","dext","p3","p4","nvj","jlast","ok","at","tindex","tptr","nz","_denseTranspose","_sparseTranspose","transposedRow","transposed","t0","t1","ata","inext","ancestor","cs_leaf","maxfirst","prevleaf","colcount","jleaf","sparent","jprev","cs_spsolve","tol","ipiv","xabs","pivot","cs_reach","lo","gvalues","gindex","gptr","gsize","cs_dfs","cs_marked","cs_mark","cs_unflip","jnew","solveValidation","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","msize","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_sparseBackwardSubstitution","_denseBackwardSubstitution","_cbrtNumber","result","negate","_cbrtComplex","allRoots","polar","principal","complexMultiply","complexExp","all","_cbrtBigNumber","_cbrtUnit","third","Complex, boolean","algorithm02","algorithm09","_gcdBigNumber","isInt","_gcd","Matrix, number | BigNumber","number | BigNumber, Matrix","Array, number | BigNumber","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","_hypot","largest","... number | BigNumber","_sqrtNumber","_sqrtComplex","_lcmBigNumber","algorithm06","_lcm","scatter","update","_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","_denseTrace","_sparseTrace","_bigNthRoot","_nthRoot","_nthComplexRoot","Complex, number","roots","NO_INT","_round","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","number | Complex | BigNumber, Matrix","number | Complex | BigNumber, Array","decimals","_zeros","hasBigNumbers","...number | BigNumber | string","boolean | string | null","_xgcd","lastx","lasty","_xgcdBigNumber","bigBitAnd","bitwise","decCoefficientToBinaryString","func","xBits","yBits","xSign","ySign","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","bigBitNot","bigBitOr","negOne","bigBitXor","algorithm08","bigLeftShift","bigRightArithShift","kFactorial","negativeOne","kChooseI","iPower","bigFactorial","twoN","threeN","fourN","fiveN","real","twoPiSqrt","isPositiveInteger","dividedBy","Array, Array, Array","plane","_3d","_4d","_intersectLinePlane","Array, Array, Array, Array","_2d","_intersect2d","_intersect3d","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","y1","y2","x3","y3","x4","y4","d1343","d4321","d1321","d4343","d2121","ta","tb","pax","pay","pbx","pby","z1","z2","z3","z4","paz","pbz","py","pz","xCoeff","yCoeff","constant","_distancePointLine2D","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","_parametricLine","_distancePointLine3D","_distance2d","_distance3d","Object, Object","xCoeffLine","yCoeffLine","pointZ","z0","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_objectToArray","o","yDiff","xDiff","radicant","zDiff","_cross","xSize","ySize","_createDiagonalMatrix","_getDiagonal","dm","vector","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_flatten","_ones","_resizeString","defaultChar","number | Complex | BigNumber | Unit | boolean | null","_kldiv","plength","qlength","sumq","sump","qnorm","pnorm","_sum","distribution","distributions","randFunctions","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","_deepEqual","_unequal","_median","mid","middle2","middle","number | BigNumber | Unit","number | BigNumber | Unit, number | BigNumber | Unit","asc","_partitionSelect","quickSelect","Array | Matrix, number","Array | Matrix, number, string","Array | Matrix, number, function","_mode","_prod","probOrN","sorted","probArr","dataArr","_quantileSeq","nPlusOne","intN","currProb","prob","fracPart","integerPart","integerPartNumber","_std","normalization","variance","_var","DEFAULT_NORMALIZATION","_complexAcos","temp1","temp2","complexSqrt","temp3","temp4","complexLog","acosAsec","atanAcot","toDP","constants","asinAcsc","halfPi","absX","asinNewton","wasReduced","polyNum","constNum","constDen","bigK","cosSinSecCsc","sinToCos","oldPrecision","tolerance","maxp","localPrecision","maxIter","tmp0","tmp1","tmp2","reduceToPeriod","cosSin","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","_complexAcosh","complexAcos","acoshAsinhAsechAcsch","x2PlusOrMinus","complexAtan","HALF_PI","_complexAcoth","atanhAcoth","_complexAtanh","noIM","oneMinus","onePlus","_complexAcsc","complexAsin","_complexAsin","_complexAsec","_complexAsech","bigAtan2","_cosh","ep","en","coshSinhCschSech","_sinh","cim","sim","tanCot","_coth","tanhCoth","posExp","negExp","_csch","_sech","_tanh","Unit, Unit | string","print","_print","string, Object, number","original","_comparator","_arrayIsVector","_matrixIsVector"],"mappings":"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,KAAQ,OACRsH,SAAY,aACZ2Q,QACE,qBACA,UACA,4BAEFi0B,YAAe,2HACfC,UACE,gBACA,uBAEF8G,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZ2Q,QACE,qBACA,WAEFi0B,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,cACRsH,SAAY,aACZ2Q,QACE,iCACA,gDACA,+BAEFi0B,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEF8G,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAMC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZ2Q,QACE,oBACA,SACA,yBAEFi0B,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZ2Q,QACE,oBACA,UAEFi0B,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEF8G,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZ2Q,QACE,oBACA,SACA,yBAEFi0B,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZ2Q,QACE,WAEFi0B,YAAe,oDACfC,UACE,YACA,kBAEF8G,SACE,MACA,OACA,UAOC,SAASz4C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZ2Q,QACE,YAEFi0B,YAAe,6FACfC,UACE,cAEF8G,SACE,OACA,QACA,W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"} \ No newline at end of file +{"version":3,"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","core","isFactory","deepExtend","typedFactory","emitter","importFactory","configFactory","options","load","Error","instance","index","factories","indexOf","type","_config","typed","push","instances","Object","mixin","expression","transform","epsilon","matrix","number","precision","predictable","clone","x","undefined","Array","isArray","map","value","Number","valueOf","String","Boolean","Date","isBigNumber","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","constructor","deepEqual","i","len","length","canDefineProperty","defineProperty","get","e","lazy","object","fn","_value","_uninitialized","set","configurable","enumerable","traverse","path","obj","names","split","name","typedFunction","digits","createTyped","types","test","isComplex","isFraction","isUnit","isMatrix","isDenseMatrix","isSparseMatrix","isImmutableDenseMatrix","isRange","isIndex","isResultSet","isHelp","conversions","from","to","convert","BigNumber","Complex","toNumber","Fraction","n","isNaN","array","DenseMatrix","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","apply","getTypeTest","entry","hint","toLowerCase","getName","fns","err","data","actual","expected","createError","argCount","message","actualType","getTypeOf","_expected","_fn","anyType","contains","join","Refs","categories","Param","varArgs","_types","trim","_varArgs","substr","Signature","params","_params","param","SyntaxError","Node","signature","childs","parseSignatures","rawSignatures","keys","signatures","ignore","expanded","expand","signature_i","toString","existing","cmp","compare","sort","t","j","other","splice","mapSignatures","normalized","hasConversions","parseTree","nodeSignature","filtered","entries","filter","overlapping","concat","getArgs","count","args","_typed","refs","_signatures","node","code","_name","_args","maxParams","toCode","body","Function","max","find","arr","str","match","conversion","prototype","add","category","cat","ac","bc","ai","bi","slice","toConversion","recurse","newParam","prefix","ref","comment","getTests","arg","tests","bind","allTypes","exactTypes","conversion_i","_innerCode","nextAnyType","exceptions","_exceptions","string, Object","...Function","addType","addConversion","NumberFormatter","isNumber","isInteger","isFinite","Math","round","sign","format","Infinity","notation","toFixed","toExponential","toEngineering","toPrecision","exponential","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","diff","abs","coefficients","exponent","parseFloat","dot","zeros","d","parseInt","rounded","roundDigits","newExp","significandsDiff","expDiff","decimalIdx","decimals","decimalVal","pp","first","shift","lower","upper","pow","unshift","removed","pop","Emitter","on","off","once","emit","E","callback","ctx","listener","self","_","evtArr","evts","liveEvents","math_import","num","ArgumentsError","_importFactory","forEach","isSupportedType","_import","silent","wrap","_wrap","isTypedFunction","override","_importTransform","wrapper","namespace","resolver","min","stack","isArgumentsError","prev","curr","Decimal","toJSON","mathjs","fromJSON","json","global","coefficientToString","s","z","r","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","k","rd","ceil","mathpow","checkRM","method","outOfRange","ifExceptionsThrow","checkArg","MAX_DIGITS","exp","pr","denom","guard","sd","sum","rep","one","NaN","external","log","LN10","rnd","div","charAt","getCoeffLength","v","more","error","intPow","ln","c0","x1","x2","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","floor","NUMERALS","P","EXP_LIMIT","INT_POW_LIMIT","yc","l","base","base10","inf","sd10","xLTy","reverse","q","half","sqrt","dp","neg","pos","isNeg","f","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","u","strL","xe","toBaseOut","baseIn","baseOut","arrL","multiplyInteger","temp","carry","aL","bL","subtract","logbase","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","parse","maxOrMin","ltgt","random","rand","Uint32Array","copy","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","isNum","orig","valid","search","substring","bignumber","","string","Array | Matrix","deepMap","toTex",0,1,"skipZeros","bool","boolean","isZero","lcase","Chain","isChain","createProxy","chainify","createLazyProxy","done","arg0","arg1","formatArray","formatNumber","formatBigNumber","isString","endsWith","text","start","end","fraction","syntax","gt","toExpNeg","toExpPos","gte","lt","toSignificantDigits","any","re","im","construct","fromPolar","phi","skipWhitespace","next","isDigitDot","isDigit","revert","oldIndex","parseNumber","parseComplex","cnext","unexpectedEnd","separator","second","hasBase","cos","sin","toPolar","atan2","equals","strRe","strIm","latex","complex","number, number","BigNumber, BigNumber",2,"symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","Omicron","omicron","Pi","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","Inf","infinity","oo","lim","operators","transpose","factorial","dotPow","unaryPlus","unaryMinus","bitNot","not","multiply","divide","dotMultiply","dotDivide","mod","leftShift","rightArithShift","rightLogShift","equal","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","units","deg","toSymbol","assign","thorwInvalidParam","gcd","MAX_CYCLE_LEN","p1","p2","M","w","A","B","C","D","N","modpow","cycleLen","cycleStart","rem1","rem2","sub","mul","lcm","inverse","divisible","toFraction","excludeWhole","whole","toLatex","g","ret","cycLen","cycOff","webpackPolyfill","deprecate","paths","children","numerator","denominator","Matrix","storage","_storage","datatype","subset","replacement","defaultValue","resize","size","toArray","util","_validate","dim","DimensionError","dimNext","child","_resize","elem","oldLen","newLen","minLen","UNINITIALIZED","_squeeze","dims","ii","_unsqueeze","IndexError","validate","isScalar","validateIndex","_defaultValue","squeeze","unsqueeze","outer","flatten","flat","relation","RangeError","isDimensionError","isIndexError","isBoolean","memoize","hasher","cache","hash","JSON","stringify","_data","_size","_datatype","preprocess","_get","_getSubmatrix","last","range","dimension","_set","submatrix","sSize","iSize","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","index_i","me","diagonal","kSuper","kSub","rows","columns","ms","swapRows","_swapRows","vi","dense","SparseMatrix","_createFromMatrix","ptr","_values","values","_index","_ptr","_createFromArray","equalScalar","source","eq","zero","row","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","pv","x0","y0","_getValueIndex","_remove","_insert","top","bottom","ins","k0","k1","invoke","_map","minRow","maxRow","minColumn","maxColumn","_toArray","_forEachRow","kx","ky","vx","vy","sparse","boolean, boolean","Fraction, Fraction","Complex, Complex","Unit, Unit","equalBase","string, string","Spa","_heap","FibonacciHeap","isSpa","insert","accumulate","heap","nodes","extractMinimum","swap","nodei","nodej","remove","addScalar","algorithm01","algorithm04","algorithm10","algorithm13","algorithm14","Matrix, Matrix","Array, Array","Array, Matrix","Matrix, Array","Matrix, any","any, Matrix","Array, any","any, Array","_create","Array | Matrix, string","Array | Matrix, string, string","plus","res","fixPrefix","denseMatrix","sparseMatrix","adata","asize","adt","bvalues","bindex","bptr","bsize","bdt","dt","cf","cdata","mark","avalues","aindex","aptr","cvalues","cindex","cptr","xa","xb","wa","wb","bdata","csize","_iterate","level","av","bv","cv","_minimum","oneOverLogPhi","isFibonacciHeap","degree","minimum","left","right","clear","isEmpty","numberOfChildren","tempRight","parent","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","_linkNodes","arraySize","numRoots","algorithm03","algorithm07","algorithm12","_scatter","va","vb","ImmutableDenseMatrix","_min","_max","Index","ranges","_dimensions","_isScalar","_createImmutableMatrix","strings","dimensions","Range","step","nums","invalid","some","...number | BigNumber | Range | Array | Matrix","Unit","Unit, string | Unit","unit","valuelessUnit","ResultSet","null","isNumeric","UNIT_NONE","PREFIX_NONE","power","_normalize","isUnitListSimplified","tentativeNumber","tentativeIndex","parseUnit","unitName","parseCharacter","toFind","_findUnit","UNITS","prefixLen","prefixName","prefixes","valueStr","powerMultiplierCurrent","expectingUnit","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","BASE_DIMENSIONS","baseDim","UNIT_SYSTEMS","auto","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","offset","_denormalize","prefixValue","isValuelessUnit","BASE_UNITS","inverted","valThis","valOther","toNumeric","formatUnits","simplifyUnitListLazy","matchingBase","proposedUnitList","currentUnitSystem","matchingUnit","strNum","strDen","nNum","nDen","isImaginary","isReal","_bestPrefix","unitStr","absValue","absUnitValue","bestPrefix","bestDiff","scientific","PREFIXES","NONE","SHORT","da","h","G","T","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","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","ANGLE","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","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","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","sec","minute","hour","day","week","month","year","decade","century","millennium","hertz","reciprocal","Hz","rad","grad","cycle","arcsec","arcmin","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","newton","dyn","dyne","lbf","poundforce","J","joule","erg","Wh","eV","electronvolt","W","watt","hp","VAR","VA","Pa","atm","coulomb","farad","F","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","seconds","minutes","hours","days","radians","degrees","gradian","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","algorithm05","minus","xsize","ysize","wai","wbi","vc","multiplyScalar","times","number | Fraction | BigNumber | Complex, Unit","Unit, number | Fraction | BigNumber | Complex","_divideComplex","den","divideScalar","Unit, number | Fraction | BigNumber","number | Fraction | BigNumber, Unit","_pow","_powComplex","_powArray","eye","px","_powMatrix","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","Unit, number","_eyeVector","_eye","cols","Big","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","Array, string","Matrix, string","_logNumber","_logComplex","isNegative","any, any","algorithm11","_validateMatrixDimensions","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","jb","kb0","kb1","cij","kb","ib","brows","vbi","ka0","ka1","ka","ia","ic","vbij","p0","number | BigNumber | Fraction | boolean","Complex | Unit | string","any, Object | function | number","_typeof","number | BigNumber | Fraction | Complex, string","fixedUnit","bigConstants","PI","LN2","LOG2E","LOG10E","SQRT1_2","SQRT2","version","atan","pi4th","yPrev","docs","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","lsolve","lup","lusolve","slu","usolve","cbrt","cube","fix","hypot","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","inv","ones","trace","combinations","kldivergence","multinomial","permutations","pickRandom","randomInt","mean","median","mode","quantileSeq","std","acos","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atanh","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","partitionSelect","isPositive","seealso","expr","compile","extra_nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","currentIsAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","parseBlock","visible","blocks","ConstantNode","parseFunctionAssignment","BlockNode","parseAssignment","parseConditional","isSymbolNode","AssignmentNode","isIndexNode","UpdateNode","isFunctionNode","FunctionAssignmentNode","parseLogicalOr","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","SymbolNode","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","isConstantNode","~","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","FunctionNode","IndexNode","tPrev","parseMatrix","parseRow","ArrayNode","parseParentheses","ParenthesisNode","parseEnd","col",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","every","isNode","isArrayNode","_compile","defs","asMatrix","_ifNode","_toString","_toTex","childNode","_validateScope","scope","symbol","keywords","eval","defsCode","factoryCode","_traverse","_transform","customString","customTex","getIdentifier","getContent","needParenthesis","parenthesis","precedence","getPrecedence","exprPrecedence","isAssignmentNode","_node","identifier","properties","getAssociativity","property","associativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","associativeWith","latexLeftParens","latexRightParens","latexParens","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","block","isBlockNode","js","isConditionalNode","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","valueType","getType","SUPPORTED_TYPES","numConfig","isFunctionAssignmentNode","childArgs","variable","jsExpr","compileSubset","someUseEnd","rangesUseEnd","useEnd","isRangeNode","objectName","calculateNecessaryParentheses","parens","startPrecedence","stepPrecedence","endPrecedence","undef","op","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","lhsPrecedence","assocWithLhs","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","isOperatorNode","jsArgs","assoc","operand","lhs","rhs","lhsTex","rhsTex","expandTemplate","template","regex","inputPos","exec","ReferenceError","isRaw","rawArgs","paramsName","nodeToString","nodeToTex","latexConverter","customToTex","content","isParenthesisNode","isUpdateNode","Array | Matrix, Object","doc","Help","string | Array | Matrix","string | Array | Matrix, Object","Parser","_parse","isParser","...any","lastIndex","errorTransform","...Array | Matrix | number | BigNumber","prevDim","matrices","_concat","...string","concatDim","filterTransform","_scope","Array, function","_filterCallback","Array, RegExp","_filterRegExp","Matrix, function","Matrix, RegExp","regexp","Array | Matrix, function","_forEach","isSet","isCollection","_largest","deepForEach","Array | Matrix, number | BigNumber","reduce","...","_reduce","mat","val","tran","_switch","I","tmp","_nmean","_mean","Array | Matrix, Array | Matrix","any, Array | Matrix","_inv","Ac","Bc","Ar","Br","_det","compute_mu","fa","_smallest","_out","_strRange","includeEnd","_bigRangeInc","_bigRangeEx","_rangeInc","_rangeEx","ZERO","lte","ONE","string, boolean","number, number, number","number, number, boolean","number, number, number, boolean","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","BigNumber, BigNumber, BigNumber, boolean","_getSubstring","strLen","_setSubstring","chars","Array, Index","Matrix, Index","string, Index","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","string, Index, string, string","parser","desc","_denseLUP","_sparseLUP","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","swapIndeces","spa","vkj","vik","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","qr","post","_vcount","unz","lnz","leftmost","head","tail","nque","pa","cs_flip","cs_fkeep","cs_tdfs","lemax","cm","_createTargetMatrix","_diag","k2","pj","nvi","pk","eln","pn","cnz","nv","elen","hhead","_initializeQuotientGraph","nel","_initializeDegreeLists","mindeg","elenk","nvk","dk","pk1","pk2","_wclear","wnvi","dext","p3","p4","nvj","jlast","ok","at","tindex","tptr","nz","_denseTranspose","_sparseTranspose","transposedRow","transposed","t0","t1","ata","inext","ancestor","cs_leaf","maxfirst","prevleaf","colcount","jleaf","sparent","jprev","cs_spsolve","tol","ipiv","xabs","pivot","cs_reach","lo","gvalues","gindex","gptr","gsize","cs_dfs","cs_marked","cs_mark","cs_unflip","jnew","solveValidation","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","msize","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_sparseBackwardSubstitution","_denseBackwardSubstitution","_cbrtNumber","result","negate","_cbrtComplex","allRoots","polar","principal","complexMultiply","complexExp","all","_cbrtBigNumber","_cbrtUnit","third","Complex, boolean","algorithm02","algorithm09","_gcdBigNumber","isInt","_gcd","Matrix, number | BigNumber","number | BigNumber, Matrix","Array, number | BigNumber","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","_hypot","largest","... number | BigNumber","_sqrtNumber","_sqrtComplex","_lcmBigNumber","algorithm06","_lcm","scatter","update","_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","_denseTrace","_sparseTrace","_bigNthRoot","_nthRoot","_nthComplexRoot","Complex, number","roots","NO_INT","_round","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","number | Complex | BigNumber, Matrix","number | Complex | BigNumber, Array","_zeros","hasBigNumbers","...number | BigNumber | string","boolean | string | null","_xgcd","lastx","lasty","_xgcdBigNumber","bigBitAnd","bitwise","decCoefficientToBinaryString","func","xBits","yBits","xSign","ySign","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","bigBitNot","bigBitOr","negOne","bigBitXor","algorithm08","bigLeftShift","bigRightArithShift","kFactorial","negativeOne","kChooseI","iPower","bigFactorial","twoN","threeN","fourN","fiveN","real","twoPiSqrt","isPositiveInteger","dividedBy","Array, Array, Array","plane","_3d","_4d","_intersectLinePlane","Array, Array, Array, Array","_2d","_intersect2d","_intersect3d","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","y1","y2","x3","y3","x4","y4","d1343","d4321","d1321","d4343","d2121","ta","tb","pax","pay","pbx","pby","z1","z2","z3","z4","paz","pbz","py","pz","xCoeff","yCoeff","constant","_distancePointLine2D","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","_parametricLine","_distancePointLine3D","_distance2d","_distance3d","Object, Object","xCoeffLine","yCoeffLine","pointZ","z0","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_objectToArray","o","yDiff","xDiff","radicant","zDiff","_cross","xSize","ySize","_createDiagonalMatrix","_getDiagonal","dm","vector","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_flatten","_ones","_resizeString","defaultChar","number | Complex | BigNumber | Unit | boolean | null","_kldiv","plength","qlength","sumq","sump","qnorm","pnorm","_sum","distribution","distributions","randFunctions","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","_deepEqual","_unequal","_median","mid","middle2","middle","number | BigNumber | Unit","number | BigNumber | Unit, number | BigNumber | Unit","asc","_partitionSelect","quickSelect","Array | Matrix, number","Array | Matrix, number, string","Array | Matrix, number, function","_mode","_prod","probOrN","sorted","probArr","dataArr","_quantileSeq","nPlusOne","intN","currProb","prob","fracPart","integerPart","integerPartNumber","_std","normalization","variance","_var","DEFAULT_NORMALIZATION","_complexAcos","temp1","temp2","complexSqrt","temp3","temp4","complexLog","acosAsec","atanAcot","toDP","constants","asinAcsc","halfPi","absX","asinNewton","wasReduced","polyNum","constNum","constDen","bigK","cosSinSecCsc","sinToCos","oldPrecision","tolerance","maxp","localPrecision","maxIter","tmp0","tmp1","tmp2","reduceToPeriod","cosSin","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","_complexAcosh","complexAcos","acoshAsinhAsechAcsch","x2PlusOrMinus","complexAtan","HALF_PI","_complexAcoth","atanhAcoth","_complexAtanh","noIM","oneMinus","onePlus","_complexAcsc","complexAsin","_complexAsin","_complexAsec","_complexAsech","bigAtan2","_cosh","ep","en","coshSinhCschSech","_sinh","cim","sim","tanCot","_coth","tanhCoth","posExp","negExp","_csch","_sech","_tanh","Unit, Unit | string","print","_print","string, Object, number","original","_comparator","_arrayIsVector","_matrixIsVector"],"mappings":"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EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,YACZsR,QACE,QACA,UACA,aAEF80B,YACI,gEACJC,UACE,QACA,SACA,WACA,4BACA,WACA,YAEF8G,SAAY,YAMT,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,WACRsH,SAAY,YACZsR,QACE,QACA,kBAEF80B,YAAe,uBACfC,UACE,gBACA,UACA,YACA,cACA,cAEF8G,SACE,YAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,UACA,cAEF80B,YAAe,oDACfC,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAASnzC,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,UACRsH,SAAY,aACZsR,QACE,aACA,oBAEF80B,YAAe,qJAGfC,UACE,QACA,iBACA,gBACA,WAEF8G,SACE,OACA,SAMC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,YACZsR,QACE,QACA,aAEF80B,YACI,uCACJC,UACE,UACA,QACA,oBAEF8G,SAAa,cAMV,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,aACZsR,QACE,WACA,eAEF80B,YACI,4LACJC,UACE,aACA,aACA,cACA,cACA,eACA,uBAEF8G,SAAY,OAAQ,QAAS,SAM1B,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,WAEF80B,YACI,iGACJC,UACE,YACA,aACA,WAEF8G,SACE,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,WAEF80B,YACI,+EACJC,UACE,WACA,QACA,YAEF8G,SACE,SACA,cAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,SACRsH,SAAY,aACZsR,QACE,aAEF80B,YACI,2DACJC,UACE,YACA,UACA,MACA,SAEF8G,SACE,WACA,MACA,OACA,UAOC,SAASj6C,EAAQD,GAEtB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D,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,UACRsH,SAAY,aACZsR,QACE,QACA,iBAEF80B,YACI,mGACJC,UACE,QACA,UACA,UACA,YACA,UACA,iBAEF8G,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,YACRsH,SAAY,aACZsR,QACE,SACA,mBAEF80B,YACI,0GACJC,UACE,UACA,WACA,UACA,YACA,WAEF8G,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,UACRsH,SAAY,aACZsR,QACE,SACA,iBAEF80B,YACI,uGACJC,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEF8G,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZsR,QACE,oBACA,SACA,eAEF80B,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEF8G,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,qBACA,UACA,gBAEF80B,YAAe,mDACfC,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEF8G,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,SACRsH,SAAY,aACZsR,QACE,uBACA,aAEF80B,YAAe,mLACfC,UACE,kBACA,yBAEF8G,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZsR,QACE,oBACA,SACA,eAEF80B,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEF8G,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,qBACA,UACA,4BAEF80B,YAAe,2HACfC,UACE,gBACA,uBAEF8G,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,aACZsR,QACE,qBACA,WAEF80B,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,cACRsH,SAAY,aACZsR,QACE,iCACA,gDACA,+BAEF80B,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEF8G,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAMC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZsR,QACE,oBACA,SACA,yBAEF80B,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZsR,QACE,oBACA,UAEF80B,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEF8G,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,aACZsR,QACE,oBACA,SACA,yBAEF80B,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEF8G,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,oDACfC,UACE,YACA,kBAEF8G,SACE,MACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,6FACfC,UACE,cAEF8G,SACE,OACA,QACA,WAMC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,8CACfC,UACE,YACA,iBACA,WAEF8G,SACE,MACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,6GACfC,UACE,cAEF8G,SACE,QACA,WAMC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,8CACfC,UACE,YACA,iBACA,WAEF8G,SACE,MACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,sGACfC,UACE,cAEF8G,SACE,QACA,WAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,2CACfC,UACE,YACA,iBACA,WAEF8G,SACE,OACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,2CACfC,UACE,cAEF8G,SACE,QACA,WAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,kDACfC,UACE,YACA,kBAEF8G,SACE,MACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,8FACfC,UACE,cAEF8G,SACE,QACA,WAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,qDACfC,UACE,YACA,kBAEF8G,SACE,MACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,YAEF80B,YAAe,mGACfC,UACE,cAEF8G,SACE,QACA,WAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,QACRsH,SAAY,eACZsR,QACE,eAEF80B,YACI,qEACJC,UACE,mBACA,wBACA,iBACA,iBACA,eAEF8G,SACE,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,eACZsR,QACE,UAEF80B,YAAe,sCACfC,UACE,SACA,kBACA,eACA,cACA,2BAEF8G,SACE,OACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,iDACfC,UACE,aAEF8G,SACE,OACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,eACZsR,QACE,UAEF80B,YAAe,6DACfC,UACE,SACA,cAEF8G,SACE,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,oDACfC,UACE,UACA;AAEF8G,SACE,OACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,eACZsR,QACE,UAEF80B,YAAe,4DACfC,UACE,SACA,cAEF8G,SACE,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,wEACfC,UACE,UACA,eAEF8G,SACE,OACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,eACZsR,QACE,UAEF80B,YAAe,0DACfC,UACE,SACA,cAEF8G,SACE,MACA,MACA,SAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,OACRsH,SAAY,eACZsR,QACE,WAEF80B,YAAe,sEACfC,UACE,UACA,eAEF8G,SACE,OACA,OACA,UAOC,SAASj6C,EAAQD,GAEtBC,EAAOD,SACLyF,KAAQ,MACRsH,SAAY,eACZsR,QACE,UAEF80B,YAAe,oCACfC,UACE,SACA,kBACA,c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","file":"math.map"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index c4243b74f..12d578bee 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -6,11 +6,11 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 2.5.0 - * @date 2015-12-05 + * @version 2.6.0 + * @date 2016-01-08 * * @license - * Copyright (C) 2013-2015 Jos de Jong + * Copyright (C) 2013-2016 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -24,24 +24,24 @@ * 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(e);return t.create=n,t["import"](r(13)),t}var i=r(1);e.exports=n()},function(e,t,r){e.exports=r(2)},function(e,t,r){var n=r(3).isFactory,i=r(3).deepExtend,a=r(4),o=r(8),s=r(10),u=r(12);t.create=function(e){function t(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=r.indexOf(e);return-1===a?(i=e.math===!0?e.factory(f.type,l,t,f.typed,f):e.factory(f.type,l,t,f.typed),r.push(e),c.push(i)):i=c[a],i}if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r=[],c=[],f=o.mixin({});f.type={},f.expression={transform:Object.create(f)},f.typed=a.create(f.type);var l={epsilon:1e-14,matrix:"matrix",number:"number",precision:64,predictable:!1};return e&&i(l,e),f["import"]=t(s),f.config=t(u),f}},function(e,t){"use strict";t.clone=function r(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 r(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&&e.isBigNumber===!0)return e;if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=r(e[i]));return n},t.extend=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e},t.deepExtend=function n(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?n(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,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;a>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",{get:function(){}}),!0}catch(e){}return!1},t.lazy=function(e,r,n){if(t.canDefineProperty()){var i,a=!0;Object.defineProperty(e,r,{get:function(){return a&&(i=n(),a=!1),i},set:function(e){i=e,a=!1},configurable:!0,enumerable:!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.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"number",to:"Fraction",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to Fraction (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.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.BigNumber(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){var n,i,a;!function(r){i=[],n=r,a="function"==typeof n?n.apply(t,i):n,!(void 0!==a&&(e.exports=a))}(function(){function e(){function t(e){for(var t,r=0;rr&&!c?"Unexpected type of argument in function "+u+" (expected: "+s.join(" or ")+", actual: "+o+", index: "+r+")":"Too few arguments in function "+u+" (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments in function "+u+" (expected: "+r+", actual: "+t+")";var l=new TypeError(a);return l.data=f,l}function i(e){this.name=e||"refs",this.categories={}}function a(e,t){if("string"==typeof e){var r=e.trim(),n="..."===r.substr(0,3);if(n&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var i=0;ip)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)&&i.push(n[f]);for(i.sort(function(e,t){return o.compare(e,t)}),r=0;rr;r++)t[r]="arg"+r;return t}function p(e,t){var r=new i,a=u(t);if(0==a.length)throw new Error("No signatures provided");var o=f(a,[]),s=[],p=e||"",h=l(m(a));s.push("function "+p+"("+h.join(", ")+") {"),s.push(' "use strict";'),s.push(" var name = '"+p+"';"),s.push(o.toCode(r," ")),s.push("}");var g=[r.toCode(),"return "+s.join("\n")].join("\n"),v=new Function(r.name,"createError",g),d=v(r,n);return d.signatures=c(a),d}function m(e){for(var t=0,r=0;rt&&(t=n)}return t}function h(e){for(var t,r=0;r0},a.prototype.contains=function(e){for(var t=0;tt.params.length)return 1;if(e.params.lengthr;r++)e.params[r].hasConversions()&&i++,t.params[r].hasConversions()&&o++;if(i>o)return 1;if(o>i)return-1;for(r=0;r "+a+") {"),i.push(r+" var varArgs = [];"),i.push(r+" for (var i = "+a+"; i < arguments.length; i++) {"),i.push(r+" varArgs.push(arguments[i]);"),i.push(r+" }"),i.push(this.signature.toCode(e,r+" ")),i.push(r+"}");else{for(var u=function(r,n){for(var i=[],a=0;a "+r+") {",t+" throw createError(name, arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],a=0;a0?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 ir;r++)t.push(0);return t}r.prototype.toFixed=function(e){var t=this.roundDigits(this.exponent+1+(e||0)),r=t.coefficients,i=t.exponent+1,a=i+(e||0);return r.lengthi&&(r=n(-i+1).concat(r),i=1),e&&r.splice(i,0,0===i?"0.":"."),this.sign+r.join("")},r.prototype.toExponential=function(e){var t=e?this.roundDigits(e):this.clone(),r=t.coefficients,i=t.exponent;r.length0?"."+r.join(""):"")+"e"+(i>=0?"+":"")+i},r.prototype.toPrecision=function(e,t){var r=t&&void 0!==t.lower?t.lower:.001,i=t&&void 0!==t.upper?t.upper:1e5,a=Math.abs(Math.pow(10,this.exponent));if(r>a||a>=i)return this.toExponential(e);var o=e?this.roundDigits(e):this.clone(),s=o.coefficients,u=o.exponent;s.length0?u:0;return c=e;)r.unshift(0),t.exponent++,e++;if(r.length>e){var n=r.splice(e,r.length-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=r},function(e,t,r){var n=r(9);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t){function r(){}r.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this,i=function(){n.off(e,i),t.apply(r,arguments)};return this.on(e,i,r)},emit:function(e){var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,i=r.length;for(n;i>n;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],i=[];if(n&&t)for(var a=0,o=n.length;o>a;a++)n[a].fn!==t&&i.push(n[a]);return i.length?r[e]=i:delete r[e],this}},e.exports=r},function(e,t,r){"use strict";function n(e,t,r,n,u){function c(e,t){var r=arguments.length;if(1!=r&&2!=r)throw new s("import",r,1,2);if(t||(t={}),a(e))m(e,t);else if(Array.isArray(e))e.forEach(function(e){c(e,t)});else if("object"==typeof e){for(var n in e)if(e.hasOwnProperty(n)){var i=e[n];h(i)?f(n,i,t):a(e)?m(e,t):c(i,t)}}else if(!t.silent)throw new TypeError("Factory, Object, or Array expected")}function f(e,t,r){if(r.wrap&&"function"==typeof t&&(t=p(t)),g(u[e])&&g(t))return t=r.override?n(e,t.signatures):n(u[e],t),u[e]=t,l(e,t),void u.emit("import",e,function(){return t});if(void 0===u[e]||r.override)return u[e]=t,l(e,t),void u.emit("import",e,function(){return t});if(!r.silent)throw new Error('Cannot import "'+e+'": already exists')}function l(e,t){t&&"function"==typeof t.transform&&(u.expression.transform[e]=t.transform)}function p(e){var t=function(){for(var t=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];t[r]=i&&i.valueOf()}return e.apply(u,t)};return e.transform&&(t.transform=e.transform),t}function m(e,t){if("string"==typeof e.name){var a=e.name,s=e.path?o(u,e.path):u,c=s.hasOwnProperty(a)?s[a]:void 0,f=function(){var i=r(e);if(g(c)&&g(i))return t.override||(i=n(c,i)),i;if(void 0===c||t.override)return i;if(!t.silent)throw new Error('Cannot import "'+a+'": already exists')};e.lazy!==!1?i(s,a,f):s[a]=f(),u.emit("import",a,f,e.path)}else r(e)}function h(e){return"function"==typeof e||"number"==typeof e||"string"==typeof e||"boolean"==typeof e||null===e||e&&e.isUnit===!0||e&&e.isComplex===!0}function g(e){return"function"==typeof e&&"object"==typeof e.signatures}return c}var i=r(3).lazy,a=r(3).isFactory,o=r(3).traverse,s=(r(3).extend,r(11));t.math=!0,t.name="import",t.factory=n,t.lazy=!0},function(e,t){"use strict";function r(e,t,n,i){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=t,this.min=n,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+t+" provided, "+n+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}r.prototype=new Error,r.prototype.constructor=Error,r.prototype.name="ArgumentsError",r.prototype.isArgumentsError=!0,e.exports=r},function(e,t,r){"use strict";function n(e,t,r,n,a){return function(e){if(e){var r=i.clone(t);i.deepExtend(t,e);var n=i.clone(t);return a.emit("config",n,r),n}return i.clone(t)}}var i=r(3);t.name="config",t.math=!0,t.factory=n},function(e,t,r){e.exports=[r(14),r(91),r(95),r(319),r(495),r(497)]},function(e,t,r){e.exports=[r(15),r(20),r(21),r(26),r(64),r(70),r(62),r(85),r(87),r(88)]},function(e,t,r){e.exports=[r(16),r(18)]},function(e,t,r){function n(e,t,r,n,a){var o=i.constructor(t);return o.prototype.type="BigNumber",o.prototype.isBigNumber=!0,o.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},o.fromJSON=function(e){return new o(e.value)},a.on("config",function(e,t){e.precision!==t.precision&&o.config({precision:e.precision})}),o}var i=r(17);r(6).digits;t.name="BigNumber",t.path="type",t.factory=n,t.math=!0},function(e,t,r){var n;!function(i){"use strict";function a(e){for(var t,r,n=1,i=e.length,a=e[0]+"";i>n;n++){for(t=e[n]+"",r=_-t.length;r--;)t="0"+t;a+=t}for(i=a.length;48===a.charCodeAt(--i););return a.slice(0,i+1||1)}function o(e,t,r,n){var i,a,o,s,u;for(a=1,o=e[0];o>=10;o/=10,a++);return o=t-a,0>o?(o+=_,i=0):(i=Math.ceil((o+1)/_),o%=_),a=E(10,_-o),u=e[i]%a|0,null==n?3>o?(0==o?u=u/100|0:1==o&&(u=u/10|0),s=4>r&&99999==u||r>3&&49999==u||5e4==u||0==u):s=(4>r&&u+1==a||r>3&&u+1==a/2)&&(e[i+1]/a/100|0)==E(10,o-2)-1||(u==a/2||0==u)&&0==(e[i+1]/a/100|0):4>o?(0==o?u=u/1e3|0:1==o?u=u/100|0:2==o&&(u=u/10|0),s=(n||4>r)&&9999==u||!n&&r>3&&4999==u):s=((n||4>r)&&u+1==a||!n&&r>3&&u+1==a/2)&&(e[i+1]/a/1e3|0)==E(10,o-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>=S+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:NaN);for(null==t?(b=!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(k(s,r,u,1)),a(f.c).slice(0,u)===a(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&&o(c.c,u-n,d,l)))return g(c,h.precision=y,d,b=!0);h.precision=u+=10,r=s=f=new h(v),p=0,l++}c=f}}function f(e,t,r,n){var i,o,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=a(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(o=r-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(o=r-u,u-=n;u--;i+="0");o>0&&(i+=".")}else o=r-n,n>u?i=i.slice(0,u)+"."+i.slice(u):o>0&&(i+=".");if(o>0)for(;o--;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 a=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][w?0>w?-w:w:0>1/w?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 a.name="Decimal Error",y=w=0,a}}function m(e,t,r){var n=new e(e.ONE);for(b=!1;1&r&&(n=n.times(t)),r>>=1,r;)t=t.times(t);return b=!0,n}function h(e,t){var r,n,i,s,u,c,f,l,m,v,d,y=1,x=10,w=e,N=w.c,E=w.constructor,M=E.ONE,A=E.rounding,_=E.precision;if(w.s<0||!N||!N[0]||!w.e&&1==N[0]&&1==N.length)return new E(N&&!N[0]?-1/0:1!=w.s?NaN:N?0:w);if(null==t?(b=!1,f=_):f=t,E.precision=f+=x,r=a(N),n=r.charAt(0),!(Math.abs(s=w.e)<15e14))return w=new E(n+"."+r.slice(1)),f+2>B.length&&p(E,1,f+2,"ln"),w=h(w,f-x).plus(new E(B.slice(0,f+2)).times(s+"")),E.precision=_,null==t?g(w,_,A,b=!0):w;for(;7>n&&1!=n||1==n&&r.charAt(1)>3;)w=w.times(e),r=a(w.c),n=r.charAt(0),y++;for(s=w.e,n>1?(w=new E("0."+r),s++):w=new E(n+"."+r.slice(1)),v=w,l=u=w=k(w.minus(M),w.plus(M),f,1),d=g(w.times(w),f,1),i=3;;){if(u=g(u.times(d),f,1),m=l.plus(k(u,new E(i),f,1)),a(m.c).slice(0,f)===a(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=k(l,new E(y),f,1),null!=t)return E.precision=_,l;if(!o(l.c,f-x,A,c))return g(l,E.precision=_,A,b=!0);E.precision=f+=x,m=u=w=k(v.minus(M),v.plus(M),f,1),d=g(w.times(w),f,1),i=c=1}l=m,i+=2}}function g(e,t,r,n){var i,a,o,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(a=t-i,0>a)a+=_,o=t,u=f[l=0],c=u/E(10,i-o-1)%10|0;else if(l=Math.ceil((a+1)/_),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,a%=_,o=a-_+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);a%=_,o=a-_+i,c=0>o?0:N(u/E(10,i-o-1)%10)}if(n=n||0>t||null!=f[l+1]||(0>o?u:u%E(10,i-o-1)),n=4>r?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(a>0?o>0?u/E(10,i-o):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==a?(f.length=l,s=1,l--):(f.length=l+1,s=E(10,_-a),f[l]=o>0?(u/E(10,i-o)%E(10,o)|0)*s:0),n)for(;;){if(0==l){for(a=1,o=f[0];o>=10;o/=10,a++);for(o=f[0]+=s,s=1;o>=10;o/=10,s++);a!=s&&(e.e++,f[0]==A&&(f[0]=1));break}if(f[l]+=s,f[l]!=A)break;f[l--]=0,s=1}for(a=f.length;0===f[--a];f.pop());}return b&&(e.e>p.maxE?e.c=e.e=null:e.eo,!i||!a)return u==c?0:!i^r?1:-1;if(u!=c)return u>c^r?1:-1;for(o=-1,s=(u=i.length)<(c=a.length)?u:c;++oa[o]^r?1:-1;return u==c?0:u>c^r?1:-1},T.decimalPlaces=T.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},T.dividedBy=T.div=function(e,t){return w=2,k(this,new this.constructor(e,t))},T.dividedToIntegerBy=T.divToInt=function(e,t){var r=this,n=r.constructor;return w=18,g(k(r,new n(e,t),0,1,1),n.precision,n.rounding)},T.equals=T.eq=function(e,t){return w=3,0===this.cmp(e,t)},T.exponential=T.exp=function(){return c(this)},T.floor=function(){return g(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(e,t){return w=4,this.cmp(e,t)>0},T.greaterThanOrEqualTo=T.gte=function(e,t){return w=5,t=this.cmp(e,t),1==t||0===t},T.isFinite=function(){return!!this.c},T.isInteger=T.isInt=function(){return!!this.c&&N(this.e/_)>this.c.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.lessThan=T.lt=function(e,t){return w=6,this.cmp(e,t)<0},T.lessThanOrEqualTo=T.lte=function(e,t){return w=7,t=this.cmp(e,t),-1==t||0===t},T.logarithm=T.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(w=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(NaN);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?NaN: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),b=!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=k(c,i,f,1),o(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=k(c,i,f,1),!u){+a(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(o(m.c,s+=10,x));return b=!0,g(m,y,x)},T.minus=function(e,t){var r,n,i,a,o=this,s=o.constructor,u=o.s;if(w=8,e=new s(e,t),t=e.s,!u||!t)return new s(NaN);if(u!=t)return e.s=-t,o.plus(e);var c=o.c,f=e.c,l=N(e.e/_),p=N(o.e/_),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-t,e):new s(f?o:NaN);if(!c[0]||!f[0])return o=f[0]?(e.s=-t,e):new s(c[0]?o:3==h?-0:0),b?g(o,m,h):o}if(c=c.slice(),n=c.length,u=p-l){for((a=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((a=n<(i=f.length))&&(i=n),u=t=0;i>t;t++)if(c[t]!=f[t]){a=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,b?g(e,m,h):e},T.modulo=T.mod=function(e,t){var r,n,i=this,a=i.constructor,o=a.modulo;return w=9,e=new a(e,t),t=e.s,r=!i.c||!t||e.c&&!e.c[0],r||!e.c||i.c&&!i.c[0]?r?new a(NaN):g(new a(i),a.precision,a.rounding):(b=!1,9==o?(e.s=1,n=k(i,e,0,3,1),e.s=t,n.s*=t):n=k(i,e,0,o,1),n=n.times(e),b=!0,i.minus(n))},T.naturalLogarithm=T.ln=function(){return h(this)},T.negated=T.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},T.plus=function(e,t){var r,n=this,i=n.constructor,a=n.s;if(w=10,e=new i(e,t),t=e.s,!a||!t)return new i(NaN);if(a!=t)return e.s=-t,n.minus(e);var o=n.c,s=e.c,u=N(e.e/_),c=N(n.e/_),f=i.precision,l=i.rounding;if(!c||!u){if(!o||!s)return new i(a/0);if(!o[0]||!s[0])return n=s[0]?e:new i(o[0]?n:0*a),b?g(n,f,l):n}if(o=o.slice(),a=c-u){for(0>a?(a=-a,r=o,t=s.length):(u=c,r=s,t=o.length),(c=Math.ceil(f/_))>t&&(t=c),a>++t&&(a=t,r.length=1),r.reverse();a--;r.push(0));r.reverse()}for(o.length-s.length<0&&(r=s,s=o,o=r),a=s.length,t=0,c=A;a;o[a]%=c)t=(o[--a]=o[a]+s[a]+t)/c|0;for(t&&(o.unshift(t),++u),a=o.length;0==o[--a];o.pop());for(e.c=o,a=1,t=o[0];t>=10;t/=10,a++);return e.e=a+u*_-1,b?g(e,f,l):e},T.precision=T.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},T.round=function(){var e=this,t=e.constructor;return g(new t(e),e.e+1,t.rounding)},T.squareRoot=T.sqrt=function(){var e,t,r,n,i,o,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])?NaN:u?s:1/0);for(b=!1,c=Math.sqrt(+s),0==c||c==1/0?(t=a(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(o=n,n=p.times(o.plus(k(s,o,r+2,1))),a(o.c).slice(0,r)===(t=a(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(o,f+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}return b=!0,g(n,f,l.rounding,e)},T.times=function(e,t){var r,n,i=this,a=i.constructor,o=i.c,s=(w=11,e=new a(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||o&&o[0])&&(c||s&&s[0])))return new a(!f||!t||o&&!o[0]&&!s||s&&!s[0]&&!o?NaN:o&&s?0*e.s:e.s/0);for(n=u+c,f=o.length,t=s.length,t>f&&(r=o,o=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]*o[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,b?g(e,a.precision,a.rounding):e},T.toDecimalPlaces=T.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},T.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()},T.toFixed=function(e,t){var r,n=this,i=n.constructor,a=i.toExpNeg,o=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=a,i.toExpPos=o,r},T.toFormat=function(e,t){var r=this;if(!r.c)return r.toString();var n,i=r.s<0,a=r.constructor.format,o=a.groupSeparator,s=+a.groupSize,u=+a.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+=o+p.substr(n,s);u>0&&(f+=o+p.slice(n)),i&&(f="-"+f)}return l?f+a.decimalSeparator+((u=+a.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+a.fractionGroupSeparator):l):f},T.toFraction=function(e){var t,r,n,i,o,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||(!(w=12,o=new m(e)).s||(y=o.cmp(h)<0||!o.c)||m.errors&&N(o.e/_)0)&&(e=n>0?d:h),b=!1,o=new m(a(v)),u=m.precision,m.precision=n=v.length*_*2;c=k(o,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=o.minus(c.times(r=d)),o=r;return r=k(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=k(h,g,n,1).minus(f).abs().cmp(k(s,t,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",t+""],b=!0,m.precision=u,i},T.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):(w=17,e=new n(e),t=s(r,t,"toNearest")),e.c?r.c&&(e.c[0]?(b=!1,r=k(r,e,0,4>t?[4,5,7,8][t]:t,1).times(e),b=!0,g(r)):r.c=[r.e=0]):r.s&&(e.s&&(e.s=r.s),r=e),r},T.toNumber=function(){var e=this;return+e||(e.s?0*e.s:NaN)},T.toPower=T.pow=function(e,t){var r,n,i,s,u=this,f=u.constructor,l=u.s,p=(w=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(NaN);else{if(i&&z>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."+a(u.c))/Math.LN10+u.e+1)),n>f.maxE+1||n0?l/0:0);b=!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),o(s.c,d,y)&&(n=d+10,s=g(c(e.times(h(u,n+v)),n),n+5,1),+a(s.c).slice(d+1,d+15)+1==1e14&&(s=g(s,d+1,0))),s.s=l,b=!0,f.rounding=y}s=g(s,d,y)}else s=g(u,d,y);return s},T.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()},T.toSignificantDigits=T.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)},T.toString=function(e){var t,r,n,i=this,o=i.constructor,s=i.e;if(null===s)r=i.s?"Infinity":"NaN";else{if(e===t&&(s<=o.toExpNeg||s>=o.toExpPos))return f(i,null,o.rounding,1);if(r=a(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)&&o.errors)p(o,"base",e,"toString",0);else if(r=v(o,r,0|e,10,i.s),"0"==r)return r}return i.s<0?"-"+r:r},T.truncated=T.trunc=function(){return g(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){return this.toString()},v=function(){function e(e,t,r){for(var n,i,a=[0],o=0,s=e.length;s>o;){for(i=a.length;i--;a[i]*=t);for(a[n=0]+=O.indexOf(e.charAt(o++));nr-1&&(null==a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}return function(t,r,n,i,a){var o,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),o=s=f.length;0==f[--s];f.pop());if(!f[0])return"0";if(0>p?o--:(c.c=f,c.e=o,c.s=a,c=k(c,l,h,g,0,n),f=c.c,u=c.r,o=c.e),p=f[h],s=n/2,u=u||null!=f[h+1],4>g?(null!=p||u)&&(0==g||g==(0>a?3:2)):p>s||p==s&&(4==g||u||6==g&&1&f[h-1]||g==(0>a?8:7)))for(f.length=h,--n;++f[--h]>n;)f[h]=0,h||(++o,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>o){for(;++o;r="0"+r);r="0."+r}else if(p=r.length,++o>p)for(o-=p;o--;r+="0");else p>o&&(r=r.slice(0,o)+"."+r.slice(o));return r}}();var k=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;r>i;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.shift());}return function(n,i,a,o,s,u){var c,f,l,p,m,h,v,d,y,x,b,w,E,M,O,T,C,S,z,B=n.constructor,k=n.s==i.s?1:-1,I=n.c,R=i.c;if(!(I&&I[0]&&R&&R[0]))return new B(n.s&&i.s&&(I?!R||I[0]!=R[0]:R)?I&&0==I[0]||!R?0*k:k/0:NaN);for(u?(p=1,f=n.e-i.e):(u=A,p=_,f=N(n.e/p)-N(i.e/p)),S=R.length,T=I.length,y=new B(k),x=y.c=[],l=0;R[l]==(I[l]||0);l++);if(R[l]>(I[l]||0)&&f--,null==a?(k=a=B.precision,o=B.rounding):k=s?a+(n.e-i.e)+1:a,0>k)x.push(1),m=!0;else{if(k=k/p+2|0,l=0,1==S){for(h=0,R=R[0],k++;(T>l||h)&&k--;l++)M=h*u+(I[l]||0),x[l]=M/R|0,h=M%R|0;m=h||T>l}else{for(h=u/(R[0]+1)|0,h>1&&(R=e(R,h,u),I=e(I,h,u),S=R.length,T=I.length),O=S,b=I.slice(0,S),w=b.length;S>w;b[w++]=0);z=R.slice(),z.unshift(0),C=R[0],R[1]>=u/2&&C++;do h=0,c=t(R,b,S,w),0>c?(E=b[0],S!=w&&(E=E*u+(b[1]||0)),h=E/C|0,h>1?(h>=u&&(h=u-1),v=e(R,h,u),d=v.length,w=b.length,c=t(v,b,d,w),1==c&&(h--,r(v,d>S?z:R,d,u))):(0==h&&(c=h=1),v=R.slice()),d=v.length,w>d&&v.unshift(0),r(b,v,w,u),-1==c&&(w=b.length,c=t(R,b,S,w),1>c&&(h++,r(b,w>S?z:R,w,u))),w=b.length):0===c&&(h++,b=[0]),x[l++]=h,c&&b[0]?b[w++]=I[O]||0:(b=[I[O]],w=1);while((O++=10;k/=10,l++);y.e=l+f*p-1,g(y,s?a+y.e+1:a,o,m)}return y}}();d=function(){function e(e){var t,r,n,i=this,a="config",o=i.errors?parseInt:parseFloat;return e==r||"object"!=typeof e&&!p(i,"object expected",e,a)?i:((n=e[t="precision"])!=r&&((y=1>n||n>S)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t="rounding"])!=r&&((y=0>n||n>8)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t="toExpNeg"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="toExpPos"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="minE"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="maxE"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="errors"])!=r&&(n===!!n||1===n||0===n?(y=w=0,i[t]=!!n):p(i,t,n,a,1)),(n=e[t="crypto"])!=r&&(n===!!n||1===n||0===n?i[t]=!(!n||!x||"object"!=typeof x):p(i,t,n,a,1)),(n=e[t="modulo"])!=r&&((y=0>n||n>9)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(e=e[t="format"])!=r&&("object"==typeof e?i[t]=e:p(i,"format object expected",e,a)),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,a=0;for("[object Array]"==M.call(t[0])&&(t=t[0]),n=new e(t[0]);++ai;)n=t[i],n>=429e7?t[i]=x.getRandomValues(new Uint32Array(1))[0]:a[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):(a.push(n%1e7),i+=4);i=r/4}else p(o,"crypto unavailable",x,"random");if(!i)for(;r>i;)a[i++]=1e7*Math.random()|0;for(r=a[--i],e%=_,r&&e&&(n=E(10,_-e),a[i]=(r/n|0)*n);0===a[i];i--)a.pop();if(0>i)a=[r=0];else{for(r=-1;0===a[0];)a.shift(),r-=_;for(i=1,n=a[0];n>=10;)n/=10,i++;_>i&&(r-=_-i)}return s.e=r,s.c=a,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 w=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=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=T,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=a,u.min=o,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,a){var o,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==a&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==a)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!=a?a!=(0|a)&&r.errors||(y=!(a>=2&&65>a))?(p(r,"base",a,0,0),l=e.test(i)):(o="["+O.slice(0,a=0|a)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+o+"(?:\\."+o+")?$",37>a?"i":"").test(i))?(c&&(i.replace(/^0\.0*|\./,"").length>15&&p(r,0,f),c=!c),i=v(r,i,10,a,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(r,"not a base "+a+" 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),w=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(a=i.length;48===i.charCodeAt(--a););if(i=i.slice(u,a+1)){if(a=i.length,c&&a>15&&p(r,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%_,0>s&&(u+=_),a>u){for(u&&n.c.push(+i.slice(0,u)),a-=_;a>u;)n.c.push(+i.slice(u,u+=_));i=i.slice(u),u=_-i.length}else u-=a;for(;u--;i+="0");n.c.push(+i),b&&(n.e>r.maxE?n.c=n.e=null:n.eo;o++)0!=o&&(i+=", "),i+=n(e[o],r);return i+="]"}return t.format(e,r)}var i=r(6).format,a=r(24).format;t.isString=function(e){return"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"number"==typeof e?i(e,r):e&&e.isBigNumber===!0?a(e,r):e&&e.isFraction===!0?r&&"decimal"===r.fraction?e.toString():e.s*e.n+"/"+e.d:Array.isArray(e)?n(e,r):t.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":"object"==typeof e?"function"==typeof e.format?e.format(r):e.toString():String(e)}},function(e,t){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),"number"==typeof 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 a=.001,o=1e5;r&&r.exponential&&(void 0!==r.exponential.lower&&(a=r.exponential.lower),void 0!==r.exponential.upper&&(o=r.exponential.upper));({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos});if(e.constructor.config({toExpNeg:Math.round(Math.log(a)/Math.LN10),toExpPos:Math.round(Math.log(o)/Math.LN10)}),e.isZero())return"0";var s,u=e.abs();return s=u.gte(a)&&u.lt(o)?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){"use strict";function r(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=r},function(e,t,r){e.exports=[r(27),r(63)]},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){if(!(this instanceof s))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 n=new s(r.re,r.im);this.re=n.re,this.im=n.im;break}if("r"in r&&"phi"in r){var n=s.fromPolar(r.r,r.phi);this.re=n.re,this.im=n.im;break}}throw new SyntaxError("Object with the re and im or r and phi properties expected.");case 2:if(!i(e)||!i(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 u(){for(;" "==x||" "==x;)l()}function c(e){return e>="0"&&"9">=e||"."==e}function f(e){return e>="0"&&"9">=e}function l(){y++,x=d.charAt(y)}function p(e){y=e,x=d.charAt(y)}function m(){var e,t="";if(e=y,"+"==x?l():"-"==x&&(t+=x,l()),!c(x))return p(e),null;if("."==x){if(t+=x,l(),!f(x))return p(e),null}else{for(;f(x);)t+=x,l();"."==x&&(t+=x,l())}for(;f(x);)t+=x,l();if("E"==x||"e"==x){if(t+=x,l(),("+"==x||"-"==x)&&(t+=x,l()),!f(x))return p(e),null;for(;f(x);)t+=x,l()}return t}function h(){var e=d.charAt(y+1);if("I"==x||"i"==x)return l(),"1";if(!("+"!=x&&"-"!=x||"I"!=e&&"i"!=e)){var t="+"==x?"1":"-1";return l(),l(),t}return null}function g(){return new SyntaxError('End of string expected, got "'+d.substr(y)+'"')}var v=n(r(28));s.prototype.isComplex=!0,s.prototype.type="Complex";var d,y,x;return s.parse=function(e){if(d=e,y=-1,x="","string"!=typeof d)throw new TypeError("Invalid argument in Complex.parse, string expected");l(),u();var t=m();if(t){if("I"==x||"i"==x){if(l(),u(),x)throw g();return new s(0,Number(t))}u();var r=x;if("+"!=r&&"-"!=r){if(u(),x)throw g();return new s(Number(t),0)}l(),u();var n=m();if(n){if("I"!=x&&"i"!=x)throw new SyntaxError('Character "i" expected, got "'+x+'"');l()}else if(n=h(),!n)throw new SyntaxError("Imaginary part expected");if("-"==r&&(n="-"==n[0]?"+"+n.substring(1):"-"+n),l(),u(),x)throw g();return new s(Number(t),Number(n))}if(t=h()){if(u(),x)throw g();return new s(0,Number(t))}throw new SyntaxError('Could not parse: "'+e+'" as complex number')},s.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if("object"==typeof t)return s.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],n=arguments[1];if(i(r)){if(n&&n.isUnit&&n.hasBase(v.BASE_UNITS.ANGLE)&&(n=n.toNumber("rad")),i(n))return new s(r*Math.cos(n),r*Math.sin(n));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")}},s.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},s.prototype.clone=function(){return new s(this.re,this.im)},s.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},s.prototype.format=function(e){var t="",r=this.im,n=this.re,o=a(this.re,e),s=a(this.im,e),u=i(e)?e:e?e.precision:null;if(null!==u){var c=Math.pow(10,-u);Math.abs(n/r)0?1==r?o+" + i":o+" + "+s+"i":-1==r?o+" - i":o+" - "+s.substring(1)+"i"},s.prototype.toString=function(){return this.format()},s.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},s.fromJSON=function(e){return new s(e)},s.prototype.valueOf=s.prototype.toString,s}var i=r(6).isNumber,a=r(6).format;t.name="Complex",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){if(!(this instanceof s))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!E(e))throw new TypeError("First parameter in Unit constructor must numeric");if(void 0!=t&&("string"!=typeof t||""==t))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=t){var r=s.parse(t);this.units=r.units,this.dimensions=r.dimensions}else this.units=[{unit:P,prefix:B,power:0}],this.dimensions=[0,0,0,0,0,0,0,0,0];this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1,this.isUnitListSimplified=!0}function u(){for(;" "==C||" "==C;)l()}function c(e){return e>="0"&&"9">=e||"."==e}function f(e){return e>="0"&&"9">=e}function l(){T++,C=O.charAt(T)}function p(e){T=e,C=O.charAt(T)}function m(){var e,t="";if(e=T,"+"==C?l():"-"==C&&(t+=C,l()),!c(C))return p(e),null;if("."==C){if(t+=C,l(),!f(C))return p(e),null}else{for(;f(C);)t+=C,l();"."==C&&(t+=C,l())}for(;f(C);)t+=C,l();if("E"==C||"e"==C){var r="",n=T;if(r+=C,l(),("+"==C||"-"==C)&&(r+=C,l()),!f(C))return p(n),t;for(t+=r;f(C);)t+=C,l()}return t}function h(){for(var e="",t=O.charCodeAt(T);t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t;)e+=C,l(),t=O.charCodeAt(T);return t=e.charCodeAt(0),t>=65&&90>=t||t>=97&&122>=t?e||null:null}function g(e){return C===e?(l(),e):null}function v(e){for(var t in U)if(U.hasOwnProperty(t)&&i(e,t)){var r=U[t],n=e.length-t.length,a=e.substring(0,n),o=r.prefixes[a];if(void 0!==o)return{unit:r,prefix:o}}return null}var d=n(r(29)),y=n(r(30)),x=n(r(48)),b=n(r(49)),w=n(r(50)),N=n(r(56)),E=n(r(59)),M=n(r(60)),A=n(r(61)),_=n(r(62));s.prototype.type="Unit",s.prototype.isUnit=!0;var O,T,C;s.parse=function(r){if(O=r,T=-1,C="","string"!=typeof O)throw new TypeError("Invalid argument in Unit.parse, string expected");var n=new s;n.units=[],l(),u();var i=m(),a=null;i&&(a="bignumber"===t.number?new e.BigNumber(i):"fraction"===t.number?new e.Fraction(i):parseFloat(i)),u();for(var o=1,c=!1,f=[],p=1;;){for(u();"("===C;)f.push(o),p*=o,o=1,l(),u();if(!C)break;var d=C,y=h();if(null==y)throw new SyntaxError('Unexpected "'+d+'" in "'+O+'" at index '+T.toString());var x=v(y);if(null==x)throw new SyntaxError('Unit "'+y+'" not found.');var b=o*p;if(u(),g("^")){u();var w=m();if(null==w)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');b*=w}n.units.push({unit:x.unit,prefix:x.prefix,power:b});for(var N=0;N1||Math.abs(this.units[0].power-1)>1e-15},s.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=s._getNumberConverter(A(e));for(var u=0;u1e-12)return!1;return!0},s.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},s.prototype.equals=function(e){return this.equalBase(e)&&N(this.value,e.value)},s.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&t.push({unit:F[a].unit,prefix:F[a].prefix,power:this.dimensions[i]})}t.length0?(r++, -e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(var i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},s.prototype.format=function(e){this.simplifyUnitListLazy(),1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var t=this._denormalize(this.value),r=null!==this.value?M(t,e||{}):"",n=this.formatUnits();return n.length>0&&r.length>0&&(r+=" "),r+=n},s.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=Math.abs(_(this.value)),t=this.units[0].prefix;if(0===e)return t;var r=this.units[0].power,n=Math.abs(Math.log(e/Math.pow(t.value*this.units[0].unit.value,r))/Math.LN10-1.2),i=this.units[0].unit.prefixes;for(var a in i)if(i.hasOwnProperty(a)){var o=i[a];if(o.scientific){var s=Math.abs(Math.log(e/Math.pow(o.value*this.units[0].unit.value,r))/Math.LN10-1.2);(n>s||s===n&&o.name.length>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var r={deg:"^\\circ"};t.toSymbol=function(e,n){if(n="undefined"==typeof n?!1:n)return r.hasOwnProperty(e)?r[e]:"\\mathrm{"+e+"}";if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf("_")){var i=e.indexOf("_");return t.toSymbol(e.substring(0,i))+"_{"+t.toSymbol(e.substring(i+1))+"}"}return e}},function(e,t){"use strict";function r(e,t,r,n){function i(t,r,n){var i=e.Matrix.storage(r||"default");return new i(t,n)}var a=n("matrix",{"":function(){return i([])},string:function(e){return i([],e)},"string, string":function(e,t){return i([],e,t)},Array:function(e){return i(e)},Matrix:function(e){return i(e,e.storage())},"Array | Matrix, string":i,"Array | Matrix, string, string":i});return a.toTex={0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},a}t.name="matrix",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(32),s=a("unaryMinus",{number:function(e){return-e},Complex:function(t){return new e.Complex(-t.re,-t.im)},BigNumber:function(e){return e.neg()},Fraction:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=s(e.value),t},"Array | Matrix":function(e){return i(e,s,!0)}});return s.toTex=o.operators.unaryMinus+"\\left(${args[0]}\\right)",s}var i=r(19);t.name="unaryMinus",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,m=t._size,h=t._datatype;if(u.length!==m.length)throw new i(u.length,m.length);if(u[0]!==m[0]||u[1]!==m[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+m+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var g,v,d=u[0],y=u[1],x="string"==typeof c&&c===h?c:void 0,b=x?n.find(r,[x,x]):r,w=[];for(g=0;d>g;g++)w[g]=[];var N=[],E=[];for(v=0;y>v;v++){for(var M=v+1,A=p[v],_=p[v+1],O=A;_>O;O++)g=l[O],N[g]=o?b(f[O],s[g][v]):b(s[g][v],f[O]),E[g]=M;for(g=0;d>g;g++)E[g]===M?w[g][v]=N[g]:w[g][v]=s[g][v]}return new a({data:w,size:[d,y],datatype:x})};return o}var i=r(31);t.name="algorithm01",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,m=t._size,h=t._datatype;if(u.length!==m.length)throw new i(u.length,m.length);if(u[0]!==m[0]||u[1]!==m[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+m+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var g,v=u[0],d=u[1],y=0,x=r;"string"==typeof c&&c===h&&(g=c,y=n.convert(0,g),x=n.find(r,[g,g]));for(var b=[],w=0;v>w;w++)b[w]=[];for(var N=[],E=[],M=0;d>M;M++){for(var A=M+1,_=p[M],O=p[M+1],T=_;O>T;T++){var C=l[T];N[C]=o?x(f[T],s[C][M]):x(s[C][M],f[T]),E[C]=A}for(var S=0;v>S;S++)E[S]===A?b[S][M]=N[S]:b[S][M]=o?x(y,s[S][M]):x(s[S][M],y)}return new a({data:b,size:[v,d],datatype:g})};return o}var i=r(31);t.name="algorithm03",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(38)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+g+")");var d,y=f[0],x=f[1],b=o,w=0,N=r;"string"==typeof l&&l===v&&(d=l,b=a.find(o,[d,d]),w=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O=n&&p?[]:void 0,T=[],C=[],S=new s({values:O,index:T,ptr:C,size:[y,x],datatype:d}),z=O?[]:void 0,B=O?[]:void 0,k=[],I=[];for(M=0;x>M;M++){C[M]=T.length;var R=M+1;for(A=c[M],_=c[M+1];_>A;A++)E=u[A],T.push(E),k[E]=R,z&&(z[E]=n[A]);for(A=h[M],_=h[M+1];_>A;A++)E=m[A],k[E]!==R&&T.push(E),I[E]=R,B&&(B[E]=p[A]);if(O)for(A=C[M];Ax;x++){for(var b=x+1,w=u[x],N=u[x+1],E=w;N>E;E++){var M=s[E];d[M]=o[E],y[M]=b}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===b?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=t}return v};return a}t.name="algorithm10",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var i=e.DenseMatrix,o=function(e,t,r){var o=e._data,u=e._size,c=e._datatype,f=t._data,l=t._size,p=t._datatype,m=[]; -if(u.length!==l.length)throw new a(u.length,l.length);for(var h=0;h0?s(v,0,m,m[0],o,f):[];return new i({data:d,size:m,datatype:g})},s=function(e,t,r,n,i,a){var o=[];if(t===r.length-1)for(var u=0;n>u;u++)o[u]=e(i[u],a[u]);else for(var c=0;n>c;c++)o[c]=s(e,t+1,r,r[t+1],i[c],a[c]);return o};return o}var i=r(41),a=r(31),o=i.string;o.isString;t.name="algorithm13",t.factory=n},function(e,t,r){"use strict";t.array=r(42),t["boolean"]=r(45),t["function"]=r(46),t.number=r(6),t.object=r(3),t.string=r(23),t.types=r(43),t.emitter=r(8)},function(e,t,r){"use strict";function n(e,t,r){var i,a=e.length;if(a!=t[r])throw new f(a,t[r]);if(ri;i++){var s=e[i];if(!Array.isArray(s))throw new f(t.length-1,t.length,"<");n(e[i],t,o)}}else for(i=0;a>i;i++)if(Array.isArray(e[i]))throw new f(t.length+1,t.length,">")}function i(e,r,n,a){var o,s,u=e.length,f=r[n],l=Math.min(u,f);if(e.length=f,no;o++)s=e[o],Array.isArray(s)||(s=[s],e[o]=s),i(s,r,p,a);for(o=l;f>o;o++)s=[],e[o]=s,i(s,r,p,a)}else{for(o=0;l>o;o++)for(;Array.isArray(e[o]);)e[o]=e[o][0];if(a!==t.UNINITIALIZED)for(o=l;f>o;o++)e[o]=c.clone(a)}}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(;Array.isArray(e);)e=e[0];return e}function o(e,t,r){var n,i;if(Array.isArray(e)){var a=r+1;for(n=0,i=e.length;i>n;n++)e[n]=o(e[n],t,a)}else for(var s=r;t>s;s++)e=[e];return e}var s=r(6),u=r(23),c=r(3),f=(r(43),r(31)),l=r(44);t.size=function(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t},t.validate=function(e,t){var r=0==t.length;if(r){if(Array.isArray(e))throw new f(e.length,0)}else n(e,t,0)},t.validateIndex=function(e,t){if(!s.isNumber(e)||!s.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new l(e);if(void 0!==t&&e>=t)throw new l(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!s.isNumber(e)||!s.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+u.format(t)+")")});var n=void 0!==r?r:0;return i(e,t,0,n),e},t.squeeze=function(e,r){for(var n=r||t.size(e);Array.isArray(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return is;s++)e=[e],a.unshift(1);for(e=o(e,r,0);a.length=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}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",r.prototype.isIndexError=!0,e.exports=r},function(e,t){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t){t.memoize=function(e,t){return function r(){"object"!=typeof r.cache&&(r.cache={});for(var n=[],i=0;i0?s(p,0,f,f[0],c,t,o):[];return new a({data:m,size:i(f),datatype:u})},s=function(e,t,r,n,i,a,o){var u=[];if(t===r.length-1)for(var c=0;n>c;c++)u[c]=o?e(a,i[c]):e(i[c],a);else for(var f=0;n>f;f++)u[f]=s(e,t+1,r,r[t+1],i[f],a,o);return u};return o}var i=r(3).clone;t.name="algorithm14",t.factory=n},function(e,t){"use strict";function r(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)},"Fraction, Fraction":function(e,t){return e.mul(t)},"number | Fraction | BigNumber, Unit":function(e,t){var r=t.clone();return r.value=null===r.value?r._normalize(e):i(r.value,e),r},"Unit, number | Fraction | BigNumber":function(e,t){var r=e.clone();return r.value=null===r.value?r._normalize(t):i(r.value,t),r},"Unit, Unit":function(e,t){return e.multiply(t)}});return i}t.factory=r},function(e,t,r){"use strict";function n(e,t,n,i){function a(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(r(48)),s=i("divide",{"number, number":function(e,t){return e/t},"Complex, Complex":a,"BigNumber, BigNumber":function(e,t){return e.div(t)},"Fraction, Fraction":function(e,t){return e.div(t)},"Unit, number | Fraction | BigNumber":function(e,t){var r=e.clone();return r.value=s(null===r.value?r._normalize(1):r.value,t),r},"number | Fraction | BigNumber, Unit":function(e,t){var r=t.pow(-1);return r.value=o(null===r.value?r._normalize(1):r.value,e),r},"Unit, Unit":function(e,t){return e.divide(t)}});return s}t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(r,n){return i(n)||r>=0||t.predictable?Math.pow(r,n):u(new e.Complex(r,0),new e.Complex(n,0))}function u(e,t){return p(g(h(e),t))}function c(e,t){if(!i(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=a(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=m(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(n=g(o,n)),t>>=1,o=g(o,o);return n}function f(e,t){return v(c(e.valueOf(),t))}var l=r(32),p=n(r(51)),m=n(r(52)),h=n(r(53)),g=n(r(54)),v=n(r(33)),d=o("pow",{"number, number":s,"Complex, Complex":u,"BigNumber, BigNumber":function(r,n){return n.isInteger()||r>=0||t.predictable?r.pow(n):u(new e.Complex(r.toNumber(),0),new e.Complex(n.toNumber(),0))},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return s(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":c,"Array, BigNumber":function(e,t){return c(e,t.toNumber())},"Matrix, number":f,"Matrix, BigNumber":function(e,t){return f(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});return d.toTex="\\left(${args[0]}\\right)"+l.operators.pow+"{${args[1]}}",d}var i=r(6).isInteger,a=r(42).size;t.name="pow",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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 i(e,a)}});return a.toTex="\\exp\\left(${args[0]}\\right)",a}var i=r(19);t.name="exp",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){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 o=t&&t.isBigNumber===!0?e.BigNumber:r&&r.isBigNumber===!0?e.BigNumber:null;if(t&&t.isBigNumber===!0&&(t=t.toNumber()),r&&r.isBigNumber===!0&&(r=r.toNumber()),!a(t)||1>t)throw new Error("Parameters in function eye must be positive integers");if(!a(r)||1>r)throw new Error("Parameters in function eye must be positive integers");var s=o?new e.BigNumber(1):1,u=o?new o(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(33)),f=o("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)}});return f.toTex="\\mathrm{${name}}\\left(${args}\\right)",f}var i=r(42),a=r(6).isInteger;t.name="eye",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(r){return r>=0||t.predictable?Math.log(r):c(new e.Complex(r,0))}function s(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im)),Math.atan2(t.im,t.re))}var u=n(r(49)),c=a("log",{number:o,Complex:s,BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():s(new e.Complex(r.toNumber(),0))},"Array | Matrix":function(e){return i(e,c)},"any, any":function(e,t){return u(c(e),c(t))}});return c.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},c}var i=r(19);t.name="log",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=n(r(29)),f=n(r(48)),l=n(r(38)),p=n(r(55)),m=n(r(47)),h=e.DenseMatrix,g=e.SparseMatrix,v=o("multiply",i({"Array, Array":function(e,t){d(a.size(e),a.size(t));var r=v(u(e),u(t));return r&&r.isMatrix===!0?r.valueOf():r},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return d(r,n),1===r.length?1===n.length?y(e,t,r[0]):x(e,t):1===n.length?w(e,t):N(e,t)},"Matrix, Array":function(e,t){return v(e,u(t))},"Array, Matrix":function(e,t){return v(u(e,t.storage()),t)},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,f,!1);break;case"dense":r=m(e,t,f,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,f,!0);break;case"dense":r=m(t,e,f,!0)}return r},"Array, any":function(e,t){return m(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,f,!0).valueOf()}},f.signatures)),d=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)")}},y=function(e,t,r){if(0===r)throw new Error("Cannot multiply two empty vectors");var n,i=e._data,a=e._datatype,s=t._data,u=t._datatype,l=c,p=f;a&&u&&a===u&&"string"==typeof a&&(n=a,l=o.find(c,[n,n]),p=o.find(f,[n,n]));for(var m=p(i[0],s[0]),h=1;r>h;h++)m=l(m,p(i[h],s[h]));return m},x=function(e,t){switch(t.storage()){case"dense":return b(e,t)}throw new Error("Not implemented")},b=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=u[1],g=c,v=f;a&&l&&a===l&&"string"==typeof a&&(r=a,g=o.find(c,[r,r]),v=o.find(f,[r,r]));for(var d=[],y=0;m>y;y++){for(var x=v(n[0],s[0][y]),b=1;p>b;b++)x=g(x,v(n[b],s[b][y]));d[y]=x}return 1===m?d[0]:new h({data:d,size:[m],datatype:r})},w=function(e,t){switch(e.storage()){case"dense":return E(e,t);case"sparse":return _(e,t)}},N=function(e,t){switch(e.storage()){case"dense":switch(t.storage()){case"dense":return M(e,t);case"sparse":return A(e,t)}break;case"sparse":switch(t.storage()){case"dense":return O(e,t);case"sparse":return T(e,t)}}},E=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._datatype,l=i[0],p=i[1],m=c,g=f;a&&u&&a===u&&"string"==typeof a&&(r=a,m=o.find(c,[r,r]),g=o.find(f,[r,r]));for(var v=[],d=0;l>d;d++){for(var y=n[d],x=g(y[0],s[0]),b=1;p>b;b++)x=m(x,g(y[b],s[b]));v[d]=x}return 1===l?v[0]:new h({data:v,size:[l],datatype:r})},M=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=i[1],g=u[1],v=c,d=f;a&&l&&a===l&&"string"==typeof a&&(r=a,v=o.find(c,[r,r]),d=o.find(f,[r,r]));for(var y=[],x=0;p>x;x++){var b=n[x];y[x]=[];for(var w=0;g>w;w++){for(var N=d(b[0],s[0][w]),E=1;m>E;E++)N=v(N,d(b[E],s[E][w]));y[x][w]=N}}return 1===p&&1===g?y[0][0]:new h({data:y,size:[p,g],datatype:r})},A=function(e,t){var r=e._data,n=e._size,i=e._datatype,a=t._values,s=t._index,u=t._ptr,p=t._size,m=t._datatype;if(!a)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var h,v=n[0],d=p[1],y=c,x=f,b=l,w=0;i&&m&&i===m&&"string"==typeof i&&(h=i,y=o.find(c,[h,h]),x=o.find(f,[h,h]),b=o.find(l,[h,h]),w=o.convert(0,h));for(var N=[],E=[],M=[],A=new g({values:N,index:E,ptr:M,size:[v,d],datatype:h}),_=0;d>_;_++){M[_]=E.length;var O=u[_],T=u[_+1];if(T>O)for(var C=0,S=0;v>S;S++){for(var z,B=S+1,k=O;T>k;k++){var I=s[k];C!==B?(z=x(r[S][I],a[k]),C=B):z=y(z,x(r[S][I],a[k]))}C!==B||b(z,w)||(E.push(S),N.push(z))}}return M[d]=E.length,1===v&&1===d?1===N.length?N[0]:0:A},_=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=[],d=[],y=[],x=c,b=f,w=l,N=0;a&&p&&a===p&&"string"==typeof a&&(s=a,x=o.find(c,[s,s]),b=o.find(f,[s,s]),w=o.find(l,[s,s]),N=o.convert(0,s));var E=[],M=[];y[0]=0;for(var A=0;h>A;A++){var _=u[A];if(!w(_,N))for(var O=i[A],T=i[A+1],C=O;T>C;C++){var S=n[C];M[S]?E[S]=x(E[S],b(_,r[C])):(M[S]=!0,d.push(S),E[S]=b(_,r[C]))}}for(var z=d.length,B=0;z>B;B++){var k=d[B];v[B]=E[k]}return y[1]=d.length,1===m?1===v.length?v[0]:0:new g({values:v,index:d,ptr:y,size:[m,1],datatype:s})},O=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=t._size[1],d=c,y=f,x=l,b=0;a&&p&&a===p&&"string"==typeof a&&(s=a,d=o.find(c,[s,s]),y=o.find(f,[s,s]),x=o.find(l,[s,s]),b=o.convert(0,s));for(var w=[],N=[],E=[],M=new g({values:w,index:N,ptr:E,size:[m,v],datatype:s}),A=[],_=[],O=0;v>O;O++){E[O]=N.length;for(var T=O+1,C=0;h>C;C++){var S=u[C][O];if(!x(S,b))for(var z=i[C],B=i[C+1],k=z;B>k;k++){var I=n[k];_[I]!==T?(_[I]=T,N.push(I),A[I]=y(S,r[k])):A[I]=d(A[I],y(S,r[k]))}}for(var R=E[O],P=N.length,U=R;P>U;U++){var q=N[U];w[U]=A[q]}}return E[v]=N.length,1===m&&1===v?1===w.length?w[0]:0:M},T=function(e,t){var r,n=e._values,i=e._index,a=e._ptr,s=e._datatype,u=t._values,l=t._index,p=t._ptr,m=t._datatype,h=e._size[0],v=t._size[1],d=n&&u,y=c,x=f;s&&m&&s===m&&"string"==typeof s&&(r=s,y=o.find(c,[r,r]),x=o.find(f,[r,r]));for(var b,w,N,E,M,A,_,O,T=d?[]:void 0,C=[],S=[],z=new g({values:T,index:C,ptr:S,size:[h,v],datatype:r}),B=d?[]:void 0,k=[],I=0;v>I;I++){S[I]=C.length;var R=I+1;for(M=p[I],A=p[I+1],E=M;A>E;E++)if(O=l[E],d)for(w=a[O],N=a[O+1],b=w;N>b;b++)_=i[b],k[_]!==R?(k[_]=R,C.push(_),B[_]=x(u[E],n[b])):B[_]=y(B[_],x(u[E],n[b]));else for(w=a[O],N=a[O+1],b=w;N>b;b++)_=i[b],k[_]!==R&&(k[_]=R,C.push(_));if(d)for(var P=S[I],U=C.length,q=P;U>q;q++){var L=C[q];T[q]=B[L]}}return S[v]=C.length,1===h&&1===v&&d?1===T.length?T[0]:0:z};return v.toTex="\\left(${args[0]}"+s.operators.multiply+"${args[1]}\\right)",v}var i=r(3).extend,a=r(42);t.name="multiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(38)),o=e.SparseMatrix,s=function(e,t,r,n){var s=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p,m=f[0],h=f[1],g=a,v=0,d=r;"string"==typeof l&&(p=l,g=i.find(a,[p,p]),v=i.convert(0,p),t=i.convert(t,p),d=i.find(r,[p,p]));for(var y=[],x=[],b=[],w=new o({values:y,index:x,ptr:b,size:[m,h],datatype:p}),N=0;h>N;N++){b[N]=x.length;for(var E=c[N],M=c[N+1],A=E;M>A;A++){var _=u[A],O=n?d(t,s[A]):d(s[A],t);g(O,v)||(x.push(_),y.push(O))}}return b[h]=x.length,w};return s}t.name="algorithm11",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(38)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=i("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:o(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,o);break;default:r=s(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,o,!1);break;default:r=f(e,t,o)}}return r},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=l(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,o,!0);break;default:r=l(t,e,o,!0)}return r},"Array, any":function(e,t){return l(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return l(a(t),e,o,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.equal+"${args[1]}\\right)",m}t.name="equal",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r){var o=e._size,u=e._datatype,c=t._size,f=t._datatype;if(o.length!==c.length)throw new i(o.length,c.length);if(o[0]!==c[0]||o[1]!==c[1])throw new RangeError("Dimension mismatch. Matrix A ("+o+") must match Matrix B ("+c+")");var l,p=o[0],m=o[1],h=0,g=r;"string"==typeof u&&u===f&&(l=u,h=n.convert(0,l),g=n.find(r,[l,l]));var v,d,y=[];for(v=0;p>v;v++)y[v]=[];var x=new a({data:y,size:[p,m],datatype:l}),b=[],w=[],N=[],E=[];for(d=0;m>d;d++){var M=d+1;for(s(e,d,N,b,M),s(t,d,E,w,M),v=0;p>v;v++){var A=N[v]===M?b[v]:h,_=E[v]===M?w[v]:h;y[v][d]=g(A,_)}}return x},s=function(e,t,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=s[t],c=s[t+1];c>u;u++){var f=o[u];r[f]=i,n[f]=a[u]}};return o}var i=r(31);t.name="algorithm07",t.factory=n},function(e,t){"use strict";function r(e,t,r,n){var i=e.DenseMatrix,a=function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],m=c[1],h=r;"string"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var g=[],v=new i({data:g,size:[p,m],datatype:l}),d=[],y=[],x=0;m>x;x++){for(var b=x+1,w=u[x],N=u[x+1],E=w;N>E;E++){var M=s[E];d[M]=o[E],y[M]=b}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===b?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=a?h(t,0):h(0,t)}return v};return a}t.name="algorithm12",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNumeric",{"number | BigNumber | Fraction | boolean":function(){return!0},"Complex | Unit | string":function(){return!1},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isNumeric",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("format",{any:i.format,"any, Object | function | number":i.format});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(23);t.name="format",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("_typeof",{any:function(e){var t=i.type(e);if("Object"===t){if(e.isBigNumber===!0)return"BigNumber";if(e.isComplex===!0)return"Complex";if(e.isFraction===!0)return"Fraction";if(e.isMatrix===!0)return"Matrix";if(e.isUnit===!0)return"Unit";if(e.isIndex===!0)return"Index";if(e.isRange===!0)return"Range";if(e.isChain===!0)return"Chain";if(e.isHelp===!0)return"Help"}return t}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(43);t.name="typeof",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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()},Fraction:function(e){return e.valueOf()},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 i(e,a)}});return a.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},a}var i=r(19);t.name="number",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(32),s=a("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){return e.Complex.parse(t)},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 i(e,s)}});return s.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+"+o.symbols.i+"\\cdot\\left(${args[1]}\\right)\\right)"},s}var i=r(19);t.name="complex",t.factory=n},function(e,t,r){e.exports=[r(65),r(69)]},function(e,t,r){function n(e,t,r,n){return i}var i=r(66);i.prototype.type="Fraction",i.prototype.isFraction=!0,i.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}},i.fromJSON=function(e){return new i(e)},t.name="Fraction",t.path="type",t.factory=n},function(e,t,r){var n,i;(function(e){/** +!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(e);return t.create=n,t["import"](r(13)),t}var i=r(1);e.exports=n()},function(e,t,r){e.exports=r(2)},function(e,t,r){var n=r(3).isFactory,i=r(3).deepExtend,a=r(4),o=r(8),s=r(10),u=r(12);t.create=function(e){function t(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=r.indexOf(e);return-1===a?(i=e.math===!0?e.factory(f.type,l,t,f.typed,f):e.factory(f.type,l,t,f.typed),r.push(e),c.push(i)):i=c[a],i}if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r=[],c=[],f=o.mixin({});f.type={},f.expression={transform:Object.create(f)},f.typed=a.create(f.type);var l={epsilon:1e-14,matrix:"matrix",number:"number",precision:64,predictable:!1};return e&&i(l,e),f["import"]=t(s),f.config=t(u),f}},function(e,t){"use strict";t.clone=function r(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 r(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&&e.isBigNumber===!0)return e;if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=r(e[i]));return n},t.extend=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e},t.deepExtend=function n(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?n(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,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;a>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",{get:function(){}}),!0}catch(e){}return!1},t.lazy=function(e,r,n){if(t.canDefineProperty()){var i,a=!0;Object.defineProperty(e,r,{get:function(){return a&&(i=n(),a=!1),i},set:function(e){i=e,a=!1},configurable:!0,enumerable:!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.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"number",to:"Fraction",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to Fraction (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.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.BigNumber(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){var n,i,a;!function(r){i=[],n=r,a="function"==typeof n?n.apply(t,i):n,!(void 0!==a&&(e.exports=a))}(function(){function e(){function t(e){for(var t,r=0;rr&&!c?"Unexpected type of argument in function "+u+" (expected: "+s.join(" or ")+", actual: "+o+", index: "+r+")":"Too few arguments in function "+u+" (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments in function "+u+" (expected: "+r+", actual: "+t+")";var l=new TypeError(a);return l.data=f,l}function i(e){this.name=e||"refs",this.categories={}}function a(e,t){if("string"==typeof e){var r=e.trim(),n="..."===r.substr(0,3);if(n&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var i=0;ip)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)&&i.push(n[f]);for(i.sort(function(e,t){return o.compare(e,t)}),r=0;rr;r++)t[r]="arg"+r;return t}function p(e,t){var r=new i,a=u(t);if(0==a.length)throw new Error("No signatures provided");var o=f(a,[]),s=[],p=e||"",h=l(m(a));s.push("function "+p+"("+h.join(", ")+") {"),s.push(' "use strict";'),s.push(" var name = '"+p+"';"),s.push(o.toCode(r," ")),s.push("}");var g=[r.toCode(),"return "+s.join("\n")].join("\n"),v=new Function(r.name,"createError",g),d=v(r,n);return d.signatures=c(a),d}function m(e){for(var t=0,r=0;rt&&(t=n)}return t}function h(e){for(var t,r=0;r0},a.prototype.contains=function(e){for(var t=0;tt.params.length)return 1;if(e.params.lengthr;r++)e.params[r].hasConversions()&&i++,t.params[r].hasConversions()&&o++;if(i>o)return 1;if(o>i)return-1;for(r=0;r "+a+") {"),i.push(r+" var varArgs = [];"),i.push(r+" for (var i = "+a+"; i < arguments.length; i++) {"),i.push(r+" varArgs.push(arguments[i]);"),i.push(r+" }"),i.push(this.signature.toCode(e,r+" ")),i.push(r+"}");else{for(var u=function(r,n){for(var i=[],a=0;a "+r+") {",t+" throw createError(name, arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],a=0;a0?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"engineering":return t.toEngineering(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.toEngineering=function(e,t){return new n(e).toEngineering(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 ir;r++)t.push(0);return t}r.prototype.toEngineering=function(e){var t=this.roundDigits(e),r=t.exponent,i=t.coefficients,a=r%3===0?r:0>r?r-3-r%3:r-r%3,o=r>=0?r:Math.abs(a);i.length-1=0;)u++;var f=i.slice(u).join(""),l=f.match(/[1-9]/)?"."+f:"";return c=i.slice(0,u).join("")+l,c+="e"+(r>=0?"+":"")+a.toString(),t.sign+c},r.prototype.toFixed=function(e){var t=this.roundDigits(this.exponent+1+(e||0)),r=t.coefficients,i=t.exponent+1,a=i+(e||0);return r.lengthi&&(r=n(-i+1).concat(r),i=1),e&&r.splice(i,0,0===i?"0.":"."),this.sign+r.join("")},r.prototype.toExponential=function(e){var t=e?this.roundDigits(e):this.clone(),r=t.coefficients,i=t.exponent;r.length0?"."+r.join(""):"")+"e"+(i>=0?"+":"")+i},r.prototype.toPrecision=function(e,t){var r=t&&void 0!==t.lower?t.lower:.001,i=t&&void 0!==t.upper?t.upper:1e5,a=Math.abs(Math.pow(10,this.exponent));if(r>a||a>=i)return this.toExponential(e);var o=e?this.roundDigits(e):this.clone(),s=o.coefficients,u=o.exponent;s.length0?u:0;return c=e;)r.unshift(0),t.exponent++,e++;if(r.length>e){var n=r.splice(e,r.length-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=r},function(e,t,r){var n=r(9);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t){function r(){}r.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){function n(){i.off(e,n),t.apply(r,arguments)}var i=this;return n._=t,this.on(e,n,r)},emit:function(e){var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,i=r.length;for(n;i>n;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],i=[];if(n&&t)for(var a=0,o=n.length;o>a;a++)n[a].fn!==t&&n[a].fn._!==t&&i.push(n[a]);return i.length?r[e]=i:delete r[e],this}},e.exports=r},function(e,t,r){"use strict";function n(e,t,r,n,u){function c(e,t){var r=arguments.length;if(1!=r&&2!=r)throw new s("import",r,1,2);if(t||(t={}),a(e))m(e,t);else if(Array.isArray(e))e.forEach(function(e){c(e,t)});else if("object"==typeof e){for(var n in e)if(e.hasOwnProperty(n)){var i=e[n];h(i)?f(n,i,t):a(e)?m(e,t):c(i,t)}}else if(!t.silent)throw new TypeError("Factory, Object, or Array expected")}function f(e,t,r){if(r.wrap&&"function"==typeof t&&(t=p(t)),g(u[e])&&g(t))return t=r.override?n(e,t.signatures):n(u[e],t),u[e]=t,l(e,t),void u.emit("import",e,function(){return t});if(void 0===u[e]||r.override)return u[e]=t,l(e,t),void u.emit("import",e,function(){return t});if(!r.silent)throw new Error('Cannot import "'+e+'": already exists')}function l(e,t){t&&"function"==typeof t.transform&&(u.expression.transform[e]=t.transform)}function p(e){var t=function(){for(var t=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];t[r]=i&&i.valueOf()}return e.apply(u,t)};return e.transform&&(t.transform=e.transform),t}function m(e,t){if("string"==typeof e.name){var a=e.name,s=e.path?o(u,e.path):u,c=s.hasOwnProperty(a)?s[a]:void 0,f=function(){var i=r(e);if(g(c)&&g(i))return t.override||(i=n(c,i)),i;if(void 0===c||t.override)return i;if(!t.silent)throw new Error('Cannot import "'+a+'": already exists')};e.lazy!==!1?i(s,a,f):s[a]=f(),u.emit("import",a,f,e.path)}else r(e)}function h(e){return"function"==typeof e||"number"==typeof e||"string"==typeof e||"boolean"==typeof e||null===e||e&&e.isUnit===!0||e&&e.isComplex===!0}function g(e){return"function"==typeof e&&"object"==typeof e.signatures}return c}var i=r(3).lazy,a=r(3).isFactory,o=r(3).traverse,s=(r(3).extend,r(11));t.math=!0,t.name="import",t.factory=n,t.lazy=!0},function(e,t){"use strict";function r(e,t,n,i){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=t,this.min=n,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+t+" provided, "+n+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}r.prototype=new Error,r.prototype.constructor=Error,r.prototype.name="ArgumentsError",r.prototype.isArgumentsError=!0,e.exports=r},function(e,t,r){"use strict";function n(e,t,r,n,a){return function(e){if(e){var r=i.clone(t);i.deepExtend(t,e);var n=i.clone(t);return a.emit("config",n,r),n}return i.clone(t)}}var i=r(3);t.name="config",t.math=!0,t.factory=n},function(e,t,r){e.exports=[r(14),r(92),r(96),r(320),r(495),r(497)]},function(e,t,r){e.exports=[r(15),r(20),r(21),r(26),r(30),r(36),r(68),r(69),r(71),r(72)]},function(e,t,r){e.exports=[r(16),r(18)]},function(e,t,r){function n(e,t,r,n,a){var o=i.constructor(t);return o.prototype.type="BigNumber",o.prototype.isBigNumber=!0,o.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}},o.fromJSON=function(e){return new o(e.value)},a.on("config",function(e,t){e.precision!==t.precision&&o.config({precision:e.precision})}),o}var i=r(17);r(6).digits;t.name="BigNumber",t.path="type",t.factory=n,t.math=!0},function(e,t,r){var n;!function(i){"use strict";function a(e){for(var t,r,n=1,i=e.length,a=e[0]+"";i>n;n++){for(t=e[n]+"",r=_-t.length;r--;)t="0"+t;a+=t}for(i=a.length;48===a.charCodeAt(--i););return a.slice(0,i+1||1)}function o(e,t,r,n){var i,a,o,s,u;for(a=1,o=e[0];o>=10;o/=10,a++);return o=t-a,0>o?(o+=_,i=0):(i=Math.ceil((o+1)/_),o%=_),a=E(10,_-o),u=e[i]%a|0,null==n?3>o?(0==o?u=u/100|0:1==o&&(u=u/10|0),s=4>r&&99999==u||r>3&&49999==u||5e4==u||0==u):s=(4>r&&u+1==a||r>3&&u+1==a/2)&&(e[i+1]/a/100|0)==E(10,o-2)-1||(u==a/2||0==u)&&0==(e[i+1]/a/100|0):4>o?(0==o?u=u/1e3|0:1==o?u=u/100|0:2==o&&(u=u/10|0),s=(n||4>r)&&9999==u||!n&&r>3&&4999==u):s=((n||4>r)&&u+1==a||!n&&r>3&&u+1==a/2)&&(e[i+1]/a/1e3|0)==E(10,o-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>=S+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:NaN);for(null==t?(b=!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(k(s,r,u,1)),a(f.c).slice(0,u)===a(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&&o(c.c,u-n,d,l)))return g(c,h.precision=y,d,b=!0);h.precision=u+=10,r=s=f=new h(v),p=0,l++}c=f}}function f(e,t,r,n){var i,o,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=a(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(o=r-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(o=r-u,u-=n;u--;i+="0");o>0&&(i+=".")}else o=r-n,n>u?i=i.slice(0,u)+"."+i.slice(u):o>0&&(i+=".");if(o>0)for(;o--;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 a=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][w?0>w?-w:w:0>1/w?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 a.name="Decimal Error",y=w=0,a}}function m(e,t,r){var n=new e(e.ONE);for(b=!1;1&r&&(n=n.times(t)),r>>=1,r;)t=t.times(t);return b=!0,n}function h(e,t){var r,n,i,s,u,c,f,l,m,v,d,y=1,x=10,w=e,N=w.c,E=w.constructor,M=E.ONE,A=E.rounding,_=E.precision;if(w.s<0||!N||!N[0]||!w.e&&1==N[0]&&1==N.length)return new E(N&&!N[0]?-1/0:1!=w.s?NaN:N?0:w);if(null==t?(b=!1,f=_):f=t,E.precision=f+=x,r=a(N),n=r.charAt(0),!(Math.abs(s=w.e)<15e14))return w=new E(n+"."+r.slice(1)),f+2>B.length&&p(E,1,f+2,"ln"),w=h(w,f-x).plus(new E(B.slice(0,f+2)).times(s+"")),E.precision=_,null==t?g(w,_,A,b=!0):w;for(;7>n&&1!=n||1==n&&r.charAt(1)>3;)w=w.times(e),r=a(w.c),n=r.charAt(0),y++;for(s=w.e,n>1?(w=new E("0."+r),s++):w=new E(n+"."+r.slice(1)),v=w,l=u=w=k(w.minus(M),w.plus(M),f,1),d=g(w.times(w),f,1),i=3;;){if(u=g(u.times(d),f,1),m=l.plus(k(u,new E(i),f,1)),a(m.c).slice(0,f)===a(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=k(l,new E(y),f,1),null!=t)return E.precision=_,l;if(!o(l.c,f-x,A,c))return g(l,E.precision=_,A,b=!0);E.precision=f+=x,m=u=w=k(v.minus(M),v.plus(M),f,1),d=g(w.times(w),f,1),i=c=1}l=m,i+=2}}function g(e,t,r,n){var i,a,o,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(a=t-i,0>a)a+=_,o=t,u=f[l=0],c=u/E(10,i-o-1)%10|0;else if(l=Math.ceil((a+1)/_),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,a%=_,o=a-_+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);a%=_,o=a-_+i,c=0>o?0:N(u/E(10,i-o-1)%10)}if(n=n||0>t||null!=f[l+1]||(0>o?u:u%E(10,i-o-1)),n=4>r?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(a>0?o>0?u/E(10,i-o):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==a?(f.length=l,s=1,l--):(f.length=l+1,s=E(10,_-a),f[l]=o>0?(u/E(10,i-o)%E(10,o)|0)*s:0),n)for(;;){if(0==l){for(a=1,o=f[0];o>=10;o/=10,a++);for(o=f[0]+=s,s=1;o>=10;o/=10,s++);a!=s&&(e.e++,f[0]==A&&(f[0]=1));break}if(f[l]+=s,f[l]!=A)break;f[l--]=0,s=1}for(a=f.length;0===f[--a];f.pop());}return b&&(e.e>p.maxE?e.c=e.e=null:e.eo,!i||!a)return u==c?0:!i^r?1:-1;if(u!=c)return u>c^r?1:-1;for(o=-1,s=(u=i.length)<(c=a.length)?u:c;++oa[o]^r?1:-1;return u==c?0:u>c^r?1:-1},T.decimalPlaces=T.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},T.dividedBy=T.div=function(e,t){return w=2,k(this,new this.constructor(e,t))},T.dividedToIntegerBy=T.divToInt=function(e,t){var r=this,n=r.constructor;return w=18,g(k(r,new n(e,t),0,1,1),n.precision,n.rounding)},T.equals=T.eq=function(e,t){return w=3,0===this.cmp(e,t)},T.exponential=T.exp=function(){return c(this)},T.floor=function(){return g(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(e,t){return w=4,this.cmp(e,t)>0},T.greaterThanOrEqualTo=T.gte=function(e,t){return w=5,t=this.cmp(e,t),1==t||0===t},T.isFinite=function(){return!!this.c},T.isInteger=T.isInt=function(){return!!this.c&&N(this.e/_)>this.c.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.lessThan=T.lt=function(e,t){return w=6,this.cmp(e,t)<0},T.lessThanOrEqualTo=T.lte=function(e,t){return w=7,t=this.cmp(e,t),-1==t||0===t},T.logarithm=T.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(w=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(NaN);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?NaN: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),b=!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=k(c,i,f,1),o(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=k(c,i,f,1),!u){+a(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(o(m.c,s+=10,x));return b=!0,g(m,y,x)},T.minus=function(e,t){var r,n,i,a,o=this,s=o.constructor,u=o.s;if(w=8,e=new s(e,t),t=e.s,!u||!t)return new s(NaN);if(u!=t)return e.s=-t,o.plus(e);var c=o.c,f=e.c,l=N(e.e/_),p=N(o.e/_),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-t,e):new s(f?o:NaN);if(!c[0]||!f[0])return o=f[0]?(e.s=-t,e):new s(c[0]?o:3==h?-0:0),b?g(o,m,h):o}if(c=c.slice(),n=c.length,u=p-l){for((a=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((a=n<(i=f.length))&&(i=n),u=t=0;i>t;t++)if(c[t]!=f[t]){a=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,b?g(e,m,h):e},T.modulo=T.mod=function(e,t){var r,n,i=this,a=i.constructor,o=a.modulo;return w=9,e=new a(e,t),t=e.s,r=!i.c||!t||e.c&&!e.c[0],r||!e.c||i.c&&!i.c[0]?r?new a(NaN):g(new a(i),a.precision,a.rounding):(b=!1,9==o?(e.s=1,n=k(i,e,0,3,1),e.s=t,n.s*=t):n=k(i,e,0,o,1),n=n.times(e),b=!0,i.minus(n))},T.naturalLogarithm=T.ln=function(){return h(this)},T.negated=T.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},T.plus=function(e,t){var r,n=this,i=n.constructor,a=n.s;if(w=10,e=new i(e,t),t=e.s,!a||!t)return new i(NaN);if(a!=t)return e.s=-t,n.minus(e);var o=n.c,s=e.c,u=N(e.e/_),c=N(n.e/_),f=i.precision,l=i.rounding;if(!c||!u){if(!o||!s)return new i(a/0);if(!o[0]||!s[0])return n=s[0]?e:new i(o[0]?n:0*a),b?g(n,f,l):n}if(o=o.slice(),a=c-u){for(0>a?(a=-a,r=o,t=s.length):(u=c,r=s,t=o.length),(c=Math.ceil(f/_))>t&&(t=c),a>++t&&(a=t,r.length=1),r.reverse();a--;r.push(0));r.reverse()}for(o.length-s.length<0&&(r=s,s=o,o=r),a=s.length,t=0,c=A;a;o[a]%=c)t=(o[--a]=o[a]+s[a]+t)/c|0;for(t&&(o.unshift(t),++u),a=o.length;0==o[--a];o.pop());for(e.c=o,a=1,t=o[0];t>=10;t/=10,a++);return e.e=a+u*_-1,b?g(e,f,l):e},T.precision=T.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},T.round=function(){var e=this,t=e.constructor;return g(new t(e),e.e+1,t.rounding)},T.squareRoot=T.sqrt=function(){var e,t,r,n,i,o,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])?NaN:u?s:1/0);for(b=!1,c=Math.sqrt(+s),0==c||c==1/0?(t=a(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(o=n,n=p.times(o.plus(k(s,o,r+2,1))),a(o.c).slice(0,r)===(t=a(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(o,f+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}return b=!0,g(n,f,l.rounding,e)},T.times=function(e,t){var r,n,i=this,a=i.constructor,o=i.c,s=(w=11,e=new a(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||o&&o[0])&&(c||s&&s[0])))return new a(!f||!t||o&&!o[0]&&!s||s&&!s[0]&&!o?NaN:o&&s?0*e.s:e.s/0);for(n=u+c,f=o.length,t=s.length,t>f&&(r=o,o=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]*o[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,b?g(e,a.precision,a.rounding):e},T.toDecimalPlaces=T.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},T.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()},T.toFixed=function(e,t){var r,n=this,i=n.constructor,a=i.toExpNeg,o=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=a,i.toExpPos=o,r},T.toFormat=function(e,t){var r=this;if(!r.c)return r.toString();var n,i=r.s<0,a=r.constructor.format,o=a.groupSeparator,s=+a.groupSize,u=+a.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+=o+p.substr(n,s);u>0&&(f+=o+p.slice(n)),i&&(f="-"+f)}return l?f+a.decimalSeparator+((u=+a.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+a.fractionGroupSeparator):l):f},T.toFraction=function(e){var t,r,n,i,o,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||(!(w=12,o=new m(e)).s||(y=o.cmp(h)<0||!o.c)||m.errors&&N(o.e/_)0)&&(e=n>0?d:h),b=!1,o=new m(a(v)),u=m.precision,m.precision=n=v.length*_*2;c=k(o,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=o.minus(c.times(r=d)),o=r;return r=k(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=k(h,g,n,1).minus(f).abs().cmp(k(s,t,n,1).minus(f).abs())<1?[h+"",g+""]:[s+"",t+""],b=!0,m.precision=u,i},T.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):(w=17,e=new n(e),t=s(r,t,"toNearest")),e.c?r.c&&(e.c[0]?(b=!1,r=k(r,e,0,4>t?[4,5,7,8][t]:t,1).times(e),b=!0,g(r)):r.c=[r.e=0]):r.s&&(e.s&&(e.s=r.s),r=e),r},T.toNumber=function(){var e=this;return+e||(e.s?0*e.s:NaN)},T.toPower=T.pow=function(e,t){var r,n,i,s,u=this,f=u.constructor,l=u.s,p=(w=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(NaN);else{if(i&&z>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."+a(u.c))/Math.LN10+u.e+1)),n>f.maxE+1||n0?l/0:0);b=!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),o(s.c,d,y)&&(n=d+10,s=g(c(e.times(h(u,n+v)),n),n+5,1),+a(s.c).slice(d+1,d+15)+1==1e14&&(s=g(s,d+1,0))),s.s=l,b=!0,f.rounding=y}s=g(s,d,y)}else s=g(u,d,y);return s},T.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()},T.toSignificantDigits=T.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)},T.toString=function(e){var t,r,n,i=this,o=i.constructor,s=i.e;if(null===s)r=i.s?"Infinity":"NaN";else{if(e===t&&(s<=o.toExpNeg||s>=o.toExpPos))return f(i,null,o.rounding,1);if(r=a(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)&&o.errors)p(o,"base",e,"toString",0);else if(r=v(o,r,0|e,10,i.s),"0"==r)return r}return i.s<0?"-"+r:r},T.truncated=T.trunc=function(){return g(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){return this.toString()},v=function(){function e(e,t,r){for(var n,i,a=[0],o=0,s=e.length;s>o;){for(i=a.length;i--;a[i]*=t);for(a[n=0]+=O.indexOf(e.charAt(o++));nr-1&&(null==a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}return function(t,r,n,i,a){var o,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),o=s=f.length;0==f[--s];f.pop());if(!f[0])return"0";if(0>p?o--:(c.c=f,c.e=o,c.s=a,c=k(c,l,h,g,0,n),f=c.c,u=c.r,o=c.e),p=f[h],s=n/2,u=u||null!=f[h+1],4>g?(null!=p||u)&&(0==g||g==(0>a?3:2)):p>s||p==s&&(4==g||u||6==g&&1&f[h-1]||g==(0>a?8:7)))for(f.length=h,--n;++f[--h]>n;)f[h]=0,h||(++o,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>o){for(;++o;r="0"+r);r="0."+r}else if(p=r.length,++o>p)for(o-=p;o--;r+="0");else p>o&&(r=r.slice(0,o)+"."+r.slice(o));return r}}();var k=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;r>i;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.shift());}return function(n,i,a,o,s,u){var c,f,l,p,m,h,v,d,y,x,b,w,E,M,O,T,C,S,z,B=n.constructor,k=n.s==i.s?1:-1,I=n.c,R=i.c;if(!(I&&I[0]&&R&&R[0]))return new B(n.s&&i.s&&(I?!R||I[0]!=R[0]:R)?I&&0==I[0]||!R?0*k:k/0:NaN);for(u?(p=1,f=n.e-i.e):(u=A,p=_,f=N(n.e/p)-N(i.e/p)),S=R.length,T=I.length,y=new B(k),x=y.c=[],l=0;R[l]==(I[l]||0);l++);if(R[l]>(I[l]||0)&&f--,null==a?(k=a=B.precision,o=B.rounding):k=s?a+(n.e-i.e)+1:a,0>k)x.push(1),m=!0;else{if(k=k/p+2|0,l=0,1==S){for(h=0,R=R[0],k++;(T>l||h)&&k--;l++)M=h*u+(I[l]||0),x[l]=M/R|0,h=M%R|0;m=h||T>l}else{for(h=u/(R[0]+1)|0,h>1&&(R=e(R,h,u),I=e(I,h,u),S=R.length,T=I.length),O=S,b=I.slice(0,S),w=b.length;S>w;b[w++]=0);z=R.slice(),z.unshift(0),C=R[0],R[1]>=u/2&&C++;do h=0,c=t(R,b,S,w),0>c?(E=b[0],S!=w&&(E=E*u+(b[1]||0)),h=E/C|0,h>1?(h>=u&&(h=u-1),v=e(R,h,u),d=v.length,w=b.length,c=t(v,b,d,w),1==c&&(h--,r(v,d>S?z:R,d,u))):(0==h&&(c=h=1),v=R.slice()),d=v.length,w>d&&v.unshift(0),r(b,v,w,u),-1==c&&(w=b.length,c=t(R,b,S,w),1>c&&(h++,r(b,w>S?z:R,w,u))),w=b.length):0===c&&(h++,b=[0]),x[l++]=h,c&&b[0]?b[w++]=I[O]||0:(b=[I[O]],w=1);while((O++=10;k/=10,l++);y.e=l+f*p-1,g(y,s?a+y.e+1:a,o,m)}return y}}();d=function(){function e(e){var t,r,n,i=this,a="config",o=i.errors?parseInt:parseFloat;return e==r||"object"!=typeof e&&!p(i,"object expected",e,a)?i:((n=e[t="precision"])!=r&&((y=1>n||n>S)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t="rounding"])!=r&&((y=0>n||n>8)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t="toExpNeg"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="toExpPos"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="minE"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="maxE"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t="errors"])!=r&&(n===!!n||1===n||0===n?(y=w=0,i[t]=!!n):p(i,t,n,a,1)),(n=e[t="crypto"])!=r&&(n===!!n||1===n||0===n?i[t]=!(!n||!x||"object"!=typeof x):p(i,t,n,a,1)),(n=e[t="modulo"])!=r&&((y=0>n||n>9)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(e=e[t="format"])!=r&&("object"==typeof e?i[t]=e:p(i,"format object expected",e,a)),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,a=0;for("[object Array]"==M.call(t[0])&&(t=t[0]),n=new e(t[0]);++ai;)n=t[i],n>=429e7?t[i]=x.getRandomValues(new Uint32Array(1))[0]:a[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):(a.push(n%1e7),i+=4);i=r/4}else p(o,"crypto unavailable",x,"random");if(!i)for(;r>i;)a[i++]=1e7*Math.random()|0;for(r=a[--i],e%=_,r&&e&&(n=E(10,_-e),a[i]=(r/n|0)*n);0===a[i];i--)a.pop();if(0>i)a=[r=0];else{for(r=-1;0===a[0];)a.shift(),r-=_;for(i=1,n=a[0];n>=10;)n/=10,i++;_>i&&(r-=_-i)}return s.e=r,s.c=a,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 w=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=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=T,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=a,u.min=o,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,a){var o,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==a&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==a)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!=a?a!=(0|a)&&r.errors||(y=!(a>=2&&65>a))?(p(r,"base",a,0,0),l=e.test(i)):(o="["+O.slice(0,a=0|a)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+o+"(?:\\."+o+")?$",37>a?"i":"").test(i))?(c&&(i.replace(/^0\.0*|\./,"").length>15&&p(r,0,f),c=!c),i=v(r,i,10,a,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(r,"not a base "+a+" 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),w=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(a=i.length;48===i.charCodeAt(--a););if(i=i.slice(u,a+1)){if(a=i.length,c&&a>15&&p(r,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%_,0>s&&(u+=_),a>u){for(u&&n.c.push(+i.slice(0,u)),a-=_;a>u;)n.c.push(+i.slice(u,u+=_));i=i.slice(u),u=_-i.length}else u-=a;for(;u--;i+="0");n.c.push(+i),b&&(n.e>r.maxE?n.c=n.e=null:n.eo;o++)0!=o&&(i+=", "),i+=n(e[o],r);return i+="]"}return t.format(e,r)}var i=r(6).format,a=r(24).format;t.isString=function(e){return"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"number"==typeof e?i(e,r):e&&e.isBigNumber===!0?a(e,r):e&&e.isFraction===!0?r&&"decimal"===r.fraction?e.toString():e.s*e.n+"/"+e.d:Array.isArray(e)?n(e,r):t.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":"object"==typeof e?"function"==typeof e.format?e.format(r):e.toString():String(e)}},function(e,t){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),"number"==typeof 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 a=.001,o=1e5;r&&r.exponential&&(void 0!==r.exponential.lower&&(a=r.exponential.lower),void 0!==r.exponential.upper&&(o=r.exponential.upper));({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos});if(e.constructor.config({toExpNeg:Math.round(Math.log(a)/Math.LN10),toExpPos:Math.round(Math.log(o)/Math.LN10)}),e.isZero())return"0";var s,u=e.abs();return s=u.gte(a)&&u.lt(o)?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){"use strict";function r(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=r},function(e,t,r){e.exports=[r(27),r(28)]},function(e,t,r){"use strict";function n(e,t,r,n){function o(e,t){if(!(this instanceof o))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 n=new o(r.re,r.im);this.re=n.re,this.im=n.im;break}if("r"in r&&"phi"in r){var n=o.fromPolar(r.r,r.phi);this.re=n.re,this.im=n.im;break}}throw new SyntaxError("Object with the re and im or r and phi properties expected.");case 2:if(!i(e)||!i(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 s(){for(;" "==d||" "==d;)f()}function u(e){return e>="0"&&"9">=e||"."==e}function c(e){return e>="0"&&"9">=e}function f(){v++,d=g.charAt(v)}function l(e){v=e,d=g.charAt(v)}function p(){var e,t="";if(e=v,"+"==d?f():"-"==d&&(t+=d,f()),!u(d))return l(e),null;if("."==d){if(t+=d,f(),!c(d))return l(e),null}else{for(;c(d);)t+=d,f();"."==d&&(t+=d,f())}for(;c(d);)t+=d,f();if("E"==d||"e"==d){if(t+=d,f(),("+"==d||"-"==d)&&(t+=d,f()),!c(d))return l(e),null;for(;c(d);)t+=d,f()}return t}function m(){var e=g.charAt(v+1);if("I"==d||"i"==d)return f(),"1";if(!("+"!=d&&"-"!=d||"I"!=e&&"i"!=e)){var t="+"==d?"1":"-1";return f(),f(),t}return null}function h(){return new SyntaxError('End of string expected, got "'+g.substr(v)+'"')}o.prototype.isComplex=!0,o.prototype.type="Complex";var g,v,d;return o.parse=function(e){if(g=e,v=-1,d="","string"!=typeof g)throw new TypeError("Invalid argument in Complex.parse, string expected");f(),s();var t=p();if(t){if("I"==d||"i"==d){if(f(),s(),d)throw h();return new o(0,Number(t))}s();var r=d;if("+"!=r&&"-"!=r){if(s(),d)throw h();return new o(Number(t),0)}f(),s();var n=p();if(n){if("I"!=d&&"i"!=d)throw new SyntaxError('Character "i" expected, got "'+d+'"');f()}else if(n=m(),!n)throw new SyntaxError("Imaginary part expected");if("-"==r&&(n="-"==n[0]?"+"+n.substring(1):"-"+n),f(),s(),d)throw h();return new o(Number(t),Number(n))}if(t=m()){if(s(),d)throw h();return new o(0,Number(t))}throw new SyntaxError('Could not parse: "'+e+'" as complex number')},o.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if("object"==typeof t)return o.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],n=arguments[1];if(i(r)){if(n&&n.isUnit&&n.hasBase("ANGLE")&&(n=n.toNumber("rad")),i(n))return new o(r*Math.cos(n),r*Math.sin(n));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")}},o.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},o.prototype.clone=function(){return new o(this.re,this.im)},o.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},o.prototype.format=function(e){var t="",r=this.im,n=this.re,o=a(this.re,e),s=a(this.im,e),u=i(e)?e:e?e.precision:null;if(null!==u){var c=Math.pow(10,-u);Math.abs(n/r)0?1==r?o+" + i":o+" + "+s+"i":-1==r?o+" - i":o+" - "+s.substring(1)+"i"},o.prototype.toString=function(){return this.format()},o.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},o.fromJSON=function(e){return new o(e)},o.prototype.valueOf=o.prototype.toString,o}var i=r(6).isNumber,a=r(6).format;t.name="Complex",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(29),s=a("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){return e.Complex.parse(t)},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 i(e,s)}});return s.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+"+o.symbols.i+"\\cdot\\left(${args[1]}\\right)\\right)"},s}var i=r(19);t.name="complex",t.factory=n},function(e,t){"use strict";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"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var r={deg:"^\\circ"};t.toSymbol=function(e,n){if(n="undefined"==typeof n?!1:n)return r.hasOwnProperty(e)?r[e]:"\\mathrm{"+e+"}";if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf("_")){var i=e.indexOf("_");return t.toSymbol(e.substring(0,i))+"_{"+t.toSymbol(e.substring(i+1))+"}"}return e}},function(e,t,r){e.exports=[r(31),r(35)]},function(e,t,r){function n(e,t,r,n){return i}var i=r(32);i.prototype.type="Fraction",i.prototype.isFraction=!0,i.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}},i.fromJSON=function(e){return new i(e)},t.name="Fraction",t.path="type",t.factory=n},function(e,t,r){var n,i;(function(e){/** * @license Fraction.js v3.0.0 09/09/2015 * http://www.xarg.org/2014/03/precise-calculations-in-javascript/ * * Copyright (c) 2015, Robert Eisele (robert@xarg.org) * Dual licensed under the MIT or GPL Version 2 licenses. **/ -!function(a){"use strict";function o(e,t){return isNaN(e=parseInt(e,10))&&s(),e*t}function s(){throw"Invalid Param"}function u(e,t){return this instanceof u?(l(e,t),e=u.REDUCE?g(f.d,f.n):1,this.s=f.s,this.n=f.n/e,void(this.d=f.d/e)):new u(e,t)}var c=2e3,f={s:1,n:0,d:1},l=function(e,t){var r,n=0,i=1,a=1,u=0,c=0,l=0,p=1,m=1,h=0,g=1,v=1,d=1,y=1e7;if(void 0===e||null===e);else if(void 0!==t)n=e,i=t,a=n*i;else switch(typeof e){case"object":"d"in e&&"n"in e?(n=e.n,i=e.d,"s"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(i=e[1])):s(),a=n*i;break;case"number":if(0>e&&(a=e,e=-e),e%1===0)n=e;else if(e>0){for(e>=1&&(m=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)),e/=m);y>=g&&y>=d;){if(r=(h+v)/(g+d),e===r){y>=g+d?(n=h+v,i=g+d):d>g?(n=v,i=d):(n=h,i=g);break}e>r?(h+=v,g+=d):(v+=h,d+=g),g>y?(n=v,i=d):(n=h,i=g)}n*=m}break;case"string":if(g=e.match(/\d+|./g),"-"===g[h]?(a=-1,h++):"+"===g[h]&&h++,g.length===h+1?c=o(g[h++],a):"."===g[h+1]||"."===g[h]?("."!==g[h]&&(u=o(g[h++],a)),h++,(h+1===g.length||"("===g[h+1]&&")"===g[h+3]||"'"===g[h+1]&&"'"===g[h+3])&&(c=o(g[h],a),p=Math.pow(10,g[h].length),h++),("("===g[h]&&")"===g[h+2]||"'"===g[h]&&"'"===g[h+2])&&(l=o(g[h+1],a),m=Math.pow(10,g[h+1].length)-1,h+=3)):"/"===g[h+1]||":"===g[h+1]?(c=o(g[h],a),p=o(g[h+2],1),h+=3):"/"===g[h+3]&&" "===g[h+1]&&(u=o(g[h],a),c=o(g[h+2],a),p=o(g[h+4],1),h+=5),g.length<=h){a=n=l+m*(u*p+c),i=p*m;break}default:s()}if(!i)throw"DIV/0";f.s=0>a?-1:1,f.n=Math.abs(n),f.d=Math.abs(i)},p=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n},m=function(e,t){for(;t%2===0;t/=2);for(;t%5===0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>c)return 0;return n},h=function(e,t,r){for(var n=1,i=p(10,r,t),a=0;300>a;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0},g=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}};u.REDUCE=1,u.prototype={s:1,n:0,d:1,abs:function(){return new u(this.n,this.d)},neg:function(){return new u(-this.s*this.n,this.d)},add:function(e,t){return l(e,t),new u(this.s*this.n*f.d+f.s*this.d*f.n,this.d*f.d)},sub:function(e,t){return l(e,t),new u(this.s*this.n*f.d-f.s*this.d*f.n,this.d*f.d)},mul:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.n,this.d*f.d)},div:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.d,this.d*f.n)},clone:function(){return new u(this)},mod:function(e,t){return void 0===e?new u(this.s*this.n%this.d,1):(l(e,t),0===f.n*this.d&&u(0,0),new u(this.s*f.d*this.n%(f.n*this.d),f.d*this.d))},gcd:function(e,t){return l(e,t),new u(g(f.n,this.n),f.d*this.d/g(f.d,this.d))},lcm:function(e,t){return l(e,t),new u(f.n*this.n/g(f.n,this.n),g(f.d,this.d))},ceil:function(){return new u(Math.ceil(this.s*this.n/this.d),1)},floor:function(){return new u(Math.floor(this.s*this.n/this.d),1)},round:function(){return new u(Math.round(this.s*this.n/this.d),1)},inverse:function(){return new u(this.s*this.d,this.n)},pow:function(e){var t=this.d,r=this.n;return 0>e?(this.d=Math.pow(r,-e),this.n=Math.pow(t,-e)):(this.d=Math.pow(t,e),this.n=Math.pow(r,e)),0===e%2&&(this.s=1),this},equals:function(e,t){return l(e,t),this.s*this.n*f.d===f.s*f.n*this.d},compare:function(e,t){l(e,t);var r=this.s*this.n*f.d-f.s*f.n*this.d;return(r>0)-(0>r)},divisible:function(e,t){return l(e,t),!(!(f.n*this.d)||this.n*f.d%(f.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toString:function(){var e,t=this.n,r=this.d;u.REDUCE||(e=g(t,r),t/=e,r/=e);for(var n=String(t).split(""),i=0,a=[~this.s?"":"-","",""],o="",s=m(t,r),c=h(t,r,s),f=-1,l=1,p=10+s+c+n.length,v=0;p>v;v++,i*=10){if(v0)if(f===c)a[l]+=o+"(",o="";else if(f===s+c){a[l]+=o+")";break}i>=r?(a[l]+=o+(i/r|0),o="",i%=r):l>1?o+="0":a[l]&&(a[l]+="0")}return a[0]+=a[1]||"0",a[2]?a[0]+"."+a[2]:a[0]}},r(68).amd?(n=[],i=function(){return u}.apply(t,n),!(void 0!==i&&(e.exports=i))):e.exports=u}(this)}).call(t,r(67)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("fraction",{number:function(t){if(!isFinite(t)||isNaN(t))throw new Error(t+" cannot be represented as a fraction");return new e.Fraction(t)},string:function(t){return new e.Fraction(t)},"number, number":function(t,r){return new e.Fraction(t,r)},Fraction:function(e){return e},Object:function(t){return new e.Fraction(t)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);t.name="fraction",t.factory=n},function(e,t,r){e.exports=[r(71),r(72),r(73),r(74),r(77),r(80),r(81),r(82),r(83),r(33),r(84)]},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.prototype.type="Matrix",i.prototype.isMatrix=!0,i.storage=function(e){if(!o(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.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},i.prototype.create=function(e,t){throw new Error("Cannot invoke create 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(41),a=i.string,o=a.isString;t.name="Matrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,c){function g(e,t){if(!(this instanceof g))throw new SyntaxError("Constructor must be called with the new operator");if(t&&!m(t))throw new Error("Invalid datatype: "+t);if(e&&e.isMatrix===!0)"DenseMatrix"===e.type?(this._data=u.clone(e._data),this._size=u.clone(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&f(e.data)&&f(e.size))this._data=e.data,this._size=e.size,this._datatype=t||e.datatype;else if(f(e))this._data=w(e),this._size=s.size(this._data),s.validate(this._data,this._size),this._datatype=t;else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._data=[],this._size=[0],this._datatype=t}}function v(e,t){if(!t||t.isIndex!==!0)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 a(n.length,e._size.length);for(var i=t.min(),o=t.max(),s=0,u=e._size.length;u>s;s++)h(i[s],e._size[s]),h(o[s],e._size[s]);return new g(d(e._data,t,n.length,0),e._datatype)}function d(e,t,r,n){var i=n==r-1,a=t.dimension(n);return i?a.map(function(t){return e[t]}).valueOf():a.map(function(i){var a=e[i];return d(a,t,r,n+1)}).valueOf()}function y(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Invalid index");var i,o=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(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(o.length");var p=t.max().map(function(e){return e+1});b(e,p,n);var m=o.length,h=0;x(e._data,t,r,m,h)}return e}function x(e,t,r,n,i){var a=i==n-1,o=t.dimension(i);a?o.forEach(function(t,n){h(t),e[t]=r[n[0]]}):o.forEach(function(a,o){h(a),x(e[a],t,r[o[0]],n,i+1)})}function b(e,t,r){for(var n=u.clone(e._size),i=!1;n.lengtha;a++)t[a]>n[a]&&(n[a]=t[a],i=!0);i&&E(e,n,r)}function w(e){for(var t=0,r=e.length;r>t;t++){var n=e[t];f(n)?e[t]=w(n):n&&n.isMatrix===!0&&(e[t]=w(n.valueOf()))}return e}var N=n(r(71));g.prototype=new N,g.prototype.type="DenseMatrix",g.prototype.isDenseMatrix=!0,g.prototype.storage=function(){return"dense"},g.prototype.datatype=function(){return this._datatype},g.prototype.create=function(e,t){return new g(e,t)},g.prototype.subset=function(e,t,r){switch(arguments.length){case 1:return v(this,e);case 2:case 3:return y(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}},g.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new a(e.length,this._size.length);for(var t=0;tn;n++){var o=e[n];h(o,r.length),r=r[o]}return u.clone(r)},g.prototype.set=function(e,t,r){if(!f(e))throw new TypeError("Array expected");if(e.lengthn;n++)o=e[n],h(o,u.length),u=u[o];return o=e[e.length-1],h(o,u.length),u[o]=t,this},g.prototype.resize=function(e,t,r){if(!f(e))throw new TypeError("Array expected");var n=r?this.clone():this;return E(n,e,t)};var E=function(e,t,r){if(0===t.length){for(var n=e._data;f(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 g.prototype.clone=function(){var e=new g({data:u.clone(this._data),size:u.clone(this._size),datatype:this._datatype});return e},g.prototype.size=function(){return this._size},g.prototype.map=function(e){var t=this,r=function(n,i){return f(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new g({data:r(this._data,[]),size:u.clone(this._size),datatype:this._datatype})},g.prototype.forEach=function(e){var t=this,r=function(n,i){f(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},g.prototype.toArray=function(){return u.clone(this._data)},g.prototype.valueOf=function(){return this._data},g.prototype.format=function(e){return o.format(this._data,e)},g.prototype.toString=function(){return o.format(this._data)},g.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(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,n=this._size[0],i=this._size[1],a=Math.min(n-r,i-t),o=[],s=0;a>s;s++)o[s]=u.clone(this._data[s+r][s+t]);return new g({data:o,size:[a],datatype:this._datatype})},g.diagonal=function(t,r,n,i,a){if(!f(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&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),n){if(n&&n.isBigNumber===!0&&(n=n.toNumber()),!l(n)||!p(n))throw new TypeError("The parameter k must be an integer number")}else n=0;i&&m(a)&&(i=c.convert(i,a));var o,u=n>0?n:0,h=0>n?-n:0,v=t[0],d=t[1],y=Math.min(v-h,d-u);if(f(r)){if(r.length!==y)throw new Error("Invalid value array length");o=function(e){return r[e]}}else if(r&&r.isMatrix===!0){var x=r.size();if(1!==x.length||x[0]!==y)throw new Error("Invalid matrix length");o=function(e){return r.get([e])}}else o=function(){return r};i||(i=o(0)&&o(0).isBigNumber===!0?new e.BigNumber(0):0);var b=[];if(t.length>0){b=s.resize(b,t,i);for(var w=0;y>w;w++)b[w+h][w+u]=o(w)}return new g({data:b,size:[v,d]})},g.fromJSON=function(e){return new g(e)},g.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 h(e,this._size[0]),h(t,this._size[0]),g._swapRows(e,t,this._data),this},g._swapRows=function(e,t,r){var n=r[e];r[e]=r[t],r[t]=n},e.Matrix._storage.dense=g,e.Matrix._storage["default"]=g,g}var i=r(41),a=r(31),o=i.string,s=i.array,u=i.object,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=o.isString,h=s.validateIndex;t.name="DenseMatrix",t.path="type",t.factory=n,t.lazy=!1},function(e,t,r){"use strict";function n(e,t,n,g){function v(e,t){if(!(this instanceof v))throw new SyntaxError("Constructor must be called with the new operator");if(t&&!m(t))throw new Error("Invalid datatype: "+t);if(e&&e.isMatrix===!0)x(this,e,t);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=t||e.datatype;else if(f(e))b(this,e,t);else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=t}}var d=n(r(71)),y=n(r(38)),x=function(e,t,r){"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=r||t._datatype):b(e,t.valueOf(),r||t._datatype)},b=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(m(r)&&(a=g.find(y,[r,r])||y,o=g.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;n>u;u++){var c=t[u];if(f(c)){if(0===s&&ii&&(i=1),a(c,o)||(e._values.push(c),e._index.push(u))}s++}while(i>s)}e._ptr.push(e._index.length),e._size=[n,i]};v.prototype=new d,v.prototype.type="SparseMatrix",v.prototype.isSparseMatrix=!0,v.prototype.storage=function(){return"sparse"},v.prototype.datatype=function(){return this._datatype},v.prototype.create=function(e,t){return new v(e,t)},v.prototype.density=function(){var e=this._size[0],t=this._size[1];return 0!==e&&0!==t?this._index.length/(e*t):0},v.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 w(this,e);case 2:case 3:return N(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}};var w=function(e,t){if(!t||t.isIndex!==!0)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 a(n.length,e._size.length);var i,o,s,u,c=t.min(),f=t.max();for(i=0,o=e._size.length;o>i;i++)h(c[i],e._size[i]),h(f[i],e._size[i]);var l=e._values,p=e._index,m=e._ptr,g=t.dimension(0),d=t.dimension(1),y=[],x=[];g.forEach(function(e,t){x[e]=t[0],y[e]=!0});var b=l?[]:void 0,w=[],N=[];return d.forEach(function(e){for(N.push(w.length),s=m[e],u=m[e+1];u>s;s++)i=p[s],y[i]===!0&&(w.push(x[i]),b&&b.push(l[s]))}),N.push(w.length),new v({values:b,index:w,ptr:N,size:n,datatype:e._datatype})},N=function(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Invalid index");var i,u=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(i=r.size(),r=r.toArray()):i=o.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 a(u.length,e._size.length,"<");if(i.length");for(var p=t.min()[0],m=t.min()[1],h=i[0],g=i[1],v=0;h>v;v++)for(var d=0;g>d;d++){var y=r[v][d];e.set([v+p,d+m],y,n)}}return e};v.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new a(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];h(t,this._size[0]),h(r,this._size[1]);var n=E(t,this._ptr[r],this._ptr[r+1],this._index);return no-1||i>s-1)&&(_(this,Math.max(n+1,o),Math.max(i+1,s),r),o=this._size[0],s=this._size[1]),h(n,o),h(i,s);var l=E(n,this._ptr[i],this._ptr[i+1],this._index);return li;i++)if(n[i]===e)return i;return t},M=function(e,t,r,n,i){r.splice(e,1),n.splice(e,1);for(var a=t+1;at)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=n||0,a=y,o=0;m(e._datatype)&&(a=g.find(y,[e._datatype,e._datatype])||y,o=g.convert(0,e._datatype),i=g.convert(i,e._datatype));var s,u,c,f=!a(i,o),l=e._size[0],p=e._size[1];if(r>p){for(u=p;r>u;u++)if(e._ptr[u]=e._values.length,f)for(s=0;l>s;s++)e._values.push(i),e._index.push(s);e._ptr[r]=e._values.length}else p>r&&(e._ptr.splice(r+1,p-r),e._values.splice(e._ptr[r],e._values.length),e._index.splice(e._ptr[r],e._index.length));if(p=r,t>l){if(f){var h=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]+h,c=e._ptr[u+1]+h;var v=0;for(s=l;t>s;s++,v++)e._values.splice(c+v,0,i),e._index.splice(c+v,0,s),h++}e._ptr[p]=e._values.length}}else if(l>t){var d=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]-d;var x=e._ptr[u],b=e._ptr[u+1]-d;for(c=x;b>c;c++)s=e._index[c],s>t-1&&(e._values.splice(c,1),e._index.splice(c,1),d++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.clone=function(){var e=new v({values:this._values?s.clone(this._values):void 0,index:s.clone(this._index),ptr:s.clone(this._ptr),size:s.clone(this._size),datatype:this._datatype});return e},v.prototype.size=function(){return s.clone(this._size)},v.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],a=function(t,n,i){return e(t,[n,i],r)};return O(this,0,n-1,0,i-1,a,t)};var O=function(e,t,r,n,i,a,o){var s=[],u=[],c=[],f=y,l=0;m(e._datatype)&&(f=g.find(y,[e._datatype,e._datatype])||y,l=g.convert(0,e._datatype));for(var p=function(e,t,r){e=a(e,t,r),f(e,l)||(s.push(e),u.push(t))},h=n;i>=h;h++){c.push(s.length);for(var d=e._ptr[h],x=e._ptr[h+1],b=t,w=d;x>w;w++){var N=e._index[w];if(N>=t&&r>=N){if(!o)for(var E=b;N>E;E++)p(0,E-t,h-n);p(e._values[w],N-t,h-n)}b=N+1}if(!o)for(var M=b;r>=M;M++)p(0,M-t,h-n)}return c.push(s.length),new v({values:s,index:u,ptr:c,size:[r-t+1,i-n+1]})};v.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],a=0;i>a;a++){for(var o=this._ptr[a],s=this._ptr[a+1],u=0,c=o;s>c;c++){var f=this._index[c];if(!t)for(var l=u;f>l;l++)e(0,[l,a],r);e(this._values[c],[f,a],r),u=f+1}if(!t)for(var p=u;n>p;p++)e(0,[p,a],r)}},v.prototype.toArray=function(){return T(this._values,this._index,this._ptr,this._size,!0)},v.prototype.valueOf=function(){return T(this._values,this._index,this._ptr,this._size,!1)};var T=function(e,t,r,n,i){var a,o,u=n[0],c=n[1],f=[];for(a=0;u>a;a++)for(f[a]=[],o=0;c>o;o++)f[a][o]=0;for(o=0;c>o;o++)for(var l=r[o],p=r[o+1],m=l;p>m;m++)a=t[m],f[a][o]=e?i?s.clone(e[m]):e[m]:1;return f};return v.prototype.format=function(e){for(var t=this._size[0],r=this._size[1],n=this.density(),i="Sparse Matrix ["+u.format(t,e)+" x "+u.format(r,e)+"] density: "+u.format(n,e)+"\n",a=0;r>a;a++)for(var o=this._ptr[a],s=this._ptr[a+1],c=o;s>c;c++){var f=this._index[c];i+="\n ("+u.format(f,e)+", "+u.format(a,e)+") ==> "+(this._values?u.format(this._values[c],e):"X")}return i},v.prototype.toString=function(){return u.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(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],a=Math.min(n-r,i-t),o=[],u=[],c=[];c[0]=0;for(var f=t;i>f&&o.lengthg;g++){var d=this._index[g];if(d===f-t+r){o.push(s.clone(this._values[g])),u[o.length-1]=d-r;break}}return c.push(o.length),new v({values:o,index:u,ptr:c,size:[a,1]})},v.fromJSON=function(e){return new v(e)},v.diagonal=function(e,t,r,n,i){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&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),r){if(r.isBigNumber===!0&&(r=r.toNumber()),!l(r)||!p(r))throw new TypeError("The parameter k must be an integer number")}else r=0;var a=y,o=0;m(i)&&(a=g.find(y,[i,i])||y,o=g.convert(0,i));var s,u=r>0?r:0,c=0>r?-r:0,h=e[0],d=e[1],x=Math.min(h-c,d-u);if(f(t)){if(t.length!==x)throw new Error("Invalid value array length");s=function(e){return t[e]}}else if(t&&t.isMatrix===!0){var b=t.size();if(1!==b.length||b[0]!==x)throw new Error("Invalid matrix length");s=function(e){return t.get([e])}}else s=function(){return t};for(var w=[],N=[],E=[],M=0;d>M;M++){E.push(w.length);var A=M-u;if(A>=0&&x>A){var _=s(A);a(_,o)||(N.push(A+c),w.push(_))}}return E.push(w.length),new v({values:w,index:N,ptr:E,size:[h,d]})},v.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 h(e,this._size[0]),h(t,this._size[0]),v._swapRows(e,t,this._size[1],this._values,this._index,this._ptr),this},v._forEachRow=function(e,t,r,n,i){for(var a=n[e],o=n[e+1],s=a;o>s;s++)i(r[s],t[s])},v._swapRows=function(e,t,r,n,i,a){for(var o=0;r>o;o++){var s=a[o],u=a[o+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)}}},e.Matrix._storage.sparse=v,v}var i=r(41),a=r(31),o=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=u.isString,h=o.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=n,t.lazy=!1},function(e,t,r){"use strict";function n(e,t,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}var a=n(r(75)),o=n(r(38));return i.prototype.type="Spa",i.prototype.isSpa=!0,i.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}},i.prototype.get=function(e){var t=this._values[e];return t?t.value:0},i.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)},i.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,a=[],s=n.extractMinimum();for(s&&a.push(s);s&&s.key<=t;)s.key>=e&&(o(s.value,0)||r(s.key,s.value,this)),s=n.extractMinimum(),s&&a.push(s);for(var u=0;uM;M++){S[M]=C.length;var P=M+1;for(_=c[M],O=c[M+1],A=_;O>A;A++)E=u[A],C.push(E),I[E]=P,B&&(B[E]=n[A]);for(_=h[M],O=h[M+1],A=_;O>A;A++)if(E=m[A],I[E]===P){if(B){var U=N(B[E],p[A]);b(U,w)?I[E]=null:B[E]=U}}else C.push(E),R[E]=P,k&&(k[E]=p[A]);if(B&&k)for(A=S[M];A0;){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},a.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&o(t.key,n.key)&&(f(e,t,n),l(e,n)),o(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,a=e;if(a)for(i++,a=a.right;a!==e;)i++,a=a.right;for(var c;i>0;){for(var f=a.degree,l=a.right;;){if(c=n[f],!c)break;if(s(a.key,c.key)){var m=c;c=a,a=m}p(c,a),n[f]=null,f++}n[f]=a,a=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,o(c.key,e.key)&&(e=c)):e=c);return e};return a}t.name="FibonacciHeap",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=a("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)},"Fraction, Fraction":function(e,t){return-1===e.compare(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return t>e},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.smaller+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="smaller",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=a("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)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){ -return e>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.larger+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="larger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){function a(e,t){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(t&&!u(t))throw new Error("Invalid datatype: "+t);if(e&&e.isMatrix===!0||s(e)){var r=new c(e,t);this._data=r._data,this._size=r._size,this._datatype=r._datatype,this._min=null,this._max=null}else if(e&&s(e.data)&&s(e.size))this._data=e.data,this._size=e.size,this._datatype=e.datatype,this._min="undefined"!=typeof e.min?e.min:null,this._max="undefined"!=typeof e.max?e.max:null;else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._data=[],this._size=[0],this._datatype=t,this._min=null,this._max=null}}var c=n(r(72)),f=n(r(78));return a.prototype=new c,a.prototype.type="ImmutableDenseMatrix",a.prototype.isImmutableDenseMatrix=!0,a.prototype.subset=function(e){switch(arguments.length){case 1:var t=c.prototype.subset.call(this,e);return t.isMatrix?new a({data:t._data,size:t._size,datatype:t._datatype}):t;case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},a.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},a.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},a.prototype.clone=function(){var e=new a({data:o.clone(this._data),size:o.clone(this._size),datatype:this._datatype});return e},a.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},a.fromJSON=function(e){return new a(e)},a.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},a.prototype.min=function(){if(null===this._min){var e=null;this.forEach(function(t){(null===e||f(t,e))&&(e=t)}),this._min=null!==e?e:void 0}return this._min},a.prototype.max=function(){if(null===this._max){var e=null;this.forEach(function(t){(null===e||f(e,t))&&(e=t)}),this._max=null!==e?e:void 0}return this._max},a}var i=r(41),a=i.string,o=i.object,s=Array.isArray,u=a.isString;t.name="ImmutableDenseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e){function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._isScalar=!0;for(var n=0,i=arguments.length;i>n;n++){var a=arguments[n];if(a&&a.isRange===!0)this._dimensions.push(a),this._isScalar=!1;else if(a&&(Array.isArray(a)||a.isMatrix===!0)){var o=r(a.valueOf());this._dimensions.push(o);var s=o.size();this._isScalar=1===s.length&&1===s[0]}else{if("number"!=typeof a)throw new TypeError("Dimension must be an Array, Matrix, Number or Range");this._dimensions.push(r([a]))}}}function r(t){for(var r=0,n=t.length;n>r;r++)if("number"!=typeof t[r]||!a(t[r]))throw new TypeError("Index parameters must be positive integer numbers");return new e.ImmutableDenseMatrix(t)}return t.prototype.type="Index",t.prototype.isIndex=!0,t.prototype.clone=function(){var e=new t;return e._dimensions=i(this._dimensions),e._isScalar=this._isScalar,e},t.create=function(e){var r=new t;return t.apply(r,e),r},t.prototype.size=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.size()[0]}return e},t.prototype.max=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.max()}return e},t.prototype.min=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.min()}return e},t.prototype.forEach=function(e){for(var t=0,r=this._dimensions.length;r>t;t++)e(this._dimensions[t],t,this)},t.prototype.dimension=function(e){return this._dimensions[e]||null},t.prototype.isScalar=function(){return this._isScalar},t.prototype.toArray=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toArray());return e},t.prototype.valueOf=t.prototype.toArray,t.prototype.toString=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toString());return"["+e.join(", ")+"]"},t.prototype.toJSON=function(){return{mathjs:"Index",dimensions:this._dimensions}},t.fromJSON=function(e){return t.create(e.dimensions)},t}var i=r(3).clone,a=r(6).isInteger;t.name="Index",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(e,t,r){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e)if(e.isBigNumber===!0)e=e.toNumber();else if("number"!=typeof e)throw new TypeError("Parameter start must be a number");if(null!=t)if(t.isBigNumber===!0)t=t.toNumber();else if("number"!=typeof t)throw new TypeError("Parameter end must be a number");if(null!=r)if(r.isBigNumber===!0)r=r.toNumber();else if("number"!=typeof 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}return a.prototype.type="Range",a.prototype.isRange=!0,a.parse=function(e){if("string"!=typeof e)return null;var t=e.split(":"),r=t.map(function(e){return parseFloat(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return new a(r[0],r[1]);case 3:return new a(r[0],r[2],r[1]);default:return null}},a.prototype.clone=function(){return new a(this.start,this.end,this.step)},a.prototype.size=function(){var e=0,t=this.start,r=this.step,n=this.end,a=n-t;return i.sign(r)==i.sign(a)?e=Math.ceil(a/r):0==a&&(e=0),isNaN(e)&&(e=0),[e]},a.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.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++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=i.format(this.start,e);return 1!=this.step&&(t+=":"+i.format(this.step,e)),t+=":"+i.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}var i=r(6);t.name="Range",t.path="type",t.factory=n},function(e,t){"use strict";function r(e,t,r,n){return n("index",{"...number | BigNumber | Range | Array | Matrix":function(t){var r=t.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e&&(Array.isArray(e)||e.isMatrix===!0)?e.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e}):e}),n=new e.Index;return e.Index.apply(n,r),n}})}t.name="index",t.factory=r},function(e,t){"use strict";function r(e,t,r,n){var i=e.SparseMatrix,a=n("sparse",{"":function(){return new i([])},string:function(e){return new i([],e)},"Array | Matrix":function(e){return new i(e)},"Array | Matrix, string":function(e,t){return new i(e,t)}});return a.toTex={0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},a}t.name="sparse",t.factory=r},function(e,t,r){e.exports=[r(86)]},function(e,t){"use strict";function r(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}t.name="ResultSet",t.path="type",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("string",{"":function(){return""},number:a.format,"null":function(e){return"null"},"boolean":function(e){return e+""},string:function(e){return e},"Array | Matrix":function(e){return i(e,o)},any:function(e){return String(e)}});return o.toTex={0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},o}var i=r(19),a=r(6);t.name="string",t.factory=n},function(e,t,r){e.exports=[r(28),r(89),r(90)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("unit",{Unit:function(e){return e.clone()},string:function(t){return e.Unit.isValuelessUnit(t)?new e.Unit(null,t):e.Unit.parse(t)},"number | BigNumber | Fraction, string":function(t,r){return new e.Unit(t,r)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},a}var i=r(19);t.name="unit",t.factory=n},function(e,t,r){function n(e,t,r,n,a){function o(t){var r=e.Unit.parse(t);return r.fixPrefix=!0,r}i(a,"speedOfLight",function(){return o("299792458 m s^-1")}),i(a,"gravitationConstant",function(){return o("6.6738480e-11 m^3 kg^-1 s^-2")}),i(a,"planckConstant",function(){return o("6.626069311e-34 J s")}),i(a,"reducedPlanckConstant",function(){return o("1.05457172647e-34 J s")}),i(a,"magneticConstant",function(){return o("1.2566370614e-6 N A^-2")}),i(a,"electricConstant",function(){return o("8.854187817e-12 F m^-1")}),i(a,"vacuumImpedance",function(){return o("376.730313461 ohm")}),i(a,"coulomb",function(){return o("8.9875517873681764e9 N m^2 C^-2")}),i(a,"elementaryCharge",function(){return o("1.60217656535e-19 C")}),i(a,"bohrMagneton",function(){return o("9.2740096820e-24 J T^-1")}),i(a,"conductanceQuantum",function(){return o("7.748091734625e-5 S")}),i(a,"inverseConductanceQuantum",function(){return o("12906.403721742 ohm")}),i(a,"magneticFluxQuantum",function(){return o("2.06783375846e-15 Wb")}),i(a,"nuclearMagneton",function(){return o("5.0507835311e-27 J T^-1")}),i(a,"klitzing",function(){return o("25812.807443484 ohm")}),i(a,"bohrRadius",function(){return o("5.291772109217e-11 m")}),i(a,"classicalElectronRadius",function(){return o("2.817940326727e-15 m")}),i(a,"electronMass",function(){return o("9.1093829140e-31 kg")}),i(a,"fermiCoupling",function(){return o("1.1663645e-5 GeV^-2")}),i(a,"fineStructure",function(){return.007297352569824}),i(a,"hartreeEnergy",function(){return o("4.3597443419e-18 J")}),i(a,"protonMass",function(){return o("1.67262177774e-27 kg")}),i(a,"deuteronMass",function(){return o("3.3435830926e-27 kg")}),i(a,"neutronMass",function(){return o("1.6749271613e-27 kg")}),i(a,"quantumOfCirculation",function(){return o("3.636947552024e-4 m^2 s^-1")}),i(a,"rydberg",function(){return o("10973731.56853955 m^-1")}),i(a,"thomsonCrossSection",function(){return o("6.65245873413e-29 m^2")}),i(a,"weakMixingAngle",function(){return.222321}),i(a,"efimovFactor",function(){return 22.7}),i(a,"atomicMass",function(){return o("1.66053892173e-27 kg")}),i(a,"avogadro",function(){return o("6.0221412927e23 mol^-1")}),i(a,"boltzmann",function(){return o("1.380648813e-23 J K^-1")}),i(a,"faraday",function(){return o("96485.336521 C mol^-1")}),i(a,"firstRadiation",function(){return o("3.7417715317e-16 W m^2")}),i(a,"loschmidt",function(){return o("2.686780524e25 m^-3")}),i(a,"gasConstant",function(){return o("8.314462175 J K^-1 mol^-1")}),i(a,"molarPlanckConstant",function(){return o("3.990312717628e-10 J s mol^-1")}),i(a,"molarVolume",function(){return o("2.241396820e-10 m^3 mol^-1")}),i(a,"sackurTetrode",function(){return-1.164870823}),i(a,"secondRadiation",function(){return o("1.438777013e-2 m K")}),i(a,"stefanBoltzmann",function(){return o("5.67037321e-8 W m^-2 K^-4")}),i(a,"wienDisplacement",function(){return o("2.897772126e-3 m K")}),i(a,"molarMass",function(){return o("1e-3 kg mol^-1")}),i(a,"molarMassC12",function(){return o("1.2e-2 kg mol^-1")}),i(a,"gravity",function(){return o("9.80665 m s^-2")}),i(a,"planckLength",function(){return o("1.61619997e-35 m")}),i(a,"planckMass",function(){return o("2.1765113e-8 kg")}),i(a,"planckTime",function(){return o("5.3910632e-44 s")}),i(a,"planckCharge",function(){return o("1.87554595641e-18 C")}),i(a,"planckTemperature",function(){return o("1.41683385e+32 K")})}var i=r(3).lazy;t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){"use strict";function n(e,t,o,s,u){u.on("config",function(r,i){r.number!==i.number&&n(e,t,o,s,u)}),u["true"]=!0,u["false"]=!1,u["null"]=null,u.uninitialized=r(42).UNINITIALIZED,"bignumber"===t.number?(u.Infinity=new e.BigNumber(1/0),u.NaN=new e.BigNumber(NaN),i.lazy(u,"pi",function(){return a.pi(e.BigNumber)}),i.lazy(u,"tau",function(){return a.tau(e.BigNumber)}),i.lazy(u,"e",function(){return a.e(e.BigNumber)}),i.lazy(u,"phi",function(){return a.phi(e.BigNumber)}),i.lazy(u,"E",function(){return u.e}),i.lazy(u,"LN2",function(){return new e.BigNumber(2).ln()}),i.lazy(u,"LN10",function(){return new e.BigNumber(10).ln()}),i.lazy(u,"LOG2E",function(){return new e.BigNumber(1).div(new e.BigNumber(2).ln())}),i.lazy(u,"LOG10E",function(){return new e.BigNumber(1).div(new e.BigNumber(10).ln())}),i.lazy(u,"PI",function(){return u.pi}),i.lazy(u,"SQRT1_2",function(){return new e.BigNumber("0.5").sqrt()}),i.lazy(u,"SQRT2",function(){return new e.BigNumber(2).sqrt()})):(u.Infinity=1/0,u.NaN=NaN,u.pi=Math.PI,u.tau=2*Math.PI,u.e=Math.E,u.phi=1.618033988749895,u.E=u.e,u.LN2=Math.LN2,u.LN10=Math.LN10,u.LOG2E=Math.LOG2E,u.LOG10E=Math.LOG10E,u.PI=u.pi,u.SQRT1_2=Math.SQRT1_2,u.SQRT2=Math.SQRT2),u.i=new e.Complex(0,1),u.version=r(94)}var i=r(3),a=r(92);t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){function n(e){return e[0].precision}var i=r(46).memoize,a=r(93);t.e=i(function(e){return new e(1).exp()},n),t.phi=i(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},n),t.pi=i(function(e){var t=e.constructor({precision:e.precision+4}),r=new t(4).times(a(new t(1).div(5))).minus(a(new t(1).div(239)));return new e(4).times(r)},n),t.tau=i(function(e){var r=t.pi(e.constructor({precision:e.precision+2}));return new e(2).times(r)},n)},function(e,t){e.exports=function(e){for(var t=e,r=NaN,n=e.times(e),i=e,a=!0,o=3;!t.equals(r);o+=2)i=i.times(n),r=t,a=!a,t=a?t.plus(i.div(o)):t.minus(i.div(o));return t}},function(e,t){e.exports="2.5.0"},function(e,t,r){e.exports=[r(96),r(266),r(290),r(291),r(318),r(268),r(289)]},function(e,t,r){function n(e,t,n,i){var a={};return a.bignumber=r(97),a["boolean"]=r(98),a.complex=r(99),a.fraction=r(100),a.index=r(101),a.matrix=r(102),a.number=r(103),a.sparse=r(104),a.string=r(105),a.unit=r(106),a.e=r(107),a.E=r(107),a["false"]=r(108),a.i=r(109),a.Infinity=r(110),a.LN2=r(111),a.LN10=r(112),a.LOG2E=r(113),a.LOG10E=r(114),a.NaN=r(115),a["null"]=r(116),a.pi=r(117),a.PI=r(117),a.phi=r(118),a.SQRT1_2=r(119),a.SQRT2=r(120),a.tau=r(121),a["true"]=r(122),a.version=r(123),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.lsolve=r(124),a.lup=r(125),a.lusolve=r(126),a.slu=r(127),a.usolve=r(128),a.abs=r(129),a.add=r(130),a.cbrt=r(131),a.ceil=r(132),a.cube=r(133),a.divide=r(134),a.dotDivide=r(135),a.dotMultiply=r(136),a.dotPow=r(137),a.exp=r(138),a.fix=r(139),a.floor=r(140),a.gcd=r(141),a.hypot=r(142),a.lcm=r(143),a.log=r(144),a.log10=r(145),a.mod=r(146),a.multiply=r(147),a.norm=r(148),a.nthRoot=r(149),a.pow=r(150),a.round=r(151),a.sign=r(152),a.sqrt=r(153),a.square=r(154),a.subtract=r(155),a.unaryMinus=r(156),a.unaryPlus=r(157),a.xgcd=r(158),a.bitAnd=r(159),a.bitNot=r(160),a.bitOr=r(161),a.bitXor=r(162),a.leftShift=r(163),a.rightArithShift=r(164),a.rightLogShift=r(165),a.bellNumbers=r(166),a.catalan=r(167),a.composition=r(168),a.stirlingS2=r(169),a.arg=r(170),a.conj=r(171),a.re=r(172),a.im=r(173),a.eval=r(174),a.help=r(175),a.distance=r(176),a.intersect=r(177),a.and=r(178),a.not=r(179),a.or=r(180),a.xor=r(181),a.concat=r(182),a.cross=r(183),a.det=r(184),a.diag=r(185),a.dot=r(186),a.eye=r(187),a.flatten=r(188),a.inv=r(189),a.ones=r(190),a.range=r(191),a.resize=r(192),a.size=r(193),a.squeeze=r(194),a.subset=r(195),a.trace=r(196),a.transpose=r(197),a.zeros=r(198),a.combinations=r(199),a.factorial=r(200),a.gamma=r(201),a.kldivergence=r(202),a.multinomial=r(203),a.permutations=r(204),a.pickRandom=r(205),a.random=r(206),a.randomInt=r(207),a.compare=r(208),a.deepEqual=r(209),a.equal=r(210),a.larger=r(211),a.largerEq=r(212),a.smaller=r(213),a.smallerEq=r(214),a.unequal=r(215),a.max=r(216),a.mean=r(217),a.median=r(218),a.min=r(219),a.mode=r(220),a.prod=r(221),a.quantileSeq=r(222),a.std=r(223),a.sum=r(224),a["var"]=r(225),a.acos=r(226),a.acosh=r(227),a.acot=r(228),a.acoth=r(229),a.acsc=r(230),a.acsch=r(231),a.asec=r(232),a.asech=r(233),a.asin=r(234),a.asinh=r(235),a.atan=r(236),a.atanh=r(237),a.atan2=r(238),a.cos=r(239),a.cosh=r(240),a.cot=r(241),a.coth=r(242),a.csc=r(243),a.csch=r(244),a.sec=r(245),a.sech=r(246),a.sin=r(247),a.sinh=r(248),a.tan=r(249),a.tanh=r(250),a.to=r(251),a.clone=r(252),a.map=r(253),a.partitionSelect=r(254),a.filter=r(255),a.forEach=r(256),a.format=r(257),a.isInteger=r(258),a.isNegative=r(259),a.isNumeric=r(260),a.isPositive=r(261),a.isZero=r(262),a["import"]=r(263),a.sort=r(264),a["typeof"]=r(265),a}t.name="docs",t.path="expression",t.factory=n},function(e,t){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","fraction","index","matrix","string","unit"]}},function(e,t){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e,t){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e,t){e.exports={name:"fraction",category:"Type",syntax:["fraction(num)","fraction(num,den)"],description:"Create a fraction from a number or from a numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e,t){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e,t){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]}},function(e,t){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","fraction","index","matrix","string","unit"]}},function(e,t){e.exports={name:"sparse",category:"Type",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]}},function(e,t){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e,t){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e,t){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e,t){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e,t){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e,t){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e,t){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e,t){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e,t){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e,t){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e,t){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e,t){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e,t){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e,t){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e,t){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,t){e.exports={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Solves the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lup","lusolve","usolve","matrix","sparse"]}},function(e,t){e.exports={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu"]}},function(e,t){e.exports={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]}},function(e,t){e.exports={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup"]}},function(e,t){e.exports={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Solves the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["lup","lusolve","lsolve","matrix","sparse"]}},function(e,t){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e,t){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]}},function(e,t){e.exports={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]}},function(e,t){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.", -examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e,t){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e,t){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e,t){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e,t){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e,t){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e,t){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e,t){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e,t){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e,t){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e,t){e.exports={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenusa of a list with values. ",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]}},function(e,t){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e,t){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e,t){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e,t){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e,t){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e,t){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e,t){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e,t){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e,t){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e,t){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["kldivergence(x, y)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["n!","factorial(n)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai <= 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randInt",category:"Probability",syntax:["randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(5, 2, 7)","mode([3, -1, 5, 7])"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(0.5)","acsc(csc(0.5))","acsc(2)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry", -syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"partitionSelect",category:"Utils",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,t){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,t){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(267),r(285),r(286),r(287),r(288)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(268));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return i(e,function(e){return o(e).compile()})}})}var i=r(19);t.name="compile",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){if(1!=arguments.length&&2!=arguments.length)throw new i("parse",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},"string"==typeof t)return ge=t,x();if(Array.isArray(t)||t instanceof e.Matrix)return a(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return ge=e,x()});throw new TypeError("String or matrix expected")}function u(){ve=0,de=ge.charAt(0),be=0,we=null}function c(){ve++,de=ge.charAt(ve)}function f(){return ge.charAt(ve+1)}function l(){return ge.charAt(ve+2)}function p(){for(xe=le.NULL,ye="";" "==de||" "==de||"\n"==de&&be;)c();if("#"==de)for(;"\n"!=de&&""!=de;)c();if(""==de)return void(xe=le.DELIMITER);if("\n"==de&&!be)return xe=le.DELIMITER,ye=de,void c();var e=de+f(),t=e+l();if(3==t.length&&pe[t])return xe=le.DELIMITER,ye=t,c(),c(),void c();if(2==e.length&&pe[e])return xe=le.DELIMITER,ye=e,c(),void c();if(pe[de])return xe=le.DELIMITER,ye=de,void c();if(!d(de)){if(v()){for(;v()||y(de);)ye+=de,c();return void(xe=me[ye]?le.DELIMITER:le.SYMBOL)}for(xe=le.UNKNOWN;""!=de;)ye+=de,c();throw X('Syntax error in part "'+ye+'"')}if(xe=le.NUMBER,"."==de)ye+=de,c(),y(de)||(xe=le.UNKNOWN);else{for(;y(de);)ye+=de,c();"."==de&&(ye+=de,c())}for(;y(de);)ye+=de,c();if(e=f(),("E"==de||"e"==de)&&(y(e)||"-"==e||"+"==e))for(ye+=de,c(),("+"==de||"-"==de)&&(ye+=de,c()),y(de)||(xe=le.UNKNOWN);y(de);)ye+=de,c()}function m(){do p();while("\n"==ye)}function h(){be++}function g(){be--}function v(){var e=ge.charAt(ve-1),t=ge.charAt(ve+1),r=function(e){return/^[a-zA-Z_\u00C0-\u02AF\u0370-\u03FF]$/.test(e)},n=function(e,t){return/^[\uD835]$/.test(e)&&/^[\uDC00-\uDFFF]$/.test(t)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(t)};return r(de)||n(de,t)||n(e,de)}function d(e){return e>="0"&&"9">=e||"."==e}function y(e){return e>="0"&&"9">=e}function x(){u(),p();var e=b();if(""!=ye)throw xe==le.DELIMITER?J("Unexpected operator "+ye):X('Unexpected part "'+ye+'"');return e}function b(){var e,t,r=[];if(""==ye)return new re("undefined","undefined");for("\n"!=ye&&";"!=ye&&(e=w());"\n"==ye||";"==ye;)0==r.length&&e&&(t=";"!=ye,r.push({node:e,visible:t})),p(),"\n"!=ye&&";"!=ye&&""!=ye&&(e=w(),t=";"!=ye,r.push({node:e,visible:t}));return r.length>0?new ee(r):e}function w(){if(xe==le.SYMBOL&&"function"==ye)throw X('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return N()}function N(){var e,t,r,n,i=E();if("="==ye){if(i&&i.isSymbolNode)return e=i.name,m(),r=N(),new K(e,r);if(i&&i.isIndexNode)return m(),r=N(),new fe(i,r);if(i&&i.isFunctionNode&&(n=!0,t=[],e=i.name,i.args.forEach(function(e,r){e&&e.isSymbolNode?t[r]=e.name:n=!1}),n))return m(),r=N(),new ne(e,t,r);throw X("Invalid left hand side of assignment operator =")}return i}function E(){for(var e=M();"?"==ye;){var t=we;we=be,m();var r=e,n=M();if(":"!=ye)throw X("False part of conditional expression expected");we=null,m();var i=E();e=new te(r,n,i),we=t}return e}function M(){for(var e=A();"or"==ye;)m(),e=new ae("or","or",[e,A()]);return e}function A(){for(var e=_();"xor"==ye;)m(),e=new ae("xor","xor",[e,_()]);return e}function _(){for(var e=O();"and"==ye;)m(),e=new ae("and","and",[e,O()]);return e}function O(){for(var e=T();"|"==ye;)m(),e=new ae("|","bitOr",[e,T()]);return e}function T(){for(var e=C();"^|"==ye;)m(),e=new ae("^|","bitXor",[e,C()]);return e}function C(){for(var e=S();"&"==ye;)m(),e=new ae("&","bitAnd",[e,S()]);return e}function S(){var e,t,r,n,i;for(e=z(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};ye in t;)r=ye,n=t[r],m(),i=[e,z()],e=new ae(r,n,i);return e}function z(){var e,t,r,n,i;for(e=B(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};ye in t;)r=ye,n=t[r],m(),i=[e,B()],e=new ae(r,n,i);return e}function B(){var e,t,r,n,i;for(e=k(),t={to:"to","in":"to"};ye in t;)r=ye,n=t[r],m(),i=[e,k()],e=new ae(r,n,i);return e}function k(){var e,t=[];if(e=":"==ye?new re("1","number"):I(),":"==ye&&we!==be){for(t.push(e);":"==ye&&t.length<3;)m(),")"==ye||"]"==ye||","==ye||""==ye?t.push(new ce("end")):t.push(I());e=3==t.length?new ue(t[0],t[2],t[1]):new ue(t[0],t[1])}return e}function I(){var e,t,r,n,i;for(e=R(),t={"+":"add","-":"subtract"};ye in t;)r=ye,n=t[r],m(),i=[e,R()],e=new ae(r,n,i);return e}function R(){var e,t,r,n,i;for(e=P(),t=e,r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};;)if(ye in r)n=ye,i=r[n],m(),t=P(),e=new ae(n,i,[e,t]);else{if(!(xe==le.SYMBOL||"in"==ye&&e&&e.isConstantNode||xe==le.NUMBER&&!t.isConstantNode||"("==ye||"["==ye))break;t=P(),e=new ae("*","multiply",[e,t])}return e}function P(){var e,t,r={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[ye];return r?(e=ye,m(),t=[P()],new ae(e,r,t)):U()}function U(){var e,t,r,n;return e=q(),("^"==ye||".^"==ye)&&(t=ye,r="^"==t?"pow":"dotPow",m(),n=[e,P()],e=new ae(t,r,n)),e}function q(){var e,t,r,n,i;for(e=L(),t={"!":"factorial","'":"transpose"};ye in t;)r=ye,n=t[r],p(),i=[e],e=new ae(r,n,i);return e}function L(){var e,t=[];if(xe==le.SYMBOL&&he[ye]){if(e=he[ye],p(),"("==ye){if(t=[],h(),p(),")"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if(")"!=ye)throw X("Parenthesis ) expected");g(),p()}return new e(t)}return F()}function F(){var e,t;return xe==le.SYMBOL||xe==le.DELIMITER&&ye in me?(t=ye,p(),e=D(t),e=$(e)):j()}function D(e){var t;if("("==ye){if(t=[],h(),p(),")"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if(")"!=ye)throw X("Parenthesis ) expected");return g(),p(),new se(e,t)}return new ce(e)}function $(e){for(var t;"["==ye;){if(t=[],h(),p(),"]"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if("]"!=ye)throw X("Parenthesis ] expected");g(),p(),e=new ie(e,t)}return e}function j(){var e,t,r;if('"'==ye){for(t="",r="";""!=de&&('"'!=de||"\\"==r);)t+=de,r=de,c();if(p(),'"'!=ye)throw X('End of string " expected');return p(),e=new re(t,"string"),e=$(e)}return G()}function G(){var e,t,r,n;if("["==ye){if(h(),p(),"]"!=ye){var i=H();if(";"==ye){for(r=1,t=[i];";"==ye;)p(),t[r]=H(),r++;if("]"!=ye)throw X("End of matrix ] expected");g(),p(),n=t[0].nodes.length;for(var a=1;r>a;a++)if(t[a].nodes.length!=n)throw J("Column dimensions mismatch ("+t[a].nodes.length+" != "+n+")");e=new Q(t)}else{if("]"!=ye)throw X("End of matrix ] expected");g(),p(),e=i}}else g(),p(),e=new Q([]);return e}return Z()}function H(){for(var e=[N()],t=1;","==ye;)p(),e[t]=N(),t++;return new Q(e)}function Z(){var e;return xe==le.NUMBER?(e=ye,p(),new re(e,"number")):V()}function V(){var e;if("("==ye){if(h(),p(),e=N(),")"!=ye)throw X("Parenthesis ) expected");return g(),p(),new oe(e)}return Y()}function Y(){throw X(""==ye?"Unexpected end of expression":"Value expected")}function W(){return ve-ye.length+1}function X(e){var t=W(),r=new SyntaxError(e+" (char "+t+")");return r["char"]=t,r}function J(e){var t=W(),r=new Error(e+" (char "+t+")");return r["char"]=t,r}var Q=n(r(269)),K=n(r(272)),ee=n(r(274)),te=n(r(275)),re=n(r(276)),ne=n(r(277)),ie=n(r(278)),ae=n(r(281)),oe=n(r(283)),se=n(r(282)),ue=n(r(279)),ce=n(r(280)),fe=n(r(284)),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,be=0,we=null;return s}var i=r(11),a=r(19);t.name="parse",t.path="expression",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!Array.isArray(this.nodes)||!this.nodes.every(function(e){return e&&e.isNode}))throw new TypeError("Array containing Nodes expected")}var s=n(r(270));return o.prototype=new s,o.prototype.type="ArrayNode",o.prototype.isArrayNode=!0,o.prototype._compile=function(e,t){var r="array"!==e.math.config().matrix,n=this.nodes.map(function(r){return r._compile(e,t)});return(r?"math.matrix([":"[")+n.join(",")+(r?"])":"]")},o.prototype.forEach=function(e){for(var t=0;t0)throw new Error("Calling compile(math) is deprecated. Call the function as compile() instead.");var e={math:a.expression.transform,args:{},_validateScope:s},t={},r=this._compile(e,t),n=Object.keys(e).map(function(e){return" var "+e+' = defs["'+e+'"];'}),i=n.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+r+"; }};",o=new Function("defs",i);return o(e)},o.prototype._compile=function(e,t){throw new Error("Cannot compile a Node interface")},o.prototype.forEach=function(e){throw new Error("Cannot run forEach on a Node interface")},o.prototype.map=function(e){throw new Error("Cannot run map on a Node interface")},o.prototype._ifNode=function(e){if(!e||!e.isNode)throw new TypeError("Callback function must return a Node");return e},o.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)},o.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){var a=r(e,n,i);return t(a,r)})}var r=e(this,null,null);return t(r,e)},o.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},o.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},o.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},o.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},o.prototype.toString=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toString(e)},o.prototype._toString=function(){throw new Error("_toString not implemented for "+this.type)},o.prototype.toTex=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toTex(e)},o.prototype._toTex=function(e){throw new Error("_toTex not implemented for "+this.type)},o.prototype.getIdentifier=function(){return this.type},o.prototype.getContent=function(){return this},o}var i=r(271);r(3).extend;t.name="Node",t.path="expression.node",t.math=!0,t.factory=n},function(e,t){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');if(!t||!t.isNode)throw new TypeError('Node expected for parameter "expr"');if(e in c)throw new Error('Illegal symbol name, "'+e+'" is a reserved keyword');this.name=e,this.expr=t}function s(e,t){var r=f.getPrecedence(e,t),n=f.getPrecedence(e.expr,t);return"all"===t||null!==n&&r>=n}var u=n(r(270)),c=(n(r(269)),r(271)),f=r(273);return o.prototype=new u,o.prototype.type="AssignmentNode",o.prototype.isAssignmentNode=!0,o.prototype._compile=function(e,t){return'scope["'+this.name+'"] = '+this.expr._compile(e,t)},o.prototype.forEach=function(e){e(this.expr,"expr",this)},o.prototype.map=function(e){return new o(this.name,this._ifNode(e(this.expr,"expr",this)))},o.prototype.clone=function(){return new o(this.name,this.expr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return s(this,t)&&(r="("+r+")"),this.name+" = "+r},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return s(this,t)&&(r="\\left("+r+"\\right)"),i.toSymbol(this.name)+":="+r},o}var i=r(32);t.name="AssignmentNode",t.path="expression.node",t.factory=n},function(e,t){"use strict";function r(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var n=r.getIdentifier(),i=0;i=a)&&(n="("+n+")");var o=this.trueExpr.toString(e),s=i.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&r>=s)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=i.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&r>=c)&&(u="("+u+")"),n+" ? "+o+" : "+u},o.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."},o}var i=(r(32),r(273));t.name="ConditionalNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(t){if("string"!=typeof t)throw new TypeError('String expected for parameter "valueType"');if("string"!=typeof e)throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=t}else this.value=e+"",this.valueType=i(e);if(!u[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var s=n(r(270)),u={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};return o.prototype=new s,o.prototype.type="ConstantNode",o.prototype.isConstantNode=!0,o.prototype._compile=function(e,t){switch(this.valueType){case"number":var r=e.math.config().number;return"bignumber"===r?'math.bignumber("'+this.value+'")':"fraction"===r?'math.fraction("'+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+'"')}},o.prototype.forEach=function(e){},o.prototype.map=function(e){return this.clone()},o.prototype.clone=function(){return new o(this.value,this.valueType)},o.prototype._toString=function(e){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},o.prototype._toTex=function(e){var t,r=this.value;switch(this.valueType){case"string":return'\\mathtt{"'+r+'"}';case"number":return t=r.toLowerCase().indexOf("e"),-1!==t?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},o}var i=r(43).type;t.name="ConstantNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e){return"string"==typeof e}function i(e,t,i,u){function c(e,t,r){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(t)||!t.every(n))throw new TypeError('Array containing strings expected for parameter "params"');if(!r||!r.isNode)throw new TypeError('Node expected for parameter "expr"');if(e in a)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.params=t,this.expr=r; -}function f(e,t){var r=s.getPrecedence(e,t),n=s.getPrecedence(e.expr,t);return"all"===t||null!==n&&r>=n}var l=i(r(270));return c.prototype=new l,c.prototype.type="FunctionAssignmentNode",c.prototype.isFunctionAssignmentNode=!0,c.prototype._compile=function(e,t){var r=Object.create(t);this.params.forEach(function(e){r[e]=!0});var n=this.expr._compile(e,r);return'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 '+n+' }; fn.syntax = "'+this.name+"("+this.params.join(", ")+')"; return fn; })()'},c.prototype.forEach=function(e){e(this.expr,"expr",this)},c.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new c(this.name,this.params.slice(0),t)},c.prototype.clone=function(){return new c(this.name,this.params.slice(0),this.expr)},c.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return f(this,t)&&(r="("+r+")"),"function "+this.name+"("+this.params.join(", ")+") = "+r},c.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return f(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(o.toSymbol).join(",")+"\\right):="+r},c}var a=r(271),o=r(32),s=r(273);t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=i},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(!e||!e.isNode)throw new TypeError('Node expected for parameter "object"');if(!c(t)||!t.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=t}function o(e){switch(e.object.type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}}var s=n(r(270)),u=(n(r(279)),n(r(280)),n(r(82))),c=Array.isArray;return a.prototype=new s,a.prototype.type="IndexNode",a.prototype.isIndexNode=!0,a.prototype._compile=function(e,t){return this.compileSubset(e,t)},a.prototype.compileSubset=function(e,t,r){function n(e){return e&&e.isSymbolNode&&"end"==e.name}var i=!1,a=this.ranges.map(function(e){var t=e.filter(n).length>0;return i=t?t:i,t});e.range=function(e,t,r){return new u(e&&e.isBigNumber===!0?e.toNumber():e,t&&t.isBigNumber===!0?t.toNumber():t,r&&r.isBigNumber===!0?r.toNumber():r)};var o=Object.create(t),s=this.ranges.map(function(t,r){var n=a[r];return t&&t.isRangeNode?n?(o.end=!0,"(function () { var end = size["+r+"]; return range( "+t.start._compile(e,o)+", "+t.end._compile(e,o)+", "+(t.step?t.step._compile(e,o):"1")+" );})()"):"range("+t.start._compile(e,o)+", "+t.end._compile(e,o)+", "+(t.step?t.step._compile(e,o):"1")+")":n?(o.end=!0,"(function () { var end = size["+r+"]; return "+t._compile(e,o)+";})()"):t._compile(e,o)});return i?"(function () { var obj = "+this.object._compile(e,o)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+s.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e,o)+",math.index("+s.join(", ")+")"+(r?", "+r:"")+")"},a.prototype.forEach=function(e){e(this.object,"object",this);for(var t=0;t3)throw new Error("Too many arguments");this.start=e,this.end=t,this.step=r||null}function s(e,t){var r=i.getPrecedence(e,t),n={},a=i.getPrecedence(e.start,t);if(n.start=null!==a&&r>=a||"all"===t,e.step){var o=i.getPrecedence(e.step,t);n.step=null!==o&&r>=o||"all"===t}var s=i.getPrecedence(e.end,t);return n.end=null!==s&&r>=s||"all"===t,n}var u=n(r(270));return o.prototype=new u,o.prototype.type="RangeNode",o.prototype.isRangeNode=!0,o.prototype._compile=function(e,t){return"math.range("+this.start._compile(e,t)+", "+this.end._compile(e,t)+(this.step?", "+this.step._compile(e,t):"")+")"},o.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},o.prototype.clone=function(){return new o(this.start,this.end,this.step&&this.step)},o.prototype._toString=function(e){var t,r=e&&e.parenthesis?e.parenthesis:"keep",n=s(this,r),i=this.start.toString(e);if(n.start&&(i="("+i+")"),t=i,this.step){var a=this.step.toString(e);n.step&&(a="("+a+")"),t+=":"+a}var o=this.end.toString(e);return n.end&&(o="("+o+")"),t+=":"+o},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=s(this,t),n=this.start.toTex(e);if(r.start&&(n="\\left("+n+"\\right)"),this.step){var i=this.step.toTex(e);r.step&&(i="\\left("+i+"\\right)"),n+=":"+i}var a=this.end.toTex(e);return r.end&&(a="\\left("+a+"\\right)"),n+=":"+a},o}var i=r(273);t.name="RangeNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');this.name=e}function u(e){throw new Error("Undefined symbol "+e)}var c=n(r(270)),f=n(r(28));return s.prototype=new c,s.prototype.type="SymbolNode",s.prototype.isSymbolNode=!0,s.prototype._compile=function(e,t){return e.undef=u,e.Unit=f,t[this.name]?this.name:this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(f.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},s.prototype.forEach=function(e){},s.prototype.map=function(e){return this.clone()},s.prototype.clone=function(){return new s(this.name)},s.prototype._toString=function(e){return this.name},s.prototype._toTex=function(e){var t=!1;"undefined"==typeof o[this.name]&&f.isValuelessUnit(this.name)&&(t=!0);var r=i.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},s}var i=r(32);t.name="SymbolNode",t.path="expression.node",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o,s){function u(e,t,r){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('string expected for parameter "op"');if("string"!=typeof t)throw new TypeError('string expected for parameter "fn"');if(!Array.isArray(r)||!r.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter "args"');this.op=e,this.fn=t,this.args=r||[]}function c(e,t,r,n){var i=a.getPrecedence(e,t),o=a.getAssociativity(e,t);if("all"===t||r.length>2){var s=[];return r.forEach(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":s.push(!1);break;default:s.push(!0)}}),s}switch(r.length){case 0:return[];case 1:var u=a.getPrecedence(r[0],t);if(n&&null!==u){var c,f;if("keep"===t?(c=r[0].getIdentifier(),f=e.getIdentifier()):(c=r[0].getContent().getIdentifier(),f=e.getContent().getIdentifier()),a.properties[i][f].latexLeftParens===!1)return[!1];if(a.properties[u][c].latexParens===!1)return[!1]}return null===u?[!1]:i>=u?[!0]:[!1];case 2:var l,p=a.getPrecedence(r[0],t),m=a.isAssociativeWith(e,r[0],t);l=null===p?!1:p!==i||"right"!==o||m?i>p?!0:!1:!0;var h,g=a.getPrecedence(r[1],t),v=a.isAssociativeWith(e,r[1],t);if(h=null===g?!1:g!==i||"left"!==o||v?i>g?!0:!1:!0,n){var f,d,y;"keep"===t?(f=e.getIdentifier(),d=e.args[0].getIdentifier(),y=e.args[1].getIdentifier()):(f=e.getContent().getIdentifier(),d=e.args[0].getContent().getIdentifier(),y=e.args[1].getContent().getIdentifier()),null!==p&&(a.properties[i][f].latexLeftParens===!1&&(l=!1),a.properties[p][d].latexParens===!1&&(l=!1)),null!==g&&(a.properties[i][f].latexRightParens===!1&&(h=!1),a.properties[g][y].latexParens===!1&&(h=!1))}return[l,h]}}var f=n(r(270));n(r(276)),n(r(280)),n(r(282));return u.prototype=new f,u.prototype.type="OperatorNode",u.prototype.isOperatorNode=!0,u.prototype._compile=function(e,t){if(!e.math[this.fn])throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.args.map(function(r){return r._compile(e,t)});return"math."+this.fn+"("+r.join(", ")+")"},u.prototype.forEach=function(e){for(var t=0;tt;t++){var h=e[t];if(h&&h.isMatrix===!0&&(p=!0),"number"==typeof h||h&&h.isBigNumber===!0){if(t!==n-1)throw new Error("Dimension must be specified as last argument");if(r=f,f=h.valueOf(),!o(f))throw new TypeError("Integer number expected for dimension");if(0>f)throw new u(f);if(t>0&&f>r)throw new u(f,r+1)}else{var g=a(h).valueOf(),v=s.size(g);if(m[t]=g,r=f,f=v.length-1,t>0&&f!=r)throw new c(r+1,f+1)}}if(0==m.length)throw new SyntaxError("At least one matrix expected");for(var d=m.shift();m.length;)d=i(d,m.shift(),f,0);return p?l(d):d},"...string":function(e){return e.join("")}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}function i(e,t,r,n){if(r>n){if(e.length!=t.length)throw new c(e.length,t.length);for(var a=[],o=0;or;r++){var i=arguments[r];if(i&&i.isRange===!0)i.start--,i.end-=i.step>0?0:2;else if(i&&i.isSet===!0)i=i.map(function(e){return e-1});else if(i&&(i.isArray===!0||i.isMatrix))i=i.map(function(e){return e-1});else if("number"==typeof i)i--;else{if(!i||i.isBigNumber!==!0)throw new TypeError("Ranges must be a Number, Range, Array or Matrix");i=i.toNumber()-1}t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}Array.isArray;t.name="index",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=(n(r(301)),n(r(33)));return a("max",{"Array, function":function(e,t){return i(e,t,e)},"Matrix, function":function(e,t){return o(i(e.valueOf(),t,e))}})}function i(e,t,r){function n(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,[])}t.name="map",t.path="expression.transform",t.factory=n},function(e,t){"use strict";function r(e,t,r,i){var a=i("map",{"Array, function":n,"Matrix, function":function(e,t){return e.map(t)}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}function n(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=r},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(304));return o("max",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(293).transform,a=r(303);t.name="max",t.path="expression.transform",t.factory=n},function(e,t){"use strict";e.exports=function(e){return Array.isArray(e)||e&&e.isMatrix===!0}},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var c=n(r(79)),f=o("max",{"Array | Matrix":u,"Array | Matrix, number | BigNumber":function(e,t){return a(e,t.valueOf(),s)},"...":function(){return u(arguments)}});return f.toTex="\\max\\left(${args}\\right)",f}var i=r(305),a=r(306);t.name="max",t.factory=n},function(e,t){"use strict";e.exports=function r(e,t){e&&e.isMatrix===!0&&(e=e.valueOf());for(var n=0,i=e.length;i>n;n++){var a=e[n];Array.isArray(a)?r(a,t):t(a)}}},function(e,t,r){"use strict";function n(e,t,r){var a,o,s,u;if(0>=t){if(Array.isArray(e[0])){for(u=i(e),o=[],a=0;ar;r++){var o=[];for(t=0;n>t;t++)o.push(e[t][r]);a.push(o)}return a}var a=r(42).size,o=r(44);e.exports=function(e,t,r){var i=Array.isArray(e)?a(e):e.size();if(0>t)throw new o(t);if(t>=i.length)throw new o(t,i.length);return e&&e.isMatrix===!0?e.create(n(e.valueOf(),t,r)):n(e,t,r)}},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(308));return o("mean",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(293).transform,a=r(303);t.name="mean",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t){var r=o(e,t,f),n=Array.isArray(e)?i(e):e.size();return l(r,n[t])}function c(e){var t=0,r=0;if(a(e,function(e){t=f(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return l(t,r)}var f=n(r(75)),l=n(r(309)),p=s("mean",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":u,"...":function(){return c(arguments)}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(42).size,a=r(305),o=r(306);t.name="mean",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(49)),s=n(r(54)),u=n(r(310)),c=n(r(33)),f=n(r(55)),l=n(r(47)),p=a("divide",i({"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;case"dense":r=l(e,t,o,!1)}return r},"Array, any":function(e,t){return l(c(e),t,o,!1).valueOf()},"any, Array | Matrix":function(e,t){return s(e,u(t))}},o.signatures));return p.toTex="\\frac{${args[0]}}{${args[1]}}",p}var i=r(3).extend;t.name="divide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t,r){var n,i,a,o,s;if(1==t){if(o=e[0][0],0==o)throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,o)]]}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 b=g[n],w=v[n];if(n!=d){if(0!=b[d]){for(a=u(l(b[d]),y[d]),i=d;r>i;i++)b[i]=c(b[i],f(a,y[i]));for(i=0;r>i;i++)w[i]=c(w[i],f(a,x[i]))}}else{for(a=y[d],i=d;r>i;i++)b[i]=u(b[i],a);for(i=0;r>i;i++)w[i]=u(w[i],a)}}}return v}var s=n(r(33)),u=n(r(49)),c=n(r(29)),f=n(r(54)),l=n(r(34)),p=n(r(311)),m=n(r(52)),h=a("inv",{"Array | Matrix":function(e){var t=e.isMatrix===!0?e.size():i.array.size(e);switch(t.length){case 1:if(1==t[0])return e.isMatrix===!0?s([u(1,e.valueOf()[0])]):[u(1,e[0])];throw new RangeError("Matrix must be square (size: "+i.string.format(t)+")");case 2:var r=t[0],n=t[1];if(r==n)return e.isMatrix===!0?s(o(e.valueOf(),r,n),e.storage()):o(e,r,n);throw new RangeError("Matrix must be square (size: "+i.string.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.string.format(t)+")")}},any:function(e){return u(1,e)}});return h.toTex="\\left(${args[0]}\\right)^{-1}",h}var i=r(41);t.name="inv",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function s(e,t,r){if(1==t)return a.clone(e[0][0]);if(2==t)return f(l(e[0][0],e[1][1]),l(e[1][0],e[0][1]));for(var n=function(e){var t,r,n=new Array(e.length),i=0;for(t=1;tr;r++)n[t][r]=0;for(r=t+1;ro;o++)i=l(n(i),e);return t%2==0?p(i[0][0]):i[0][0]}var u=n(r(33)),c=n(r(75)),f=n(r(30)),l=n(r(54)),p=n(r(34)),m=i("det",{any:function(e){return a.clone(e)},"Array | Matrix":function(e){var t;switch(e&&e.isMatrix===!0?t=e.size():Array.isArray(e)?(e=u(e),t=e.size()):t=[],t.length){case 0:return a.clone(e);case 1:if(1==t[0])return a.clone(e.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+o.format(t)+")");case 2:var r=t[0],n=t[1];if(r==n)return s(e.clone().valueOf(),r,n);throw new RangeError("Matrix must be square (size: "+o.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}});return m.toTex="\\det\\left(${args[0]}\\right)",m}var i=r(41),a=i.object,o=i.string;t.name="det",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(313));return o("min",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(293).transform,a=r(303);t.name="min",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var c=n(r(78)),f=o("min",{"Array | Matrix":u,"Array | Matrix, number | BigNumber":function(e,t){return a(e,t.valueOf(),s)},"...":function(){return u(arguments)}});return f.toTex="\\min\\left(${args}\\right)",f}var i=r(305),a=r(306);t.name="min",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(315));return i("range",{"...any":function(e){var t=e.length-1,r=e[t];return"boolean"!=typeof r&&e.push(!0),a.apply(null,e)}})}t.name="range",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e){return"array"===t.matrix?e:p(e)}function o(r,n){var i=l(r);if(!i)throw new SyntaxError('String "'+r+'" is no valid range');var o;return"bignumber"===t.number?(o=n?f:c,a(o(new e.BigNumber(i.start),new e.BigNumber(i.end),new e.BigNumber(i.step)))):(o=n?u:s,a(o(i.start,i.end,i.step)))}function s(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 u(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 c(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function f(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function l(e){var t=e.split(":"),r=t.map(function(e){return Number(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return{start:r[0],end:r[1],step:1};case 3:return{start:r[0],end:r[2],step:r[1]};default:return null}}var p=n(r(33)),m=new e.BigNumber(0),h=new e.BigNumber(1),g=i("range",{ -string:o,"string, boolean":o,"number, number":function(e,t){return a(s(e,t,1))},"number, number, number":function(e,t,r){return a(s(e,t,r))},"number, number, boolean":function(e,t,r){return a(r?u(e,t,1):s(e,t,1))},"number, number, number, boolean":function(e,t,r,n){return a(n?u(e,t,r):s(e,t,r))},"BigNumber, BigNumber":function(e,t){return a(c(e,t,h))},"BigNumber, BigNumber, BigNumber":function(e,t,r){return a(c(e,t,r))},"BigNumber, BigNumber, boolean":function(e,t,r){return a(r?f(e,t,h):c(e,t,h))},"BigNumber, BigNumber, BigNumber, boolean":function(e,t,r,n){return a(n?f(e,t,r):c(e,t,r))}});return g.toTex="\\mathrm{${name}}\\left(${args}\\right)",g}t.name="range",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(317));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(t){throw i(t)}}})}var i=r(293).transform;t.name="subset",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(1!=t.size().length)throw new o(t.size().length,1);var r=e.length;a(t.min()[0],r),a(t.max()[0],r);var n=t.dimension(0),i="";return n.forEach(function(t){i+=e.charAt(t)}),i}function c(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(1!=t.size().length)throw new o(t.size().length,1);if(void 0!==n){if("string"!=typeof n||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=t.dimension(0),s=i.size()[0];if(s!=r.length)throw new o(i.size()[0],r.length);var u=e.length;a(t.min()[0]),a(t.max()[0]);for(var c=[],f=0;u>f;f++)c[f]=e.charAt(f);if(i.forEach(function(e,t){c[e]=r.charAt(t[0])}),c.length>u)for(f=u-1,s=c.length;s>f;f++)c[f]||(c[f]=n);return c.join("")}var f=n(r(33)),l=s("subset",{"Array, Index":function(e,t){var r=f(e),n=r.subset(t);return n&&n.valueOf()},"Matrix, Index":function(e,t){return e.subset(t)},"string, Index":u,"Array, Index, any":function(e,t,r){return f(i(e)).subset(t,r,void 0).valueOf()},"Array, Index, any, any":function(e,t,r,n){return f(i(e)).subset(t,r,n).valueOf()},"Matrix, Index, any":function(e,t,r){return e.clone().subset(t,r)},"Matrix, Index, any, any":function(e,t,r,n){return e.clone().subset(t,r,n)},"string, Index, string":c,"string, Index, string, string":c});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(3).clone,a=r(42).validateIndex,o=r(31);t.name="subset",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var u=n(r(288))();return s.prototype.type="Help",s.prototype.isHelp=!0,s.prototype.toString=function(){var e=this.doc||{},t="\n";if(e.name&&(t+="Name: "+e.name+"\n\n"),e.category&&(t+="Category: "+e.category+"\n\n"),e.description&&(t+="Description:\n "+e.description+"\n\n"),e.syntax&&(t+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){t+="Examples:\n";for(var r=0;rt;t++)w[t]=t;for(r=0;o>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],T=s(O);p(T,A)&&(M=t,A=T,_=O)}if(r!==M&&(w[r]=[w[M],w[M]=w[r]][0],v._swapRows(r,M,g)),i>r)for(t=r+1;i>t;t++){var C=g[t][r];m(C,0)||(g[t][r]=c(g[t][r],_))}}for(r=0;o>r;r++)for(t=0;i>t;t++)0===r&&(o>t&&(x[t]=[]),d[t]=[]),r>t?(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=0)):t!==r?(o>t&&(x[t][r]=0),i>r&&(d[t][r]=g[t][r])):(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=1));var S=new v({data:d,size:y}),z=new v({data:x,size:b}),B=[];for(t=0,h=w.length;h>t;t++)B[w[t]]=t;return{L:S,U:z,p:B,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}},b=function(e){var t,r,n,i=e._size[0],a=e._size[1],o=Math.min(i,a),u=e._values,l=e._index,v=e._ptr,y=[],x=[],b=[],w=[i,o],N=[],E=[],M=[],A=[o,a],_=[],O=[];for(t=0;i>t;t++)_[t]=t,O[t]=t;var T=function(e,t){var r=O[e],n=O[t];_[r]=t,_[n]=e,O[e]=n,O[t]=r};for(r=0;a>r;r++){var C=new d;i>r&&(b.push(y.length),y.push(1),x.push(r)),M.push(N.length);var S=v[r],z=v[r+1];for(n=S;z>n;n++)t=l[n],C.set(_[t],u[n]);r>0&&C.forEach(0,r-1,function(e,t){g._forEachRow(e,y,x,b,function(r,n){r>e&&C.accumulate(r,h(f(n,t)))})});var B=r,k=C.get(r),I=s(k);C.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,I)&&(B=e,I=r,k=t)}),r!==B&&(g._swapRows(r,B,w[1],y,x,b),g._swapRows(r,B,A[1],N,E,M),C.swap(r,B),T(r,B)),C.forEach(0,i-1,function(e,t){r>=e?(N.push(t),E.push(e)):(t=c(t,k),m(t,0)||(y.push(t),x.push(e)))})}return M.push(N.length),b.push(y.length),{L:new g({values:y,index:x,ptr:b,size:w}),U:new g({values:N,index:E,ptr:M,size:A}),p:_,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return y}var i=r(41),a=i.object;t.name="lup",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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()},Fraction:function(e){return e.abs()},"Array | Matrix":function(e){return i(e,a,!0)},Unit:function(e){var t=e.clone();return t.value=a(t.value),t}});return a.toTex="\\left|${args[0]}\\right|",a}var i=r(19);t.name="abs",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(324)),s=n(r(335)),u=i("slu",{"SparseMatrix, number, number":function(e,t,r){if(!o(t)||0>t||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(0>r||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var n=a(t,e,!1),i=s(e,n,r);return{L:i.L,U:i.U,p:i.pinv,q:n.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}});return u}var i=r(41),a=i.number,o=a.isInteger;t.name="slu",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(325)),a=n(r(330)),o=n(r(331)),s=n(r(332)),u=n(r(333)),c=function(e,t,r){var n,c=t._ptr,l=t._size,p=l[1],m={};if(m.q=i(e,t),e&&!m.q)return null;if(r){var h=e?a(t,null,m.q,0):t;m.parent=o(h,1);var g=s(m.parent,p);if(m.cp=u(h,m.parent,g,1),h&&m.parent&&m.cp&&f(h,m))for(m.unz=0,n=0;p>n;n++)m.unz+=m.cp[n]}else m.unz=4*c[p]+p,m.lnz=m.unz;return m},f=function(e,t){var r=e._ptr,n=e._index,i=e._size,a=i[0],o=i[1];t.pinv=[],t.leftmost=[];var s,u,c,f,l,p=t.parent,m=t.pinv,h=t.leftmost,g=[],v=0,d=a,y=a+o,x=a+2*o;for(u=0;o>u;u++)g[d+u]=-1,g[y+u]=-1,g[x+u]=0;for(s=0;a>s;s++)h[s]=-1;for(u=o-1;u>=0;u--)for(f=r[u],l=r[u+1],c=f;l>c;c++)h[n[c]]=u;for(s=a-1;s>=0;s--)m[s]=-1,u=h[s],-1!=u&&(0===g[x+u]++&&(g[y+u]=s),g[v+s]=g[d+u],g[d+u]=s);for(t.lnz=0,t.m2=a,u=0;o>u;u++)if(s=g[d+u],t.lnz++,0>s&&(s=t.m2++),m[s]=u,!(--x[u]<=0)){t.lnz+=g[x+u];var b=p[u];-1!=b&&(0===g[x+b]&&(g[y+b]=g[y+u]),g[v+g[y+u]]=g[d+b],g[d+b]=g[v+s],g[x+b]+=g[x+u])}for(s=0;a>s;s++)m[s]<0&&(m[s]=u++);return!0};return c}t.name="cs_sqr",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=n(r(327)),o=n(r(328)),s=n(r(75)),u=n(r(54)),c=n(r(329)),f=function(e,t){if(!t||0>=e||e>3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var f=l(e,t,n,s,c);a(f,g,null);for(var v,d,y,x,b,w,N,E,M,A,_,O,T,C,S,z,B=f._index,k=f._ptr,I=k[s],R=[],P=[],U=0,q=s+1,L=2*(s+1),F=3*(s+1),D=4*(s+1),$=5*(s+1),j=6*(s+1),G=7*(s+1),H=R,Z=p(s,k,P,U,F,H,L,G,q,j,D,$),V=m(s,k,P,$,D,j,c,q,F,H,L),Y=0;s>V;){for(y=-1;s>Y&&-1==(y=P[F+Y]);Y++);-1!=P[L+y]&&(H[P[L+y]]=-1),P[F+Y]=P[L+y];var W=P[D+y],X=P[q+y];V+=X;var J=0;P[q+y]=-X;var Q=k[y],K=0===W?Q:I,ee=K;for(x=1;W+1>=x;x++){for(x>W?(w=y,N=Q,E=P[U+y]-W):(w=B[Q++],N=k[w],E=P[U+w]),b=1;E>=b;b++)v=B[N++],(M=P[q+v])<=0||(J+=M,P[q+v]=-M,B[ee++]=v,-1!=P[L+v]&&(H[P[L+v]]=H[v]),-1!=H[v]?P[L+H[v]]=P[L+v]:P[F+P[$+v]]=P[L+v]);w!=y&&(k[w]=i(y),P[j+w]=0)}for(0!==W&&(I=ee),P[$+y]=J,k[y]=K,P[U+y]=ee-K,P[D+y]=-2,Z=h(Z,u,j,s),A=K;ee>A;A++)if(v=B[A],!((_=P[D+v])<=0)){M=-P[q+v];var te=Z-M;for(Q=k[v],O=k[v]+_-1;O>=Q;Q++)w=B[Q],P[j+w]>=Z?P[j+w]-=M:0!==P[j+w]&&(P[j+w]=P[$+w]+te)}for(A=K;ee>A;A++){for(v=B[A],O=k[v],T=O+P[D+v]-1,C=O,S=0,z=0,Q=O;T>=Q;Q++)if(w=B[Q],0!==P[j+w]){var re=P[j+w]-Z;re>0?(z+=re,B[C++]=w,S+=w):(k[w]=i(y),P[j+w]=0)}P[D+v]=C-O+1;var ne=C,ie=O+P[U+v];for(Q=T+1;ie>Q;Q++){d=B[Q];var ae=P[q+d];0>=ae||(z+=ae,B[C++]=d,S+=d)}0===z?(k[v]=i(y),M=-P[q+v],J-=M,X+=M,V+=M,P[q+v]=0,P[D+v]=-1):(P[$+v]=Math.min(P[$+v],z),B[C]=B[ne],B[ne]=B[O],B[O]=y,P[U+v]=C-O+1,S=(0>S?-S:S)%s,P[L+v]=P[G+S],P[G+S]=v,H[v]=S)}for(P[$+y]=J,u=Math.max(u,J),Z=h(Z+u,u,j,s),A=K;ee>A;A++)if(v=B[A],!(P[q+v]>=0))for(S=H[v],v=P[G+S],P[G+S]=-1;-1!=v&&-1!=P[L+v];v=P[L+v],Z++){for(E=P[U+v],_=P[D+v],Q=k[v]+1;Q<=k[v]+E-1;Q++)P[j+B[Q]]=Z;var oe=v;for(d=P[L+v];-1!=d;){var se=P[U+d]===E&&P[D+d]===_;for(Q=k[d]+1;se&&Q<=k[d]+E-1;Q++)P[j+B[Q]]!=Z&&(se=0);se?(k[d]=i(v),P[q+v]+=P[q+d],P[q+d]=0,P[D+d]=-1,d=P[L+d],P[L+oe]=d):(oe=d,d=P[L+d])}}for(Q=K,A=K;ee>A;A++)v=B[A],(M=-P[q+v])<=0||(P[q+v]=M,z=P[$+v]+J-M,z=Math.min(z,s-V-M),-1!=P[F+z]&&(H[P[F+z]]=v),P[L+v]=P[F+z],H[v]=-1,P[F+z]=v,Y=Math.min(Y,z),P[$+v]=z,B[Q++]=v);P[q+y]=X,0===(P[U+y]=Q-K)&&(k[y]=-1,P[j+y]=0),0!==W&&(I=Q)}for(v=0;s>v;v++)k[v]=i(k[v]);for(d=0;s>=d;d++)P[F+d]=-1;for(d=s;d>=0;d--)P[q+d]>0||(P[L+d]=P[F+k[d]],P[F+k[d]]=d);for(w=s;w>=0;w--)P[q+w]<=0||-1!=k[w]&&(P[L+w]=P[F+k[w]],P[F+k[w]]=w);for(y=0,v=0;s>=v;v++)-1==k[v]&&(y=o(v,y,P,F,L,R,j));return R.splice(R.length-1,1),R},l=function(e,t,r,n,i){var a=c(t);if(1===e&&n===r)return s(t,a);if(2==e){for(var o=a._index,f=a._ptr,l=0,p=0;r>p;p++){var m=f[p];if(f[p]=l,!(f[p+1]-m>i))for(var h=f[p+1];h>m;m++)o[l++]=o[m]}return f[r]=l,t=c(a),u(a,t)}return u(a,t)},p=function(e,t,r,n,i,a,o,s,u,c,f,l){for(var p=0;e>p;p++)r[n+p]=t[p+1]-t[p];r[n+e]=0;for(var m=0;e>=m;m++)r[i+m]=-1,a[m]=-1,r[o+m]=-1,r[s+m]=-1,r[u+m]=1,r[c+m]=1,r[f+m]=0,r[l+m]=r[n+m];var g=h(0,0,c,e);return r[f+e]=-2,t[e]=-1,r[c+e]=0,g},m=function(e,t,r,n,a,o,s,u,c,f,l){for(var p=0,m=0;e>m;m++){var h=r[n+m];if(0===h)r[a+m]=-2,p++,t[m]=-1,r[o+m]=0;else if(h>s)r[u+m]=0,r[a+m]=-1,p++,t[m]=i(e),r[u+e]++;else{var g=r[c+h];-1!=g&&(f[g]=m),r[l+m]=r[c+h],r[c+h]=m}}return p},h=function(e,t,r,n){if(2>e||0>e+t){for(var i=0;n>i;i++)0!==r[i]&&(r[i]=1);e=2}return e},g=function(e,t){return e!=t};return f}t.name="cs_amd",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e){return-e-2};return e}t.name="cs_flip",t.path="sparse",t.factory=r},function(e,t){"use strict";function r(){var e=function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size,s=o[1],u=0,c=0;s>c;c++){var f=a[c];for(a[c]=u;f=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],++s,r[o+s]=c)}return t};return e}t.name="cs_tdfs",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=e.DenseMatrix,f=e.SparseMatrix,l=o("transpose",{Array:function(e){return l(u(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: "+a(r)+")");switch(e.storage()){case"dense":t=p(e,n,i);break;case"sparse":t=m(e,n,i)}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+a(this._size)+")")}return t},any:function(e){return i(e)}}),p=function(e,t,r){for(var n,a=e._data,o=[],s=0;r>s;s++){n=o[s]=[];for(var u=0;t>u;u++)n[u]=i(a[u][s])}return new c({data:o,size:[r,t],datatype:e._datatype})},m=function(e,t,r){for(var n=e._values,a=e._index,o=e._ptr,s=n?[]:void 0,u=[],c=[],l=[],p=0;t>p;p++)l[p]=0;var m,h,g;for(m=0,h=a.length;h>m;m++)l[a[m]]++;for(var v=0,d=0;t>d;d++)c.push(v),v+=l[d],l[d]=c[d];for(c.push(v),g=0;r>g;g++)for(var y=o[g],x=o[g+1],b=y;x>b;b++){var w=l[a[b]]++;u[w]=g,n&&(s[w]=i(n[b]))}return new f({values:s,index:u,ptr:c,size:[r,t],datatype:e._datatype})};return l.toTex="\\left(${args[0]}\\right)"+s.operators.transpose,l}var i=r(3).clone,a=r(23).format;t.name="transpose",t.factory=n},function(e,t){"use strict";function r(e){var t=e.SparseMatrix,r=function(e,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=e._size,c=e._datatype,f=u[0],l=u[1],p=i&&e._values?[]:null,m=[],h=[],g=0,v=0;l>v;v++){h[v]=g;for(var d=n?n[v]:v,y=s[d],x=s[d+1],b=y;x>b;b++){var w=r?r[o[b]]:o[b];m[g]=w,p&&(p[g]=a[b]),g++}}return h[l]=g,new t({values:p,index:m,ptr:h,size:[f,l],datatype:c})};return r}t.name="cs_permute",t.path="sparse",t.factory=r},function(e,t){"use strict";function r(){var e=function(e,t){if(!e)return null;var r,n,i=e._index,a=e._ptr,o=e._size,s=o[0],u=o[1],c=[],f=[],l=0,p=u;if(t)for(r=0;s>r;r++)f[p+r]=-1;for(var m=0;u>m;m++){c[m]=-1,f[l+m]=-1;for(var h=a[m],g=a[m+1],v=h;g>v;v++){var d=i[v];for(r=t?f[p+d]:d;-1!=r&&m>r;r=n)n=f[l+r],f[l+r]=m,-1==n&&(c[r]=m);t&&(f[p+d]=m)}}return c};return e}t.name="cs_etree",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(328)),a=function(e,t){if(!e)return null;var r,n=0,a=[],o=[],s=0,u=t,c=2*t;for(r=0;t>r;r++)o[s+r]=-1;for(r=t-1;r>=0;r--)-1!=e[r]&&(o[u+r]=o[s+e[r]],o[s+e[r]]=r);for(r=0;t>r;r++)-1==e[r]&&(n=i(r,n,o,s,u,a,c));return a};return a}t.name="cs_post",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(329)),a=n(r(334)),o=function(e,t,r,n){if(!e||!t||!r)return null;var o,s,u,c,f,l,p,m=e._size,h=m[0],g=m[1],v=4*g+(n?g+h+1:0),d=[],y=0,x=g,b=2*g,w=3*g,N=4*g,E=5*g+1;for(u=0;v>u;u++)d[u]=-1;var M=[],A=i(e),_=A._index,O=A._ptr;for(u=0;g>u;u++)for(s=r[u],M[s]=-1==d[w+s]?1:0;-1!=s&&-1==d[w+s];s=t[s])d[w+s]=u;if(n){for(u=0;g>u;u++)d[r[u]]=u;for(o=0;h>o;o++){for(u=g,l=O[o],p=O[o+1],f=l;p>f;f++)u=Math.min(u,d[_[f]]);d[E+o]=d[N+u],d[N+u]=o}}for(o=0;g>o;o++)d[y+o]=o;for(u=0;g>u;u++){for(s=r[u],-1!=t[s]&&M[t[s]]--,c=n?d[N+u]:s;-1!=c;c=n?d[E+c]:-1)for(f=O[c];f=1&&M[s]++,2==T.jleaf&&M[T.q]--}-1!=t[s]&&(d[y+s]=t[s])}for(s=0;g>s;s++)-1!=t[s]&&(M[t[s]]+=M[s]);return M};return o}t.name="cs_counts",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t,r,n,i,a,o){var s,u,c,f,l=0;if(t>=e||r[n+t]<=r[i+e])return-1;if(r[i+e]=r[n+t],c=r[a+e],r[a+e]=t,-1===c)l=1,f=e;else{for(l=2,f=c;f!=r[o+f];f=r[o+f]);for(s=c;s!=f;s=u)u=r[o+s],r[o+s]=f}return{jleaf:l,q:f}};return e}t.name="cs_leaf",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(322)),a=n(r(49)),o=n(r(54)),s=n(r(79)),u=n(r(336)),c=n(r(337)),f=e.SparseMatrix,l=function(e,t,r){if(!e)return null;var n,l=e._size,p=l[1],m=100,h=100;t&&(n=t.q,m=t.lnz||m,h=t.unz||h);var g,v,d=[],y=[],x=[],b=new f({values:d,index:y,ptr:x,size:[p,p]}),w=[],N=[],E=[],M=new f({values:w,index:N,ptr:E,size:[p,p]}),A=[],_=[],O=[];for(g=0;p>g;g++)_[g]=0,A[g]=-1,x[g+1]=0;m=0,h=0;for(var T=0;p>T;T++){x[T]=m,E[T]=h;var C=n?n[T]:T,S=c(b,e,C,O,_,A,1),z=-1,B=-1;for(v=S;p>v;v++)if(g=O[v],A[g]<0){var k=i(_[g]);s(k,B)&&(B=k,z=g)}else N[h]=A[g],w[h++]=_[g];if(-1==z||0>=B)return null;A[C]<0&&u(i(_[C]),o(B,r))&&(z=C);var I=_[z];for(N[h]=T,w[h++]=I,A[z]=T,y[m]=z,d[m++]=1,v=S;p>v;v++)g=O[v],A[g]<0&&(y[m]=g,d[m++]=a(_[g],I)),_[g]=0}for(x[p]=m,E[p]=h,v=0;m>v;v++)y[v]=A[y[v]];return d.splice(m,d.length-m),y.splice(m,y.length-m),w.splice(h,w.length-h),N.splice(h,N.length-h),{L:b,U:M,pinv:A}};return l}t.name="cs_lu",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=a("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)},"Fraction, Fraction":function(e,t){return-1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>=t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.largerEq+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="largerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(49)),a=n(r(54)),o=n(r(30)),s=n(r(338)),u=function(e,t,r,n,u,c,f){var l,p,m,h,g=e._values,v=e._index,d=e._ptr,y=e._size,x=y[1],b=t._values,w=t._index,N=t._ptr,E=s(e,t,r,n,c);for(l=E;x>l;l++)u[n[l]]=0;for(p=N[r],m=N[r+1],l=p;m>l;l++)u[w[l]]=b[l];for(var M=E;x>M;M++){var A=n[M],_=c?c[A]:A;if(!(0>_))for(p=d[_],m=d[_+1],u[A]=i(u[A],g[f?p:m-1]),l=f?p+1:p,h=f?m:m-1;h>l;l++){var O=v[l];u[O]=o(u[O],a(g[l],u[A]))}}return E};return u}t.name="cs_spsolve",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(339)),a=n(r(340)),o=n(r(341)),s=function(e,t,r,n,s){var u,c,f,l=e._ptr,p=e._size,m=t._index,h=t._ptr,g=p[1],v=g;for(c=h[r],f=h[r+1],u=c;f>u;u++){var d=m[u];a(l,d)||(v=i(d,e,v,n,s))}for(u=v;g>u;u++)o(l,n[u]);return v};return s}t.name="cs_reach",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(340)),a=n(r(341)),o=n(r(342)),s=function(e,t,r,n,s){var u,c,f,l=t._index,p=t._ptr,m=t._size,h=m[1],g=0;for(n[0]=e;g>=0;){e=n[g];var v=s?s[e]:e;i(p,e)||(a(p,e),n[h+g]=0>v?0:o(p[v]));var d=1;for(c=n[h+g],f=0>v?0:o(p[v+1]);f>c;c++)if(u=l[c],!i(p,u)){n[h+g]=c,n[++g]=u,d=0;break}d&&(g--,n[--r]=e)}return r};return s}t.name="cs_dfs",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t){return e[t]<0};return e}t.name="cs_marked",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=function(e,t){e[t]=i(e[t])};return a}t.name="cs_mark",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=function(e){return 0>e?i(e):e};return a}t.name="cs_unflip",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(49)),s=n(r(48)),u=n(r(30)),c=n(r(38)),f=n(r(344)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=0;i>m;m++){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(g,v);for(var d=m+1;n>d;d++)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=0;p>d;d++){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,b=[],w=[],N=g[d+1];for(n=g[d];N>n;n++)r=h[n],r===d?x=m[n]:r>d&&(b.push(m[n]),w.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var E=o(y,x);for(n=0,N=w.length;N>n;n++)r=w[n],i[r]=[u(i[r][0]||0,s(E,b[n]))];v[d]=[E]}}return new l({data:v,size:[a,1]})};return p}t.name="lsolve",t.factory=n},function(e,t,r){"use strict";function n(e){var t=e.DenseMatrix,r=function(e,r,n){var i=e.size();if(2!==i.length)throw new RangeError("Matrix must be two dimensional (size: "+a.format(i)+")");var u=i[0],c=i[1];if(u!==c)throw new RangeError("Matrix must be square (size: "+a.format(i)+")");var f,l,p;if(r&&r.isMatrix===!0){var m=r.size();if(1===m.length){if(m[0]!==u)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l]];return new t({data:f,size:[u,1],datatype:r._datatype})}if(2===m.length){if(m[0]!==u||1!==m[1])throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");if(r.isDenseMatrix===!0){if(n){for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l][0]];return new t({data:f,size:[u,1],datatype:r._datatype})}return r}for(f=[],l=0;u>l;l++)f[l]=[0];for(var h=r._values,g=r._index,v=r._ptr,d=v[1],y=v[0];d>y;y++)l=g[y],f[l][0]=h[y];return new t({data:f,size:[u,1],datatype:r._datatype})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}if(s(r)){var x=o.size(r);if(1===x.length){if(x[0]!==u)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],l=0;u>l;l++)f[l]=[r[l]];return new t({data:f,size:[u,1]})}if(2===x.length){if(x[0]!==u||1!==x[1])throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],l=0;u>l;l++)f[l]=[r[l][0]];return new t({data:f,size:[u,1]})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}};return r}var i=r(41),a=i.string,o=i.array,s=Array.isArray;t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(321)),u=n(r(323)),c=n(r(346)),f=n(r(344)),l=n(r(347)),p=n(r(343)),m=a("lusolve",{"Array, Array | Matrix":function(e,t){e=o(e);var r=s(e),n=g(r.L,r.U,r.p,null,t);return n.valueOf()},"DenseMatrix, Array | Matrix":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},"SparseMatrix, Array | Matrix":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},"SparseMatrix, Array | Matrix, number, number":function(e,t,r,n){var i=u(e,r,n);return g(i.L,i.U,i.p,i.q,t)},"Object, Array | Matrix":function(e,t){return g(e.L,e.U,e.p,e.q,t)}}),h=function(e){if(e&&e.isMatrix===!0)return e;if(i(e))return o(e);throw new TypeError("Invalid Matrix LU decomposition")},g=function(e,t,r,n,i){e=h(e),t=h(t),i=f(e,i,!1),r&&(i._data=c(r,i._data));var a=p(e,i),o=l(t,a);return n&&(o._data=c(n,o._data)),o};return m}var i=Array.isArray;t.name="lusolve",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t,r){var n,r=t.length,i=[];if(e)for(n=0;r>n;n++)i[e[n]]=t[n];else for(n=0;r>n;n++)i[n]=t[n];return i};return e}t.name="cs_ipvec",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(49)),s=n(r(48)),u=n(r(30)),c=n(r(38)),f=n(r(344)),l=e.DenseMatrix,p=i("usolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=i-1;m>=0;m--){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(g,v);for(var d=m-1;d>=0;d--)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=p-1;d>=0;d--){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,b=[],w=[],N=g[d],E=g[d+1];for(n=E-1;n>=N;n--)r=h[n],r===d?x=m[n]:d>r&&(b.push(m[n]),w.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var M=o(y,x);for(n=0,E=w.length;E>n;n++)r=w[n],i[r]=[u(i[r][0],s(M,b[n]))];v[d]=[M]}}return new l({data:v,size:[a,1]})};return p}t.name="usolve",t.factory=n},function(e,t,r){e.exports=[r(322),r(75),r(29),r(349),r(351),r(352),r(309),r(353),r(355),r(357),r(51),r(358),r(359),r(360),r(361),r(364),r(53),r(367),r(368),r(54),r(369),r(371),r(50),r(372),r(374),r(362),r(375),r(30),r(34),r(376),r(377)]},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){if(0===e)return e;var t,r=0>e;return r&&(e=-e),isFinite(e)?(t=Math.exp(Math.log(e)/3),t=(e/(t*t)+2*t)/3):t=e,r?-t:t}function s(r,n){var i=r.toPolar(),a=m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3)));if(n){var s=[a,m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3+2*Math.PI/3))),m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3-2*Math.PI/3)))];return"array"===t.matrix?s:p(s)}return a}function u(e){if(e.isZero())return e;var t,r=e.isNegative();return r&&(e=e.neg()),e.isFinite()?(t=e.ln().div(3).exp(),t=e.div(t.times(t)).plus(t.times(2)).div(3)):t=1/0,r?t.neg():t}function c(t){var r=l(t.value);r&&(t.value=f(t.value));var n;n=t.value&&t.value.isBigNumber?new e.BigNumber(1).div(3):t.value&&t.value.isFraction?new e.Fraction(1,3):1/3;var i=t.pow(n);return r&&(i.value=f(i.value)),i}var f=n(r(34)),l=n(r(350)),p=n(r(33)),m=a.find(n(r(48)),["Complex,Complex"]),h=a.find(n(r(51)),["Complex"]),g=a("cbrt",{number:o,Complex:s,"Complex, boolean":s,BigNumber:u,Unit:c,"Array | Matrix":function(e){return i(e,g,!0)}});return g.toTex="\\sqrt[3]{${args[0]}}",g}var i=r(19);t.name="cbrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNegative",{number:function(e){return 0>e},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isNegative",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("ceil",{number:Math.ceil,Complex:function(t){return new e.Complex(Math.ceil(t.re),Math.ceil(t.im))},BigNumber:function(e){return e.ceil()},Fraction:function(e){return e.ceil()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\left\\lceil${args[0]}\\right\\rceil",a}var i=r(19);t.name="ceil",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=a.find(n(r(48)),["Complex,Complex"]),s=a("cube",{number:function(e){return e*e*e},Complex:function(e){return o(o(e,e),e)},BigNumber:function(e){return e.times(e).times(e)},Fraction:function(e){return e.mul(e).mul(e)},"Array | Matrix":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(3)}});return s.toTex="\\left(${args[0]}\\right)^3",s}var i=r(19);t.name="cube",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(49)),s=r(32),u=n(r(354)),c=n(r(36)),f=n(r(57)),l=n(r(55)),p=n(r(58)),m=n(r(40)),h=n(r(47)),g=i("dotDivide",{"any, any":o,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=m(e,t,o)}}return r},"Array, Array":function(e,t){return g(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return g(a(e),t)},"Matrix, Array":function(e,t){return g(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,o,!1);break;default:r=h(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,o,!0);break;default:r=h(t,e,o,!0)}return r},"Array, any":function(e,t){return h(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return h(a(t),e,o,!0).valueOf()}});return g.toTex="\\left(${args[0]}"+s.operators.dotDivide+"${args[1]}\\right)",g}t.name="dotDivide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(38)),s=e.SparseMatrix,u=function(e,t,r,n){var u=e._data,c=e._size,f=e._datatype,l=t._values,p=t._index,m=t._ptr,h=t._size,g=t._datatype;if(c.length!==h.length)throw new i(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");if(!l)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v,d=c[0],y=c[1],x=o,b=0,w=r;"string"==typeof f&&f===g&&(v=f,x=a.find(o,[v,v]),b=a.convert(0,v),w=a.find(r,[v,v]));for(var N=[],E=[],M=[],A=0;y>A;A++){M[A]=E.length;for(var _=m[A],O=m[A+1],T=_;O>T;T++){var C=p[T],S=n?w(l[T],u[C][A]):w(u[C][A],l[T]);x(S,b)||(E.push(C),N.push(S))}}return M[y]=E.length,new s({values:N,index:E,ptr:M,size:[d,y],datatype:v})};return u}var i=r(31);t.name="algorithm02",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(48)),s=r(32),u=n(r(354)),c=n(r(356)),f=n(r(55)),l=n(r(40)),p=n(r(47)),m=i("dotMultiply",{"any, any":o,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,o,!1);break;default:r=l(e,t,o)}}return r},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;default:r=p(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,o,!0);break;default:r=p(t,e,o,!0)}return r},"Array, any":function(e,t){return p(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return p(a(t),e,o,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+s.operators.dotMultiply+"${args[1]}\\right)",m}t.name="dotMultiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(38)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+g+")");var d,y=f[0],x=f[1],b=o,w=0,N=r;"string"==typeof l&&l===v&&(d=l,b=a.find(o,[d,d]),w=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O,T=n&&p?[]:void 0,C=[],S=[],z=new s({values:T,index:C,ptr:S,size:[y,x],datatype:d}),B=T?[]:void 0,k=[];for(M=0;x>M;M++){S[M]=C.length;var I=M+1;if(B)for(_=h[M],O=h[M+1],A=_;O>A;A++)E=m[A],k[E]=I,B[E]=p[A];for(_=c[M],O=c[M+1],A=_;O>A;A++)if(E=u[A],B){var R=k[E]===I?B[E]:w,P=N(n[A],R);b(P,w)||(C.push(E),T.push(P))}else C.push(E)}return S[x]=C.length,z};return u}var i=r(31);t.name="algorithm09",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(33)),o=n(r(50)),s=r(32),u=n(r(36)),c=n(r(57)),f=n(r(55)),l=n(r(58)),p=n(r(40)),m=n(r(47)),h=i("dotPow",{"any, any":o,"Matrix, Matrix":function(e,t){var r; -switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,o,!1);break;default:r=p(e,t,o)}}return r},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(a(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(a(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.dotPow+"${args[1]}\\right)",h}t.name="dotPow",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(19);t.name="fix",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("floor",{number:Math.floor,Complex:function(t){return new e.Complex(Math.floor(t.re),Math.floor(t.im))},BigNumber:function(e){return e.floor()},Fraction:function(e){return e.floor()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\left\\lfloor${args[0]}\\right\\rfloor",a}var i=r(19);t.name="floor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(33)),u=n(r(35)),c=n(r(76)),f=n(r(39)),l=n(r(40)),p=n(r(47)),m=a("gcd",{"number, number":i,"BigNumber, BigNumber":o,"Fraction, Fraction":function(e,t){return e.gcd(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, number | BigNumber":function(e,t){return p(s(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(s(t),e,m,!0).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=m(e,t),i=0;ie?-e:e}var a=r(6).isInteger;t.name="gcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){for(var t=0,r=0,n=0;n=0||t.predictable?Math.sqrt(r):o(new e.Complex(r,0))}function o(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("sqrt",{number:a,Complex:o,BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():a(e.toNumber())},"Array | Matrix":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(.5)}});return s.toTex="\\sqrt{${args[0]}}",s}var i=r(19);t.name="sqrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isPositive",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(33)),u=n(r(354)),c=n(r(365)),f=n(r(55)),l=n(r(40)),p=n(r(47)),m=a("lcm",{"number, number":i,"BigNumber, BigNumber":o,"Fraction, Fraction":function(t,r){return 0===t.n&&0===r.n?new e.Fraction(0):t.mul(r).abs().div(t.gcd(r))},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, number | BigNumber":function(e,t){return p(s(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(s(t),e,m,!0).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=m(e,t),i=0;iO;O++){N[O]=w.length;var T=O+1;if(i(e,O,A,M,_,T,E,x),i(t,O,A,M,_,T,E,x),M)for(var C=N[O];Cl;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h),c?(n[h]=u?s(g[l],f):s(f,g[l]),i[h]=a):n[h]=g[l]):(n[h]=u?s(g[l],n[h]):s(n[h],g[l]),i[h]=a);else for(p=d[t],m=d[t+1],l=p;m>l;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h)):i[h]=a}},function(e,t,r){"use strict";function n(e,t,r,n){function a(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 o=n("log10",{number:function(r){return r>=0||t.predictable?Math.log(r)/Math.LN10:o(new e.Complex(r,0))},Complex:a,BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():a(new e.Complex(r.toNumber(),0))},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\log_{10}\\left(${args[0]}\\right)",o}var i=r(19);t.name="log10",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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 o=n(r(33)),s=r(32),u=n(r(354)),c=n(r(36)),f=n(r(37)),l=n(r(55)),p=n(r(58)),m=n(r(40)),h=n(r(47)),g=i("mod",{"number, number":a,"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,g,!1);break;default:r=u(t,e,g,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},"Array, Array":function(e,t){return g(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return g(o(e),t)},"Matrix, Array":function(e,t){return g(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},"Array, any":function(e,t){return h(o(e),t,g,!1).valueOf()},"any, Array":function(e,t){return h(o(t),e,g,!0).valueOf()}});return g.toTex="\\left(${args[0]}"+s.operators.mod+"${args[1]}\\right)",g}t.name="mod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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=o(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=o(e);(!i||m(t,i))&&(i=t)},!0),i||0}if("fro"===t)return a(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var h=0;return e.forEach(function(e){h=s(u(o(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,o(e));p(n,y)&&(y=n),d[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],b=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,o(e));p(n,b)&&(b=n),x[r]=n},!0),b}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 o=n(r(322)),s=n(r(75)),u=n(r(50)),c=n(r(362)),f=n(r(54)),l=n(r(38)),p=n(r(79)),m=n(r(78)),h=n(r(33)),g=n(r(370)),v=n(r(329)),d=i.find(o,["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 a(h(e),2)},Matrix:function(e){return a(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return y(e)},"Array, number | BigNumber | string":function(e,t){return a(h(e),t)},"Matrix, number | BigNumber | string":function(e,t){return a(e,t)}});return y.toTex={1:"\\left\\|${args[0]}\\right\\|",2:"\\mathrm{${name}}\\left(${args}\\right)"},y}t.name="norm",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(33)),u=n(r(75)),c=o("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: "+a(t)+")");case 2:var n=t[0],o=t[1];if(n===o){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: "+a(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a(t)+")")}},l=function(e){var t=e._values,r=e._index,n=e._ptr,i=e._size,o=i[0],s=i[1];if(o===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: "+a(i)+")")};return c.toTex="\\mathrm{tr}\\left(${args[0]}\\right)",c}var i=r(3).clone,a=r(23).format;t.name="trace",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=e.BigNumber.precision,i=e.BigNumber.constructor({precision:n+2}),a=new e.BigNumber(0),o=new i(1),s=r.isNegative();if(s&&(r=r.neg()),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 a;if(!t.isFinite())return s?a:t;var u=t.abs().pow(o.div(r));return u=t.isNeg()?u.neg():u,new e.BigNumber((s?o.div(u):u).toPrecision(n))}var u=n(r(33)),c=n(r(35)),f=n(r(354)),l=n(r(365)),p=n(r(55)),m=n(r(40)),h=n(r(47)),g=o("nthRoot",{number:function(e){return i(e,2)},"number, number":i,BigNumber:function(t){return s(t,new e.BigNumber(2))},Complex:function(e){return a(e,2)},"Complex, number":a,"BigNumber, BigNumber":s,"Array | Matrix":function(e){return g(e,2)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=l(e,t,g);break;default:r=f(t,e,g,!0)}break;default:switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},"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, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},"Array, number | BigNumber":function(e,t){return g(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return g(e,u(t)).valueOf()}});return g.toTex="\\sqrt[${args[1]}]{${args[0]}}",g}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(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=0>e?-n:n,r?1/n:n}function a(e,t){if(0>t)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!==0)throw new Error("Root must be an integer");for(var r=e.toPolar(),n=[],i=Math.pow(r.r,1/t),a=0;t>a;a++)n.push({r:i,phi:(r.phi+2*Math.PI*a)/t});return n}t.name="nthRoot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var c=n(r(33)),f=n(r(38)),l=n(r(373)),p=n(r(55)),m=n(r(58)),h=n(r(47)),g=o("round",{number:Math.round,"number, number":function(e,t){if(!a(t))throw new TypeError(u);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){if(!r.isInteger())throw new TypeError(u);var n=r.toNumber();return new e.Complex(i(t.re,n),i(t.im,n))},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(u);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(u);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Array | Matrix":function(e){return s(e,g,!0)},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"number | Complex | BigNumber, Matrix":function(e,t){if(!f(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r}return l(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return h(c(e),t,g,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return h(c(t),e,g,!0).valueOf()}});return g.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:"\\mathrm{${name}}\\left(${args}\\right)"},g}function i(e,t){return parseFloat(o(e,t))}var a=r(6).isInteger,o=r(6).toFixed,s=r(19),u="Number of decimals in function round must be an integer";t.name="round",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(0):0;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||0>e)throw new Error("Parameters in function zeros must be positive integers")})}var f=n(r(33)),l=o("zeros",{"":function(){return"array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(6).isInteger,a=r(42).resize;t.name="zeros",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("sign",{number:i.sign,Complex:function(t){var r=Math.sqrt(t.re*t.re+t.im*t.im);return new e.Complex(t.re/r,t.im/r)},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s)},"Array | Matrix":function(e){return a(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}var i=r(6),a=r(19);t.name="sign",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("square",{number:function(e){return e*e},Complex:function(t){return new e.Complex(t.re*t.re-t.im*t.im,t.re*t.im+t.im*t.re)},BigNumber:function(e){return e.times(e)},Fraction:function(e){return e.mul(e)},"Array | Matrix":function(e){return i(e,a,!0)},Unit:function(e){return e.pow(2)}});return a.toTex="\\left(${args[0]}\\right)^2",a}var i=r(19);t.name="square",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(32),s=a("unaryPlus",{number:function(e){return e},Complex:function(e){return e.clone()},BigNumber:function(e){return e},Fraction:function(e){return e},Unit:function(e){return e.clone()},"Array | Matrix":function(e){return i(e,s,!0)},"boolean | string | null":function(r){return"bignumber"==t.number?new e.BigNumber(+r):+r}});return s.toTex=o.operators.unaryPlus+"\\left(${args[0]}\\right)",s}var i=r(19);t.name="unaryPlus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,r){var n,a,o,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;)a=Math.floor(e/r),o=e%r,n=s,s=c-a*s,c=n,n=f,f=l-a*f,l=n,e=r,r=o;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,a,o,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();)a=r.div(n).floor(),o=r.mod(n),i=c,c=f.minus(a.times(c)),f=i,i=l,l=p.minus(a.times(l)),p=i,r=n,n=o;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(33)),c=a("xgcd",{"number, number":o,"BigNumber, BigNumber":s});return c.toTex="\\mathrm{${name}}\\left(${args}\\right)",c}var i=r(6).isInteger;t.name="xgcd",t.factory=n},function(e,t,r){e.exports=[r(379),r(383),r(384),r(386),r(388),r(391),r(393)]},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=n(r(354)),f=n(r(365)),l=n(r(55)),p=n(r(40)),m=n(r(47)),h=o("bitAnd",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitAnd");return e&t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitAnd+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(380);t.name="bitAnd",t.factory=n},function(e,t,r){var n=r(381);e.exports=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(NaN);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})}},function(e,t,r){function n(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[o+1]&&(f[o+1]=0),f[o+1]+=f[o]>>1,f[o]&=1)}return f.reverse()}var i=r(382);e.exports=function(e,t,r){var a,o,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){a=n(i(e));for(var f=0;f0;)r(l[--h],p[--g])==v&&(d=d.plus(y)),y=y.times(x);for(;g>0;)r(m,p[--g])==v&&(d=d.plus(y)),y=y.times(x);return s.config({precision:b}),0==v&&(d.s=-d.s),d}},function(e,t){e.exports=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}},function(e,t,r){"use strict";function n(e,t,n,s){var u=r(32),c=s("bitNot",{number:function(e){if(!o(e))throw new Error("Integer expected in function bitNot");return~e},BigNumber:a,"Array | Matrix":function(e){return i(e,c)}});return c.toTex=u.operators.bitNot+"\\left(${args[0]}\\right)",c}var i=r(19),a=r(382),o=r(6).isInteger;t.name="bitNot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=n(r(35)),f=n(r(76)),l=n(r(39)),p=n(r(40)),m=n(r(47)),h=o("bitOr",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitOr");return e|t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitOr+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(385);t.name="bitOr",t.factory=n},function(e,t,r){var n=r(381);e.exports=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(NaN);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}},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=n(r(36)),f=n(r(57)),l=n(r(58)),p=n(r(40)),m=n(r(47)),h=o("bitXor",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitXor");return e^t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitXor+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(387);t.name="bitXor",t.factory=n},function(e,t,r){var n=r(381),i=r(382);e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitXor");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new r(0);var a=new r(-1);return e.eq(a)?i(t):t.eq(a)?i(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e^t}):e.isFinite()||t.isFinite()?new r(e.isNegative()==t.isNegative()?1/0:-(1/0)):a}},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(32),u=n(r(33)),c=n(r(38)),f=n(r(373)),l=n(r(35)),p=n(r(354)),m=n(r(390)),h=n(r(39)),g=n(r(55)),v=n(r(40)),d=n(r(47)),y=o("leftShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function leftShift");return e<k;k++){C[k]=T.length;var I=k+1;for(M=c[k],A=c[k+1],E=M;A>E;E++)_=u[E],B[_]=I,z[_]=n[E],T.push(_);for(M=h[k],A=h[k+1],E=M;A>E;E++)_=m[E],B[_]===I&&(z[_]=N(z[_],p[E]));for(E=C[k];E>t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=m(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case"sparse":r=l(e,t,y,!1);break;default:r=v(e,t,y)}}return r},"Array, Array":function(e,t){return y(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return y(u(e),t)},"Matrix, Array":function(e,t){return y(e,u(t))},"Matrix, number | BigNumber":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case"sparse":r=g(e,t,y,!1);break;default:r=d(e,t,y,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,y,!0);break;default:r=d(t,e,y,!0)}return r}return f(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return y(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex="\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)",y}var i=r(6).isInteger,a=r(392);t.name="rightArithShift",t.factory=n},function(e,t){e.exports=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(NaN):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:NaN)}},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(32),s=n(r(33)),u=n(r(38)),c=n(r(373)),f=n(r(35)),l=n(r(354)),p=n(r(390)),m=n(r(39)),h=n(r(55)),g=n(r(40)),v=n(r(47)),d=a("rightLogShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=p(e,t,d,!1);break;default: -r=l(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":r=f(e,t,d,!1);break;default:r=g(e,t,d)}}return r},"Array, Array":function(e,t){return d(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return d(s(e),t)},"Matrix, Array":function(e,t){return d(e,s(t))},"Matrix, number | BigNumber":function(e,t){if(!u(t,0)){var r;switch(e.storage()){case"sparse":r=h(e,t,d,!1);break;default:r=v(e,t,d,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!u(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,d,!0);break;default:r=v(t,e,d,!0)}return r}return c(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return d(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return d(e,s(t)).valueOf()}});return d.toTex="\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)",d}var i=r(6).isInteger;t.name="rightLogShift",t.factory=n},function(e,t,r){e.exports=[r(395),r(401),r(396),r(402)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(75)),o=n(r(396)),s=n(r(350)),u=n(r(400)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;e>=r;r++)t=a(t,o(e,r));return t}});return c.toTex="\\mathrm{B}_{${args[0]}}",c}t.name="bellNumbers",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(75)),o=n(r(30)),s=n(r(54)),u=n(r(309)),c=n(r(50)),f=n(r(397)),l=n(r(399)),p=n(r(350)),m=n(r(400)),h=n(r(79)),g=i("stirlingS2",{"number | BigNumber, number | BigNumber":function(e,t){if(!m(e)||p(e)||!m(t)||p(t))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(h(t,e))throw new TypeError("k must be less than or equal to n in function stirlingS2");for(var r=f(t),n=0,i=0;t>=i;i++){var g=c(-1,o(t,i)),v=l(t,i),d=c(i,e);n=a(n,s(s(v,d),g))}return u(n,r)}});return g.toTex="\\mathrm{S}\\left(${args[0]},${args[1]}\\right)",g}t.name="stirlingS2",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(398)),s=r(32),u=a("factorial",{number:function(e){if(0>e)throw new Error("Value must be non-negative");return o(e+1)},BigNumber:function(e){if(e.isNegative())throw new Error("Value must be non-negative");return o(e.plus(1))},"Array | Matrix":function(e){return i(e,u)}});return u.toTex="\\left(${args[0]}\\right)"+s.operators.factorial,u}var i=r(19);r(92);t.name="factorial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(r){if(r.isZero())return new e.BigNumber(1);for(var n=t.precision+(0|Math.log(r.toNumber())),i=e.BigNumber.constructor({precision:n}),a=new i(r),o=r.toNumber()-1;o>1;)a=a.times(o),o--;return new e.BigNumber(a.toPrecision(e.BigNumber.precision))}var f=n(r(54)),l=n(r(50)),p=u("gamma",{number:function(e){var t,r;if(a(e)){if(0>=e)return isFinite(e)?1/0:NaN;if(e>171)return 1/0;for(var n=e-2,i=e-1;n>1;)i*=n,n--;return 0==i&&(i=1),i}if(.5>e)return Math.PI/(Math.sin(Math.PI*e)*p(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=s[0];for(var m=1;me)throw new TypeError("Positive integer value expected in function combinations");if(!a(t)||0>t)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,a,o,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),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);return a}});return o.toTex="\\binom{${args[0]}}{${args[1]}}",o}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name="combinations",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("isInteger",{number:a.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return i(e,o)}});return o}var i=r(19),a=r(6);t.name="isInteger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(399)),o=n(r(29)),s=n(r(363)),u=n(r(400)),c=n(r(79)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex="\\mathrm{${name}}\\left(${args}\\right)",f}t.name="composition",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(75)),o=n(r(309)),s=n(r(54)),u=n(r(399)),c=n(r(350)),f=n(r(400)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex="\\mathrm{C}_{${args[0]}}",l}t.name="catalan",t.factory=n},function(e,t,r){e.exports=[r(404),r(405),r(406),r(407)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("arg",{number:function(e){return Math.atan2(0,e)},Complex:function(e){return Math.atan2(e.im,e.re)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\arg\\left(${args[0]}\\right)",a}var i=r(19);t.name="arg",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(t){return new e.Complex(t.re,-t.im)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\left(${args[0]}\\right)^*",a}var i=r(19);t.name="conj",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\Im\\left\\lbrace${args[0]}\\right\\rbrace",a}var i=r(19);t.name="im",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\Re\\left\\lbrace${args[0]}\\right\\rbrace",a}var i=r(19);t.name="re",t.factory=n},function(e,t,r){e.exports=[r(409),r(410)]},function(e,t,r){"use strict";function n(e,t,n,f){var l=n(r(33)),p=f("intersect",{"Array, Array, Array":function(e,t,r){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");if(!o(r))throw new TypeError("Array with 4 numbers expected as third argument");return c(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],r[3])},"Array, Array, Array, Array":function(e,t,r,n){if(2===e.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");if(!i(r))throw new TypeError("Array with 2 numbers expected for third argument");if(!i(n))throw new TypeError("Array with 2 numbers expected for fourth argument");return s(e[0],e[1],t[0],t[1],r[0],r[1],n[0],n[1])}if(3===e.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");if(!a(r))throw new TypeError("Array with 3 numbers expected for third argument");if(!a(n))throw new TypeError("Array with 3 numbers expected for fourth argument");return u(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],n[0],n[1],n[2])}throw new TypeError("Arrays with two or thee dimensional points expected")},"Matrix, Matrix, Matrix":function(e,t,r){return l(p(e.valueOf(),t.valueOf(),r.valueOf()))},"Matrix, Matrix, Matrix, Matrix":function(e,t,r,n){return l(p(e.valueOf(),t.valueOf(),r.valueOf(),n.valueOf()))}});return p}function i(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}function a(e){return 3===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}function o(e){return 4===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]}function s(e,t,r,n,i,a,o,s){var u=(e-i)*(o-i)+(t-a)*(s-a),c=(o-i)*(r-e)+(s-a)*(n-t),f=(e-i)*(r-e)+(t-a)*(n-t),l=(o-i)*(o-i)+(s-a)*(s-a),p=(r-e)*(r-e)+(n-t)*(n-t),m=(u*c-f*l)/(p*l-c*c),h=(u+m*c)/l,g=e+m*(r-e),v=t+m*(n-t),d=i+h*(o-i),y=a+h*(s-a);return g===d&&v===y?[g,v]:null}function u(e,t,r,n,i,a,o,s,u,c,f,l){var p=(e-o)*(c-o)+(t-s)*(f-s)+(r-u)*(l-u),m=(c-o)*(n-e)+(f-s)*(i-t)+(l-u)*(a-r),h=(e-o)*(n-e)+(t-s)*(i-t)+(r-u)*(a-r),g=(c-o)*(c-o)+(f-s)*(f-s)+(l-u)*(l-u),v=(n-e)*(n-e)+(i-t)*(i-t)+(a-r)*(a-r),d=(p*m-h*g)/(v*g-m*m),y=(p+d*m)/g,x=e+d*(n-e),b=t+d*(i-t),w=r+d*(a-r),N=o+y*(c-o),E=s+y*(f-s),M=u+y*(l-u);return x===N&&b===E&&w===M?[x,b,w]:null}function c(e,t,r,n,i,a,o,s,u,c){var f=(c-e*o-t*s-r*u)/(n*o+i*s+a*u-e-t-r),l=e+f*(n-e),p=t+f*(i-t),m=r+f*(a-r);return[l,p,m]}t.name="intersect",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){var h=(n(r(33)),s("distance",{"Array, Array, Array":function(e,t,r){if(2==e.length&&2==t.length&&2==r.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");if(!i(r))throw new TypeError("Array with 2 numbers expected for third argument");var n=(r[1]-r[0])/(t[1]-t[0]),a=n*n*t[0],o=-1*(n*t[0]),s=e[1];return c(e[0],e[1],a,o,s)}throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(e,t,r){if(2==Object.keys(e).length&&2==Object.keys(t).length&&2==Object.keys(r).length){if(!i(e))throw new TypeError("Values of pointX and pointY should be numbers");if(!i(t))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers");if(!i(r))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("lineOnePtX")&&t.hasOwnProperty("lineOnePtY")&&r.hasOwnProperty("lineTwoPtX")&&r.hasOwnProperty("lineTwoPtY")){var n=(r.lineTwoPtY-r.lineTwoPtX)/(t.lineOnePtY-t.lineOnePtX),a=n*n*t.lineOnePtX,o=-1*(n*t.lineOnePtX),s=e.pointX;return c(e.pointX,e.pointY,a,o,s)}throw new TypeError("Key names do not match")}throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(e,t){if(2==e.length&&3==t.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");return c(e[0],e[1],t[0],t[1],t[2])}if(3==e.length&&6==t.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!o(t))throw new TypeError("Array with 6 numbers expected for second argument");return f(e[0],e[1],e[2],t[0],t[1],t[2],t[3],t[4],t[5])}if(2==e.length&&2==t.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");return l(e[0],e[1],t[0],t[1])}if(3==e.length&&3==t.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");return p(e[0],e[1],e[2],t[0],t[1],t[2])}throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(e,t){if(2==Object.keys(e).length&&3==Object.keys(t).length){if(!i(e))throw new TypeError("Values of pointX and pointY should be numbers");if(!a(t))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("xCoeffLine")&&t.hasOwnProperty("yCoeffLine")&&t.hasOwnProperty("yCoeffLine"))return c(e.pointX,e.pointY,t.xCoeffLine,t.yCoeffLine,t.constant);throw new TypeError("Key names do not match")}if(3==Object.keys(e).length&&6==Object.keys(t).length){if(!a(e))throw new TypeError("Values of pointX, pointY and pointZ should be numbers");if(!o(t))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("x0")&&t.hasOwnProperty("y0")&&t.hasOwnProperty("z0")&&t.hasOwnProperty("a")&&t.hasOwnProperty("b")&&t.hasOwnProperty("c"))return f(e.pointX,e.pointY,e.pointZ,t.x0,t.y0,t.z0,t.a,t.b,t.c);throw new TypeError("Key names do not match")}if(2==Object.keys(e).length&&2==Object.keys(t).length){if(!i(e))throw new TypeError("Values of pointOneX and pointOneY should be numbers");if(!i(t))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers");if(e.hasOwnProperty("pointOneX")&&e.hasOwnProperty("pointOneY")&&t.hasOwnProperty("pointTwoX")&&t.hasOwnProperty("pointTwoY"))return l(e.pointOneX,e.pointOneY,t.pointTwoX,t.pointTwoY);throw new TypeError("Key names do not match")}if(3==Object.keys(e).length&&3==Object.keys(t).length){if(!a(e))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers");if(!a(t))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers");if(e.hasOwnProperty("pointOneX")&&e.hasOwnProperty("pointOneY")&&e.hasOwnProperty("pointOneZ")&&t.hasOwnProperty("pointTwoX")&&t.hasOwnProperty("pointTwoY")&&t.hasOwnProperty("pointTwoZ"))return p(e.pointOneX,e.pointOneY,e.pointOneZ,t.pointTwoX,t.pointTwoY,t.pointTwoZ);throw new TypeError("Key names do not match")}throw new TypeError("Invalid Arguments: Try again")},Array:function(e){if(!u(e))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return m(e)}}));return h}function i(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]}function a(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}function o(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]&&"number"==typeof e[4]&&"number"==typeof e[5]}function s(e){for(var t=Object.keys(e),r=[],n=0;n0?t:0,a=0>t?-t:0;switch(r.length){case 1:return c(e,t,n,r[0],a,i);case 2:return f(e,t,n,r,a,i)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function c(t,r,n,i,a,o){var s=[i+a,i+o],u=e.Matrix.storage(n||"dense"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function f(e,t,r,n,i,o){if(e&&e.isMatrix===!0){var s=e.diagonal(t);return null!==r?r!==s.storage()?l(s,r):s:s.valueOf()}for(var u=Math.min(n[0]-i,n[1]-o),c=[],f=0;u>f;f++)c[f]=a(e[f+i][f+o]);return null!==r?l(c):c}var l=n(r(33)),p=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)}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(42),a=r(3).clone,o=r(6).isInteger;t.name="diag",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){var r=i(e),n=i(t),a=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==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var o=0,c=0;a>c;c++)o=s(o,u(e[c],t[c]));return o}var s=n(r(75)),u=n(r(54)),c=a("dot",{"Matrix, Matrix":function(e,t){return o(e.toArray(),t.toArray())},"Matrix, Array":function(e,t){return o(e.toArray(),t)},"Array, Matrix":function(e,t){return o(e,t.toArray())},"Array, Array":o});return c.toTex="\\left(${args[0]}\\cdot${args[1]}\\right)",c}var i=r(42).size;t.name="dot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(33)),u=o("flatten",{Array:function(e){return a(i(e))},Matrix:function(e){var t=a(i(e.toArray()));return s(t)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(3).clone,a=r(42).flatten;t.name="flatten",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(1):1;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||0>e)throw new Error("Parameters in function ones must be positive integers")})}var f=n(r(33)),l=o("ones",{"":function(){return"array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(6).isInteger,a=r(42).resize;t.name="ones",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){function l(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new i(t.length,1);var n=t[0];if("number"!=typeof n||!o(n))throw new TypeError("Invalid size, must contain positive integers (size: "+s(t)+")");if(e.length>n)return e.substring(0,n);if(e.lengthu;u++)a+=r;return a}return e}var p=n(r(33)),m=function(e,r,n){if(2!=arguments.length&&3!=arguments.length)throw new a("resize",arguments.length,2,3);if(r&&r.isMatrix===!0&&(r=r.valueOf()),r.length&&r[0]&&r[0].isBigNumber===!0&&(r=r.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e})),e&&e.isMatrix===!0)return e.resize(r,n,!0);if("string"==typeof e)return l(e,r,n);var i=Array.isArray(e)?!1:"array"!==t.matrix;if(0==r.length){for(;Array.isArray(e);)e=e[0];return u(e)}Array.isArray(e)||(e=[e]),e=u(e);var o=c.resize(e,r,n);return i?p(o):o};return m.toTex="\\mathrm{${name}}\\left(${args}\\right)",m}var i=r(31),a=r(11),o=r(6).isInteger,s=r(23).format,u=r(3).clone,c=r(42);t.name="resize",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=a("size",{Matrix:function(e){return o(e.size())},Array:i.size,string:function(e){return"array"===t.matrix?[e.length]:o([e.length])},"number | Complex | BigNumber | Unit | boolean | null":function(e){return"array"===t.matrix?[]:o([])}});return s.toTex="\\mathrm{${name}}\\left(${args}\\right)",s}var i=r(42);t.name="size",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(33)),u=o("squeeze",{Array:function(e){return a.squeeze(i.clone(e))},Matrix:function(e){var t=a.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(3),a=r(42);t.name="squeeze",t.factory=n},function(e,t,r){e.exports=[r(399),r(397),r(398),r(427),r(429),r(430),r(431),r(433),r(434)]},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");var i=u(e);if(0===i)throw new Error("Sum of elements in first object must be non zero");var a=u(t);if(0===a)throw new Error("Sum of elements in second object must be non zero");var o=s(e,u(e)),m=s(t,u(t)),h=u(c(o,l(f(o,m))));return p(h)?h:Number.NaN}var o=n(r(33)),s=n(r(309)),u=n(r(428)),c=n(r(54)),f=n(r(353)),l=n(r(53)),p=n(r(59)),m=i("kldivergence",{"Array, Array":function(e,t){return a(o(e),o(t))},"Matrix, Array":function(e,t){return a(e,o(t))},"Array, Matrix":function(e,t){return a(o(e),t)},"Matrix, Matrix":function(e,t){return a(e,t)}});return m}t.name="kldivergence",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(r){var n=void 0;if(i(r,function(e){n=void 0===n?e:s(n,e)}),void 0===n)switch(t.number){case"number":return 0;case"bignumber":return new e.BigNumber(0);case"fraction":return new e.Fraction(0);default:return 0}return n}var s=n(r(29)),u=a("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)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(305);t.name="sum",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(75)),s=n(r(54)),u=n(r(309)),c=n(r(397)),f=n(r(400)),l=n(r(363));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return i(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}var i=r(305);t.name="multinomial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(397)),u=o("permutations",{"number | BigNumber":s,"number, number":function(e,t){var r,n;if(!a(e)||0>e)throw new TypeError("Positive integer value expected in function permutations");if(!a(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,a;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),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name="permutations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").pickRandom;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="pickRandom",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e){if(!f.hasOwnProperty(e))throw new Error("Unknown distribution "+e);var t=Array.prototype.slice.call(arguments,1),r=f[e].apply(this,t);return function(e){var t={random:function(e,t,n){var s,c,f;if(arguments.length>3)throw new i("random",arguments.length,0,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=n),void 0===f&&(f=1),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,r);return s&&s.isMatrix===!0?u(l):l}return r(c,f)},randomInt:function(e,t,r){var s,c,f;if(arguments.length>3||arguments.length<1)throw new i("randomInt",arguments.length,1,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=r),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,n);return s&&s.isMatrix===!0?u(l):l}return n(c,f)},pickRandom:function(e){if(1!==arguments.length)throw new i("pickRandom",arguments.length,1);if(e&&e.isMatrix===!0)e=e.valueOf();else if(!Array.isArray(e))throw new TypeError("Unsupported type of value in function pickRandom"); -if(c.size(e).length>1)throw new Error("Only one dimensional vectors supported");return e[Math.floor(Math.random()*e.length)]}},r=function(t,r){return t+e()*(r-t)},n=function(t,r){return Math.floor(t+e()*(r-t))},o=function(e,t,r,n){var i,a,s=[];if(e=e.slice(0),e.length>1)for(a=0,i=e.shift();i>a;a++)s.push(o(e,t,r,n));else for(a=0,i=e.shift();i>a;a++)s.push(n(t,r));return s};return t}(r)}var u=n(r(33)),c=r(42),f={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 s.toTex="\\mathrm{${name}}\\left(${args}\\right)",s}var i=r(11),a=r(303);t.name="distribution",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").random;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="random",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").randomInt;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="randomInt",t.factory=n},function(e,t,r){e.exports=[r(436),r(437),r(56),r(79),r(336),r(78),r(438),r(439)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(37)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=a("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(t,r){return new e.BigNumber(t.cmp(r))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return p(e.value,t.value)},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,p);break;default:r=s(t,e,p,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,p,!1);break;default:r=f(e,t,p)}}return r},"Array, Array":function(e,t){return p(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return p(o(e),t)},"Matrix, Array":function(e,t){return p(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,p,!1);break;default:r=l(e,t,p,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,p,!0);break;default:r=l(t,e,p,!0)}return r},"Array, any":function(e,t){return l(o(e),t,p,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,p,!0).valueOf()}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(6).nearlyEqual;t.name="compare",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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(!a(e[n],t[n]))return!1;return!0}return!1}return Array.isArray(t)?!1:o(e,t)}var o=n(r(56)),s=i("deepEqual",{"any, any":function(e,t){return a(e.valueOf(),t.valueOf())}});return s.toTex="\\mathrm{${name}}\\left(${args}\\right)",s}t.name="deepEqual",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=a("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)},"Fraction, Fraction":function(e,t){return 1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return t>=e},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.smallerEq+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="smallerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(36)),u=n(r(57)),c=n(r(58)),f=n(r(40)),l=n(r(47)),p=r(32),m=a("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:h(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,h);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,h,!1);break;default:r=f(e,t,h)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=l(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,h,!0);break;default:r=l(t,e,h,!0)}return r},"Array, any":function(e,t){return l(o(e),t,h,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,h,!0).valueOf()}}),h=a("_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)},"Fraction, Fraction":function(e,t){return 0!==e.compare(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,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e!==t}});return m.toTex="\\left(${args[0]}"+p.operators.unequal+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="unequal",t.factory=n},function(e,t,r){e.exports=[r(304),r(308),r(441),r(313),r(443),r(444),r(445),r(446),r(428),r(447)]},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error("Cannot calculate median of an empty array");if(t%2==0){for(var r=t/2-1,n=f(e,r+1),a=e[r],o=0;r>o;++o)c(e[o],a)>0&&(a=e[o]);return m(a,n)}var s=f(e,(t-1)/2);return p(s)}var s=n(r(29)),u=n(r(49)),c=n(r(436)),f=n(r(442)),l=a("median",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("median(A, dim) is not yet supported")},"...":function(){return o(Array.prototype.slice.call(arguments))}}),p=a({"number | BigNumber | Unit":function(e){return e}}),m=a({"number | BigNumber | Unit, number | BigNumber | Unit":function(e,t){return u(s(e,t),2)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(42).flatten;t.name="median",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){return-c(e,t)}function s(e,t,r){if(!i(t)||0>t)throw new Error("k must be a non-negative integer");if(e&&e.isMatrix){var n=e.size();if(n.length>1)throw new Error("Only one dimensional matrices supported");return u(e.valueOf(),t,r)}return Array.isArray(e)?u(e,t,r):void 0}function u(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;i>n;){for(var a=n,o=i,s=e[Math.floor(Math.random()*(i-n+1))+n];o>a;)if(r(e[a],s)>=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,a>=t?i=a:n=a+1}return e[t]}var c=n(r(436));return a("partitionSelect",{"Array | Matrix, number":function(e,t){return s(e,t,c)},"Array | Matrix, number, string":function(e,t,r){if("asc"===r)return s(e,t,c);if("desc"===r)return s(e,t,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s})}var i=r(6).isInteger;t.name="partitionSelect",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error("Cannot calculate mode of an empty array");var r={},n=[],a=0;for(var o in e)e[o]in r||(r[e[o]]=0),r[e[o]]++,r[e[o]]==a?n.push(e[o]):r[e[o]]>a&&(a=r[e[o]],n=[e[o]]);return n}var o=n("mode",{"Array | Matrix":a,"...":function(){return a(Array.prototype.slice.call(arguments))}});return o}var i=r(42).flatten;t.name="mode",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){var t=void 0;if(i(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 s=n(r(48)),u=a("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)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(305);t.name="prod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(t,r,n){var o,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(s(t)){if(n=n||!1,"boolean"==typeof n){if(u=t.valueOf(),a(r)){if(0>r)throw new Error("N/prob must be non-negative");if(1>=r)return f(u,r,n);if(r>1){if(!i(r))throw new Error("N must be a positive integer");var l=r+1;o=new Array(r);for(var p=0;r>p;)o[p]=f(u,++p/l,n);return o}}if(r&&r.isBigNumber){if(r.isNegative())throw new Error("N/prob must be non-negative");if(c=r.constructor.ONE,r.lte(c))return f(u,r,n);if(r.gt(c)){if(!r.isInteger())throw new Error("N must be a positive integer");var m=r.toNumber();if(m>4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var l=new e.BigNumber(m+1);o=new Array(m);for(var p=0;m>p;)o[p]=f(u,new e.BigNumber(++p).div(l),n);return o}}if(Array.isArray(r)){o=new Array(r.length);for(var p=0;ph||h>1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!h||!h.isBigNumber)throw new TypeError("Unexpected type of argument in function quantileSeq");if(c=h.constructor.ONE,h.isNegative()||h.gt(c))throw new Error("Probability must be between 0 and 1, inclusive")}o[p]=f(u,h,n)}return o}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}function f(e,t,r){var n=o(e),i=n.length;if(0===i)throw new Error("Cannot calculate quantile of an empty sequence");if(a(t)){var s=t*(i-1),u=s%1;if(0===u){var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=Math.floor(s);if(r)f=n[d],v=n[d+1];else{v=m(n,d+1),f=n[d];for(var y=0;d>y;++y)h(n[y],f)>0&&(f=n[y])}return g(f),g(v),l(p(f,1-u),p(v,u))}var s=t.times(i-1);if(s.isInteger()){s=s.toNumber();var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=s.floor(),u=s.minus(d),x=d.toNumber();if(r)f=n[x],v=n[x+1];else{v=m(n,x+1),f=n[x];for(var y=0;x>y;++y)h(n[y],f)>0&&(f=n[y])}g(f),g(v);var b=u.constructor.ONE;return l(p(f,b.minus(u)),p(v,u))}var l=n(r(75)),p=n(r(54)),m=n(r(442)),h=n(r(436)),g=u({"number | BigNumber | Unit":function(e){return e}});return c}var i=r(6).isInteger,a=r(6).isNumber,o=r(42).flatten,s=r(303);t.name="quantileSeq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return o(s.apply(null,arguments))}var o=n(r(362)),s=n(r(447)),u=i("std",{"Array | Matrix":a,"Array | Matrix, string":a,"...":function(){return a(Array.prototype.slice.call(arguments))}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}t.name="std",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(a(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,a(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 s=n&&n.isBigNumber===!0?new e.BigNumber(0):0;return 1==i?s:l(n,i-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var u=n(r(29)),c=n(r(30)),f=n(r(48)),l=n(r(49)),p=o("variance",{"Array | Matrix":function(e){return s(e,i)},"Array | Matrix, string":s,"...":function(){return s(arguments,i)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p}var i="unbiased",a=r(305);t.name="var",t.factory=n},function(e,t,r){e.exports=[r(449),r(459),r(461),r(463),r(466),r(468),r(470),r(471),r(467),r(469),r(462),r(472),r(465),r(474),r(475),r(478),r(480),r(482),r(483),r(484),r(485),r(486),r(477),r(487),r(488)]},function(e,t,r){"use strict";function n(e,t,n,o){function s(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),a=c(i);return new e.Complex(1.5707963267948966-a.im,a.re)}var u=o.find(n(r(362)),["Complex"]),c=o.find(n(r(53)),["Complex"]),f=o("acos",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.acos(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\cos^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(450);t.name="acos",t.factory=n},function(e,t,r){var n=r(92).pi,i=r(451);e.exports=function(e,t,r){if(r){if(e.abs().lt(t.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(t.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return n(t);var a=t.precision;t.config({precision:a+4}),r&&(e=t.ONE.div(e));var o=i(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE)),t).times(2);return t.config({precision:a}),o.toDP(a-1)}},function(e,t,r){var n=r(92),i=r(452),a=r(93);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);if(!r&&e.isZero()||r&&!e.isFinite())return new t(0);var o=t.precision;if(!r&&!e.isFinite()||r&&e.isZero()){var s=n.pi(t.constructor({precision:o+2})).div(2).toDP(o-1);return s.constructor=t,s.s=e.s,s}t.config({precision:o+4}),r&&(e=t.ONE.div(e));var u=e.abs();if(u.lte(.875)){var c=a(e);return c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}if(u.gte(1.143)){var s=n.pi(t.constructor({precision:o+4})).div(2),c=s.minus(a(t.ONE.div(u)));return c.s=e.s,c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:o}),i(e,t)}},function(e,t,r){var n=r(92).pi,i=r(453),a=r(454);e.exports=function o(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=e.abs();if(r){if(u.lt(t.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");t.config({precision:s+2}),e=t.ONE.div(e),t.config({precision:s}),u=e.abs()}else if(u.gt(t.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(u.gt(.8)){t.config({precision:s+4});var c=e.s,f=n(t.constructor({precision:s+4})).div(2);return e=f.minus(o(t.ONE.minus(e.times(e)).sqrt(),t)),e.s=c,e.constructor=t,t.config({precision:s}),e.toDP(s-1)}var l=u.gt(.58);l&&(t.config({precision:s+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:s}));var p=60>=s||e.dp()<=Math.log(s)&&e.lt(.05)?i(e,s):a(e,t);return l?p.times(2):p}},function(e,t){e.exports=function(e,t){var r=e.constructor;r.config({precision:t+Math.log(t)|4});for(var n=new r(1),i=e,a=NaN,o=e.times(e),s=e,u=new r(n),c=new r(n),f=new r(n),l=3;!i.equals(a);l+=2)s=s.times(o),u=u.times(f),c=c.times(f.plus(n)),a=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(e,t,r){var n=r(455),i=r(458);e.exports=function(e,t){var r=t.precision,a=-(r+4),o=r+8-e.e,s=25-e.e,u=Math.max(1.442695*Math.log(r+2)|5,5);t.config({precision:s});var c=0,f=new t(Math.asin(e.toNumber())+"");do{var l=n(f,t,1,!1),p=i(l);l.isZero()||(l.s=f.s);var m=l.minus(e).div(p);f=f.minus(m),s=Math.min(2*s,o),t.config({precision:s})}while(2*m.e>=a&&!m.isZero()&&++c<=u);if(c==u)throw new Error("asin() failed to converge to the requested accuracy.Try with a higher precision.");return t.config({precision:r}),f.toDP(r-1)}},function(e,t,r){var n=r(456),i=r(457);e.exports=function(e,t,r,a){if(e.isNaN()||!e.isFinite())return new t(NaN);var o=t.precision,s=new t(e),u=s.isNegative();u&&(s.s=-s.s);var c=o+(0|Math.log(o))+3;if(t.config({precision:c}),s=n(s,t.constructor({precision:c}),r),s[0].constructor=t,s[1])return s=s[0],a&&s.isZero()&&(s=new t(1/0)),t.config({precision:o}),s;var f;if(s=s[0],r){f=i(s.div(3125),r),t.config({precision:Math.min(c,o+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))}u&&(f.s=-f.s)}else{var y,x;s.abs().lt(t.ONE)?(y=64,x=3):(y=256,x=4),f=i(s.div(y),r),t.config({precision:Math.min(c,o+8)});for(var b=new t(8);x>0;--x){var g=f.times(f),w=g.times(g);f=b.times(w.minus(g)).plus(t.ONE)}}return a&&(f=f.e<=-o?new t(1/0):t.ONE.div(f)),t.config({precision:o}),f.toDP(o-1)}},function(e,t,r){var n=r(92);e.exports=function(e,t,r){var i=n.pi(t.constructor({precision:t.precision+2})),a=n.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];if(e.dp()>0&&e.div(i.toDP(e.dp())).toNumber()%2==0)return[new t(1^r),!0];var o=e.mod(a);return e.dp()>0&&o.toDP(e.dp(),1).isZero()?[new t(1^r),!0]:(o.gt(i)&&(r?(o=o.minus(i),o.s=-o.s):o=a.minus(o)),o.constructor=e.constructor,[o,!1])}},function(e,t){e.exports=function(e,t){for(var r=e.constructor.ONE,n=e,i=NaN,a=e.times(e),o=t?n:n=r,s=r,u=!0,c=t;!n.equals(i);c+=2)o=o.times(a),s=s.times(c+1).times(c+2),i=n,u=!u,n=u?n.plus(o.div(s)):n.minus(o.div(s));return n}},function(e,t){e.exports=function(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)}},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(449)),["Complex"]),c=o("acosh",{number:function(r){return r>=1||t.predictable?Math.log(Math.sqrt(r*r-1)+r):-1>=r?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!1)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cosh^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(460);t.name="acosh",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);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 a=new t(e);a.constructor=t,n&&(a=t.ONE.div(a));var o=r?a.times(a).plus(t.ONE):a.times(a).minus(t.ONE),s=a.plus(o.sqrt()).ln();return t.config({precision:i}),new t(s.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,n,s){var u=s.find(n(r(462)),["Complex"]),c=s("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 a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cot^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(451),o=1.5707963267948966;t.name="acot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(53)),["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),a=new e.Complex((1-n*n-r*r)/i,-2*r/i),o=s(a);return new e.Complex(-.5*o.im,.5*o.re)},BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,u,!0)}});return u.toTex="\\tan^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(451);t.name="atan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(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),c(t)}var c=s.find(n(r(465)),["Complex"]),f=s("acoth",{number:function(r){return r>=1||-1>=r||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:0!==r?u(new e.Complex(r,0)):new e.Complex(0,o)},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\coth^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(464),o=1.5707963267948966;t.name="acoth",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);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 a=new t(e);a.constructor=t,r&&(a=t.ONE.div(a));var o=t.ONE.plus(a).div(t.ONE.minus(a)).ln().div(2);return t.config({precision:i}),new t(o.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,r,n){function o(t){var r=t.re>1&&0==t.im,n=1-t.re,i=1+t.re,a=n*n+t.im*t.im;t=0!=a?new e.Complex((i*n-t.im*t.im)/a,(t.im*n+i*t.im)/a):new e.Complex(-1!=t.re?t.re/0:0,0!=t.im?t.im/0:0);var o=t.re;return t.re=Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/2,t.im=Math.atan2(t.im,o)/2,r&&(t.im=-t.im),t}var s=n("atanh",{number:function(r){return 1>=r&&r>=-1||t.predictable?Math.log((1+r)/(1-r))/2:o(new e.Complex(r,0))},Complex:o,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,s,!0)}});return s.toTex="\\tanh^{-1}\\left(${args[0]}\\right)",s}var i=r(19),a=r(464);t.name="atanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(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 c=s.find(n(r(467)),["Complex"]),f=s("acsc",{number:function(r){return-1>=r||r>=1||t.predictable?Math.asin(1/r):u(new e.Complex(r,0))},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\csc^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(452),o=1.5707963267948966;t.name="acsc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t){var r=t.re,n=t.im,i=new e.Complex(n*n-r*r+1,-2*r*n),a=u(i),o=new e.Complex(a.re-n,a.im+r),s=c(o);return new e.Complex(s.im,-s.re)}var u=o.find(n(r(362)),["Complex"]),c=o.find(n(r(53)),["Complex"]),f=o("asin",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.asin(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,f,!0)}});return f.toTex="\\sin^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(452);t.name="asin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(469)),["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 a(t,e.BigNumber,!0,!0)},"Array | Matrix":function(e){return i(e,u)}});return u.toTex="\\mathrm{csch}^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(460);t.name="acsch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(467)),["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 a(t,e.BigNumber,!0,!1)},"Array | Matrix":function(e){return i(e,u,!0)}});return u.toTex="\\sinh^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(460);t.name="asinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(449)),["Complex"]),c=o("asec",{number:function(r){return-1>=r||r>=1||t.predictable?Math.acos(1/r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\sec^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(450);t.name="asec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(459)),["Complex"]),c=o("asech",{number:function(r){if(1>=r&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\mathrm{sech}^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(460);t.name="asech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(33)),s=n(r(354)),u=n(r(36)),c=n(r(356)),f=n(r(55)),l=n(r(58)),p=n(r(40)),m=n(r(47)),h=a("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return i(t,r,e.BigNumber)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return h(o(e),t)},"Matrix, Array":function(e,t){return h(e,o(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, number | BigNumber":function(e,t){return m(o(e),t,h,!1).valueOf()},"number | BigNumber, Array":function(e,t){return m(o(t),e,h,!0).valueOf()}});return h.toTex="\\mathrm{atan2}\\left(${args}\\right)",h}var i=r(473);t.name="atan2",t.factory=n},function(e,t,r){var n=r(92),i=r(451);e.exports=function(e,t,r){var a=r.precision;if(t.isZero()){if(e.isZero())return new r(NaN);var o=n.pi(r.constructor({precision:a+2})).div(2).toDP(a-1);return o.constructor=r,o.s=e.s,o}r.config({precision:a+2});var s=i(e.div(t),r,!1);if(t.isNegative()){var u=n.pi(r);s=e.isNegative()?s.minus(u):s.plus(u)}return s.constructor=r,r.config({precision:a}),s.toDP(a-1)}},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(475)),["number"]),u=o.find(n(r(477)),["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 a(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 c(t.value)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cos\\left(${args[0]}\\right)",c}var i=r(19),a=r(455);t.name="cos",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\cosh\\left(${args[0]}\\right)",s}function i(e){return(Math.exp(e)+Math.exp(-e))/2}var a=r(19),o=r(476);t.name="cosh",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);if(!e.isFinite())return new t(n?0:r?e:1/0);var i=t.precision;t.config({precision:i+4});var a=new t(e);return a.constructor=t,a=a.exp(),a=r?a.minus(t.ONE.div(a)):a.plus(t.ONE.div(a)),a=n?new t(2).div(a):a.div(2),t.config({precision:i}),new t(a.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("sinh",{number:i,Complex:function(t){var r=Math.cos(t.im),n=Math.sin(t.im),i=Math.exp(t.re),a=Math.exp(-t.re);return new e.Complex(r*(i-a)/2,n*(i+a)/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 s(t.value)},"Array | Matrix":function(e){return a(e,s,!0)}});return s.toTex="\\sinh\\left(${args[0]}\\right)",s}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 a=r(19),o=r(476);t.name="sinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\cot\\left(${args[0]}\\right)",o}var i=r(19),a=r(479);t.name="cot",t.factory=n},function(e,t,r){var n=r(92),i=r(455),a=r(458),o=r(456);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=n.pi(t.constructor({precision:s+2})),c=u.div(2).toDP(s-1);u=u.toDP(s-1);var f=o(e,t,1)[0];if(f.abs().eq(u))return new t(1/0);t.config({precision:s+4});var l=i(f,t,1,!1),p=a(l);l=l.toDP(s),p=p.toDP(s),f.eq(e)?f.gt(c)&&(p.s=-p.s):u.minus(f.abs()).gt(c)&&(p.s=-p.s);var m=r?p.div(l):l.div(p);return t.config({precision:s}),new t(m.toPrecision(s))}},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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),a=(n-1)*(n-1)+i*i;return new e.Complex(((n+1)*(n-1)+i*i)/a,-2*i/a)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\coth\\left(${args[0]}\\right)",s}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var a=r(19),o=r(481);t.name="coth",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);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 a=i.exp(),o=t.ONE.div(a),s=a.minus(o);return s=r?a.plus(o).div(s):s.div(a.plus(o)),t.config({precision:n}),s.toDP(n-1)}},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\csc\\left(${args[0]}\\right)",o}var i=r(19),a=r(455);t.name="csc",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("csch",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r-n),a=Math.sin(t.im)*(r+n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\mathrm{csch}\\left(${args[0]}\\right)",s}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*s(e)}var a=r(19),o=r(476),s=r(6).sign;t.name="csch",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\sec\\left(${args[0]}\\right)",o}var i=r(19),a=r(455);t.name="sec",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("sech",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r+n),a=Math.sin(t.im)*(r-n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\mathrm{sech}\\left(${args[0]}\\right)",s}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var a=r(19),o=r(476);t.name="sech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(475)),["number"]),u=o.find(n(r(477)),["number"]),c=o("sin",{number:Math.sin,Complex:function(t){return new e.Complex(Math.sin(t.re)*s(-t.im),Math.cos(t.re)*u(t.im))},BigNumber:function(t){return a(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 c(t.value)},"Array | Matrix":function(e){return i(e,c,!0)}});return c.toTex="\\sin\\left(${args[0]}\\right)",c}var i=r(19),a=r(455);t.name="sin",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o,!0)}});return o.toTex="\\tan\\left(${args[0]}\\right)",o}var i=r(19),a=r(479);t.name="tan",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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),a=(n+1)*(n+1)+i*i;return new e.Complex(((n-1)*(n+1)+i*i)/a,2*i/a)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s,!0)}});return s.toTex="\\tanh\\left(${args[0]}\\right)",s}function i(e){var t=Math.exp(2*e);return(t-1)/(t+1)}var a=r(19),o=r(481);t.name="tanh",t.factory=n},function(e,t,r){e.exports=[r(490)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=r(32),o=n(r(33)),s=n(r(40)),u=n(r(47)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex="\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)",c}t.name="to",t.factory=n},function(e,t,r){e.exports=[r(492),r(296),r(60),r(400),r(350),r(59),r(363),r(414),r(301),r(442),r(493),r(494),r(61),r(298)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("clone",{any:i.clone});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(3);t.name="clone",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("print",{"string, Object":i,"string, Object, number":i});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}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?a(s)?s:o(s,r):e})}var a=r(23).isString,o=r(23).format;t.name="print",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(33)),f=n(r(436)),l=function(e,t){return-f(e,t)},p=a("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(o(t))},"Matrix, string":function(e,t){return u(e),c(e.toArray().sort(o(t)),e.storage())}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(42).size;t.name="sort",t.factory=n},function(e,t,r){e.exports=[r(496)]},function(e,t){"use strict";function r(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}t.name="reviver",t.path="json",t.factory=r},function(e,t,r){"use strict";var n=r(11),i=r(31),a=r(44);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); +!function(a){"use strict";function o(e,t){return isNaN(e=parseInt(e,10))&&s(),e*t}function s(){throw"Invalid Param"}function u(e,t){return this instanceof u?(l(e,t),e=u.REDUCE?g(f.d,f.n):1,this.s=f.s,this.n=f.n/e,void(this.d=f.d/e)):new u(e,t)}var c=2e3,f={s:1,n:0,d:1},l=function(e,t){var r,n=0,i=1,a=1,u=0,c=0,l=0,p=1,m=1,h=0,g=1,v=1,d=1,y=1e7;if(void 0===e||null===e);else if(void 0!==t)n=e,i=t,a=n*i;else switch(typeof e){case"object":"d"in e&&"n"in e?(n=e.n,i=e.d,"s"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(i=e[1])):s(),a=n*i;break;case"number":if(0>e&&(a=e,e=-e),e%1===0)n=e;else if(e>0){for(e>=1&&(m=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)),e/=m);y>=g&&y>=d;){if(r=(h+v)/(g+d),e===r){y>=g+d?(n=h+v,i=g+d):d>g?(n=v,i=d):(n=h,i=g);break}e>r?(h+=v,g+=d):(v+=h,d+=g),g>y?(n=v,i=d):(n=h,i=g)}n*=m}break;case"string":if(g=e.match(/\d+|./g),"-"===g[h]?(a=-1,h++):"+"===g[h]&&h++,g.length===h+1?c=o(g[h++],a):"."===g[h+1]||"."===g[h]?("."!==g[h]&&(u=o(g[h++],a)),h++,(h+1===g.length||"("===g[h+1]&&")"===g[h+3]||"'"===g[h+1]&&"'"===g[h+3])&&(c=o(g[h],a),p=Math.pow(10,g[h].length),h++),("("===g[h]&&")"===g[h+2]||"'"===g[h]&&"'"===g[h+2])&&(l=o(g[h+1],a),m=Math.pow(10,g[h+1].length)-1,h+=3)):"/"===g[h+1]||":"===g[h+1]?(c=o(g[h],a),p=o(g[h+2],1),h+=3):"/"===g[h+3]&&" "===g[h+1]&&(u=o(g[h],a),c=o(g[h+2],a),p=o(g[h+4],1),h+=5),g.length<=h){a=n=l+m*(u*p+c),i=p*m;break}default:s()}if(!i)throw"DIV/0";f.s=0>a?-1:1,f.n=Math.abs(n),f.d=Math.abs(i)},p=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n},m=function(e,t){for(;t%2===0;t/=2);for(;t%5===0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>c)return 0;return n},h=function(e,t,r){for(var n=1,i=p(10,r,t),a=0;300>a;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0},g=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}};u.REDUCE=1,u.prototype={s:1,n:0,d:1,abs:function(){return new u(this.n,this.d)},neg:function(){return new u(-this.s*this.n,this.d)},add:function(e,t){return l(e,t),new u(this.s*this.n*f.d+f.s*this.d*f.n,this.d*f.d)},sub:function(e,t){return l(e,t),new u(this.s*this.n*f.d-f.s*this.d*f.n,this.d*f.d)},mul:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.n,this.d*f.d)},div:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.d,this.d*f.n)},clone:function(){return new u(this)},mod:function(e,t){return void 0===e?new u(this.s*this.n%this.d,1):(l(e,t),0===f.n*this.d&&u(0,0),new u(this.s*f.d*this.n%(f.n*this.d),f.d*this.d))},gcd:function(e,t){return l(e,t),new u(g(f.n,this.n),f.d*this.d/g(f.d,this.d))},lcm:function(e,t){return l(e,t),new u(f.n*this.n/g(f.n,this.n),g(f.d,this.d))},ceil:function(){return new u(Math.ceil(this.s*this.n/this.d),1)},floor:function(){return new u(Math.floor(this.s*this.n/this.d),1)},round:function(){return new u(Math.round(this.s*this.n/this.d),1)},inverse:function(){return new u(this.s*this.d,this.n)},pow:function(e){var t=this.d,r=this.n;return 0>e?(this.d=Math.pow(r,-e),this.n=Math.pow(t,-e)):(this.d=Math.pow(t,e),this.n=Math.pow(r,e)),0===e%2&&(this.s=1),this},equals:function(e,t){return l(e,t),this.s*this.n*f.d===f.s*f.n*this.d},compare:function(e,t){l(e,t);var r=this.s*this.n*f.d-f.s*f.n*this.d;return(r>0)-(0>r)},divisible:function(e,t){return l(e,t),!(!(f.n*this.d)||this.n*f.d%(f.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toString:function(){var e,t=this.n,r=this.d;u.REDUCE||(e=g(t,r),t/=e,r/=e);for(var n=String(t).split(""),i=0,a=[~this.s?"":"-","",""],o="",s=m(t,r),c=h(t,r,s),f=-1,l=1,p=10+s+c+n.length,v=0;p>v;v++,i*=10){if(v0)if(f===c)a[l]+=o+"(",o="";else if(f===s+c){a[l]+=o+")";break}i>=r?(a[l]+=o+(i/r|0),o="",i%=r):l>1?o+="0":a[l]&&(a[l]+="0")}return a[0]+=a[1]||"0",a[2]?a[0]+"."+a[2]:a[0]}},r(34).amd?(n=[],i=function(){return u}.apply(t,n),!(void 0!==i&&(e.exports=i))):e.exports=u}(this)}).call(t,r(33)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("fraction",{number:function(t){if(!isFinite(t)||isNaN(t))throw new Error(t+" cannot be represented as a fraction");return new e.Fraction(t)},string:function(t){return new e.Fraction(t)},"number, number":function(t,r){return new e.Fraction(t,r)},Fraction:function(e){return e},Object:function(t){return new e.Fraction(t)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);t.name="fraction",t.factory=n},function(e,t,r){e.exports=[r(37),r(45),r(46),r(48),r(57),r(63),r(64),r(65),r(66),r(50),r(67)]},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.prototype.type="Matrix",i.prototype.isMatrix=!0,i.storage=function(e){if(!o(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.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},i.prototype.create=function(e,t){throw new Error("Cannot invoke create 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(38),a=i.string,o=a.isString;t.name="Matrix",t.path="type",t.factory=n},function(e,t,r){"use strict";t.array=r(39),t["boolean"]=r(43),t["function"]=r(44),t.number=r(6),t.object=r(3),t.string=r(23),t.types=r(40),t.emitter=r(8)},function(e,t,r){"use strict";function n(e,t,r){var i,a=e.length;if(a!=t[r])throw new f(a,t[r]);if(ri;i++){var s=e[i];if(!Array.isArray(s))throw new f(t.length-1,t.length,"<");n(e[i],t,o)}}else for(i=0;a>i;i++)if(Array.isArray(e[i]))throw new f(t.length+1,t.length,">")}function i(e,r,n,a){var o,s,u=e.length,f=r[n],l=Math.min(u,f);if(e.length=f,no;o++)s=e[o],Array.isArray(s)||(s=[s],e[o]=s),i(s,r,p,a);for(o=l;f>o;o++)s=[],e[o]=s,i(s,r,p,a)}else{for(o=0;l>o;o++)for(;Array.isArray(e[o]);)e[o]=e[o][0];if(a!==t.UNINITIALIZED)for(o=l;f>o;o++)e[o]=c.clone(a)}}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(;Array.isArray(e);)e=e[0];return e}function o(e,t,r){var n,i;if(Array.isArray(e)){var a=r+1;for(n=0,i=e.length;i>n;n++)e[n]=o(e[n],t,a)}else for(var s=r;t>s;s++)e=[e];return e}var s=r(6),u=r(23),c=r(3),f=(r(40),r(41)),l=r(42);t.size=function(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t},t.validate=function(e,t){var r=0==t.length;if(r){if(Array.isArray(e))throw new f(e.length,0)}else n(e,t,0)},t.validateIndex=function(e,t){if(!s.isNumber(e)||!s.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new l(e);if(void 0!==t&&e>=t)throw new l(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!s.isNumber(e)||!s.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+u.format(t)+")")});var n=void 0!==r?r:0;return i(e,t,0,n),e},t.squeeze=function(e,r){for(var n=r||t.size(e);Array.isArray(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return is;s++)e=[e],a.unshift(1);for(e=o(e,r,0);a.length=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}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",r.prototype.isIndexError=!0,e.exports=r},function(e,t){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t){t.memoize=function(e,t){return function r(){"object"!=typeof r.cache&&(r.cache={});for(var n=[],i=0;is;s++)h(i[s],e._size[s]),h(o[s],e._size[s]);return new g(d(e._data,t,n.length,0),e._datatype)}function d(e,t,r,n){var i=n==r-1,a=t.dimension(n);return i?a.map(function(t){return e[t]}).valueOf():a.map(function(i){var a=e[i];return d(a,t,r,n+1)}).valueOf()}function y(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Invalid index");var i,o=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(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(o.length");var p=t.max().map(function(e){return e+1});b(e,p,n);var m=o.length,h=0;x(e._data,t,r,m,h)}return e}function x(e,t,r,n,i){var a=i==n-1,o=t.dimension(i);a?o.forEach(function(t,n){h(t),e[t]=r[n[0]]}):o.forEach(function(a,o){h(a),x(e[a],t,r[o[0]],n,i+1)})}function b(e,t,r){for(var n=u.clone(e._size),i=!1;n.lengtha;a++)t[a]>n[a]&&(n[a]=t[a],i=!0);i&&E(e,n,r)}function w(e){for(var t=0,r=e.length;r>t;t++){var n=e[t];f(n)?e[t]=w(n):n&&n.isMatrix===!0&&(e[t]=w(n.valueOf()))}return e}var N=n(r(37));g.prototype=new N,g.prototype.type="DenseMatrix",g.prototype.isDenseMatrix=!0,g.prototype.storage=function(){return"dense"},g.prototype.datatype=function(){return this._datatype},g.prototype.create=function(e,t){return new g(e,t)},g.prototype.subset=function(e,t,r){switch(arguments.length){case 1:return v(this,e);case 2:case 3:return y(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}},g.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new a(e.length,this._size.length);for(var t=0;tn;n++){var o=e[n];h(o,r.length),r=r[o]}return u.clone(r)},g.prototype.set=function(e,t,r){if(!f(e))throw new TypeError("Array expected");if(e.lengthn;n++)o=e[n],h(o,u.length),u=u[o];return o=e[e.length-1],h(o,u.length),u[o]=t,this},g.prototype.resize=function(e,t,r){if(!f(e))throw new TypeError("Array expected");var n=r?this.clone():this;return E(n,e,t)};var E=function(e,t,r){if(0===t.length){for(var n=e._data;f(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 g.prototype.clone=function(){var e=new g({data:u.clone(this._data),size:u.clone(this._size),datatype:this._datatype});return e},g.prototype.size=function(){return this._size},g.prototype.map=function(e){var t=this,r=function(n,i){return f(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new g({data:r(this._data,[]),size:u.clone(this._size),datatype:this._datatype})},g.prototype.forEach=function(e){var t=this,r=function(n,i){f(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},g.prototype.toArray=function(){return u.clone(this._data)},g.prototype.valueOf=function(){return this._data},g.prototype.format=function(e){return o.format(this._data,e)},g.prototype.toString=function(){return o.format(this._data)},g.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(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,n=this._size[0],i=this._size[1],a=Math.min(n-r,i-t),o=[],s=0;a>s;s++)o[s]=u.clone(this._data[s+r][s+t]);return new g({data:o,size:[a],datatype:this._datatype})},g.diagonal=function(t,r,n,i,a){if(!f(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&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),n){if(n&&n.isBigNumber===!0&&(n=n.toNumber()),!l(n)||!p(n))throw new TypeError("The parameter k must be an integer number")}else n=0;i&&m(a)&&(i=c.convert(i,a));var o,u=n>0?n:0,h=0>n?-n:0,v=t[0],d=t[1],y=Math.min(v-h,d-u);if(f(r)){if(r.length!==y)throw new Error("Invalid value array length");o=function(e){return r[e]}}else if(r&&r.isMatrix===!0){var x=r.size();if(1!==x.length||x[0]!==y)throw new Error("Invalid matrix length");o=function(e){return r.get([e])}}else o=function(){return r};i||(i=o(0)&&o(0).isBigNumber===!0?new e.BigNumber(0):0);var b=[];if(t.length>0){b=s.resize(b,t,i);for(var w=0;y>w;w++)b[w+h][w+u]=o(w)}return new g({data:b,size:[v,d]})},g.fromJSON=function(e){return new g(e)},g.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 h(e,this._size[0]),h(t,this._size[0]),g._swapRows(e,t,this._data),this},g._swapRows=function(e,t,r){var n=r[e];r[e]=r[t],r[t]=n},e.Matrix._storage.dense=g,e.Matrix._storage["default"]=g,g}var i=r(38),a=r(41),o=i.string,s=i.array,u=i.object,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=o.isString,h=s.validateIndex;t.name="DenseMatrix",t.path="type",t.factory=n,t.lazy=!1},function(e,t,r){"use strict";function n(e,t,n,g){function v(e,t){if(!(this instanceof v))throw new SyntaxError("Constructor must be called with the new operator");if(t&&!m(t))throw new Error("Invalid datatype: "+t);if(e&&e.isMatrix===!0)x(this,e,t);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=t||e.datatype;else if(f(e))b(this,e,t);else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=t}}var d=n(r(37)),y=n(r(47)),x=function(e,t,r){"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=r||t._datatype):b(e,t.valueOf(),r||t._datatype)},b=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(m(r)&&(a=g.find(y,[r,r])||y,o=g.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;n>u;u++){var c=t[u];if(f(c)){if(0===s&&ii&&(i=1),a(c,o)||(e._values.push(c),e._index.push(u))}s++}while(i>s)}e._ptr.push(e._index.length),e._size=[n,i]};v.prototype=new d,v.prototype.type="SparseMatrix",v.prototype.isSparseMatrix=!0,v.prototype.storage=function(){return"sparse"},v.prototype.datatype=function(){return this._datatype},v.prototype.create=function(e,t){return new v(e,t)},v.prototype.density=function(){var e=this._size[0],t=this._size[1];return 0!==e&&0!==t?this._index.length/(e*t):0},v.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 w(this,e);case 2:case 3:return N(this,e,t,r);default:throw new SyntaxError("Wrong number of arguments")}};var w=function(e,t){if(!t||t.isIndex!==!0)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 a(n.length,e._size.length);var i,o,s,u,c=t.min(),f=t.max();for(i=0,o=e._size.length;o>i;i++)h(c[i],e._size[i]),h(f[i],e._size[i]);var l=e._values,p=e._index,m=e._ptr,g=t.dimension(0),d=t.dimension(1),y=[],x=[];g.forEach(function(e,t){x[e]=t[0],y[e]=!0});var b=l?[]:void 0,w=[],N=[];return d.forEach(function(e){for(N.push(w.length),s=m[e],u=m[e+1];u>s;s++)i=p[s],y[i]===!0&&(w.push(x[i]),b&&b.push(l[s]))}),N.push(w.length),new v({values:b,index:w,ptr:N,size:n,datatype:e._datatype})},N=function(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Invalid index");var i,u=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(i=r.size(),r=r.toArray()):i=o.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 a(u.length,e._size.length,"<");if(i.length");for(var p=t.min()[0],m=t.min()[1],h=i[0],g=i[1],v=0;h>v;v++)for(var d=0;g>d;d++){var y=r[v][d];e.set([v+p,d+m],y,n)}}return e};v.prototype.get=function(e){if(!f(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new a(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];h(t,this._size[0]),h(r,this._size[1]);var n=E(t,this._ptr[r],this._ptr[r+1],this._index);return no-1||i>s-1)&&(_(this,Math.max(n+1,o),Math.max(i+1,s),r),o=this._size[0],s=this._size[1]),h(n,o),h(i,s);var l=E(n,this._ptr[i],this._ptr[i+1],this._index);return li;i++)if(n[i]===e)return i;return t},M=function(e,t,r,n,i){r.splice(e,1),n.splice(e,1);for(var a=t+1;at)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=n||0,a=y,o=0;m(e._datatype)&&(a=g.find(y,[e._datatype,e._datatype])||y,o=g.convert(0,e._datatype),i=g.convert(i,e._datatype));var s,u,c,f=!a(i,o),l=e._size[0],p=e._size[1];if(r>p){for(u=p;r>u;u++)if(e._ptr[u]=e._values.length,f)for(s=0;l>s;s++)e._values.push(i),e._index.push(s);e._ptr[r]=e._values.length}else p>r&&(e._ptr.splice(r+1,p-r),e._values.splice(e._ptr[r],e._values.length),e._index.splice(e._ptr[r],e._index.length));if(p=r,t>l){if(f){var h=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]+h,c=e._ptr[u+1]+h;var v=0;for(s=l;t>s;s++,v++)e._values.splice(c+v,0,i),e._index.splice(c+v,0,s),h++}e._ptr[p]=e._values.length}}else if(l>t){var d=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]-d;var x=e._ptr[u],b=e._ptr[u+1]-d;for(c=x;b>c;c++)s=e._index[c],s>t-1&&(e._values.splice(c,1),e._index.splice(c,1),d++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.clone=function(){var e=new v({values:this._values?s.clone(this._values):void 0,index:s.clone(this._index),ptr:s.clone(this._ptr),size:s.clone(this._size),datatype:this._datatype});return e},v.prototype.size=function(){return s.clone(this._size)},v.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],a=function(t,n,i){return e(t,[n,i],r)};return O(this,0,n-1,0,i-1,a,t)};var O=function(e,t,r,n,i,a,o){var s=[],u=[],c=[],f=y,l=0;m(e._datatype)&&(f=g.find(y,[e._datatype,e._datatype])||y,l=g.convert(0,e._datatype));for(var p=function(e,t,r){e=a(e,t,r),f(e,l)||(s.push(e),u.push(t))},h=n;i>=h;h++){c.push(s.length);for(var d=e._ptr[h],x=e._ptr[h+1],b=t,w=d;x>w;w++){var N=e._index[w];if(N>=t&&r>=N){if(!o)for(var E=b;N>E;E++)p(0,E-t,h-n);p(e._values[w],N-t,h-n)}b=N+1}if(!o)for(var M=b;r>=M;M++)p(0,M-t,h-n)}return c.push(s.length),new v({values:s,index:u,ptr:c,size:[r-t+1,i-n+1]})};v.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],a=0;i>a;a++){for(var o=this._ptr[a],s=this._ptr[a+1],u=0,c=o;s>c;c++){var f=this._index[c];if(!t)for(var l=u;f>l;l++)e(0,[l,a],r);e(this._values[c],[f,a],r),u=f+1}if(!t)for(var p=u;n>p;p++)e(0,[p,a],r)}},v.prototype.toArray=function(){return T(this._values,this._index,this._ptr,this._size,!0)},v.prototype.valueOf=function(){return T(this._values,this._index,this._ptr,this._size,!1)};var T=function(e,t,r,n,i){var a,o,u=n[0],c=n[1],f=[];for(a=0;u>a;a++)for(f[a]=[],o=0;c>o;o++)f[a][o]=0;for(o=0;c>o;o++)for(var l=r[o],p=r[o+1],m=l;p>m;m++)a=t[m],f[a][o]=e?i?s.clone(e[m]):e[m]:1;return f};return v.prototype.format=function(e){for(var t=this._size[0],r=this._size[1],n=this.density(),i="Sparse Matrix ["+u.format(t,e)+" x "+u.format(r,e)+"] density: "+u.format(n,e)+"\n",a=0;r>a;a++)for(var o=this._ptr[a],s=this._ptr[a+1],c=o;s>c;c++){var f=this._index[c];i+="\n ("+u.format(f,e)+", "+u.format(a,e)+") ==> "+(this._values?u.format(this._values[c],e):"X")}return i},v.prototype.toString=function(){return u.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(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],a=Math.min(n-r,i-t),o=[],u=[],c=[];c[0]=0;for(var f=t;i>f&&o.lengthg;g++){var d=this._index[g];if(d===f-t+r){o.push(s.clone(this._values[g])),u[o.length-1]=d-r;break}}return c.push(o.length),new v({values:o,index:u,ptr:c,size:[a,1]})},v.fromJSON=function(e){return new v(e)},v.diagonal=function(e,t,r,n,i){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&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error("Size values must be positive integers");return e}),r){if(r.isBigNumber===!0&&(r=r.toNumber()),!l(r)||!p(r))throw new TypeError("The parameter k must be an integer number")}else r=0;var a=y,o=0;m(i)&&(a=g.find(y,[i,i])||y,o=g.convert(0,i));var s,u=r>0?r:0,c=0>r?-r:0,h=e[0],d=e[1],x=Math.min(h-c,d-u);if(f(t)){if(t.length!==x)throw new Error("Invalid value array length");s=function(e){return t[e]}}else if(t&&t.isMatrix===!0){var b=t.size();if(1!==b.length||b[0]!==x)throw new Error("Invalid matrix length");s=function(e){return t.get([e])}}else s=function(){return t};for(var w=[],N=[],E=[],M=0;d>M;M++){E.push(w.length);var A=M-u;if(A>=0&&x>A){var _=s(A);a(_,o)||(N.push(A+c),w.push(_))}}return E.push(w.length),new v({values:w,index:N,ptr:E,size:[h,d]})},v.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 h(e,this._size[0]),h(t,this._size[0]),v._swapRows(e,t,this._size[1],this._values,this._index,this._ptr),this},v._forEachRow=function(e,t,r,n,i){for(var a=n[e],o=n[e+1],s=a;o>s;s++)i(r[s],t[s])},v._swapRows=function(e,t,r,n,i,a){for(var o=0;r>o;o++){var s=a[o],u=a[o+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)}}},e.Matrix._storage.sparse=v,v}var i=r(38),a=r(41),o=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=u.isString,h=o.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=n,t.lazy=!1},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("equalScalar",{"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)},"Fraction, Fraction":function(e,t){return e.equals(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,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return a(e.value,t.value)},"string, string":function(e,t){return e===t}});return a}var i=r(6).nearlyEqual;t.factory=n},function(e,t,r){"use strict";function n(e,t,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}var a=n(r(49)),o=n(r(47));return i.prototype.type="Spa",i.prototype.isSpa=!0,i.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}},i.prototype.get=function(e){var t=this._values[e];return t?t.value:0},i.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)},i.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,a=[],s=n.extractMinimum();for(s&&a.push(s);s&&s.key<=t;)s.key>=e&&(o(s.value,0)||r(s.key,s.value,this)),s=n.extractMinimum(),s&&a.push(s);for(var u=0;ug;g++)w[g]=[];var N=[],E=[];for(v=0;y>v;v++){for(var M=v+1,A=p[v],_=p[v+1],O=A;_>O;O++)g=l[O],N[g]=o?b(f[O],s[g][v]):b(s[g][v],f[O]),E[g]=M;for(g=0;d>g;g++)E[g]===M?w[g][v]=N[g]:w[g][v]=s[g][v]}return new a({data:w,size:[d,y],datatype:x})};return o}var i=r(41);t.name="algorithm01",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(47)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+g+")");var d,y=f[0],x=f[1],b=o,w=0,N=r;"string"==typeof l&&l===v&&(d=l,b=a.find(o,[d,d]),w=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O,T=n&&p?[]:void 0,C=[],S=[],z=new s({values:T,index:C,ptr:S,size:[y,x],datatype:d}),B=n&&p?[]:void 0,k=n&&p?[]:void 0,I=[],R=[];for(M=0;x>M;M++){S[M]=C.length;var P=M+1;for(_=c[M],O=c[M+1],A=_;O>A;A++)E=u[A],C.push(E),I[E]=P,B&&(B[E]=n[A]);for(_=h[M],O=h[M+1],A=_;O>A;A++)if(E=m[A],I[E]===P){if(B){var U=N(B[E],p[A]);b(U,w)?I[E]=null:B[E]=U}}else C.push(E),R[E]=P,k&&(k[E]=p[A]);if(B&&k)for(A=S[M];Ax;x++){for(var b=x+1,w=u[x],N=u[x+1],E=w;N>E;E++){var M=s[E];d[M]=o[E],y[M]=b}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===b?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=t}return v};return a}t.name="algorithm10",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var i=e.DenseMatrix,o=function(e,t,r){var o=e._data,u=e._size,c=e._datatype,f=t._data,l=t._size,p=t._datatype,m=[];if(u.length!==l.length)throw new a(u.length,l.length);for(var h=0;h0?s(v,0,m,m[0],o,f):[];return new i({data:d,size:m,datatype:g})},s=function(e,t,r,n,i,a){var o=[];if(t===r.length-1)for(var u=0;n>u;u++)o[u]=e(i[u],a[u]);else for(var c=0;n>c;c++)o[c]=s(e,t+1,r,r[t+1],i[c],a[c]);return o};return o}var i=r(38),a=r(41),o=i.string;o.isString;t.name="algorithm13",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var u,c=e._data,f=e._size,l=e._datatype,p=r;"string"==typeof l&&(u=l,t=n.convert(t,u),p=n.find(r,[u,u]));var m=f.length>0?s(p,0,f,f[0],c,t,o):[];return new a({data:m,size:i(f),datatype:u})},s=function(e,t,r,n,i,a,o){var u=[];if(t===r.length-1)for(var c=0;n>c;c++)u[c]=o?e(a,i[c]):e(i[c],a);else for(var f=0;n>f;f++)u[f]=s(e,t+1,r,r[t+1],i[f],a,o);return u};return o}var i=r(3).clone;t.name="algorithm14",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null,this._size=0}var o=n(r(58)),s=n(r(62)),u=1/Math.log((1+Math.sqrt(5))/2);a.prototype.type="FibonacciHeap",a.prototype.isFibonacciHeap=!0,a.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,o(e,n.key)&&(this._minimum=r)}else r.left=r,r.right=r,this._minimum=r;return this._size++,r},a.prototype.size=function(){return this._size},a.prototype.clear=function(){this._minimum=null,this._size=0},a.prototype.isEmpty=function(){return!!this._minimum},a.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},a.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&o(t.key,n.key)&&(f(e,t,n),l(e,n)),o(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,a=e;if(a)for(i++,a=a.right;a!==e;)i++,a=a.right;for(var c;i>0;){for(var f=a.degree,l=a.right;;){if(c=n[f],!c)break;if(s(a.key,c.key)){var m=c;c=a,a=m}p(c,a),n[f]=null,f++}n[f]=a,a=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,o(c.key,e.key)&&(e=c)):e=c);return e};return a}t.name="FibonacciHeap",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=a("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)},"Fraction, Fraction":function(e,t){return-1===e.compare(t)},"Complex, Complex":function(e,t){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return t>e},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.smaller+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="smaller",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,m=t._size,h=t._datatype;if(u.length!==m.length)throw new i(u.length,m.length);if(u[0]!==m[0]||u[1]!==m[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+m+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var g,v=u[0],d=u[1],y=0,x=r;"string"==typeof c&&c===h&&(g=c,y=n.convert(0,g),x=n.find(r,[g,g]));for(var b=[],w=0;v>w;w++)b[w]=[];for(var N=[],E=[],M=0;d>M;M++){for(var A=M+1,_=p[M],O=p[M+1],T=_;O>T;T++){var C=l[T];N[C]=o?x(f[T],s[C][M]):x(s[C][M],f[T]),E[C]=A}for(var S=0;v>S;S++)E[S]===A?b[S][M]=N[S]:b[S][M]=o?x(y,s[S][M]):x(s[S][M],y)}return new a({data:b,size:[v,d],datatype:g})};return o}var i=r(41);t.name="algorithm03",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r){var o=e._size,u=e._datatype,c=t._size,f=t._datatype;if(o.length!==c.length)throw new i(o.length,c.length);if(o[0]!==c[0]||o[1]!==c[1])throw new RangeError("Dimension mismatch. Matrix A ("+o+") must match Matrix B ("+c+")");var l,p=o[0],m=o[1],h=0,g=r;"string"==typeof u&&u===f&&(l=u,h=n.convert(0,l),g=n.find(r,[l,l]));var v,d,y=[];for(v=0;p>v;v++)y[v]=[];var x=new a({data:y,size:[p,m],datatype:l}),b=[],w=[],N=[],E=[];for(d=0;m>d;d++){var M=d+1;for(s(e,d,N,b,M),s(t,d,E,w,M),v=0;p>v;v++){var A=N[v]===M?b[v]:h,_=E[v]===M?w[v]:h;y[v][d]=g(A,_)}}return x},s=function(e,t,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=s[t],c=s[t+1];c>u;u++){var f=o[u];r[f]=i,n[f]=a[u]}};return o}var i=r(41);t.name="algorithm07",t.factory=n},function(e,t){"use strict";function r(e,t,r,n){var i=e.DenseMatrix,a=function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],m=c[1],h=r;"string"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var g=[],v=new i({data:g,size:[p,m],datatype:l}),d=[],y=[],x=0;m>x;x++){for(var b=x+1,w=u[x],N=u[x+1],E=w;N>E;E++){var M=s[E];d[M]=o[E],y[M]=b}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===b?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=a?h(t,0):h(0,t)}return v};return a}t.name="algorithm12",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=a("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)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.larger+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="larger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){function a(e,t){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(t&&!u(t))throw new Error("Invalid datatype: "+t);if(e&&e.isMatrix===!0||s(e)){var r=new c(e,t);this._data=r._data,this._size=r._size,this._datatype=r._datatype,this._min=null,this._max=null}else if(e&&s(e.data)&&s(e.size))this._data=e.data,this._size=e.size,this._datatype=e.datatype,this._min="undefined"!=typeof e.min?e.min:null,this._max="undefined"!=typeof e.max?e.max:null;else{if(e)throw new TypeError("Unsupported type of data ("+i.types.type(e)+")");this._data=[],this._size=[0],this._datatype=t,this._min=null,this._max=null}}var c=n(r(45)),f=n(r(58));return a.prototype=new c,a.prototype.type="ImmutableDenseMatrix",a.prototype.isImmutableDenseMatrix=!0,a.prototype.subset=function(e){switch(arguments.length){case 1:var t=c.prototype.subset.call(this,e);return t.isMatrix?new a({data:t._data,size:t._size,datatype:t._datatype}):t;case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}},a.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")},a.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")},a.prototype.clone=function(){var e=new a({data:o.clone(this._data),size:o.clone(this._size),datatype:this._datatype});return e},a.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}},a.fromJSON=function(e){return new a(e)},a.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")},a.prototype.min=function(){if(null===this._min){var e=null;this.forEach(function(t){(null===e||f(t,e))&&(e=t)}),this._min=null!==e?e:void 0}return this._min},a.prototype.max=function(){if(null===this._max){var e=null;this.forEach(function(t){(null===e||f(e,t))&&(e=t)}),this._max=null!==e?e:void 0}return this._max},a}var i=r(38),a=i.string,o=i.object,s=Array.isArray,u=a.isString;t.name="ImmutableDenseMatrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e){function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this._dimensions=[],this._isScalar=!0;for(var n=0,i=arguments.length;i>n;n++){var a=arguments[n];if(a&&a.isRange===!0)this._dimensions.push(a),this._isScalar=!1;else if(a&&(Array.isArray(a)||a.isMatrix===!0)){var o=r(a.valueOf());this._dimensions.push(o);var s=o.size();(1!==s.length||1!==s[0])&&(this._isScalar=!1)}else{if("number"!=typeof a)throw new TypeError("Dimension must be an Array, Matrix, Number or Range");this._dimensions.push(r([a]))}}}function r(t){for(var r=0,n=t.length;n>r;r++)if("number"!=typeof t[r]||!a(t[r]))throw new TypeError("Index parameters must be positive integer numbers");return new e.ImmutableDenseMatrix(t)}return t.prototype.type="Index",t.prototype.isIndex=!0,t.prototype.clone=function(){var e=new t;return e._dimensions=i(this._dimensions),e._isScalar=this._isScalar,e},t.create=function(e){var r=new t;return t.apply(r,e),r},t.prototype.size=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.size()[0]}return e},t.prototype.max=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.max()}return e},t.prototype.min=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.min()}return e},t.prototype.forEach=function(e){for(var t=0,r=this._dimensions.length;r>t;t++)e(this._dimensions[t],t,this)},t.prototype.dimension=function(e){return this._dimensions[e]||null},t.prototype.isScalar=function(){return this._isScalar},t.prototype.toArray=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toArray());return e},t.prototype.valueOf=t.prototype.toArray,t.prototype.toString=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toString());return"["+e.join(", ")+"]"},t.prototype.toJSON=function(){return{mathjs:"Index",dimensions:this._dimensions}},t.fromJSON=function(e){return t.create(e.dimensions)},t}var i=r(3).clone,a=r(6).isInteger;t.name="Index",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(e,t,r){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e)if(e.isBigNumber===!0)e=e.toNumber();else if("number"!=typeof e)throw new TypeError("Parameter start must be a number");if(null!=t)if(t.isBigNumber===!0)t=t.toNumber();else if("number"!=typeof t)throw new TypeError("Parameter end must be a number");if(null!=r)if(r.isBigNumber===!0)r=r.toNumber();else if("number"!=typeof 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}return a.prototype.type="Range",a.prototype.isRange=!0,a.parse=function(e){if("string"!=typeof e)return null;var t=e.split(":"),r=t.map(function(e){return parseFloat(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return new a(r[0],r[1]);case 3:return new a(r[0],r[2],r[1]);default:return null}},a.prototype.clone=function(){return new a(this.start,this.end,this.step)},a.prototype.size=function(){var e=0,t=this.start,r=this.step,n=this.end,a=n-t;return i.sign(r)==i.sign(a)?e=Math.ceil(a/r):0==a&&(e=0),isNaN(e)&&(e=0),[e]},a.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.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++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=i.format(this.start,e);return 1!=this.step&&(t+=":"+i.format(this.step,e)),t+=":"+i.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}var i=r(6);t.name="Range",t.path="type",t.factory=n},function(e,t){"use strict";function r(e,t,r,n){return n("index",{"...number | BigNumber | Range | Array | Matrix":function(t){var r=t.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e&&(Array.isArray(e)||e.isMatrix===!0)?e.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e}):e}),n=new e.Index;return e.Index.apply(n,r),n}})}t.name="index",t.factory=r},function(e,t){"use strict";function r(e,t,r,n){var i=e.SparseMatrix,a=n("sparse",{"":function(){return new i([])},string:function(e){return new i([],e)},"Array | Matrix":function(e){return new i(e)},"Array | Matrix, string":function(e,t){return new i(e,t)}});return a.toTex={0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"},a}t.name="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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()},Fraction:function(e){return e.valueOf()},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 i(e,a)}});return a.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},a}var i=r(19);t.name="number",t.factory=n},function(e,t,r){e.exports=[r(70)]},function(e,t){"use strict";function r(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}t.name="ResultSet",t.path="type",t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("string",{"":function(){return""},number:a.format,"null":function(e){return"null"},"boolean":function(e){return e+""},string:function(e){return e},"Array | Matrix":function(e){return i(e,o)},any:function(e){return String(e)}});return o.toTex={0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"},o}var i=r(19),a=r(6);t.name="string",t.factory=n},function(e,t,r){e.exports=[r(73),r(90),r(91)]},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){if(!(this instanceof s))throw new Error("Constructor must be called with the new operator");if(void 0!==e&&!M(e)&&!e.isComplex)throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");if(void 0!=t&&("string"!=typeof t||""==t))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=t){var r=s.parse(t);this.units=r.units,this.dimensions=r.dimensions}else this.units=[{unit:q,prefix:I,power:0}],this.dimensions=[0,0,0,0,0,0,0,0,0];this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1,this.isUnitListSimplified=!0}function u(){for(;" "==z||" "==z;)l()}function c(e){return e>="0"&&"9">=e||"."==e}function f(e){return e>="0"&&"9">=e}function l(){S++,z=C.charAt(S)}function p(e){S=e,z=C.charAt(S)}function m(){var e,t="";if(e=S,"+"==z?l():"-"==z&&(t+=z,l()),!c(z))return p(e),null;if("."==z){if(t+=z,l(),!f(z))return p(e),null}else{for(;f(z);)t+=z,l();"."==z&&(t+=z,l())}for(;f(z);)t+=z,l();if("E"==z||"e"==z){var r="",n=S;if(r+=z,l(),("+"==z||"-"==z)&&(r+=z,l()),!f(z))return p(n),t;for(t+=r;f(z);)t+=z,l()}return t}function h(){for(var e="",t=C.charCodeAt(S);t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t;)e+=z,l(),t=C.charCodeAt(S);return t=e.charCodeAt(0),t>=65&&90>=t||t>=97&&122>=t?e||null:null}function g(e){return z===e?(l(),e):null}function v(e){for(var t in L)if(L.hasOwnProperty(t)&&i(e,t)){var r=L[t],n=e.length-t.length,a=e.substring(0,n),o=r.prefixes[a];if(void 0!==o)return{unit:r,prefix:o}}return null}var d=n(r(51)),y=n(r(74)),x=n(r(77)),b=n(r(78)),w=n(r(79)),N=n(r(85)),E=n(r(86)),M=n(r(87)),A=n(r(88)),_=n(r(89)),O=n(r(68)),T=n(r(27));s.prototype.type="Unit",s.prototype.isUnit=!0;var C,S,z;s.parse=function(r){if(C=r,S=-1,z="","string"!=typeof C)throw new TypeError("Invalid argument in Unit.parse, string expected");var n=new s;n.units=[],l(),u();var i=m(),a=null;i&&(a="bignumber"===t.number?new e.BigNumber(i):"fraction"===t.number?new e.Fraction(i):parseFloat(i)),u();for(var o=1,c=!1,f=[],p=1;;){for(u();"("===z;)f.push(o),p*=o,o=1,l(),u();if(!z)break;var d=z,y=h();if(null==y)throw new SyntaxError('Unexpected "'+d+'" in "'+C+'" at index '+S.toString());var x=v(y);if(null==x)throw new SyntaxError('Unit "'+y+'" not found.');var b=o*p;if(u(),g("^")){u();var w=m();if(null==w)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');b*=w}n.units.push({unit:x.unit,prefix:x.prefix,power:b});for(var N=0;N1||Math.abs(this.units[0].power-1)>1e-15},s.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=s._getNumberConverter(_(e));for(var u=0;u1e-12)return!1;return!0},s.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},s.prototype.equals=function(e){return this.equalBase(e)&&E(this.value,e.value)},s.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&t.push({unit:$[a].unit,prefix:$[a].prefix,power:this.dimensions[i]})}t.length0?(r++,e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(var i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},s.prototype.format=function(e){this.simplifyUnitListLazy();var t=!1,r=!0;"undefined"!=typeof this.value&&null!==this.value&&this.value.isComplex&&(t=Math.abs(this.value.re)<1e-14,r=Math.abs(this.value.im)<1e-14);for(var n in this.units)this.units[n].unit&&("VA"===this.units[n].unit.name&&t?this.units[n].unit=L.VAR:"VAR"!==this.units[n].unit.name||t||(this.units[n].unit=L.VA));1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var i=this._denormalize(this.value),a=null!==this.value?A(i,e||{}):"",o=this.formatUnits();return this.value&&this.value.isComplex&&(a="("+a+")"),o.length>0&&a.length>0&&(a+=" "),a+=o},s.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=N(this.value),t=N(this.units[0].unit.value),r=this.units[0].prefix;if(0===e)return r;var n=this.units[0].power,i=Math.abs(Math.log(e/Math.pow(r.value*t,n))/Math.LN10-1.2),a=this.units[0].unit.prefixes;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];if(s.scientific){var u=Math.abs(Math.log(e/Math.pow(s.value*t,n))/Math.LN10-1.2);(i>u||u===i&&s.name.lengthM;M++){C[M]=T.length;var R=M+1;for(A=c[M],_=c[M+1];_>A;A++)E=u[A],T.push(E),k[E]=R,z&&(z[E]=n[A]);for(A=h[M],_=h[M+1];_>A;A++)E=m[A],k[E]!==R&&T.push(E),I[E]=R,B&&(B[E]=p[A]);if(O)for(A=C[M];A=0||t.predictable?Math.pow(r,n):u(new e.Complex(r,0),new e.Complex(n,0))}function u(e,t){return p(g(h(e),t))}function c(e,t){if(!i(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=a(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=m(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(n=g(o,n)),t>>=1,o=g(o,o);return n}function f(e,t){return v(c(e.valueOf(),t))}var l=r(29),p=n(r(80)),m=n(r(81)),h=n(r(82)),g=n(r(83)),v=n(r(50)),d=o("pow",{"number, number":s,"Complex, Complex":u,"BigNumber, BigNumber":function(r,n){return n.isInteger()||r>=0||t.predictable?r.pow(n):u(new e.Complex(r.toNumber(),0),new e.Complex(n.toNumber(),0))},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return s(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":c,"Array, BigNumber":function(e,t){return c(e,t.toNumber())},"Matrix, number":f,"Matrix, BigNumber":function(e,t){return f(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});return d.toTex="\\left(${args[0]}\\right)"+l.operators.pow+"{${args[1]}}",d}var i=r(6).isInteger,a=r(39).size;t.name="pow",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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 i(e,a)}});return a.toTex="\\exp\\left(${args[0]}\\right)",a}var i=r(19);t.name="exp",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){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 o=t&&t.isBigNumber===!0?e.BigNumber:r&&r.isBigNumber===!0?e.BigNumber:null;if(t&&t.isBigNumber===!0&&(t=t.toNumber()),r&&r.isBigNumber===!0&&(r=r.toNumber()),!a(t)||1>t)throw new Error("Parameters in function eye must be positive integers");if(!a(r)||1>r)throw new Error("Parameters in function eye must be positive integers");var s=o?new e.BigNumber(1):1,u=o?new o(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(50)),f=o("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)}});return f.toTex="\\mathrm{${name}}\\left(${args}\\right)",f}var i=r(39),a=r(6).isInteger;t.name="eye",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(r){return r>=0||t.predictable?Math.log(r):c(new e.Complex(r,0))}function s(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im)),Math.atan2(t.im,t.re))}var u=n(r(78)),c=a("log",{number:o,Complex:s,BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():s(new e.Complex(r.toNumber(),0))},"Array | Matrix":function(e){return i(e,c)},"any, any":function(e,t){return u(c(e),c(t))}});return c.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},c}var i=r(19);t.name="log",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=n(r(51)),f=n(r(77)),l=n(r(47)),p=n(r(84)),m=n(r(56)),h=e.DenseMatrix,g=e.SparseMatrix,v=o("multiply",i({"Array, Array":function(e,t){d(a.size(e),a.size(t));var r=v(u(e),u(t));return r&&r.isMatrix===!0?r.valueOf():r},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return d(r,n),1===r.length?1===n.length?y(e,t,r[0]):x(e,t):1===n.length?w(e,t):N(e,t)},"Matrix, Array":function(e,t){return v(e,u(t))},"Array, Matrix":function(e,t){return v(u(e,t.storage()),t)},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,f,!1);break;case"dense":r=m(e,t,f,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,f,!0);break;case"dense":r=m(t,e,f,!0)}return r},"Array, any":function(e,t){return m(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,f,!0).valueOf()}},f.signatures)),d=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)")}},y=function(e,t,r){if(0===r)throw new Error("Cannot multiply two empty vectors");var n,i=e._data,a=e._datatype,s=t._data,u=t._datatype,l=c,p=f;a&&u&&a===u&&"string"==typeof a&&(n=a,l=o.find(c,[n,n]),p=o.find(f,[n,n]));for(var m=p(i[0],s[0]),h=1;r>h;h++)m=l(m,p(i[h],s[h]));return m},x=function(e,t){switch(t.storage()){case"dense":return b(e,t)}throw new Error("Not implemented")},b=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=u[1],g=c,v=f;a&&l&&a===l&&"string"==typeof a&&(r=a,g=o.find(c,[r,r]),v=o.find(f,[r,r]));for(var d=[],y=0;m>y;y++){for(var x=v(n[0],s[0][y]),b=1;p>b;b++)x=g(x,v(n[b],s[b][y]));d[y]=x}return 1===m?d[0]:new h({data:d,size:[m],datatype:r})},w=function(e,t){switch(e.storage()){case"dense":return E(e,t);case"sparse":return _(e,t)}},N=function(e,t){switch(e.storage()){case"dense":switch(t.storage()){case"dense":return M(e,t);case"sparse":return A(e,t)}break;case"sparse":switch(t.storage()){case"dense":return O(e,t);case"sparse":return T(e,t)}}},E=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._datatype,l=i[0],p=i[1],m=c,g=f;a&&u&&a===u&&"string"==typeof a&&(r=a,m=o.find(c,[r,r]),g=o.find(f,[r,r]));for(var v=[],d=0;l>d;d++){for(var y=n[d],x=g(y[0],s[0]),b=1;p>b;b++)x=m(x,g(y[b],s[b]));v[d]=x}return 1===l?v[0]:new h({data:v,size:[l],datatype:r})},M=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=i[1],g=u[1],v=c,d=f;a&&l&&a===l&&"string"==typeof a&&(r=a, +v=o.find(c,[r,r]),d=o.find(f,[r,r]));for(var y=[],x=0;p>x;x++){var b=n[x];y[x]=[];for(var w=0;g>w;w++){for(var N=d(b[0],s[0][w]),E=1;m>E;E++)N=v(N,d(b[E],s[E][w]));y[x][w]=N}}return 1===p&&1===g?y[0][0]:new h({data:y,size:[p,g],datatype:r})},A=function(e,t){var r=e._data,n=e._size,i=e._datatype,a=t._values,s=t._index,u=t._ptr,p=t._size,m=t._datatype;if(!a)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var h,v=n[0],d=p[1],y=c,x=f,b=l,w=0;i&&m&&i===m&&"string"==typeof i&&(h=i,y=o.find(c,[h,h]),x=o.find(f,[h,h]),b=o.find(l,[h,h]),w=o.convert(0,h));for(var N=[],E=[],M=[],A=new g({values:N,index:E,ptr:M,size:[v,d],datatype:h}),_=0;d>_;_++){M[_]=E.length;var O=u[_],T=u[_+1];if(T>O)for(var C=0,S=0;v>S;S++){for(var z,B=S+1,k=O;T>k;k++){var I=s[k];C!==B?(z=x(r[S][I],a[k]),C=B):z=y(z,x(r[S][I],a[k]))}C!==B||b(z,w)||(E.push(S),N.push(z))}}return M[d]=E.length,1===v&&1===d?1===N.length?N[0]:0:A},_=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=[],d=[],y=[],x=c,b=f,w=l,N=0;a&&p&&a===p&&"string"==typeof a&&(s=a,x=o.find(c,[s,s]),b=o.find(f,[s,s]),w=o.find(l,[s,s]),N=o.convert(0,s));var E=[],M=[];y[0]=0;for(var A=0;h>A;A++){var _=u[A];if(!w(_,N))for(var O=i[A],T=i[A+1],C=O;T>C;C++){var S=n[C];M[S]?E[S]=x(E[S],b(_,r[C])):(M[S]=!0,d.push(S),E[S]=b(_,r[C]))}}for(var z=d.length,B=0;z>B;B++){var k=d[B];v[B]=E[k]}return y[1]=d.length,1===m?1===v.length?v[0]:0:new g({values:v,index:d,ptr:y,size:[m,1],datatype:s})},O=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=t._size[1],d=c,y=f,x=l,b=0;a&&p&&a===p&&"string"==typeof a&&(s=a,d=o.find(c,[s,s]),y=o.find(f,[s,s]),x=o.find(l,[s,s]),b=o.convert(0,s));for(var w=[],N=[],E=[],M=new g({values:w,index:N,ptr:E,size:[m,v],datatype:s}),A=[],_=[],O=0;v>O;O++){E[O]=N.length;for(var T=O+1,C=0;h>C;C++){var S=u[C][O];if(!x(S,b))for(var z=i[C],B=i[C+1],k=z;B>k;k++){var I=n[k];_[I]!==T?(_[I]=T,N.push(I),A[I]=y(S,r[k])):A[I]=d(A[I],y(S,r[k]))}}for(var R=E[O],P=N.length,U=R;P>U;U++){var q=N[U];w[U]=A[q]}}return E[v]=N.length,1===m&&1===v?1===w.length?w[0]:0:M},T=function(e,t){var r,n=e._values,i=e._index,a=e._ptr,s=e._datatype,u=t._values,l=t._index,p=t._ptr,m=t._datatype,h=e._size[0],v=t._size[1],d=n&&u,y=c,x=f;s&&m&&s===m&&"string"==typeof s&&(r=s,y=o.find(c,[r,r]),x=o.find(f,[r,r]));for(var b,w,N,E,M,A,_,O,T=d?[]:void 0,C=[],S=[],z=new g({values:T,index:C,ptr:S,size:[h,v],datatype:r}),B=d?[]:void 0,k=[],I=0;v>I;I++){S[I]=C.length;var R=I+1;for(M=p[I],A=p[I+1],E=M;A>E;E++)if(O=l[E],d)for(w=a[O],N=a[O+1],b=w;N>b;b++)_=i[b],k[_]!==R?(k[_]=R,C.push(_),B[_]=x(u[E],n[b])):B[_]=y(B[_],x(u[E],n[b]));else for(w=a[O],N=a[O+1],b=w;N>b;b++)_=i[b],k[_]!==R&&(k[_]=R,C.push(_));if(d)for(var P=S[I],U=C.length,q=P;U>q;q++){var L=C[q];T[q]=B[L]}}return S[v]=C.length,1===h&&1===v&&d?1===T.length?T[0]:0:z};return v.toTex="\\left(${args[0]}"+s.operators.multiply+"${args[1]}\\right)",v}var i=r(3).extend,a=r(39);t.name="multiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(47)),o=e.SparseMatrix,s=function(e,t,r,n){var s=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype;if(!s)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var p,m=f[0],h=f[1],g=a,v=0,d=r;"string"==typeof l&&(p=l,g=i.find(a,[p,p]),v=i.convert(0,p),t=i.convert(t,p),d=i.find(r,[p,p]));for(var y=[],x=[],b=[],w=new o({values:y,index:x,ptr:b,size:[m,h],datatype:p}),N=0;h>N;N++){b[N]=x.length;for(var E=c[N],M=c[N+1],A=E;M>A;A++){var _=u[A],O=n?d(t,s[A]):d(s[A],t);g(O,v)||(x.push(_),y.push(O))}}return b[h]=x.length,w};return s}t.name="algorithm11",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("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()},Fraction:function(e){return e.abs()},"Array | Matrix":function(e){return i(e,a,!0)},Unit:function(e){return e.abs()}});return a.toTex="\\left|${args[0]}\\right|",a}var i=r(19);t.name="abs",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(47)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=i("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:o(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,o);break;default:r=s(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,o,!1);break;default:r=f(e,t,o)}}return r},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=l(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,o,!0);break;default:r=l(t,e,o,!0)}return r},"Array, any":function(e,t){return l(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return l(a(t),e,o,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.equal+"${args[1]}\\right)",m}t.name="equal",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNumeric",{"number | BigNumber | Fraction | boolean":function(){return!0},"Complex | Unit | string":function(){return!1},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isNumeric",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("format",{any:i.format,"any, Object | function | number":i.format});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(23);t.name="format",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("_typeof",{any:function(e){var t=i.type(e);if("Object"===t){if(e.isBigNumber===!0)return"BigNumber";if(e.isComplex===!0)return"Complex";if(e.isFraction===!0)return"Fraction";if(e.isMatrix===!0)return"Matrix";if(e.isUnit===!0)return"Unit";if(e.isIndex===!0)return"Index";if(e.isRange===!0)return"Range";if(e.isChain===!0)return"Chain";if(e.isHelp===!0)return"Help"}return t}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(40);t.name="typeof",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("unit",{Unit:function(e){return e.clone()},string:function(t){return e.Unit.isValuelessUnit(t)?new e.Unit(null,t):e.Unit.parse(t)},"number | BigNumber | Fraction | Complex, string":function(t,r){return new e.Unit(t,r)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"},a}var i=r(19);t.name="unit",t.factory=n},function(e,t,r){function n(e,t,r,n,a){function o(t){var r=e.Unit.parse(t);return r.fixPrefix=!0,r}i(a,"speedOfLight",function(){return o("299792458 m s^-1")}),i(a,"gravitationConstant",function(){return o("6.6738480e-11 m^3 kg^-1 s^-2")}),i(a,"planckConstant",function(){return o("6.626069311e-34 J s")}),i(a,"reducedPlanckConstant",function(){return o("1.05457172647e-34 J s")}),i(a,"magneticConstant",function(){return o("1.2566370614e-6 N A^-2")}),i(a,"electricConstant",function(){return o("8.854187817e-12 F m^-1")}),i(a,"vacuumImpedance",function(){return o("376.730313461 ohm")}),i(a,"coulomb",function(){return o("8.9875517873681764e9 N m^2 C^-2")}),i(a,"elementaryCharge",function(){return o("1.60217656535e-19 C")}),i(a,"bohrMagneton",function(){return o("9.2740096820e-24 J T^-1")}),i(a,"conductanceQuantum",function(){return o("7.748091734625e-5 S")}),i(a,"inverseConductanceQuantum",function(){return o("12906.403721742 ohm")}),i(a,"magneticFluxQuantum",function(){return o("2.06783375846e-15 Wb")}),i(a,"nuclearMagneton",function(){return o("5.0507835311e-27 J T^-1")}),i(a,"klitzing",function(){return o("25812.807443484 ohm")}),i(a,"bohrRadius",function(){return o("5.291772109217e-11 m")}),i(a,"classicalElectronRadius",function(){return o("2.817940326727e-15 m")}),i(a,"electronMass",function(){return o("9.1093829140e-31 kg")}),i(a,"fermiCoupling",function(){return o("1.1663645e-5 GeV^-2")}),i(a,"fineStructure",function(){return.007297352569824}),i(a,"hartreeEnergy",function(){return o("4.3597443419e-18 J")}),i(a,"protonMass",function(){return o("1.67262177774e-27 kg")}),i(a,"deuteronMass",function(){return o("3.3435830926e-27 kg")}),i(a,"neutronMass",function(){return o("1.6749271613e-27 kg")}),i(a,"quantumOfCirculation",function(){return o("3.636947552024e-4 m^2 s^-1")}),i(a,"rydberg",function(){return o("10973731.56853955 m^-1")}),i(a,"thomsonCrossSection",function(){return o("6.65245873413e-29 m^2")}),i(a,"weakMixingAngle",function(){return.222321}),i(a,"efimovFactor",function(){return 22.7}),i(a,"atomicMass",function(){return o("1.66053892173e-27 kg")}),i(a,"avogadro",function(){return o("6.0221412927e23 mol^-1")}),i(a,"boltzmann",function(){return o("1.380648813e-23 J K^-1")}),i(a,"faraday",function(){return o("96485.336521 C mol^-1")}),i(a,"firstRadiation",function(){return o("3.7417715317e-16 W m^2")}),i(a,"loschmidt",function(){return o("2.686780524e25 m^-3")}),i(a,"gasConstant",function(){return o("8.314462175 J K^-1 mol^-1")}),i(a,"molarPlanckConstant",function(){return o("3.990312717628e-10 J s mol^-1")}),i(a,"molarVolume",function(){return o("2.241396820e-10 m^3 mol^-1")}),i(a,"sackurTetrode",function(){return-1.164870823}),i(a,"secondRadiation",function(){return o("1.438777013e-2 m K")}),i(a,"stefanBoltzmann",function(){return o("5.67037321e-8 W m^-2 K^-4")}),i(a,"wienDisplacement",function(){return o("2.897772126e-3 m K")}),i(a,"molarMass",function(){return o("1e-3 kg mol^-1")}),i(a,"molarMassC12",function(){return o("1.2e-2 kg mol^-1")}),i(a,"gravity",function(){return o("9.80665 m s^-2")}),i(a,"planckLength",function(){return o("1.61619997e-35 m")}),i(a,"planckMass",function(){return o("2.1765113e-8 kg")}),i(a,"planckTime",function(){return o("5.3910632e-44 s")}),i(a,"planckCharge",function(){return o("1.87554595641e-18 C")}),i(a,"planckTemperature",function(){return o("1.41683385e+32 K")})}var i=r(3).lazy;t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){"use strict";function n(e,t,o,s,u){u.on("config",function(r,i){r.number!==i.number&&n(e,t,o,s,u)}),u["true"]=!0,u["false"]=!1,u["null"]=null,u.uninitialized=r(39).UNINITIALIZED,"bignumber"===t.number?(u.Infinity=new e.BigNumber(1/0),u.NaN=new e.BigNumber(NaN),i.lazy(u,"pi",function(){return a.pi(e.BigNumber)}),i.lazy(u,"tau",function(){return a.tau(e.BigNumber)}),i.lazy(u,"e",function(){return a.e(e.BigNumber)}),i.lazy(u,"phi",function(){return a.phi(e.BigNumber)}),i.lazy(u,"E",function(){return u.e}),i.lazy(u,"LN2",function(){return new e.BigNumber(2).ln()}),i.lazy(u,"LN10",function(){return new e.BigNumber(10).ln()}),i.lazy(u,"LOG2E",function(){return new e.BigNumber(1).div(new e.BigNumber(2).ln())}),i.lazy(u,"LOG10E",function(){return new e.BigNumber(1).div(new e.BigNumber(10).ln())}),i.lazy(u,"PI",function(){return u.pi}),i.lazy(u,"SQRT1_2",function(){return new e.BigNumber("0.5").sqrt()}),i.lazy(u,"SQRT2",function(){return new e.BigNumber(2).sqrt()})):(u.Infinity=1/0,u.NaN=NaN,u.pi=Math.PI,u.tau=2*Math.PI,u.e=Math.E,u.phi=1.618033988749895,u.E=u.e,u.LN2=Math.LN2,u.LN10=Math.LN10,u.LOG2E=Math.LOG2E,u.LOG10E=Math.LOG10E,u.PI=u.pi,u.SQRT1_2=Math.SQRT1_2,u.SQRT2=Math.SQRT2),u.i=new e.Complex(0,1),u.version=r(95)}var i=r(3),a=r(93);t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){function n(e){return e[0].precision}var i=r(44).memoize,a=r(94);t.e=i(function(e){return new e(1).exp()},n),t.phi=i(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},n),t.pi=i(function(e){var t=e.constructor({precision:e.precision+4}),r=new t(4).times(a(new t(1).div(5))).minus(a(new t(1).div(239)));return new e(4).times(r)},n),t.tau=i(function(e){var r=t.pi(e.constructor({precision:e.precision+2}));return new e(2).times(r)},n)},function(e,t){e.exports=function(e){for(var t=e,r=NaN,n=e.times(e),i=e,a=!0,o=3;!t.equals(r);o+=2)i=i.times(n),r=t,a=!a,t=a?t.plus(i.div(o)):t.minus(i.div(o));return t}},function(e,t){e.exports="2.6.0"},function(e,t,r){e.exports=[r(97),r(267),r(291),r(292),r(319),r(269),r(290)]},function(e,t,r){function n(e,t,n,i){var a={};return a.bignumber=r(98),a["boolean"]=r(99),a.complex=r(100),a.fraction=r(101),a.index=r(102),a.matrix=r(103),a.number=r(104),a.sparse=r(105),a.string=r(106),a.unit=r(107),a.e=r(108),a.E=r(108),a["false"]=r(109),a.i=r(110),a.Infinity=r(111),a.LN2=r(112),a.LN10=r(113),a.LOG2E=r(114),a.LOG10E=r(115),a.NaN=r(116),a["null"]=r(117),a.pi=r(118),a.PI=r(118),a.phi=r(119),a.SQRT1_2=r(120),a.SQRT2=r(121),a.tau=r(122),a["true"]=r(123),a.version=r(124),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.lsolve=r(125),a.lup=r(126),a.lusolve=r(127),a.slu=r(128),a.usolve=r(129),a.abs=r(130),a.add=r(131),a.cbrt=r(132),a.ceil=r(133),a.cube=r(134),a.divide=r(135),a.dotDivide=r(136),a.dotMultiply=r(137),a.dotPow=r(138),a.exp=r(139),a.fix=r(140),a.floor=r(141),a.gcd=r(142),a.hypot=r(143),a.lcm=r(144),a.log=r(145),a.log10=r(146),a.mod=r(147),a.multiply=r(148),a.norm=r(149),a.nthRoot=r(150),a.pow=r(151),a.round=r(152),a.sign=r(153),a.sqrt=r(154),a.square=r(155),a.subtract=r(156),a.unaryMinus=r(157),a.unaryPlus=r(158),a.xgcd=r(159),a.bitAnd=r(160),a.bitNot=r(161),a.bitOr=r(162),a.bitXor=r(163),a.leftShift=r(164),a.rightArithShift=r(165),a.rightLogShift=r(166),a.bellNumbers=r(167),a.catalan=r(168),a.composition=r(169),a.stirlingS2=r(170),a.arg=r(171),a.conj=r(172),a.re=r(173),a.im=r(174),a.eval=r(175),a.help=r(176),a.distance=r(177),a.intersect=r(178),a.and=r(179),a.not=r(180),a.or=r(181),a.xor=r(182),a.concat=r(183),a.cross=r(184),a.det=r(185),a.diag=r(186),a.dot=r(187),a.eye=r(188),a.flatten=r(189),a.inv=r(190),a.ones=r(191),a.range=r(192),a.resize=r(193),a.size=r(194),a.squeeze=r(195),a.subset=r(196),a.trace=r(197),a.transpose=r(198),a.zeros=r(199),a.combinations=r(200),a.factorial=r(201),a.gamma=r(202),a.kldivergence=r(203),a.multinomial=r(204),a.permutations=r(205),a.pickRandom=r(206),a.random=r(207),a.randomInt=r(208),a.compare=r(209),a.deepEqual=r(210),a.equal=r(211),a.larger=r(212),a.largerEq=r(213),a.smaller=r(214),a.smallerEq=r(215),a.unequal=r(216),a.max=r(217),a.mean=r(218),a.median=r(219),a.min=r(220),a.mode=r(221),a.prod=r(222),a.quantileSeq=r(223),a.std=r(224),a.sum=r(225),a["var"]=r(226),a.acos=r(227),a.acosh=r(228),a.acot=r(229),a.acoth=r(230),a.acsc=r(231),a.acsch=r(232),a.asec=r(233),a.asech=r(234),a.asin=r(235),a.asinh=r(236),a.atan=r(237),a.atanh=r(238),a.atan2=r(239),a.cos=r(240),a.cosh=r(241),a.cot=r(242),a.coth=r(243),a.csc=r(244),a.csch=r(245),a.sec=r(246),a.sech=r(247),a.sin=r(248),a.sinh=r(249),a.tan=r(250),a.tanh=r(251),a.to=r(252),a.clone=r(253),a.map=r(254),a.partitionSelect=r(255),a.filter=r(256),a.forEach=r(257),a.format=r(258),a.isInteger=r(259),a.isNegative=r(260),a.isNumeric=r(261),a.isPositive=r(262),a.isZero=r(263),a["import"]=r(264),a.sort=r(265),a["typeof"]=r(266),a}t.name="docs",t.path="expression",t.factory=n},function(e,t){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","fraction","index","matrix","string","unit"]}},function(e,t){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e,t){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e,t){e.exports={name:"fraction",category:"Type",syntax:["fraction(num)","fraction(num,den)"],description:"Create a fraction from a number or from a numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e,t){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e,t){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]}},function(e,t){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","fraction","index","matrix","string","unit"]}},function(e,t){e.exports={name:"sparse",category:"Type",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]}},function(e,t){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e,t){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e,t){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e,t){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e,t){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e,t){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e,t){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e,t){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e,t){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e,t){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e,t){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e,t){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e,t){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e,t){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e,t){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,t){e.exports={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Solves the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lup","lusolve","usolve","matrix","sparse"]}},function(e,t){e.exports={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu"]}},function(e,t){e.exports={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]}},function(e,t){e.exports={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup"]}},function(e,t){e.exports={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Solves the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["lup","lusolve","lsolve","matrix","sparse"]}},function(e,t){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e,t){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]}},function(e,t){e.exports={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]}},function(e,t){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e,t){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e,t){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e,t){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e,t){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e,t){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e,t){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e,t){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e,t){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e,t){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e,t){e.exports={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenusa of a list with values. ",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]}},function(e,t){e.exports={ +name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e,t){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e,t){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e,t){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e,t){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e,t){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e,t){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e,t){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e,t){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e,t){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["kldivergence(x, y)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["n!","factorial(n)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai <= 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randInt",category:"Probability",syntax:["randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(5, 2, 7)","mode([3, -1, 5, 7])"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(0.5)","acsc(csc(0.5))","acsc(2)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"], +seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"partitionSelect",category:"Utils",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,t){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e,t){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(268),r(286),r(287),r(288),r(289)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(269));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return i(e,function(e){return o(e).compile()})}})}var i=r(19);t.name="compile",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){if(1!=arguments.length&&2!=arguments.length)throw new i("parse",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},"string"==typeof t)return ge=t,x();if(Array.isArray(t)||t instanceof e.Matrix)return a(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return ge=e,x()});throw new TypeError("String or matrix expected")}function u(){ve=0,de=ge.charAt(0),be=0,we=null}function c(){ve++,de=ge.charAt(ve)}function f(){return ge.charAt(ve+1)}function l(){return ge.charAt(ve+2)}function p(){for(xe=le.NULL,ye="";" "==de||" "==de||"\n"==de&&be;)c();if("#"==de)for(;"\n"!=de&&""!=de;)c();if(""==de)return void(xe=le.DELIMITER);if("\n"==de&&!be)return xe=le.DELIMITER,ye=de,void c();var e=de+f(),t=e+l();if(3==t.length&&pe[t])return xe=le.DELIMITER,ye=t,c(),c(),void c();if(2==e.length&&pe[e])return xe=le.DELIMITER,ye=e,c(),void c();if(pe[de])return xe=le.DELIMITER,ye=de,void c();if(!d(de)){if(v()){for(;v()||y(de);)ye+=de,c();return void(xe=me[ye]?le.DELIMITER:le.SYMBOL)}for(xe=le.UNKNOWN;""!=de;)ye+=de,c();throw X('Syntax error in part "'+ye+'"')}if(xe=le.NUMBER,"."==de)ye+=de,c(),y(de)||(xe=le.UNKNOWN);else{for(;y(de);)ye+=de,c();"."==de&&(ye+=de,c())}for(;y(de);)ye+=de,c();if(e=f(),("E"==de||"e"==de)&&(y(e)||"-"==e||"+"==e))for(ye+=de,c(),("+"==de||"-"==de)&&(ye+=de,c()),y(de)||(xe=le.UNKNOWN);y(de);)ye+=de,c()}function m(){do p();while("\n"==ye)}function h(){be++}function g(){be--}function v(){var e=ge.charAt(ve-1),t=ge.charAt(ve+1),r=function(e){return/^[a-zA-Z_\u00C0-\u02AF\u0370-\u03FF]$/.test(e)},n=function(e,t){return/^[\uD835]$/.test(e)&&/^[\uDC00-\uDFFF]$/.test(t)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(t)};return r(de)||n(de,t)||n(e,de)}function d(e){return e>="0"&&"9">=e||"."==e}function y(e){return e>="0"&&"9">=e}function x(){u(),p();var e=b();if(""!=ye)throw xe==le.DELIMITER?J("Unexpected operator "+ye):X('Unexpected part "'+ye+'"');return e}function b(){var e,t,r=[];if(""==ye)return new re("undefined","undefined");for("\n"!=ye&&";"!=ye&&(e=w());"\n"==ye||";"==ye;)0==r.length&&e&&(t=";"!=ye,r.push({node:e,visible:t})),p(),"\n"!=ye&&";"!=ye&&""!=ye&&(e=w(),t=";"!=ye,r.push({node:e,visible:t}));return r.length>0?new ee(r):e}function w(){if(xe==le.SYMBOL&&"function"==ye)throw X('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return N()}function N(){var e,t,r,n,i=E();if("="==ye){if(i&&i.isSymbolNode)return e=i.name,m(),r=N(),new K(e,r);if(i&&i.isIndexNode)return m(),r=N(),new fe(i,r);if(i&&i.isFunctionNode&&(n=!0,t=[],e=i.name,i.args.forEach(function(e,r){e&&e.isSymbolNode?t[r]=e.name:n=!1}),n))return m(),r=N(),new ne(e,t,r);throw X("Invalid left hand side of assignment operator =")}return i}function E(){for(var e=M();"?"==ye;){var t=we;we=be,m();var r=e,n=M();if(":"!=ye)throw X("False part of conditional expression expected");we=null,m();var i=E();e=new te(r,n,i),we=t}return e}function M(){for(var e=A();"or"==ye;)m(),e=new ae("or","or",[e,A()]);return e}function A(){for(var e=_();"xor"==ye;)m(),e=new ae("xor","xor",[e,_()]);return e}function _(){for(var e=O();"and"==ye;)m(),e=new ae("and","and",[e,O()]);return e}function O(){for(var e=T();"|"==ye;)m(),e=new ae("|","bitOr",[e,T()]);return e}function T(){for(var e=C();"^|"==ye;)m(),e=new ae("^|","bitXor",[e,C()]);return e}function C(){for(var e=S();"&"==ye;)m(),e=new ae("&","bitAnd",[e,S()]);return e}function S(){var e,t,r,n,i;for(e=z(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};ye in t;)r=ye,n=t[r],m(),i=[e,z()],e=new ae(r,n,i);return e}function z(){var e,t,r,n,i;for(e=B(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};ye in t;)r=ye,n=t[r],m(),i=[e,B()],e=new ae(r,n,i);return e}function B(){var e,t,r,n,i;for(e=k(),t={to:"to","in":"to"};ye in t;)r=ye,n=t[r],m(),i=[e,k()],e=new ae(r,n,i);return e}function k(){var e,t=[];if(e=":"==ye?new re("1","number"):I(),":"==ye&&we!==be){for(t.push(e);":"==ye&&t.length<3;)m(),")"==ye||"]"==ye||","==ye||""==ye?t.push(new ce("end")):t.push(I());e=3==t.length?new ue(t[0],t[2],t[1]):new ue(t[0],t[1])}return e}function I(){var e,t,r,n,i;for(e=R(),t={"+":"add","-":"subtract"};ye in t;)r=ye,n=t[r],m(),i=[e,R()],e=new ae(r,n,i);return e}function R(){var e,t,r,n,i;for(e=P(),t=e,r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};;)if(ye in r)n=ye,i=r[n],m(),t=P(),e=new ae(n,i,[e,t]);else{if(!(xe==le.SYMBOL||"in"==ye&&e&&e.isConstantNode||xe==le.NUMBER&&!t.isConstantNode||"("==ye||"["==ye))break;t=P(),e=new ae("*","multiply",[e,t])}return e}function P(){var e,t,r={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[ye];return r?(e=ye,m(),t=[P()],new ae(e,r,t)):U()}function U(){var e,t,r,n;return e=q(),("^"==ye||".^"==ye)&&(t=ye,r="^"==t?"pow":"dotPow",m(),n=[e,P()],e=new ae(t,r,n)),e}function q(){var e,t,r,n,i;for(e=L(),t={"!":"factorial","'":"transpose"};ye in t;)r=ye,n=t[r],p(),i=[e],e=new ae(r,n,i);return e}function L(){var e,t=[];if(xe==le.SYMBOL&&he[ye]){if(e=he[ye],p(),"("==ye){if(t=[],h(),p(),")"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if(")"!=ye)throw X("Parenthesis ) expected");g(),p()}return new e(t)}return F()}function F(){var e,t;return xe==le.SYMBOL||xe==le.DELIMITER&&ye in me?(t=ye,p(),e=D(t),e=$(e)):j()}function D(e){var t;if("("==ye){if(t=[],h(),p(),")"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if(")"!=ye)throw X("Parenthesis ) expected");return g(),p(),new se(e,t)}return new ce(e)}function $(e){for(var t;"["==ye;){if(t=[],h(),p(),"]"!=ye)for(t.push(E());","==ye;)p(),t.push(E());if("]"!=ye)throw X("Parenthesis ] expected");g(),p(),e=new ie(e,t)}return e}function j(){var e,t,r;if('"'==ye){for(t="",r="";""!=de&&('"'!=de||"\\"==r);)t+=de,r=de,c();if(p(),'"'!=ye)throw X('End of string " expected');return p(),e=new re(t,"string"),e=$(e)}return G()}function G(){var e,t,r,n;if("["==ye){if(h(),p(),"]"!=ye){var i=H();if(";"==ye){for(r=1,t=[i];";"==ye;)p(),t[r]=H(),r++;if("]"!=ye)throw X("End of matrix ] expected");g(),p(),n=t[0].nodes.length;for(var a=1;r>a;a++)if(t[a].nodes.length!=n)throw J("Column dimensions mismatch ("+t[a].nodes.length+" != "+n+")");e=new Q(t)}else{if("]"!=ye)throw X("End of matrix ] expected");g(),p(),e=i}}else g(),p(),e=new Q([]);return e}return V()}function H(){for(var e=[N()],t=1;","==ye;)p(),e[t]=N(),t++;return new Q(e)}function V(){var e;return xe==le.NUMBER?(e=ye,p(),new re(e,"number")):Z()}function Z(){var e;if("("==ye){if(h(),p(),e=N(),")"!=ye)throw X("Parenthesis ) expected");return g(),p(),new oe(e)}return Y()}function Y(){throw X(""==ye?"Unexpected end of expression":"Value expected")}function W(){return ve-ye.length+1}function X(e){var t=W(),r=new SyntaxError(e+" (char "+t+")");return r["char"]=t,r}function J(e){var t=W(),r=new Error(e+" (char "+t+")");return r["char"]=t,r}var Q=n(r(270)),K=n(r(273)),ee=n(r(275)),te=n(r(276)),re=n(r(277)),ne=n(r(278)),ie=n(r(279)),ae=n(r(282)),oe=n(r(284)),se=n(r(283)),ue=n(r(280)),ce=n(r(281)),fe=n(r(285)),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,be=0,we=null;return s}var i=r(11),a=r(19);t.name="parse",t.path="expression",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!Array.isArray(this.nodes)||!this.nodes.every(function(e){return e&&e.isNode}))throw new TypeError("Array containing Nodes expected")}var s=n(r(271));return o.prototype=new s,o.prototype.type="ArrayNode",o.prototype.isArrayNode=!0,o.prototype._compile=function(e,t){var r="array"!==e.math.config().matrix,n=this.nodes.map(function(r){return r._compile(e,t)});return(r?"math.matrix([":"[")+n.join(",")+(r?"])":"]")},o.prototype.forEach=function(e){for(var t=0;t0)throw new Error("Calling compile(math) is deprecated. Call the function as compile() instead.");var e={math:a.expression.transform,args:{},_validateScope:s},t={},r=this._compile(e,t),n=Object.keys(e).map(function(e){return" var "+e+' = defs["'+e+'"];'}),i=n.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+r+"; }};",o=new Function("defs",i);return o(e)},o.prototype._compile=function(e,t){throw new Error("Cannot compile a Node interface")},o.prototype.forEach=function(e){throw new Error("Cannot run forEach on a Node interface")},o.prototype.map=function(e){throw new Error("Cannot run map on a Node interface")},o.prototype._ifNode=function(e){if(!e||!e.isNode)throw new TypeError("Callback function must return a Node");return e},o.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)},o.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){var a=r(e,n,i);return t(a,r)})}var r=e(this,null,null);return t(r,e)},o.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},o.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},o.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},o.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},o.prototype.toString=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toString(e)},o.prototype._toString=function(){throw new Error("_toString not implemented for "+this.type)},o.prototype.toTex=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toTex(e)},o.prototype._toTex=function(e){throw new Error("_toTex not implemented for "+this.type)},o.prototype.getIdentifier=function(){return this.type},o.prototype.getContent=function(){return this},o}var i=r(272);r(3).extend;t.name="Node",t.path="expression.node",t.math=!0,t.factory=n},function(e,t){"use strict";e.exports={end:!0}},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');if(!t||!t.isNode)throw new TypeError('Node expected for parameter "expr"');if(e in c)throw new Error('Illegal symbol name, "'+e+'" is a reserved keyword');this.name=e,this.expr=t}function s(e,t){var r=f.getPrecedence(e,t),n=f.getPrecedence(e.expr,t);return"all"===t||null!==n&&r>=n}var u=n(r(271)),c=(n(r(270)),r(272)),f=r(274);return o.prototype=new u,o.prototype.type="AssignmentNode",o.prototype.isAssignmentNode=!0,o.prototype._compile=function(e,t){return'scope["'+this.name+'"] = '+this.expr._compile(e,t)},o.prototype.forEach=function(e){e(this.expr,"expr",this)},o.prototype.map=function(e){return new o(this.name,this._ifNode(e(this.expr,"expr",this)))},o.prototype.clone=function(){return new o(this.name,this.expr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return s(this,t)&&(r="("+r+")"),this.name+" = "+r},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return s(this,t)&&(r="\\left("+r+"\\right)"),i.toSymbol(this.name)+":="+r},o}var i=r(29);t.name="AssignmentNode",t.path="expression.node",t.factory=n},function(e,t){"use strict";function r(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var n=r.getIdentifier(),i=0;i=a)&&(n="("+n+")");var o=this.trueExpr.toString(e),s=i.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&r>=s)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=i.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&r>=c)&&(u="("+u+")"),n+" ? "+o+" : "+u},o.prototype._toTex=function(e){return"\\begin{cases} {"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{cases}"},o}var i=(r(29),r(274));t.name="ConditionalNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(t){if("string"!=typeof t)throw new TypeError('String expected for parameter "valueType"');if("string"!=typeof e)throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=t}else this.value=e+"",this.valueType=i(e);if(!u[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var s=n(r(271)),u={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};return o.prototype=new s,o.prototype.type="ConstantNode",o.prototype.isConstantNode=!0,o.prototype._compile=function(e,t){switch(this.valueType){case"number":var r=e.math.config().number;return"bignumber"===r?'math.bignumber("'+this.value+'")':"fraction"===r?'math.fraction("'+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+'"')}},o.prototype.forEach=function(e){},o.prototype.map=function(e){return this.clone()},o.prototype.clone=function(){return new o(this.value,this.valueType)},o.prototype._toString=function(e){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},o.prototype._toTex=function(e){var t,r=this.value;switch(this.valueType){case"string":return'\\mathtt{"'+r+'"}';case"number":return t=r.toLowerCase().indexOf("e"),-1!==t?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},o}var i=r(40).type;t.name="ConstantNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e){return"string"==typeof e}function i(e,t,i,u){function c(e,t,r){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(t)||!t.every(n))throw new TypeError('Array containing strings expected for parameter "params"');if(!r||!r.isNode)throw new TypeError('Node expected for parameter "expr"');if(e in a)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.params=t,this.expr=r}function f(e,t){var r=s.getPrecedence(e,t),n=s.getPrecedence(e.expr,t);return"all"===t||null!==n&&r>=n}var l=i(r(271));return c.prototype=new l,c.prototype.type="FunctionAssignmentNode",c.prototype.isFunctionAssignmentNode=!0,c.prototype._compile=function(e,t){var r=Object.create(t);this.params.forEach(function(e){r[e]=!0});var n=this.expr._compile(e,r);return'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 '+n+' }; fn.syntax = "'+this.name+"("+this.params.join(", ")+')"; return fn; })()'},c.prototype.forEach=function(e){e(this.expr,"expr",this)},c.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new c(this.name,this.params.slice(0),t)},c.prototype.clone=function(){return new c(this.name,this.params.slice(0),this.expr)},c.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return f(this,t)&&(r="("+r+")"),"function "+this.name+"("+this.params.join(", ")+") = "+r},c.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return f(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(o.toSymbol).join(",")+"\\right):="+r},c}var a=r(272),o=r(29),s=r(274);t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=i},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(!e||!e.isNode)throw new TypeError('Node expected for parameter "object"');if(!c(t)||!t.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=t}function o(e){switch(e.object.type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}}var s=n(r(271)),u=(n(r(280)),n(r(281)),n(r(65))),c=Array.isArray;return a.prototype=new s,a.prototype.type="IndexNode",a.prototype.isIndexNode=!0,a.prototype._compile=function(e,t){return this.compileSubset(e,t)},a.prototype.compileSubset=function(e,t,r){function n(e){return e&&e.isSymbolNode&&"end"==e.name}var i=!1,a=this.ranges.map(function(e){var t=e.filter(n).length>0;return i=t?t:i,t});e.range=function(e,t,r){return new u(e&&e.isBigNumber===!0?e.toNumber():e,t&&t.isBigNumber===!0?t.toNumber():t,r&&r.isBigNumber===!0?r.toNumber():r)};var o=Object.create(t),s=this.ranges.map(function(t,r){ +var n=a[r];return t&&t.isRangeNode?n?(o.end=!0,"(function () { var end = size["+r+"]; return range( "+t.start._compile(e,o)+", "+t.end._compile(e,o)+", "+(t.step?t.step._compile(e,o):"1")+" );})()"):"range("+t.start._compile(e,o)+", "+t.end._compile(e,o)+", "+(t.step?t.step._compile(e,o):"1")+")":n?(o.end=!0,"(function () { var end = size["+r+"]; return "+t._compile(e,o)+";})()"):t._compile(e,o)});return i?"(function () { var obj = "+this.object._compile(e,o)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+s.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e,o)+",math.index("+s.join(", ")+")"+(r?", "+r:"")+")"},a.prototype.forEach=function(e){e(this.object,"object",this);for(var t=0;t3)throw new Error("Too many arguments");this.start=e,this.end=t,this.step=r||null}function s(e,t){var r=i.getPrecedence(e,t),n={},a=i.getPrecedence(e.start,t);if(n.start=null!==a&&r>=a||"all"===t,e.step){var o=i.getPrecedence(e.step,t);n.step=null!==o&&r>=o||"all"===t}var s=i.getPrecedence(e.end,t);return n.end=null!==s&&r>=s||"all"===t,n}var u=n(r(271));return o.prototype=new u,o.prototype.type="RangeNode",o.prototype.isRangeNode=!0,o.prototype._compile=function(e,t){return"math.range("+this.start._compile(e,t)+", "+this.end._compile(e,t)+(this.step?", "+this.step._compile(e,t):"")+")"},o.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},o.prototype.clone=function(){return new o(this.start,this.end,this.step&&this.step)},o.prototype._toString=function(e){var t,r=e&&e.parenthesis?e.parenthesis:"keep",n=s(this,r),i=this.start.toString(e);if(n.start&&(i="("+i+")"),t=i,this.step){var a=this.step.toString(e);n.step&&(a="("+a+")"),t+=":"+a}var o=this.end.toString(e);return n.end&&(o="("+o+")"),t+=":"+o},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=s(this,t),n=this.start.toTex(e);if(r.start&&(n="\\left("+n+"\\right)"),this.step){var i=this.step.toTex(e);r.step&&(i="\\left("+i+"\\right)"),n+=":"+i}var a=this.end.toTex(e);return r.end&&(a="\\left("+a+"\\right)"),n+=":"+a},o}var i=r(274);t.name="RangeNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');this.name=e}function u(e){throw new Error("Undefined symbol "+e)}var c=n(r(271)),f=n(r(73));return s.prototype=new c,s.prototype.type="SymbolNode",s.prototype.isSymbolNode=!0,s.prototype._compile=function(e,t){return e.undef=u,e.Unit=f,t[this.name]?this.name:this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(f.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},s.prototype.forEach=function(e){},s.prototype.map=function(e){return this.clone()},s.prototype.clone=function(){return new s(this.name)},s.prototype._toString=function(e){return this.name},s.prototype._toTex=function(e){var t=!1;"undefined"==typeof o[this.name]&&f.isValuelessUnit(this.name)&&(t=!0);var r=i.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},s}var i=r(29);t.name="SymbolNode",t.path="expression.node",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o,s){function u(e,t,r){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('string expected for parameter "op"');if("string"!=typeof t)throw new TypeError('string expected for parameter "fn"');if(!Array.isArray(r)||!r.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter "args"');this.op=e,this.fn=t,this.args=r||[]}function c(e,t,r,n){var i=a.getPrecedence(e,t),o=a.getAssociativity(e,t);if("all"===t||r.length>2){var s=[];return r.forEach(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":s.push(!1);break;default:s.push(!0)}}),s}switch(r.length){case 0:return[];case 1:var u=a.getPrecedence(r[0],t);if(n&&null!==u){var c,f;if("keep"===t?(c=r[0].getIdentifier(),f=e.getIdentifier()):(c=r[0].getContent().getIdentifier(),f=e.getContent().getIdentifier()),a.properties[i][f].latexLeftParens===!1)return[!1];if(a.properties[u][c].latexParens===!1)return[!1]}return null===u?[!1]:i>=u?[!0]:[!1];case 2:var l,p=a.getPrecedence(r[0],t),m=a.isAssociativeWith(e,r[0],t);l=null===p?!1:p!==i||"right"!==o||m?i>p?!0:!1:!0;var h,g=a.getPrecedence(r[1],t),v=a.isAssociativeWith(e,r[1],t);if(h=null===g?!1:g!==i||"left"!==o||v?i>g?!0:!1:!0,n){var f,d,y;"keep"===t?(f=e.getIdentifier(),d=e.args[0].getIdentifier(),y=e.args[1].getIdentifier()):(f=e.getContent().getIdentifier(),d=e.args[0].getContent().getIdentifier(),y=e.args[1].getContent().getIdentifier()),null!==p&&(a.properties[i][f].latexLeftParens===!1&&(l=!1),a.properties[p][d].latexParens===!1&&(l=!1)),null!==g&&(a.properties[i][f].latexRightParens===!1&&(h=!1),a.properties[g][y].latexParens===!1&&(h=!1))}return[l,h]}}var f=n(r(271));n(r(277)),n(r(281)),n(r(283));return u.prototype=new f,u.prototype.type="OperatorNode",u.prototype.isOperatorNode=!0,u.prototype._compile=function(e,t){if(!e.math[this.fn])throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.args.map(function(r){return r._compile(e,t)});return"math."+this.fn+"("+r.join(", ")+")"},u.prototype.forEach=function(e){for(var t=0;tt;t++){var h=e[t];if(h&&h.isMatrix===!0&&(p=!0),"number"==typeof h||h&&h.isBigNumber===!0){if(t!==n-1)throw new Error("Dimension must be specified as last argument");if(r=f,f=h.valueOf(),!o(f))throw new TypeError("Integer number expected for dimension");if(0>f)throw new u(f);if(t>0&&f>r)throw new u(f,r+1)}else{var g=a(h).valueOf(),v=s.size(g);if(m[t]=g,r=f,f=v.length-1,t>0&&f!=r)throw new c(r+1,f+1)}}if(0==m.length)throw new SyntaxError("At least one matrix expected");for(var d=m.shift();m.length;)d=i(d,m.shift(),f,0);return p?l(d):d},"...string":function(e){return e.join("")}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}function i(e,t,r,n){if(r>n){if(e.length!=t.length)throw new c(e.length,t.length);for(var a=[],o=0;or;r++){var i=arguments[r];if(i&&i.isRange===!0)i.start--,i.end-=i.step>0?0:2;else if(i&&i.isSet===!0)i=i.map(function(e){return e-1});else if(i&&(i.isArray===!0||i.isMatrix))i=i.map(function(e){return e-1});else if("number"==typeof i)i--;else{if(!i||i.isBigNumber!==!0)throw new TypeError("Ranges must be a Number, Range, Array or Matrix");i=i.toNumber()-1}t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}Array.isArray;t.name="index",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=(n(r(302)),n(r(50)));return a("max",{"Array, function":function(e,t){return i(e,t,e)},"Matrix, function":function(e,t){return o(i(e.valueOf(),t,e))}})}function i(e,t,r){function n(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,[])}t.name="map",t.path="expression.transform",t.factory=n},function(e,t){"use strict";function r(e,t,r,i){var a=i("map",{"Array, function":n,"Matrix, function":function(e,t){return e.map(t)}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}function n(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=r},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(305));return o("max",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(294).transform,a=r(304);t.name="max",t.path="expression.transform",t.factory=n},function(e,t){"use strict";e.exports=function(e){return Array.isArray(e)||e&&e.isMatrix===!0}},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var c=n(r(62)),f=o("max",{"Array | Matrix":u,"Array | Matrix, number | BigNumber":function(e,t){return a(e,t.valueOf(),s)},"...":function(){return u(arguments)}});return f.toTex="\\max\\left(${args}\\right)",f}var i=r(306),a=r(307);t.name="max",t.factory=n},function(e,t){"use strict";e.exports=function r(e,t){e&&e.isMatrix===!0&&(e=e.valueOf());for(var n=0,i=e.length;i>n;n++){var a=e[n];Array.isArray(a)?r(a,t):t(a)}}},function(e,t,r){"use strict";function n(e,t,r){var a,o,s,u;if(0>=t){if(Array.isArray(e[0])){for(u=i(e),o=[],a=0;ar;r++){var o=[];for(t=0;n>t;t++)o.push(e[t][r]);a.push(o)}return a}var a=r(39).size,o=r(42);e.exports=function(e,t,r){var i=Array.isArray(e)?a(e):e.size();if(0>t)throw new o(t);if(t>=i.length)throw new o(t,i.length);return e&&e.isMatrix===!0?e.create(n(e.valueOf(),t,r)):n(e,t,r)}},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(309));return o("mean",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(294).transform,a=r(304);t.name="mean",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t){var r=o(e,t,f),n=Array.isArray(e)?i(e):e.size();return l(r,n[t])}function c(e){var t=0,r=0;if(a(e,function(e){t=f(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return l(t,r)}var f=n(r(49)),l=n(r(310)),p=s("mean",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":u,"...":function(){return c(arguments)}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(39).size,a=r(306),o=r(307);t.name="mean",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(78)),s=n(r(83)),u=n(r(311)),c=n(r(50)),f=n(r(84)),l=n(r(56)),p=a("divide",i({"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;case"dense":r=l(e,t,o,!1)}return r},"Array, any":function(e,t){return l(c(e),t,o,!1).valueOf()},"any, Array | Matrix":function(e,t){return s(e,u(t))}},o.signatures));return p.toTex="\\frac{${args[0]}}{${args[1]}}",p}var i=r(3).extend;t.name="divide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t,r){var n,i,a,o,s;if(1==t){if(o=e[0][0],0==o)throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,o)]]}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 b=g[n],w=v[n];if(n!=d){if(0!=b[d]){for(a=u(l(b[d]),y[d]),i=d;r>i;i++)b[i]=c(b[i],f(a,y[i]));for(i=0;r>i;i++)w[i]=c(w[i],f(a,x[i]))}}else{for(a=y[d],i=d;r>i;i++)b[i]=u(b[i],a);for(i=0;r>i;i++)w[i]=u(w[i],a)}}}return v}var s=n(r(50)),u=n(r(78)),c=n(r(51)),f=n(r(83)),l=n(r(75)),p=n(r(312)),m=n(r(81)),h=a("inv",{"Array | Matrix":function(e){var t=e.isMatrix===!0?e.size():i.array.size(e);switch(t.length){case 1:if(1==t[0])return e.isMatrix===!0?s([u(1,e.valueOf()[0])]):[u(1,e[0])];throw new RangeError("Matrix must be square (size: "+i.string.format(t)+")");case 2:var r=t[0],n=t[1];if(r==n)return e.isMatrix===!0?s(o(e.valueOf(),r,n),e.storage()):o(e,r,n);throw new RangeError("Matrix must be square (size: "+i.string.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.string.format(t)+")")}},any:function(e){return u(1,e)}});return h.toTex="\\left(${args[0]}\\right)^{-1}",h}var i=r(38);t.name="inv",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function s(e,t,r){if(1==t)return a.clone(e[0][0]);if(2==t)return f(l(e[0][0],e[1][1]),l(e[1][0],e[0][1]));for(var n=function(e){var t,r,n=new Array(e.length),i=0;for(t=1;tr;r++)n[t][r]=0;for(r=t+1;ro;o++)i=l(n(i),e);return t%2==0?p(i[0][0]):i[0][0]}var u=n(r(50)),c=n(r(49)),f=n(r(74)),l=n(r(83)),p=n(r(75)),m=i("det",{any:function(e){return a.clone(e)},"Array | Matrix":function(e){var t;switch(e&&e.isMatrix===!0?t=e.size():Array.isArray(e)?(e=u(e),t=e.size()):t=[],t.length){case 0:return a.clone(e);case 1:if(1==t[0])return a.clone(e.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+o.format(t)+")");case 2:var r=t[0],n=t[1];if(r==n)return s(e.clone().valueOf(),r,n);throw new RangeError("Matrix must be square (size: "+o.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}});return m.toTex="\\det\\left(${args[0]}\\right)",m}var i=r(38),a=i.object,o=i.string;t.name="det",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(314));return o("min",{"...any":function(e){if(2==e.length&&a(e[0])){var t=e[1];"number"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(294).transform,a=r(304);t.name="min",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var c=n(r(58)),f=o("min",{"Array | Matrix":u,"Array | Matrix, number | BigNumber":function(e,t){return a(e,t.valueOf(),s)},"...":function(){return u(arguments)}});return f.toTex="\\min\\left(${args}\\right)",f}var i=r(306),a=r(307);t.name="min",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(316));return i("range",{"...any":function(e){var t=e.length-1,r=e[t];return"boolean"!=typeof r&&e.push(!0),a.apply(null,e)}})}t.name="range",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e){return"array"===t.matrix?e:p(e)}function o(r,n){var i=l(r);if(!i)throw new SyntaxError('String "'+r+'" is no valid range');var o;return"bignumber"===t.number?(o=n?f:c,a(o(new e.BigNumber(i.start),new e.BigNumber(i.end),new e.BigNumber(i.step)))):(o=n?u:s,a(o(i.start,i.end,i.step)))}function s(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 u(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 c(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function f(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function l(e){var t=e.split(":"),r=t.map(function(e){return Number(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return{start:r[0],end:r[1],step:1};case 3:return{start:r[0],end:r[2],step:r[1]};default:return null}}var p=n(r(50)),m=new e.BigNumber(0),h=new e.BigNumber(1),g=i("range",{string:o,"string, boolean":o,"number, number":function(e,t){return a(s(e,t,1))},"number, number, number":function(e,t,r){return a(s(e,t,r))},"number, number, boolean":function(e,t,r){return a(r?u(e,t,1):s(e,t,1))},"number, number, number, boolean":function(e,t,r,n){return a(n?u(e,t,r):s(e,t,r))},"BigNumber, BigNumber":function(e,t){return a(c(e,t,h))},"BigNumber, BigNumber, BigNumber":function(e,t,r){return a(c(e,t,r))},"BigNumber, BigNumber, boolean":function(e,t,r){return a(r?f(e,t,h):c(e,t,h))},"BigNumber, BigNumber, BigNumber, boolean":function(e,t,r,n){return a(n?f(e,t,r):c(e,t,r))}});return g.toTex="\\mathrm{${name}}\\left(${args}\\right)",g}t.name="range",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(318));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(t){throw i(t)}}})}var i=r(294).transform;t.name="subset",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(1!=t.size().length)throw new o(t.size().length,1);var r=e.length;a(t.min()[0],r),a(t.max()[0],r);var n=t.dimension(0),i="";return n.forEach(function(t){i+=e.charAt(t)}),i}function c(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError("Index expected");if(1!=t.size().length)throw new o(t.size().length,1);if(void 0!==n){if("string"!=typeof n||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";var i=t.dimension(0),s=i.size()[0];if(s!=r.length)throw new o(i.size()[0],r.length);var u=e.length;a(t.min()[0]),a(t.max()[0]);for(var c=[],f=0;u>f;f++)c[f]=e.charAt(f);if(i.forEach(function(e,t){c[e]=r.charAt(t[0])}),c.length>u)for(f=u-1,s=c.length;s>f;f++)c[f]||(c[f]=n);return c.join("")}var f=n(r(50)),l=s("subset",{"Array, Index":function(e,t){var r=f(e),n=r.subset(t);return n&&n.valueOf()},"Matrix, Index":function(e,t){return e.subset(t)},"string, Index":u,"Array, Index, any":function(e,t,r){return f(i(e)).subset(t,r,void 0).valueOf()},"Array, Index, any, any":function(e,t,r,n){return f(i(e)).subset(t,r,n).valueOf()},"Matrix, Index, any":function(e,t,r){return e.clone().subset(t,r)},"Matrix, Index, any, any":function(e,t,r,n){return e.clone().subset(t,r,n)},"string, Index, string":c,"string, Index, string, string":c});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(3).clone,a=r(39).validateIndex,o=r(41);t.name="subset",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var u=n(r(289))();return s.prototype.type="Help", +s.prototype.isHelp=!0,s.prototype.toString=function(){var e=this.doc||{},t="\n";if(e.name&&(t+="Name: "+e.name+"\n\n"),e.category&&(t+="Category: "+e.category+"\n\n"),e.description&&(t+="Description:\n "+e.description+"\n\n"),e.syntax&&(t+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){t+="Examples:\n";for(var r=0;rt;t++)w[t]=t;for(r=0;o>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],T=s(O);p(T,A)&&(M=t,A=T,_=O)}if(r!==M&&(w[r]=[w[M],w[M]=w[r]][0],v._swapRows(r,M,g)),i>r)for(t=r+1;i>t;t++){var C=g[t][r];m(C,0)||(g[t][r]=c(g[t][r],_))}}for(r=0;o>r;r++)for(t=0;i>t;t++)0===r&&(o>t&&(x[t]=[]),d[t]=[]),r>t?(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=0)):t!==r?(o>t&&(x[t][r]=0),i>r&&(d[t][r]=g[t][r])):(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=1));var S=new v({data:d,size:y}),z=new v({data:x,size:b}),B=[];for(t=0,h=w.length;h>t;t++)B[w[t]]=t;return{L:S,U:z,p:B,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}},b=function(e){var t,r,n,i=e._size[0],a=e._size[1],o=Math.min(i,a),u=e._values,l=e._index,v=e._ptr,y=[],x=[],b=[],w=[i,o],N=[],E=[],M=[],A=[o,a],_=[],O=[];for(t=0;i>t;t++)_[t]=t,O[t]=t;var T=function(e,t){var r=O[e],n=O[t];_[r]=t,_[n]=e,O[e]=n,O[t]=r};for(r=0;a>r;r++){var C=new d;i>r&&(b.push(y.length),y.push(1),x.push(r)),M.push(N.length);var S=v[r],z=v[r+1];for(n=S;z>n;n++)t=l[n],C.set(_[t],u[n]);r>0&&C.forEach(0,r-1,function(e,t){g._forEachRow(e,y,x,b,function(r,n){r>e&&C.accumulate(r,h(f(n,t)))})});var B=r,k=C.get(r),I=s(k);C.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,I)&&(B=e,I=r,k=t)}),r!==B&&(g._swapRows(r,B,w[1],y,x,b),g._swapRows(r,B,A[1],N,E,M),C.swap(r,B),T(r,B)),C.forEach(0,i-1,function(e,t){r>=e?(N.push(t),E.push(e)):(t=c(t,k),m(t,0)||(y.push(t),x.push(e)))})}return M.push(N.length),b.push(y.length),{L:new g({values:y,index:x,ptr:b,size:w}),U:new g({values:N,index:E,ptr:M,size:A}),p:_,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return y}var i=r(38),a=i.object;t.name="lup",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(324)),s=n(r(335)),u=i("slu",{"SparseMatrix, number, number":function(e,t,r){if(!o(t)||0>t||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(0>r||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var n=a(t,e,!1),i=s(e,n,r);return{L:i.L,U:i.U,p:i.pinv,q:n.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}});return u}var i=r(38),a=i.number,o=a.isInteger;t.name="slu",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(325)),a=n(r(330)),o=n(r(331)),s=n(r(332)),u=n(r(333)),c=function(e,t,r){var n,c=t._ptr,l=t._size,p=l[1],m={};if(m.q=i(e,t),e&&!m.q)return null;if(r){var h=e?a(t,null,m.q,0):t;m.parent=o(h,1);var g=s(m.parent,p);if(m.cp=u(h,m.parent,g,1),h&&m.parent&&m.cp&&f(h,m))for(m.unz=0,n=0;p>n;n++)m.unz+=m.cp[n]}else m.unz=4*c[p]+p,m.lnz=m.unz;return m},f=function(e,t){var r=e._ptr,n=e._index,i=e._size,a=i[0],o=i[1];t.pinv=[],t.leftmost=[];var s,u,c,f,l,p=t.parent,m=t.pinv,h=t.leftmost,g=[],v=0,d=a,y=a+o,x=a+2*o;for(u=0;o>u;u++)g[d+u]=-1,g[y+u]=-1,g[x+u]=0;for(s=0;a>s;s++)h[s]=-1;for(u=o-1;u>=0;u--)for(f=r[u],l=r[u+1],c=f;l>c;c++)h[n[c]]=u;for(s=a-1;s>=0;s--)m[s]=-1,u=h[s],-1!=u&&(0===g[x+u]++&&(g[y+u]=s),g[v+s]=g[d+u],g[d+u]=s);for(t.lnz=0,t.m2=a,u=0;o>u;u++)if(s=g[d+u],t.lnz++,0>s&&(s=t.m2++),m[s]=u,!(--x[u]<=0)){t.lnz+=g[x+u];var b=p[u];-1!=b&&(0===g[x+b]&&(g[y+b]=g[y+u]),g[v+g[y+u]]=g[d+b],g[d+b]=g[v+s],g[x+b]+=g[x+u])}for(s=0;a>s;s++)m[s]<0&&(m[s]=u++);return!0};return c}t.name="cs_sqr",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=n(r(327)),o=n(r(328)),s=n(r(49)),u=n(r(83)),c=n(r(329)),f=function(e,t){if(!t||0>=e||e>3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var f=l(e,t,n,s,c);a(f,g,null);for(var v,d,y,x,b,w,N,E,M,A,_,O,T,C,S,z,B=f._index,k=f._ptr,I=k[s],R=[],P=[],U=0,q=s+1,L=2*(s+1),F=3*(s+1),D=4*(s+1),$=5*(s+1),j=6*(s+1),G=7*(s+1),H=R,V=p(s,k,P,U,F,H,L,G,q,j,D,$),Z=m(s,k,P,$,D,j,c,q,F,H,L),Y=0;s>Z;){for(y=-1;s>Y&&-1==(y=P[F+Y]);Y++);-1!=P[L+y]&&(H[P[L+y]]=-1),P[F+Y]=P[L+y];var W=P[D+y],X=P[q+y];Z+=X;var J=0;P[q+y]=-X;var Q=k[y],K=0===W?Q:I,ee=K;for(x=1;W+1>=x;x++){for(x>W?(w=y,N=Q,E=P[U+y]-W):(w=B[Q++],N=k[w],E=P[U+w]),b=1;E>=b;b++)v=B[N++],(M=P[q+v])<=0||(J+=M,P[q+v]=-M,B[ee++]=v,-1!=P[L+v]&&(H[P[L+v]]=H[v]),-1!=H[v]?P[L+H[v]]=P[L+v]:P[F+P[$+v]]=P[L+v]);w!=y&&(k[w]=i(y),P[j+w]=0)}for(0!==W&&(I=ee),P[$+y]=J,k[y]=K,P[U+y]=ee-K,P[D+y]=-2,V=h(V,u,P,j,s),A=K;ee>A;A++)if(v=B[A],!((_=P[D+v])<=0)){M=-P[q+v];var te=V-M;for(Q=k[v],O=k[v]+_-1;O>=Q;Q++)w=B[Q],P[j+w]>=V?P[j+w]-=M:0!==P[j+w]&&(P[j+w]=P[$+w]+te)}for(A=K;ee>A;A++){for(v=B[A],O=k[v],T=O+P[D+v]-1,C=O,S=0,z=0,Q=O;T>=Q;Q++)if(w=B[Q],0!==P[j+w]){var re=P[j+w]-V;re>0?(z+=re,B[C++]=w,S+=w):(k[w]=i(y),P[j+w]=0)}P[D+v]=C-O+1;var ne=C,ie=O+P[U+v];for(Q=T+1;ie>Q;Q++){d=B[Q];var ae=P[q+d];0>=ae||(z+=ae,B[C++]=d,S+=d)}0===z?(k[v]=i(y),M=-P[q+v],J-=M,X+=M,Z+=M,P[q+v]=0,P[D+v]=-1):(P[$+v]=Math.min(P[$+v],z),B[C]=B[ne],B[ne]=B[O],B[O]=y,P[U+v]=C-O+1,S=(0>S?-S:S)%s,P[L+v]=P[G+S],P[G+S]=v,H[v]=S)}for(P[$+y]=J,u=Math.max(u,J),V=h(V+u,u,P,j,s),A=K;ee>A;A++)if(v=B[A],!(P[q+v]>=0))for(S=H[v],v=P[G+S],P[G+S]=-1;-1!=v&&-1!=P[L+v];v=P[L+v],V++){for(E=P[U+v],_=P[D+v],Q=k[v]+1;Q<=k[v]+E-1;Q++)P[j+B[Q]]=V;var oe=v;for(d=P[L+v];-1!=d;){var se=P[U+d]===E&&P[D+d]===_;for(Q=k[d]+1;se&&Q<=k[d]+E-1;Q++)P[j+B[Q]]!=V&&(se=0);se?(k[d]=i(v),P[q+v]+=P[q+d],P[q+d]=0,P[D+d]=-1,d=P[L+d],P[L+oe]=d):(oe=d,d=P[L+d])}}for(Q=K,A=K;ee>A;A++)v=B[A],(M=-P[q+v])<=0||(P[q+v]=M,z=P[$+v]+J-M,z=Math.min(z,s-Z-M),-1!=P[F+z]&&(H[P[F+z]]=v),P[L+v]=P[F+z],H[v]=-1,P[F+z]=v,Y=Math.min(Y,z),P[$+v]=z,B[Q++]=v);P[q+y]=X,0===(P[U+y]=Q-K)&&(k[y]=-1,P[j+y]=0),0!==W&&(I=Q)}for(v=0;s>v;v++)k[v]=i(k[v]);for(d=0;s>=d;d++)P[F+d]=-1;for(d=s;d>=0;d--)P[q+d]>0||(P[L+d]=P[F+k[d]],P[F+k[d]]=d);for(w=s;w>=0;w--)P[q+w]<=0||-1!=k[w]&&(P[L+w]=P[F+k[w]],P[F+k[w]]=w);for(y=0,v=0;s>=v;v++)-1==k[v]&&(y=o(v,y,P,F,L,R,j));return R.splice(R.length-1,1),R},l=function(e,t,r,n,i){var a=c(t);if(1===e&&n===r)return s(t,a);if(2==e){for(var o=a._index,f=a._ptr,l=0,p=0;r>p;p++){var m=f[p];if(f[p]=l,!(f[p+1]-m>i))for(var h=f[p+1];h>m;m++)o[l++]=o[m]}return f[r]=l,t=c(a),u(a,t)}return u(a,t)},p=function(e,t,r,n,i,a,o,s,u,c,f,l){for(var p=0;e>p;p++)r[n+p]=t[p+1]-t[p];r[n+e]=0;for(var m=0;e>=m;m++)r[i+m]=-1,a[m]=-1,r[o+m]=-1,r[s+m]=-1,r[u+m]=1,r[c+m]=1,r[f+m]=0,r[l+m]=r[n+m];var g=h(0,0,r,c,e);return r[f+e]=-2,t[e]=-1,r[c+e]=0,g},m=function(e,t,r,n,a,o,s,u,c,f,l){for(var p=0,m=0;e>m;m++){var h=r[n+m];if(0===h)r[a+m]=-2,p++,t[m]=-1,r[o+m]=0;else if(h>s)r[u+m]=0,r[a+m]=-1,p++,t[m]=i(e),r[u+e]++;else{var g=r[c+h];-1!=g&&(f[g]=m),r[l+m]=r[c+h],r[c+h]=m}}return p},h=function(e,t,r,n,i){if(2>e||0>e+t){for(var a=0;i>a;a++)0!==r[n+a]&&(r[n+a]=1);e=2}return e},g=function(e,t){return e!=t};return f}t.name="cs_amd",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e){return-e-2};return e}t.name="cs_flip",t.path="sparse",t.factory=r},function(e,t){"use strict";function r(){var e=function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size,s=o[1],u=0,c=0;s>c;c++){var f=a[c];for(a[c]=u;f=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],++s,r[o+s]=c)}return t};return e}t.name="cs_tdfs",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=e.DenseMatrix,f=e.SparseMatrix,l=o("transpose",{Array:function(e){return l(u(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: "+a(r)+")");switch(e.storage()){case"dense":t=p(e,n,i);break;case"sparse":t=m(e,n,i)}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+a(this._size)+")")}return t},any:function(e){return i(e)}}),p=function(e,t,r){for(var n,a=e._data,o=[],s=0;r>s;s++){n=o[s]=[];for(var u=0;t>u;u++)n[u]=i(a[u][s])}return new c({data:o,size:[r,t],datatype:e._datatype})},m=function(e,t,r){for(var n=e._values,a=e._index,o=e._ptr,s=n?[]:void 0,u=[],c=[],l=[],p=0;t>p;p++)l[p]=0;var m,h,g;for(m=0,h=a.length;h>m;m++)l[a[m]]++;for(var v=0,d=0;t>d;d++)c.push(v),v+=l[d],l[d]=c[d];for(c.push(v),g=0;r>g;g++)for(var y=o[g],x=o[g+1],b=y;x>b;b++){var w=l[a[b]]++;u[w]=g,n&&(s[w]=i(n[b]))}return new f({values:s,index:u,ptr:c,size:[r,t],datatype:e._datatype})};return l.toTex="\\left(${args[0]}\\right)"+s.operators.transpose,l}var i=r(3).clone,a=r(23).format;t.name="transpose",t.factory=n},function(e,t){"use strict";function r(e){var t=e.SparseMatrix,r=function(e,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=e._size,c=e._datatype,f=u[0],l=u[1],p=i&&e._values?[]:null,m=[],h=[],g=0,v=0;l>v;v++){h[v]=g;for(var d=n?n[v]:v,y=s[d],x=s[d+1],b=y;x>b;b++){var w=r?r[o[b]]:o[b];m[g]=w,p&&(p[g]=a[b]),g++}}return h[l]=g,new t({values:p,index:m,ptr:h,size:[f,l],datatype:c})};return r}t.name="cs_permute",t.path="sparse",t.factory=r},function(e,t){"use strict";function r(){var e=function(e,t){if(!e)return null;var r,n,i=e._index,a=e._ptr,o=e._size,s=o[0],u=o[1],c=[],f=[],l=0,p=u;if(t)for(r=0;s>r;r++)f[p+r]=-1;for(var m=0;u>m;m++){c[m]=-1,f[l+m]=-1;for(var h=a[m],g=a[m+1],v=h;g>v;v++){var d=i[v];for(r=t?f[p+d]:d;-1!=r&&m>r;r=n)n=f[l+r],f[l+r]=m,-1==n&&(c[r]=m);t&&(f[p+d]=m)}}return c};return e}t.name="cs_etree",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(328)),a=function(e,t){if(!e)return null;var r,n=0,a=[],o=[],s=0,u=t,c=2*t;for(r=0;t>r;r++)o[s+r]=-1;for(r=t-1;r>=0;r--)-1!=e[r]&&(o[u+r]=o[s+e[r]],o[s+e[r]]=r);for(r=0;t>r;r++)-1==e[r]&&(n=i(r,n,o,s,u,a,c));return a};return a}t.name="cs_post",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(329)),a=n(r(334)),o=function(e,t,r,n){if(!e||!t||!r)return null;var o,s,u,c,f,l,p,m=e._size,h=m[0],g=m[1],v=4*g+(n?g+h+1:0),d=[],y=0,x=g,b=2*g,w=3*g,N=4*g,E=5*g+1;for(u=0;v>u;u++)d[u]=-1;var M=[],A=i(e),_=A._index,O=A._ptr;for(u=0;g>u;u++)for(s=r[u],M[s]=-1==d[w+s]?1:0;-1!=s&&-1==d[w+s];s=t[s])d[w+s]=u;if(n){for(u=0;g>u;u++)d[r[u]]=u;for(o=0;h>o;o++){for(u=g,l=O[o],p=O[o+1],f=l;p>f;f++)u=Math.min(u,d[_[f]]);d[E+o]=d[N+u],d[N+u]=o}}for(o=0;g>o;o++)d[y+o]=o;for(u=0;g>u;u++){for(s=r[u],-1!=t[s]&&M[t[s]]--,c=n?d[N+u]:s;-1!=c;c=n?d[E+c]:-1)for(f=O[c];f=1&&M[s]++,2==T.jleaf&&M[T.q]--}-1!=t[s]&&(d[y+s]=t[s])}for(s=0;g>s;s++)-1!=t[s]&&(M[t[s]]+=M[s]);return M};return o}t.name="cs_counts",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t,r,n,i,a,o){var s,u,c,f,l=0;if(t>=e||r[n+t]<=r[i+e])return-1;if(r[i+e]=r[n+t],c=r[a+e],r[a+e]=t,-1===c)l=1,f=e;else{for(l=2,f=c;f!=r[o+f];f=r[o+f]);for(s=c;s!=f;s=u)u=r[o+s],r[o+s]=f}return{jleaf:l,q:f}};return e}t.name="cs_leaf",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(85)),a=n(r(78)),o=n(r(83)),s=n(r(62)),u=n(r(336)),c=n(r(337)),f=e.SparseMatrix,l=function(e,t,r){if(!e)return null;var n,l=e._size,p=l[1],m=100,h=100;t&&(n=t.q,m=t.lnz||m,h=t.unz||h);var g,v,d=[],y=[],x=[],b=new f({values:d,index:y,ptr:x,size:[p,p]}),w=[],N=[],E=[],M=new f({values:w,index:N,ptr:E,size:[p,p]}),A=[],_=[],O=[];for(g=0;p>g;g++)_[g]=0,A[g]=-1,x[g+1]=0;m=0,h=0;for(var T=0;p>T;T++){x[T]=m,E[T]=h;var C=n?n[T]:T,S=c(b,e,C,O,_,A,1),z=-1,B=-1;for(v=S;p>v;v++)if(g=O[v],A[g]<0){var k=i(_[g]);s(k,B)&&(B=k,z=g)}else N[h]=A[g],w[h++]=_[g];if(-1==z||0>=B)return null;A[C]<0&&u(i(_[C]),o(B,r))&&(z=C);var I=_[z];for(N[h]=T,w[h++]=I,A[z]=T,y[m]=z,d[m++]=1,v=S;p>v;v++)g=O[v],A[g]<0&&(y[m]=g,d[m++]=a(_[g],I)),_[g]=0}for(x[p]=m,E[p]=h,v=0;m>v;v++)y[v]=A[y[v]];return d.splice(m,d.length-m),y.splice(m,y.length-m),w.splice(h,w.length-h),N.splice(h,N.length-h),{L:b,U:M,pinv:A}};return l}t.name="cs_lu",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=a("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)},"Fraction, Fraction":function(e,t){return-1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>=t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.largerEq+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="largerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(78)),a=n(r(83)),o=n(r(74)),s=n(r(338)),u=function(e,t,r,n,u,c,f){var l,p,m,h,g=e._values,v=e._index,d=e._ptr,y=e._size,x=y[1],b=t._values,w=t._index,N=t._ptr,E=s(e,t,r,n,c);for(l=E;x>l;l++)u[n[l]]=0;for(p=N[r],m=N[r+1],l=p;m>l;l++)u[w[l]]=b[l];for(var M=E;x>M;M++){var A=n[M],_=c?c[A]:A;if(!(0>_))for(p=d[_],m=d[_+1],u[A]=i(u[A],g[f?p:m-1]),l=f?p+1:p,h=f?m:m-1;h>l;l++){var O=v[l];u[O]=o(u[O],a(g[l],u[A]))}}return E};return u}t.name="cs_spsolve",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(339)),a=n(r(340)),o=n(r(341)),s=function(e,t,r,n,s){var u,c,f,l=e._ptr,p=e._size,m=t._index,h=t._ptr,g=p[1],v=g;for(c=h[r],f=h[r+1],u=c;f>u;u++){var d=m[u];a(l,d)||(v=i(d,e,v,n,s))}for(u=v;g>u;u++)o(l,n[u]);return v};return s}t.name="cs_reach",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(340)),a=n(r(341)),o=n(r(342)),s=function(e,t,r,n,s){var u,c,f,l=t._index,p=t._ptr,m=t._size,h=m[1],g=0;for(n[0]=e;g>=0;){e=n[g];var v=s?s[e]:e;i(p,e)||(a(p,e),n[h+g]=0>v?0:o(p[v]));var d=1;for(c=n[h+g],f=0>v?0:o(p[v+1]);f>c;c++)if(u=l[c],!i(p,u)){n[h+g]=c,n[++g]=u,d=0;break}d&&(g--,n[--r]=e)}return r};return s}t.name="cs_dfs",t.path="sparse",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t){return e[t]<0};return e}t.name="cs_marked",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=function(e,t){e[t]=i(e[t])};return a}t.name="cs_mark",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(326)),a=function(e){return 0>e?i(e):e};return a}t.name="cs_unflip",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(78)),s=n(r(77)),u=n(r(74)),c=n(r(47)),f=n(r(344)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=0;i>m;m++){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(g,v);for(var d=m+1;n>d;d++)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=0;p>d;d++){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,b=[],w=[],N=g[d+1];for(n=g[d];N>n;n++)r=h[n],r===d?x=m[n]:r>d&&(b.push(m[n]),w.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var E=o(y,x);for(n=0,N=w.length;N>n;n++)r=w[n],i[r]=[u(i[r][0]||0,s(E,b[n]))];v[d]=[E]}}return new l({data:v,size:[a,1]})};return p}t.name="lsolve",t.factory=n},function(e,t,r){"use strict";function n(e){var t=e.DenseMatrix,r=function(e,r,n){var i=e.size();if(2!==i.length)throw new RangeError("Matrix must be two dimensional (size: "+a.format(i)+")");var u=i[0],c=i[1];if(u!==c)throw new RangeError("Matrix must be square (size: "+a.format(i)+")");var f,l,p;if(r&&r.isMatrix===!0){var m=r.size();if(1===m.length){if(m[0]!==u)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l]];return new t({data:f,size:[u,1],datatype:r._datatype})}if(2===m.length){if(m[0]!==u||1!==m[1])throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");if(r.isDenseMatrix===!0){if(n){for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l][0]];return new t({data:f,size:[u,1],datatype:r._datatype})}return r}for(f=[],l=0;u>l;l++)f[l]=[0];for(var h=r._values,g=r._index,v=r._ptr,d=v[1],y=v[0];d>y;y++)l=g[y],f[l][0]=h[y];return new t({data:f,size:[u,1],datatype:r._datatype})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}if(s(r)){var x=o.size(r);if(1===x.length){if(x[0]!==u)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],l=0;u>l;l++)f[l]=[r[l]];return new t({data:f,size:[u,1]})}if(2===x.length){if(x[0]!==u||1!==x[1])throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(f=[],l=0;u>l;l++)f[l]=[r[l][0]];return new t({data:f,size:[u,1]})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}};return r}var i=r(38),a=i.string,o=i.array,s=Array.isArray;t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(322)),u=n(r(323)),c=n(r(346)),f=n(r(344)),l=n(r(347)),p=n(r(343)),m=a("lusolve",{"Array, Array | Matrix":function(e,t){e=o(e);var r=s(e),n=g(r.L,r.U,r.p,null,t);return n.valueOf()},"DenseMatrix, Array | Matrix":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},"SparseMatrix, Array | Matrix":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},"SparseMatrix, Array | Matrix, number, number":function(e,t,r,n){var i=u(e,r,n);return g(i.L,i.U,i.p,i.q,t)},"Object, Array | Matrix":function(e,t){return g(e.L,e.U,e.p,e.q,t)}}),h=function(e){if(e&&e.isMatrix===!0)return e;if(i(e))return o(e);throw new TypeError("Invalid Matrix LU decomposition")},g=function(e,t,r,n,i){e=h(e),t=h(t),i=f(e,i,!1),r&&(i._data=c(r,i._data));var a=p(e,i),o=l(t,a);return n&&(o._data=c(n,o._data)),o};return m}var i=Array.isArray;t.name="lusolve",t.factory=n},function(e,t){"use strict";function r(){var e=function(e,t,r){var n,r=t.length,i=[];if(e)for(n=0;r>n;n++)i[e[n]]=t[n];else for(n=0;r>n;n++)i[n]=t[n];return i};return e}t.name="cs_ipvec",t.path="sparse",t.factory=r},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(78)),s=n(r(77)),u=n(r(74)),c=n(r(47)),f=n(r(344)),l=e.DenseMatrix,p=i("usolve",{"SparseMatrix, Array | Matrix":function(e,t){return h(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return m(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=i-1;m>=0;m--){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error("Linear system cannot be solved since matrix is singular");h=o(g,v);for(var d=m-1;d>=0;d--)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=p-1;d>=0;d--){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,b=[],w=[],N=g[d],E=g[d+1];for(n=E-1;n>=N;n--)r=h[n],r===d?x=m[n]:d>r&&(b.push(m[n]),w.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var M=o(y,x);for(n=0,E=w.length;E>n;n++)r=w[n],i[r]=[u(i[r][0],s(M,b[n]))];v[d]=[M]}}return new l({data:v,size:[a,1]})};return p}t.name="usolve",t.factory=n},function(e,t,r){e.exports=[r(85),r(49),r(51),r(349),r(351),r(352),r(310),r(353),r(355),r(357),r(80),r(358),r(359),r(360),r(361),r(364),r(82),r(367),r(368),r(83),r(369),r(371),r(79),r(372),r(374),r(362),r(375),r(74),r(75),r(376),r(377)]},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){if(0===e)return e;var t,r=0>e;return r&&(e=-e),isFinite(e)?(t=Math.exp(Math.log(e)/3),t=(e/(t*t)+2*t)/3):t=e,r?-t:t}function s(r,n){var i=r.toPolar(),a=m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3)));if(n){var s=[a,m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3+2*Math.PI/3))),m(new e.Complex(o(i.r),0),h(new e.Complex(0,i.phi/3-2*Math.PI/3)))];return"array"===t.matrix?s:p(s)}return a}function u(e){if(e.isZero())return e;var t,r=e.isNegative();return r&&(e=e.neg()),e.isFinite()?(t=e.ln().div(3).exp(),t=e.div(t.times(t)).plus(t.times(2)).div(3)):t=1/0,r?t.neg():t}function c(t){if(t.value&&t.value.isComplex){var r=t.clone();return r.value=1,r=r.pow(1/3),r.value=s(t.value),r}var n=l(t.value);n&&(t.value=f(t.value));var i;i=t.value&&t.value.isBigNumber?new e.BigNumber(1).div(3):t.value&&t.value.isFraction?new e.Fraction(1,3):1/3;var r=t.pow(i);return n&&(r.value=f(r.value)),r}var f=n(r(75)),l=n(r(350)),p=n(r(50)),m=a.find(n(r(77)),["Complex,Complex"]),h=a.find(n(r(80)),["Complex"]),g=a("cbrt",{number:o,Complex:s,"Complex, boolean":s,BigNumber:u,Unit:c,"Array | Matrix":function(e){return i(e,g,!0)}});return g.toTex="\\sqrt[3]{${args[0]}}",g}var i=r(19);t.name="cbrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNegative",{number:function(e){return 0>e},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isNegative",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("ceil",{number:Math.ceil,Complex:function(t){return new e.Complex(Math.ceil(t.re),Math.ceil(t.im))},BigNumber:function(e){return e.ceil()},Fraction:function(e){return e.ceil()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\left\\lceil${args[0]}\\right\\rceil",a}var i=r(19);t.name="ceil",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=a.find(n(r(77)),["Complex,Complex"]),s=a("cube",{number:function(e){return e*e*e},Complex:function(e){return o(o(e,e),e)},BigNumber:function(e){return e.times(e).times(e)},Fraction:function(e){return e.mul(e).mul(e)},"Array | Matrix":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(3)}});return s.toTex="\\left(${args[0]}\\right)^3",s}var i=r(19);t.name="cube",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(78)),s=r(29),u=n(r(354)),c=n(r(59)),f=n(r(60)),l=n(r(84)),p=n(r(61)),m=n(r(55)),h=n(r(56)),g=i("dotDivide",{"any, any":o,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=m(e,t,o)}}return r},"Array, Array":function(e,t){return g(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return g(a(e),t)},"Matrix, Array":function(e,t){return g(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,o,!1);break;default:r=h(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,o,!0);break;default:r=h(t,e,o,!0)}return r},"Array, any":function(e,t){return h(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return h(a(t),e,o,!0).valueOf()}});return g.toTex="\\left(${args[0]}"+s.operators.dotDivide+"${args[1]}\\right)",g}t.name="dotDivide",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(47)),s=e.SparseMatrix,u=function(e,t,r,n){var u=e._data,c=e._size,f=e._datatype,l=t._values,p=t._index,m=t._ptr,h=t._size,g=t._datatype;if(c.length!==h.length)throw new i(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+c+") must match Matrix B ("+h+")");if(!l)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var v,d=c[0],y=c[1],x=o,b=0,w=r;"string"==typeof f&&f===g&&(v=f,x=a.find(o,[v,v]),b=a.convert(0,v),w=a.find(r,[v,v]));for(var N=[],E=[],M=[],A=0;y>A;A++){M[A]=E.length;for(var _=m[A],O=m[A+1],T=_;O>T;T++){var C=p[T],S=n?w(l[T],u[C][A]):w(u[C][A],l[T]);x(S,b)||(E.push(C),N.push(S))}}return M[y]=E.length,new s({values:N,index:E,ptr:M,size:[d,y],datatype:v})};return u}var i=r(41);t.name="algorithm02",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(77)),s=r(29),u=n(r(354)),c=n(r(356)),f=n(r(84)),l=n(r(55)),p=n(r(56)),m=i("dotMultiply",{"any, any":o,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,o,!1);break;default:r=l(e,t,o)}}return r},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;default:r=p(e,t,o,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,o,!0);break;default:r=p(t,e,o,!0)}return r},"Array, any":function(e,t){return p(a(e),t,o,!1).valueOf()},"any, Array":function(e,t){return p(a(t),e,o,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+s.operators.dotMultiply+"${args[1]}\\right)",m}t.name="dotMultiply",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(47)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+g+")");var d,y=f[0],x=f[1],b=o,w=0,N=r;"string"==typeof l&&l===v&&(d=l,b=a.find(o,[d,d]),w=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O,T=n&&p?[]:void 0,C=[],S=[],z=new s({values:T,index:C,ptr:S,size:[y,x],datatype:d}),B=T?[]:void 0,k=[];for(M=0;x>M;M++){S[M]=C.length;var I=M+1;if(B)for(_=h[M],O=h[M+1],A=_;O>A;A++)E=m[A],k[E]=I,B[E]=p[A];for(_=c[M],O=c[M+1],A=_;O>A;A++)if(E=u[A],B){var R=k[E]===I?B[E]:w,P=N(n[A],R);b(P,w)||(C.push(E),T.push(P))}else C.push(E)}return S[x]=C.length,z};return u}var i=r(41);t.name="algorithm09",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(50)),o=n(r(79)),s=r(29),u=n(r(59)),c=n(r(60)),f=n(r(84)),l=n(r(61)),p=n(r(55)),m=n(r(56)),h=i("dotPow",{"any, any":o,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,o,!1);break;default:r=p(e,t,o)}}return r},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(a(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(a(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.dotPow+"${args[1]}\\right)",h}t.name="dotPow",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(19);t.name="fix",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("floor",{number:Math.floor,Complex:function(t){return new e.Complex(Math.floor(t.re),Math.floor(t.im))},BigNumber:function(e){return e.floor()},Fraction:function(e){return e.floor()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex="\\left\\lfloor${args[0]}\\right\\rfloor",a}var i=r(19);t.name="floor",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(50)),u=n(r(52)),c=n(r(53)),f=n(r(54)),l=n(r(55)),p=n(r(56)),m=a("gcd",{"number, number":i,"BigNumber, BigNumber":o,"Fraction, Fraction":function(e,t){return e.gcd(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, number | BigNumber":function(e,t){return p(s(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(s(t),e,m,!0).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=m(e,t),i=0;ie?-e:e}var a=r(6).isInteger;t.name="gcd",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){for(var t=0,r=0,n=0;n=0||t.predictable?Math.sqrt(r):o(new e.Complex(r,0))}function o(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("sqrt",{number:a,Complex:o,BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():a(e.toNumber())},"Array | Matrix":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(.5)}});return s.toTex="\\sqrt{${args[0]}}",s}var i=r(19);t.name="sqrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name="isPositive",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(50)),u=n(r(354)),c=n(r(365)),f=n(r(84)),l=n(r(55)),p=n(r(56)),m=a("lcm",{"number, number":i,"BigNumber, BigNumber":o,"Fraction, Fraction":function(t,r){return 0===t.n&&0===r.n?new e.Fraction(0):t.mul(r).abs().div(t.gcd(r))},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, number | BigNumber":function(e,t){return p(s(e),t,m,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(s(t),e,m,!0).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(e,t,r){for(var n=m(e,t),i=0;iO;O++){N[O]=w.length;var T=O+1;if(i(e,O,A,M,_,T,E,x),i(t,O,A,M,_,T,E,x),M)for(var C=N[O];Cl;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h),c?(n[h]=u?s(g[l],f):s(f,g[l]),i[h]=a):n[h]=g[l]):(n[h]=u?s(g[l],n[h]):s(n[h],g[l]),i[h]=a);else for(p=d[t],m=d[t+1],l=p;m>l;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h)):i[h]=a}},function(e,t,r){"use strict";function n(e,t,r,n){function a(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 o=n("log10",{number:function(r){return r>=0||t.predictable?Math.log(r)/Math.LN10:o(new e.Complex(r,0))},Complex:a,BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():a(new e.Complex(r.toNumber(),0))},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\log_{10}\\left(${args[0]}\\right)",o}var i=r(19);t.name="log10",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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 o=n(r(50)),s=r(29),u=n(r(354)),c=n(r(59)),f=n(r(76)),l=n(r(84)),p=n(r(61)),m=n(r(55)),h=n(r(56)),g=i("mod",{"number, number":a,"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,g,!1);break;default:r=u(t,e,g,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},"Array, Array":function(e,t){return g(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return g(o(e),t)},"Matrix, Array":function(e,t){return g(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},"Array, any":function(e,t){return h(o(e),t,g,!1).valueOf()},"any, Array":function(e,t){return h(o(t),e,g,!0).valueOf()}});return g.toTex="\\left(${args[0]}"+s.operators.mod+"${args[1]}\\right)",g}t.name="mod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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=o(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=o(e);(!i||m(t,i))&&(i=t)},!0),i||0}if("fro"===t)return a(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var h=0;return e.forEach(function(e){h=s(u(o(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,o(e));p(n,y)&&(y=n),d[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],b=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,o(e));p(n,b)&&(b=n),x[r]=n},!0),b}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 o=n(r(85)),s=n(r(49)),u=n(r(79)),c=n(r(362)),f=n(r(83)),l=n(r(47)),p=n(r(62)),m=n(r(58)),h=n(r(50)),g=n(r(370)),v=n(r(329)),d=i.find(o,["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 a(h(e),2)},Matrix:function(e){return a(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return y(e)},"Array, number | BigNumber | string":function(e,t){return a(h(e),t)},"Matrix, number | BigNumber | string":function(e,t){return a(e,t)}});return y.toTex={1:"\\left\\|${args[0]}\\right\\|",2:"\\mathrm{${name}}\\left(${args}\\right)"},y}t.name="norm",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(50)),u=n(r(49)),c=o("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: "+a(t)+")");case 2:var n=t[0],o=t[1];if(n===o){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: "+a(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a(t)+")")}},l=function(e){var t=e._values,r=e._index,n=e._ptr,i=e._size,o=i[0],s=i[1];if(o===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: "+a(i)+")")};return c.toTex="\\mathrm{tr}\\left(${args[0]}\\right)",c}var i=r(3).clone,a=r(23).format;t.name="trace",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=e.BigNumber.precision,i=e.BigNumber.constructor({precision:n+2}),a=new e.BigNumber(0),o=new i(1),s=r.isNegative();if(s&&(r=r.neg()),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 a;if(!t.isFinite())return s?a:t;var u=t.abs().pow(o.div(r));return u=t.isNeg()?u.neg():u,new e.BigNumber((s?o.div(u):u).toPrecision(n))}var u=n(r(50)),c=n(r(52)),f=n(r(354)),l=n(r(365)),p=n(r(84)),m=n(r(55)),h=n(r(56)),g=o("nthRoot",{number:function(e){return i(e,2)},"number, number":i,BigNumber:function(t){return s(t,new e.BigNumber(2))},Complex:function(e){return a(e,2)},"Complex, number":a,"BigNumber, BigNumber":s,"Array | Matrix":function(e){return g(e,2)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=l(e,t,g);break;default:r=f(t,e,g,!0)}break;default:switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},"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, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},"Array, number | BigNumber":function(e,t){return g(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return g(e,u(t)).valueOf()}});return g.toTex="\\sqrt[${args[1]}]{${args[0]}}",g}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(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=0>e?-n:n,r?1/n:n}function a(e,t){if(0>t)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!==0)throw new Error("Root must be an integer");for(var r=e.toPolar(),n=[],i=Math.pow(r.r,1/t),a=0;t>a;a++)n.push({r:i,phi:(r.phi+2*Math.PI*a)/t});return n}t.name="nthRoot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var c=n(r(50)),f=n(r(47)),l=n(r(373)),p=n(r(84)),m=n(r(61)),h=n(r(56)),g=o("round",{number:Math.round,"number, number":function(e,t){if(!a(t))throw new TypeError(u);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){if(!r.isInteger())throw new TypeError(u);var n=r.toNumber();return new e.Complex(i(t.re,n),i(t.im,n))},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(u);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(u);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Array | Matrix":function(e){return s(e,g,!0)},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},"number | Complex | BigNumber, Matrix":function(e,t){if(!f(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r}return l(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return h(c(e),t,g,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return h(c(t),e,g,!0).valueOf()}});return g.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:"\\mathrm{${name}}\\left(${args}\\right)"},g}function i(e,t){return parseFloat(o(e,t))}var a=r(6).isInteger,o=r(6).toFixed,s=r(19),u="Number of decimals in function round must be an integer";t.name="round",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(0):0;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||0>e)throw new Error("Parameters in function zeros must be positive integers")})}var f=n(r(50)),l=o("zeros",{"":function(){return"array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(6).isInteger,a=r(39).resize;t.name="zeros",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("sign",{number:i.sign,Complex:function(t){var r=Math.sqrt(t.re*t.re+t.im*t.im);return new e.Complex(t.re/r,t.im/r)},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s)},"Array | Matrix":function(e){return a(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}var i=r(6),a=r(19);t.name="sign",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("square",{number:function(e){return e*e},Complex:function(t){return new e.Complex(t.re*t.re-t.im*t.im,t.re*t.im+t.im*t.re)},BigNumber:function(e){return e.times(e)},Fraction:function(e){return e.mul(e)},"Array | Matrix":function(e){return i(e,a,!0)},Unit:function(e){return e.pow(2)}});return a.toTex="\\left(${args[0]}\\right)^2",a}var i=r(19);t.name="square",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(29),s=a("unaryPlus",{number:function(e){return e},Complex:function(e){return e.clone()},BigNumber:function(e){return e},Fraction:function(e){return e},Unit:function(e){return e.clone()},"Array | Matrix":function(e){return i(e,s,!0)},"boolean | string | null":function(r){return"bignumber"==t.number?new e.BigNumber(+r):+r}});return s.toTex=o.operators.unaryPlus+"\\left(${args[0]}\\right)",s}var i=r(19);t.name="unaryPlus",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,r){var n,a,o,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;)a=Math.floor(e/r),o=e%r,n=s,s=c-a*s,c=n,n=f,f=l-a*f,l=n,e=r,r=o;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,a,o,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();)a=r.div(n).floor(),o=r.mod(n),i=c,c=f.minus(a.times(c)),f=i,i=l,l=p.minus(a.times(l)),p=i,r=n,n=o;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(50)),c=a("xgcd",{"number, number":o,"BigNumber, BigNumber":s});return c.toTex="\\mathrm{${name}}\\left(${args}\\right)",c}var i=r(6).isInteger;t.name="xgcd",t.factory=n},function(e,t,r){e.exports=[r(379),r(383),r(384),r(386),r(388),r(391),r(393)]},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=n(r(354)),f=n(r(365)),l=n(r(84)),p=n(r(55)),m=n(r(56)),h=o("bitAnd",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitAnd");return e&t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitAnd+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(380);t.name="bitAnd",t.factory=n},function(e,t,r){var n=r(381);e.exports=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(NaN);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})}},function(e,t,r){function n(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[o+1]&&(f[o+1]=0),f[o+1]+=f[o]>>1,f[o]&=1)}return f.reverse()}var i=r(382);e.exports=function(e,t,r){var a,o,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){a=n(i(e));for(var f=0;f0;)r(l[--h],p[--g])==v&&(d=d.plus(y)),y=y.times(x);for(;g>0;)r(m,p[--g])==v&&(d=d.plus(y)),y=y.times(x);return s.config({precision:b}),0==v&&(d.s=-d.s),d}},function(e,t){e.exports=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}},function(e,t,r){"use strict";function n(e,t,n,s){var u=r(29),c=s("bitNot",{number:function(e){if(!o(e))throw new Error("Integer expected in function bitNot");return~e},BigNumber:a,"Array | Matrix":function(e){return i(e,c)}});return c.toTex=u.operators.bitNot+"\\left(${args[0]}\\right)",c}var i=r(19),a=r(382),o=r(6).isInteger;t.name="bitNot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=n(r(52)),f=n(r(53)),l=n(r(54)),p=n(r(55)),m=n(r(56)),h=o("bitOr",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitOr");return e|t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitOr+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(385);t.name="bitOr",t.factory=n},function(e,t,r){var n=r(381);e.exports=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(NaN);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}},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=n(r(59)),f=n(r(60)),l=n(r(61)),p=n(r(55)),m=n(r(56)),h=o("bitXor",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function bitXor");return e^t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return h(u(e),t)},"Matrix, Array":function(e,t){return h(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, any":function(e,t){return m(u(e),t,h,!1).valueOf()},"any, Array":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex="\\left(${args[0]}"+s.operators.bitXor+"${args[1]}\\right)",h}var i=r(6).isInteger,a=r(387);t.name="bitXor",t.factory=n},function(e,t,r){var n=r(381),i=r(382);e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function bitXor");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new r(0);var a=new r(-1);return e.eq(a)?i(t):t.eq(a)?i(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e^t}):e.isFinite()||t.isFinite()?new r(e.isNegative()==t.isNegative()?1/0:-(1/0)):a}},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(29),u=n(r(50)),c=n(r(47)),f=n(r(373)),l=n(r(52)),p=n(r(354)),m=n(r(390)),h=n(r(54)),g=n(r(84)),v=n(r(55)),d=n(r(56)),y=o("leftShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function leftShift");return e<k;k++){C[k]=T.length;var I=k+1;for(M=c[k],A=c[k+1],E=M;A>E;E++)_=u[E],B[_]=I,z[_]=n[E],T.push(_);for(M=h[k],A=h[k+1],E=M;A>E;E++)_=m[E],B[_]===I&&(z[_]=N(z[_],p[E]));for(E=C[k];E>t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=m(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case"sparse":r=l(e,t,y,!1);break;default:r=v(e,t,y)}}return r},"Array, Array":function(e,t){return y(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return y(u(e),t)},"Matrix, Array":function(e,t){return y(e,u(t))},"Matrix, number | BigNumber":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case"sparse":r=g(e,t,y,!1);break;default:r=d(e,t,y,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,y,!0);break;default:r=d(t,e,y,!0)}return r}return f(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return y(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex="\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)",y}var i=r(6).isInteger,a=r(392);t.name="rightArithShift",t.factory=n},function(e,t){e.exports=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(NaN):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:NaN)}},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(29),s=n(r(50)),u=n(r(47)),c=n(r(373)),f=n(r(52)),l=n(r(354)),p=n(r(390)),m=n(r(54)),h=n(r(84)),g=n(r(55)),v=n(r(56)),d=a("rightLogShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=p(e,t,d,!1);break;default:r=l(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":r=f(e,t,d,!1);break;default:r=g(e,t,d)}}return r},"Array, Array":function(e,t){return d(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return d(s(e),t)},"Matrix, Array":function(e,t){return d(e,s(t))},"Matrix, number | BigNumber":function(e,t){if(!u(t,0)){var r;switch(e.storage()){case"sparse":r=h(e,t,d,!1);break;default:r=v(e,t,d,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!u(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,d,!0);break;default:r=v(t,e,d,!0)}return r}return c(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return d(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return d(e,s(t)).valueOf()}});return d.toTex="\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)",d}var i=r(6).isInteger;t.name="rightLogShift",t.factory=n},function(e,t,r){e.exports=[r(395),r(401),r(396),r(402)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(49)),o=n(r(396)),s=n(r(350)),u=n(r(400)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;e>=r;r++)t=a(t,o(e,r));return t}});return c.toTex="\\mathrm{B}_{${args[0]}}",c}t.name="bellNumbers",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(49)),o=n(r(74)),s=n(r(83)),u=n(r(310)),c=n(r(79)),f=n(r(397)),l=n(r(399)),p=n(r(350)),m=n(r(400)),h=n(r(62)),g=i("stirlingS2",{"number | BigNumber, number | BigNumber":function(e,t){if(!m(e)||p(e)||!m(t)||p(t))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(h(t,e))throw new TypeError("k must be less than or equal to n in function stirlingS2");for(var r=f(t),n=0,i=0;t>=i;i++){var g=c(-1,o(t,i)),v=l(t,i),d=c(i,e);n=a(n,s(s(v,d),g))}return u(n,r)}});return g.toTex="\\mathrm{S}\\left(${args[0]},${args[1]}\\right)",g}t.name="stirlingS2",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(398)),s=r(29),u=a("factorial",{number:function(e){if(0>e)throw new Error("Value must be non-negative");return o(e+1)},BigNumber:function(e){if(e.isNegative())throw new Error("Value must be non-negative");return o(e.plus(1))},"Array | Matrix":function(e){return i(e,u)}});return u.toTex="\\left(${args[0]}\\right)"+s.operators.factorial,u}var i=r(19);r(93);t.name="factorial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(r){if(r.isZero())return new e.BigNumber(1);for(var n=t.precision+(0|Math.log(r.toNumber())),i=e.BigNumber.constructor({precision:n}),a=new i(r),o=r.toNumber()-1;o>1;)a=a.times(o),o--;return new e.BigNumber(a.toPrecision(e.BigNumber.precision))}var f=n(r(83)),l=n(r(79)),p=u("gamma",{number:function(e){var t,r;if(a(e)){if(0>=e)return isFinite(e)?1/0:NaN;if(e>171)return 1/0;for(var n=e-2,i=e-1;n>1;)i*=n,n--;return 0==i&&(i=1),i}if(.5>e)return Math.PI/(Math.sin(Math.PI*e)*p(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=s[0];for(var m=1;me)throw new TypeError("Positive integer value expected in function combinations");if(!a(t)||0>t)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,a,o,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),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);return a}});return o.toTex="\\binom{${args[0]}}{${args[1]}}",o}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name="combinations",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("isInteger",{number:a.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return i(e,o)}});return o}var i=r(19),a=r(6);t.name="isInteger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(399)),o=n(r(51)),s=n(r(363)),u=n(r(400)),c=n(r(62)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex="\\mathrm{${name}}\\left(${args}\\right)",f}t.name="composition",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(49)),o=n(r(310)),s=n(r(83)),u=n(r(399)),c=n(r(350)),f=n(r(400)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex="\\mathrm{C}_{${args[0]}}",l}t.name="catalan",t.factory=n},function(e,t,r){e.exports=[r(404),r(405),r(406),r(407)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("arg",{number:function(e){return Math.atan2(0,e)},Complex:function(e){return Math.atan2(e.im,e.re)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\arg\\left(${args[0]}\\right)",a}var i=r(19);t.name="arg",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(t){return new e.Complex(t.re,-t.im)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\left(${args[0]}\\right)^*",a}var i=r(19);t.name="conj",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\Im\\left\\lbrace${args[0]}\\right\\rbrace",a}var i=r(19);t.name="im",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return i(e,a)}});return a.toTex="\\Re\\left\\lbrace${args[0]}\\right\\rbrace",a}var i=r(19);t.name="re",t.factory=n},function(e,t,r){e.exports=[r(409),r(410)]},function(e,t,r){"use strict";function n(e,t,n,f){var l=n(r(50)),p=f("intersect",{"Array, Array, Array":function(e,t,r){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");if(!o(r))throw new TypeError("Array with 4 numbers expected as third argument");return c(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],r[3])},"Array, Array, Array, Array":function(e,t,r,n){if(2===e.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");if(!i(r))throw new TypeError("Array with 2 numbers expected for third argument");if(!i(n))throw new TypeError("Array with 2 numbers expected for fourth argument");return s(e[0],e[1],t[0],t[1],r[0],r[1],n[0],n[1])}if(3===e.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");if(!a(r))throw new TypeError("Array with 3 numbers expected for third argument");if(!a(n))throw new TypeError("Array with 3 numbers expected for fourth argument");return u(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],n[0],n[1],n[2])}throw new TypeError("Arrays with two or thee dimensional points expected")},"Matrix, Matrix, Matrix":function(e,t,r){return l(p(e.valueOf(),t.valueOf(),r.valueOf()))},"Matrix, Matrix, Matrix, Matrix":function(e,t,r,n){return l(p(e.valueOf(),t.valueOf(),r.valueOf(),n.valueOf()))}});return p}function i(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}function a(e){return 3===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}function o(e){return 4===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]}function s(e,t,r,n,i,a,o,s){var u=(e-i)*(o-i)+(t-a)*(s-a),c=(o-i)*(r-e)+(s-a)*(n-t),f=(e-i)*(r-e)+(t-a)*(n-t),l=(o-i)*(o-i)+(s-a)*(s-a),p=(r-e)*(r-e)+(n-t)*(n-t),m=(u*c-f*l)/(p*l-c*c),h=(u+m*c)/l,g=e+m*(r-e),v=t+m*(n-t),d=i+h*(o-i),y=a+h*(s-a);return g===d&&v===y?[g,v]:null}function u(e,t,r,n,i,a,o,s,u,c,f,l){var p=(e-o)*(c-o)+(t-s)*(f-s)+(r-u)*(l-u),m=(c-o)*(n-e)+(f-s)*(i-t)+(l-u)*(a-r),h=(e-o)*(n-e)+(t-s)*(i-t)+(r-u)*(a-r),g=(c-o)*(c-o)+(f-s)*(f-s)+(l-u)*(l-u),v=(n-e)*(n-e)+(i-t)*(i-t)+(a-r)*(a-r),d=(p*m-h*g)/(v*g-m*m),y=(p+d*m)/g,x=e+d*(n-e),b=t+d*(i-t),w=r+d*(a-r),N=o+y*(c-o),E=s+y*(f-s),M=u+y*(l-u);return x===N&&b===E&&w===M?[x,b,w]:null}function c(e,t,r,n,i,a,o,s,u,c){var f=(c-e*o-t*s-r*u)/(n*o+i*s+a*u-e-t-r),l=e+f*(n-e),p=t+f*(i-t),m=r+f*(a-r);return[l,p,m]}t.name="intersect",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){var h=(n(r(50)),s("distance",{"Array, Array, Array":function(e,t,r){if(2==e.length&&2==t.length&&2==r.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");if(!i(r))throw new TypeError("Array with 2 numbers expected for third argument");var n=(r[1]-r[0])/(t[1]-t[0]),a=n*n*t[0],o=-1*(n*t[0]),s=e[1];return c(e[0],e[1],a,o,s)}throw new TypeError("Invalid Arguments: Try again")},"Object, Object, Object":function(e,t,r){if(2==Object.keys(e).length&&2==Object.keys(t).length&&2==Object.keys(r).length){if(!i(e))throw new TypeError("Values of pointX and pointY should be numbers");if(!i(t))throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers");if(!i(r))throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("lineOnePtX")&&t.hasOwnProperty("lineOnePtY")&&r.hasOwnProperty("lineTwoPtX")&&r.hasOwnProperty("lineTwoPtY")){var n=(r.lineTwoPtY-r.lineTwoPtX)/(t.lineOnePtY-t.lineOnePtX),a=n*n*t.lineOnePtX,o=-1*(n*t.lineOnePtX),s=e.pointX;return c(e.pointX,e.pointY,a,o,s)}throw new TypeError("Key names do not match")}throw new TypeError("Invalid Arguments: Try again")},"Array, Array":function(e,t){if(2==e.length&&3==t.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");return c(e[0],e[1],t[0],t[1],t[2])}if(3==e.length&&6==t.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!o(t))throw new TypeError("Array with 6 numbers expected for second argument");return f(e[0],e[1],e[2],t[0],t[1],t[2],t[3],t[4],t[5])}if(2==e.length&&2==t.length){if(!i(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!i(t))throw new TypeError("Array with 2 numbers expected for second argument");return l(e[0],e[1],t[0],t[1])}if(3==e.length&&3==t.length){if(!a(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!a(t))throw new TypeError("Array with 3 numbers expected for second argument");return p(e[0],e[1],e[2],t[0],t[1],t[2])}throw new TypeError("Invalid Arguments: Try again")},"Object, Object":function(e,t){if(2==Object.keys(e).length&&3==Object.keys(t).length){if(!i(e))throw new TypeError("Values of pointX and pointY should be numbers");if(!a(t))throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("xCoeffLine")&&t.hasOwnProperty("yCoeffLine")&&t.hasOwnProperty("yCoeffLine"))return c(e.pointX,e.pointY,t.xCoeffLine,t.yCoeffLine,t.constant);throw new TypeError("Key names do not match")}if(3==Object.keys(e).length&&6==Object.keys(t).length){if(!a(e))throw new TypeError("Values of pointX, pointY and pointZ should be numbers");if(!o(t))throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers");if(e.hasOwnProperty("pointX")&&e.hasOwnProperty("pointY")&&t.hasOwnProperty("x0")&&t.hasOwnProperty("y0")&&t.hasOwnProperty("z0")&&t.hasOwnProperty("a")&&t.hasOwnProperty("b")&&t.hasOwnProperty("c"))return f(e.pointX,e.pointY,e.pointZ,t.x0,t.y0,t.z0,t.a,t.b,t.c);throw new TypeError("Key names do not match")}if(2==Object.keys(e).length&&2==Object.keys(t).length){if(!i(e))throw new TypeError("Values of pointOneX and pointOneY should be numbers");if(!i(t))throw new TypeError("Values of pointTwoX and pointTwoY should be numbers");if(e.hasOwnProperty("pointOneX")&&e.hasOwnProperty("pointOneY")&&t.hasOwnProperty("pointTwoX")&&t.hasOwnProperty("pointTwoY"))return l(e.pointOneX,e.pointOneY,t.pointTwoX,t.pointTwoY);throw new TypeError("Key names do not match")}if(3==Object.keys(e).length&&3==Object.keys(t).length){if(!a(e))throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers");if(!a(t))throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers");if(e.hasOwnProperty("pointOneX")&&e.hasOwnProperty("pointOneY")&&e.hasOwnProperty("pointOneZ")&&t.hasOwnProperty("pointTwoX")&&t.hasOwnProperty("pointTwoY")&&t.hasOwnProperty("pointTwoZ"))return p(e.pointOneX,e.pointOneY,e.pointOneZ,t.pointTwoX,t.pointTwoY,t.pointTwoZ);throw new TypeError("Key names do not match")}throw new TypeError("Invalid Arguments: Try again")},Array:function(e){if(!u(e))throw new TypeError("Incorrect array format entered for pairwise distance calculation");return m(e)}}));return h}function i(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]}function a(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}function o(e){return e.constructor!==Array&&(e=s(e)),"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]&&"number"==typeof e[4]&&"number"==typeof e[5]}function s(e){for(var t=Object.keys(e),r=[],n=0;n0?t:0,a=0>t?-t:0;switch(r.length){case 1:return c(e,t,n,r[0],a,i);case 2:return f(e,t,n,r,a,i)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function c(t,r,n,i,a,o){var s=[i+a,i+o],u=e.Matrix.storage(n||"dense"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function f(e,t,r,n,i,o){if(e&&e.isMatrix===!0){var s=e.diagonal(t);return null!==r?r!==s.storage()?l(s,r):s:s.valueOf()}for(var u=Math.min(n[0]-i,n[1]-o),c=[],f=0;u>f;f++)c[f]=a(e[f+i][f+o]);return null!==r?l(c):c}var l=n(r(50)),p=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)}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(39),a=r(3).clone,o=r(6).isInteger;t.name="diag",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){var r=i(e),n=i(t),a=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==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var o=0,c=0;a>c;c++)o=s(o,u(e[c],t[c]));return o}var s=n(r(49)),u=n(r(83)),c=a("dot",{"Matrix, Matrix":function(e,t){return o(e.toArray(),t.toArray())},"Matrix, Array":function(e,t){return o(e.toArray(),t)},"Array, Matrix":function(e,t){return o(e,t.toArray())},"Array, Array":o});return c.toTex="\\left(${args[0]}\\cdot${args[1]}\\right)",c}var i=r(39).size;t.name="dot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(50)),u=o("flatten",{Array:function(e){return a(i(e))},Matrix:function(e){var t=a(i(e.toArray()));return s(t)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(3).clone,a=r(39).flatten;t.name="flatten",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(1):1;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||0>e)throw new Error("Parameters in function ones must be positive integers")})}var f=n(r(50)),l=o("ones",{"":function(){return"array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(6).isInteger,a=r(39).resize;t.name="ones",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){function l(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new i(t.length,1);var n=t[0];if("number"!=typeof n||!o(n))throw new TypeError("Invalid size, must contain positive integers (size: "+s(t)+")");if(e.length>n)return e.substring(0,n);if(e.lengthu;u++)a+=r;return a}return e}var p=n(r(50)),m=function(e,r,n){if(2!=arguments.length&&3!=arguments.length)throw new a("resize",arguments.length,2,3);if(r&&r.isMatrix===!0&&(r=r.valueOf()),r.length&&r[0]&&r[0].isBigNumber===!0&&(r=r.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e})),e&&e.isMatrix===!0)return e.resize(r,n,!0);if("string"==typeof e)return l(e,r,n);var i=Array.isArray(e)?!1:"array"!==t.matrix;if(0==r.length){for(;Array.isArray(e);)e=e[0];return u(e)}Array.isArray(e)||(e=[e]),e=u(e);var o=c.resize(e,r,n);return i?p(o):o};return m.toTex="\\mathrm{${name}}\\left(${args}\\right)",m}var i=r(41),a=r(11),o=r(6).isInteger,s=r(23).format,u=r(3).clone,c=r(39);t.name="resize",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=a("size",{Matrix:function(e){return o(e.size())},Array:i.size,string:function(e){return"array"===t.matrix?[e.length]:o([e.length])},"number | Complex | BigNumber | Unit | boolean | null":function(e){return"array"===t.matrix?[]:o([])}});return s.toTex="\\mathrm{${name}}\\left(${args}\\right)",s}var i=r(39);t.name="size",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(50)),u=o("squeeze",{Array:function(e){return a.squeeze(i.clone(e))},Matrix:function(e){var t=a.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(3),a=r(39);t.name="squeeze",t.factory=n},function(e,t,r){e.exports=[r(399),r(397),r(398),r(427),r(429),r(430),r(431),r(433),r(434)]},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");var i=u(e);if(0===i)throw new Error("Sum of elements in first object must be non zero");var a=u(t);if(0===a)throw new Error("Sum of elements in second object must be non zero");var o=s(e,u(e)),m=s(t,u(t)),h=u(c(o,l(f(o,m))));return p(h)?h:Number.NaN}var o=n(r(50)),s=n(r(310)),u=n(r(428)),c=n(r(83)),f=n(r(353)),l=n(r(82)),p=n(r(87)),m=i("kldivergence",{"Array, Array":function(e,t){return a(o(e),o(t))},"Matrix, Array":function(e,t){return a(e,o(t))},"Array, Matrix":function(e,t){return a(o(e),t)},"Matrix, Matrix":function(e,t){return a(e,t)}});return m}t.name="kldivergence",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(r){var n=void 0;if(i(r,function(e){n=void 0===n?e:s(n,e)}),void 0===n)switch(t.number){case"number":return 0;case"bignumber":return new e.BigNumber(0);case"fraction":return new e.Fraction(0);default:return 0}return n}var s=n(r(51)),u=a("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)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(306);t.name="sum",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(49)),s=n(r(83)),u=n(r(310)),c=n(r(397)),f=n(r(400)),l=n(r(363));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return i(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}var i=r(306);t.name="multinomial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(397)),u=o("permutations",{"number | BigNumber":s,"number, number":function(e,t){var r,n;if(!a(e)||0>e)throw new TypeError("Positive integer value expected in function permutations");if(!a(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,a;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),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name="permutations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").pickRandom;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="pickRandom",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e){if(!f.hasOwnProperty(e))throw new Error("Unknown distribution "+e);var t=Array.prototype.slice.call(arguments,1),r=f[e].apply(this,t);return function(e){var t={random:function(e,t,n){var s,c,f;if(arguments.length>3)throw new i("random",arguments.length,0,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=n),void 0===f&&(f=1),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,r);return s&&s.isMatrix===!0?u(l):l}return r(c,f)},randomInt:function(e,t,r){var s,c,f;if(arguments.length>3||arguments.length<1)throw new i("randomInt",arguments.length,1,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=r),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,n);return s&&s.isMatrix===!0?u(l):l}return n(c,f)},pickRandom:function(e){if(1!==arguments.length)throw new i("pickRandom",arguments.length,1);if(e&&e.isMatrix===!0)e=e.valueOf();else if(!Array.isArray(e))throw new TypeError("Unsupported type of value in function pickRandom");if(c.size(e).length>1)throw new Error("Only one dimensional vectors supported");return e[Math.floor(Math.random()*e.length)]}},r=function(t,r){return t+e()*(r-t)},n=function(t,r){return Math.floor(t+e()*(r-t))},o=function(e,t,r,n){var i,a,s=[];if(e=e.slice(0),e.length>1)for(a=0,i=e.shift();i>a;a++)s.push(o(e,t,r,n));else for(a=0,i=e.shift();i>a;a++)s.push(n(t,r));return s};return t}(r)}var u=n(r(50)),c=r(39),f={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 s.toTex="\\mathrm{${name}}\\left(${args}\\right)",s}var i=r(11),a=r(304);t.name="distribution",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").random;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="random",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(432)),o=a("uniform").randomInt;return o.toTex="\\mathrm{${name}}\\left(${args}\\right)",o}t.name="randomInt",t.factory=n},function(e,t,r){e.exports=[r(436),r(437),r(86),r(62),r(336),r(58),r(438),r(439)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(76)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=a("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(t,r){return new e.BigNumber(t.cmp(r))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return p(e.value,t.value)},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,p);break;default:r=s(t,e,p,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,p,!1);break;default:r=f(e,t,p)}}return r},"Array, Array":function(e,t){return p(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return p(o(e),t)},"Matrix, Array":function(e,t){return p(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,p,!1);break;default:r=l(e,t,p,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,p,!0);break;default:r=l(t,e,p,!0)}return r},"Array, any":function(e,t){return l(o(e),t,p,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,p,!0).valueOf()}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(6).nearlyEqual;t.name="compare",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(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(!a(e[n],t[n]))return!1;return!0}return!1}return Array.isArray(t)?!1:o(e,t)}var o=n(r(86)),s=i("deepEqual",{"any, any":function(e,t){return a(e.valueOf(),t.valueOf())}});return s.toTex="\\mathrm{${name}}\\left(${args}\\right)", +s}t.name="deepEqual",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=a("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)},"Fraction, Fraction":function(e,t){return 1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return t>=e},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},"Array, any":function(e,t){return l(o(e),t,m,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex="\\left(${args[0]}"+p.operators.smallerEq+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="smallerEq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(59)),u=n(r(60)),c=n(r(61)),f=n(r(55)),l=n(r(56)),p=r(29),m=a("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:h(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,h);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,h,!1);break;default:r=f(e,t,h)}}return r},"Array, Array":function(e,t){return m(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return m(o(e),t)},"Matrix, Array":function(e,t){return m(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=l(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=c(t,e,h,!0);break;default:r=l(t,e,h,!0)}return r},"Array, any":function(e,t){return l(o(e),t,h,!1).valueOf()},"any, Array":function(e,t){return l(o(t),e,h,!0).valueOf()}}),h=a("_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)},"Fraction, Fraction":function(e,t){return 0!==e.compare(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,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e!==t}});return m.toTex="\\left(${args[0]}"+p.operators.unequal+"${args[1]}\\right)",m}var i=r(6).nearlyEqual;t.name="unequal",t.factory=n},function(e,t,r){e.exports=[r(305),r(309),r(441),r(314),r(443),r(444),r(445),r(446),r(428),r(447)]},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error("Cannot calculate median of an empty array");if(t%2==0){for(var r=t/2-1,n=f(e,r+1),a=e[r],o=0;r>o;++o)c(e[o],a)>0&&(a=e[o]);return m(a,n)}var s=f(e,(t-1)/2);return p(s)}var s=n(r(51)),u=n(r(78)),c=n(r(436)),f=n(r(442)),l=a("median",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("median(A, dim) is not yet supported")},"...":function(){return o(Array.prototype.slice.call(arguments))}}),p=a({"number | BigNumber | Unit":function(e){return e}}),m=a({"number | BigNumber | Unit, number | BigNumber | Unit":function(e,t){return u(s(e,t),2)}});return l.toTex="\\mathrm{${name}}\\left(${args}\\right)",l}var i=r(39).flatten;t.name="median",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t){return-c(e,t)}function s(e,t,r){if(!i(t)||0>t)throw new Error("k must be a non-negative integer");if(e&&e.isMatrix){var n=e.size();if(n.length>1)throw new Error("Only one dimensional matrices supported");return u(e.valueOf(),t,r)}return Array.isArray(e)?u(e,t,r):void 0}function u(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;i>n;){for(var a=n,o=i,s=e[Math.floor(Math.random()*(i-n+1))+n];o>a;)if(r(e[a],s)>=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,a>=t?i=a:n=a+1}return e[t]}var c=n(r(436));return a("partitionSelect",{"Array | Matrix, number":function(e,t){return s(e,t,c)},"Array | Matrix, number, string":function(e,t,r){if("asc"===r)return s(e,t,c);if("desc"===r)return s(e,t,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s})}var i=r(6).isInteger;t.name="partitionSelect",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error("Cannot calculate mode of an empty array");var r={},n=[],a=0;for(var o in e)e[o]in r||(r[e[o]]=0),r[e[o]]++,r[e[o]]==a?n.push(e[o]):r[e[o]]>a&&(a=r[e[o]],n=[e[o]]);return n}var o=n("mode",{"Array | Matrix":a,"...":function(){return a(Array.prototype.slice.call(arguments))}});return o}var i=r(39).flatten;t.name="mode",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){var t=void 0;if(i(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 s=n(r(77)),u=a("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)}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}var i=r(306);t.name="prod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(t,r,n){var o,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(s(t)){if(n=n||!1,"boolean"==typeof n){if(u=t.valueOf(),a(r)){if(0>r)throw new Error("N/prob must be non-negative");if(1>=r)return f(u,r,n);if(r>1){if(!i(r))throw new Error("N must be a positive integer");var l=r+1;o=new Array(r);for(var p=0;r>p;)o[p]=f(u,++p/l,n);return o}}if(r&&r.isBigNumber){if(r.isNegative())throw new Error("N/prob must be non-negative");if(c=r.constructor.ONE,r.lte(c))return f(u,r,n);if(r.gt(c)){if(!r.isInteger())throw new Error("N must be a positive integer");var m=r.toNumber();if(m>4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var l=new e.BigNumber(m+1);o=new Array(m);for(var p=0;m>p;)o[p]=f(u,new e.BigNumber(++p).div(l),n);return o}}if(Array.isArray(r)){o=new Array(r.length);for(var p=0;ph||h>1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!h||!h.isBigNumber)throw new TypeError("Unexpected type of argument in function quantileSeq");if(c=h.constructor.ONE,h.isNegative()||h.gt(c))throw new Error("Probability must be between 0 and 1, inclusive")}o[p]=f(u,h,n)}return o}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}function f(e,t,r){var n=o(e),i=n.length;if(0===i)throw new Error("Cannot calculate quantile of an empty sequence");if(a(t)){var s=t*(i-1),u=s%1;if(0===u){var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=Math.floor(s);if(r)f=n[d],v=n[d+1];else{v=m(n,d+1),f=n[d];for(var y=0;d>y;++y)h(n[y],f)>0&&(f=n[y])}return g(f),g(v),l(p(f,1-u),p(v,u))}var s=t.times(i-1);if(s.isInteger()){s=s.toNumber();var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=s.floor(),u=s.minus(d),x=d.toNumber();if(r)f=n[x],v=n[x+1];else{v=m(n,x+1),f=n[x];for(var y=0;x>y;++y)h(n[y],f)>0&&(f=n[y])}g(f),g(v);var b=u.constructor.ONE;return l(p(f,b.minus(u)),p(v,u))}var l=n(r(49)),p=n(r(83)),m=n(r(442)),h=n(r(436)),g=u({"number | BigNumber | Unit":function(e){return e}});return c}var i=r(6).isInteger,a=r(6).isNumber,o=r(39).flatten,s=r(304);t.name="quantileSeq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return o(s.apply(null,arguments))}var o=n(r(362)),s=n(r(447)),u=i("std",{"Array | Matrix":a,"Array | Matrix, string":a,"...":function(){return a(Array.prototype.slice.call(arguments))}});return u.toTex="\\mathrm{${name}}\\left(${args}\\right)",u}t.name="std",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(a(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,a(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 s=n&&n.isBigNumber===!0?new e.BigNumber(0):0;return 1==i?s:l(n,i-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var u=n(r(51)),c=n(r(74)),f=n(r(77)),l=n(r(78)),p=o("variance",{"Array | Matrix":function(e){return s(e,i)},"Array | Matrix, string":s,"...":function(){return s(arguments,i)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p}var i="unbiased",a=r(306);t.name="var",t.factory=n},function(e,t,r){e.exports=[r(449),r(459),r(461),r(463),r(466),r(468),r(470),r(471),r(467),r(469),r(462),r(472),r(465),r(474),r(475),r(478),r(480),r(482),r(483),r(484),r(485),r(486),r(477),r(487),r(488)]},function(e,t,r){"use strict";function n(e,t,n,o){function s(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),a=c(i);return new e.Complex(1.5707963267948966-a.im,a.re)}var u=o.find(n(r(362)),["Complex"]),c=o.find(n(r(82)),["Complex"]),f=o("acos",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.acos(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\cos^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(450);t.name="acos",t.factory=n},function(e,t,r){var n=r(93).pi,i=r(451);e.exports=function(e,t,r){if(r){if(e.abs().lt(t.ONE))throw new Error("asec() only has non-complex values for |x| >= 1.")}else if(e.abs().gt(t.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return n(t);var a=t.precision;t.config({precision:a+4}),r&&(e=t.ONE.div(e));var o=i(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE)),t).times(2);return t.config({precision:a}),o.toDP(a-1)}},function(e,t,r){var n=r(93),i=r(452),a=r(94);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);if(!r&&e.isZero()||r&&!e.isFinite())return new t(0);var o=t.precision;if(!r&&!e.isFinite()||r&&e.isZero()){var s=n.pi(t.constructor({precision:o+2})).div(2).toDP(o-1);return s.constructor=t,s.s=e.s,s}t.config({precision:o+4}),r&&(e=t.ONE.div(e));var u=e.abs();if(u.lte(.875)){var c=a(e);return c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}if(u.gte(1.143)){var s=n.pi(t.constructor({precision:o+4})).div(2),c=s.minus(a(t.ONE.div(u)));return c.s=e.s,c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:o}),i(e,t)}},function(e,t,r){var n=r(93).pi,i=r(453),a=r(454);e.exports=function o(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=e.abs();if(r){if(u.lt(t.ONE))throw new Error("acsc() only has non-complex values for |x| >= 1.");t.config({precision:s+2}),e=t.ONE.div(e),t.config({precision:s}),u=e.abs()}else if(u.gt(t.ONE))throw new Error("asin() only has non-complex values for |x| <= 1.");if(u.gt(.8)){t.config({precision:s+4});var c=e.s,f=n(t.constructor({precision:s+4})).div(2);return e=f.minus(o(t.ONE.minus(e.times(e)).sqrt(),t)),e.s=c,e.constructor=t,t.config({precision:s}),e.toDP(s-1)}var l=u.gt(.58);l&&(t.config({precision:s+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:s}));var p=60>=s||e.dp()<=Math.log(s)&&e.lt(.05)?i(e,s):a(e,t);return l?p.times(2):p}},function(e,t){e.exports=function(e,t){var r=e.constructor;r.config({precision:t+Math.log(t)|4});for(var n=new r(1),i=e,a=NaN,o=e.times(e),s=e,u=new r(n),c=new r(n),f=new r(n),l=3;!i.equals(a);l+=2)s=s.times(o),u=u.times(f),c=c.times(f.plus(n)),a=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(e,t,r){var n=r(455),i=r(458);e.exports=function(e,t){var r=t.precision,a=-(r+4),o=r+8-e.e,s=25-e.e,u=Math.max(1.442695*Math.log(r+2)|5,5);t.config({precision:s});var c=0,f=new t(Math.asin(e.toNumber())+"");do{var l=n(f,t,1,!1),p=i(l);l.isZero()||(l.s=f.s);var m=l.minus(e).div(p);f=f.minus(m),s=Math.min(2*s,o),t.config({precision:s})}while(2*m.e>=a&&!m.isZero()&&++c<=u);if(c==u)throw new Error("asin() failed to converge to the requested accuracy.Try with a higher precision.");return t.config({precision:r}),f.toDP(r-1)}},function(e,t,r){var n=r(456),i=r(457);e.exports=function(e,t,r,a){if(e.isNaN()||!e.isFinite())return new t(NaN);var o=t.precision,s=new t(e),u=s.isNegative();u&&(s.s=-s.s);var c=o+(0|Math.log(o))+3;if(t.config({precision:c}),s=n(s,t.constructor({precision:c}),r),s[0].constructor=t,s[1])return s=s[0],a&&s.isZero()&&(s=new t(1/0)),t.config({precision:o}),s;var f;if(s=s[0],r){f=i(s.div(3125),r),t.config({precision:Math.min(c,o+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))}u&&(f.s=-f.s)}else{var y,x;s.abs().lt(t.ONE)?(y=64,x=3):(y=256,x=4),f=i(s.div(y),r),t.config({precision:Math.min(c,o+8)});for(var b=new t(8);x>0;--x){var g=f.times(f),w=g.times(g);f=b.times(w.minus(g)).plus(t.ONE)}}return a&&(f=f.e<=-o?new t(1/0):t.ONE.div(f)),t.config({precision:o}),f.toDP(o-1)}},function(e,t,r){var n=r(93);e.exports=function(e,t,r){var i=n.pi(t.constructor({precision:t.precision+2})),a=n.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];if(e.dp()>0&&e.div(i.toDP(e.dp())).toNumber()%2==0)return[new t(1^r),!0];var o=e.mod(a);return e.dp()>0&&o.toDP(e.dp(),1).isZero()?[new t(1^r),!0]:(o.gt(i)&&(r?(o=o.minus(i),o.s=-o.s):o=a.minus(o)),o.constructor=e.constructor,[o,!1])}},function(e,t){e.exports=function(e,t){for(var r=e.constructor.ONE,n=e,i=NaN,a=e.times(e),o=t?n:n=r,s=r,u=!0,c=t;!n.equals(i);c+=2)o=o.times(a),s=s.times(c+1).times(c+2),i=n,u=!u,n=u?n.plus(o.div(s)):n.minus(o.div(s));return n}},function(e,t){e.exports=function(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)}},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(449)),["Complex"]),c=o("acosh",{number:function(r){return r>=1||t.predictable?Math.log(Math.sqrt(r*r-1)+r):-1>=r?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!1)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cosh^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(460);t.name="acosh",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);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 a=new t(e);a.constructor=t,n&&(a=t.ONE.div(a));var o=r?a.times(a).plus(t.ONE):a.times(a).minus(t.ONE),s=a.plus(o.sqrt()).ln();return t.config({precision:i}),new t(s.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,n,s){var u=s.find(n(r(462)),["Complex"]),c=s("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 a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cot^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(451),o=1.5707963267948966;t.name="acot",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(82)),["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),a=new e.Complex((1-n*n-r*r)/i,-2*r/i),o=s(a);return new e.Complex(-.5*o.im,.5*o.re)},BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,u,!0)}});return u.toTex="\\tan^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(451);t.name="atan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(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),c(t)}var c=s.find(n(r(465)),["Complex"]),f=s("acoth",{number:function(r){return r>=1||-1>=r||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:0!==r?u(new e.Complex(r,0)):new e.Complex(0,o)},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\coth^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(464),o=1.5707963267948966;t.name="acoth",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);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 a=new t(e);a.constructor=t,r&&(a=t.ONE.div(a));var o=t.ONE.plus(a).div(t.ONE.minus(a)).ln().div(2);return t.config({precision:i}),new t(o.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,r,n){function o(t){var r=t.re>1&&0==t.im,n=1-t.re,i=1+t.re,a=n*n+t.im*t.im;t=0!=a?new e.Complex((i*n-t.im*t.im)/a,(t.im*n+i*t.im)/a):new e.Complex(-1!=t.re?t.re/0:0,0!=t.im?t.im/0:0);var o=t.re;return t.re=Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/2,t.im=Math.atan2(t.im,o)/2,r&&(t.im=-t.im),t}var s=n("atanh",{number:function(r){return 1>=r&&r>=-1||t.predictable?Math.log((1+r)/(1-r))/2:o(new e.Complex(r,0))},Complex:o,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,s,!0)}});return s.toTex="\\tanh^{-1}\\left(${args[0]}\\right)",s}var i=r(19),a=r(464);t.name="atanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(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 c=s.find(n(r(467)),["Complex"]),f=s("acsc",{number:function(r){return-1>=r||r>=1||t.predictable?Math.asin(1/r):u(new e.Complex(r,0))},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,f)}});return f.toTex="\\csc^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(452),o=1.5707963267948966;t.name="acsc",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t){var r=t.re,n=t.im,i=new e.Complex(n*n-r*r+1,-2*r*n),a=u(i),o=new e.Complex(a.re-n,a.im+r),s=c(o);return new e.Complex(s.im,-s.re)}var u=o.find(n(r(362)),["Complex"]),c=o.find(n(r(82)),["Complex"]),f=o("asin",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.asin(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},"Array | Matrix":function(e){return i(e,f,!0)}});return f.toTex="\\sin^{-1}\\left(${args[0]}\\right)",f}var i=r(19),a=r(452);t.name="asin",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(469)),["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 a(t,e.BigNumber,!0,!0)},"Array | Matrix":function(e){return i(e,u)}});return u.toTex="\\mathrm{csch}^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(460);t.name="acsch",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(467)),["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 a(t,e.BigNumber,!0,!1)},"Array | Matrix":function(e){return i(e,u,!0)}});return u.toTex="\\sinh^{-1}\\left(${args[0]}\\right)",u}var i=r(19),a=r(460);t.name="asinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(449)),["Complex"]),c=o("asec",{number:function(r){return-1>=r||r>=1||t.predictable?Math.acos(1/r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\sec^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(450);t.name="asec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(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 u=o.find(n(r(459)),["Complex"]),c=o("asech",{number:function(r){if(1>=r&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!0)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\mathrm{sech}^{-1}\\left(${args[0]}\\right)",c}var i=r(19),a=r(460);t.name="asech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(50)),s=n(r(354)),u=n(r(59)),c=n(r(356)),f=n(r(84)),l=n(r(61)),p=n(r(55)),m=n(r(56)),h=a("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return i(t,r,e.BigNumber)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=p(e,t,h)}}return r},"Array, Array":function(e,t){return h(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return h(o(e),t)},"Matrix, Array":function(e,t){return h(e,o(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},"Array, number | BigNumber":function(e,t){return m(o(e),t,h,!1).valueOf()},"number | BigNumber, Array":function(e,t){return m(o(t),e,h,!0).valueOf()}});return h.toTex="\\mathrm{atan2}\\left(${args}\\right)",h}var i=r(473);t.name="atan2",t.factory=n},function(e,t,r){var n=r(93),i=r(451);e.exports=function(e,t,r){var a=r.precision;if(t.isZero()){if(e.isZero())return new r(NaN);var o=n.pi(r.constructor({precision:a+2})).div(2).toDP(a-1);return o.constructor=r,o.s=e.s,o}r.config({precision:a+2});var s=i(e.div(t),r,!1);if(t.isNegative()){var u=n.pi(r);s=e.isNegative()?s.minus(u):s.plus(u)}return s.constructor=r,r.config({precision:a}),s.toDP(a-1)}},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(475)),["number"]),u=o.find(n(r(477)),["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 a(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 c(t.value)},"Array | Matrix":function(e){return i(e,c)}});return c.toTex="\\cos\\left(${args[0]}\\right)",c}var i=r(19),a=r(455);t.name="cos",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\cosh\\left(${args[0]}\\right)",s}function i(e){return(Math.exp(e)+Math.exp(-e))/2}var a=r(19),o=r(476);t.name="cosh",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);if(!e.isFinite())return new t(n?0:r?e:1/0);var i=t.precision;t.config({precision:i+4});var a=new t(e);return a.constructor=t,a=a.exp(),a=r?a.minus(t.ONE.div(a)):a.plus(t.ONE.div(a)),a=n?new t(2).div(a):a.div(2),t.config({precision:i}),new t(a.toPrecision(i))}},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("sinh",{number:i,Complex:function(t){var r=Math.cos(t.im),n=Math.sin(t.im),i=Math.exp(t.re),a=Math.exp(-t.re);return new e.Complex(r*(i-a)/2,n*(i+a)/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 s(t.value)},"Array | Matrix":function(e){return a(e,s,!0)}});return s.toTex="\\sinh\\left(${args[0]}\\right)",s}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 a=r(19),o=r(476);t.name="sinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\cot\\left(${args[0]}\\right)",o}var i=r(19),a=r(479);t.name="cot",t.factory=n},function(e,t,r){var n=r(93),i=r(455),a=r(458),o=r(456);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=n.pi(t.constructor({precision:s+2})),c=u.div(2).toDP(s-1);u=u.toDP(s-1);var f=o(e,t,1)[0];if(f.abs().eq(u))return new t(1/0);t.config({precision:s+4});var l=i(f,t,1,!1),p=a(l);l=l.toDP(s),p=p.toDP(s),f.eq(e)?f.gt(c)&&(p.s=-p.s):u.minus(f.abs()).gt(c)&&(p.s=-p.s);var m=r?p.div(l):l.div(p);return t.config({precision:s}),new t(m.toPrecision(s))}},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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),a=(n-1)*(n-1)+i*i;return new e.Complex(((n+1)*(n-1)+i*i)/a,-2*i/a)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\coth\\left(${args[0]}\\right)",s}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var a=r(19),o=r(481);t.name="coth",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);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 a=i.exp(),o=t.ONE.div(a),s=a.minus(o);return s=r?a.plus(o).div(s):s.div(a.plus(o)),t.config({precision:n}),s.toDP(n-1)}},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\csc\\left(${args[0]}\\right)",o}var i=r(19),a=r(455);t.name="csc",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("csch",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r-n),a=Math.sin(t.im)*(r+n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\mathrm{csch}\\left(${args[0]}\\right)",s}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*s(e)}var a=r(19),o=r(476),s=r(6).sign;t.name="csch",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex="\\sec\\left(${args[0]}\\right)",o}var i=r(19),a=r(455);t.name="sec",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("sech",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r+n),a=Math.sin(t.im)*(r-n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s)}});return s.toTex="\\mathrm{sech}\\left(${args[0]}\\right)",s}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var a=r(19),o=r(476);t.name="sech",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=o.find(n(r(475)),["number"]),u=o.find(n(r(477)),["number"]),c=o("sin",{number:Math.sin,Complex:function(t){return new e.Complex(Math.sin(t.re)*s(-t.im),Math.cos(t.re)*u(t.im))},BigNumber:function(t){return a(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 c(t.value)},"Array | Matrix":function(e){return i(e,c,!0)}});return c.toTex="\\sin\\left(${args[0]}\\right)",c}var i=r(19),a=r(455);t.name="sin",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("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 a(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 o(t.value)},"Array | Matrix":function(e){return i(e,o,!0)}});return o.toTex="\\tan\\left(${args[0]}\\right)",o}var i=r(19),a=r(479);t.name="tan",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var s=n("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),a=(n+1)*(n+1)+i*i;return new e.Complex(((n-1)*(n+1)+i*i)/a,2*i/a)},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 s(t.value)},"Array | Matrix":function(e){return a(e,s,!0)}});return s.toTex="\\tanh\\left(${args[0]}\\right)",s}function i(e){var t=Math.exp(2*e);return(t-1)/(t+1)}var a=r(19),o=r(481);t.name="tanh",t.factory=n},function(e,t,r){e.exports=[r(490)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=r(29),o=n(r(50)),s=n(r(55)),u=n(r(56)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex="\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)",c}t.name="to",t.factory=n},function(e,t,r){e.exports=[r(492),r(297),r(88),r(400),r(350),r(87),r(363),r(414),r(302),r(442),r(493),r(494),r(89),r(299)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("clone",{any:i.clone});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}var i=r(3);t.name="clone",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("print",{"string, Object":i,"string, Object, number":i});return a.toTex="\\mathrm{${name}}\\left(${args}\\right)",a}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?a(s)?s:o(s,r):e})}var a=r(23).isString,o=r(23).format;t.name="print",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(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(50)),f=n(r(436)),l=function(e,t){return-f(e,t)},p=a("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(o(t))},"Matrix, string":function(e,t){return u(e),c(e.toArray().sort(o(t)),e.storage())}});return p.toTex="\\mathrm{${name}}\\left(${args}\\right)",p}var i=r(39).size;t.name="sort",t.factory=n},function(e,t,r){e.exports=[r(496)]},function(e,t){"use strict";function r(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}t.name="reviver",t.path="json",t.factory=r},function(e,t,r){"use strict";var n=r(11),i=r(41),a=r(42);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); //# sourceMappingURL=math.map \ No newline at end of file diff --git a/lib/header.js b/lib/header.js index 1b5d70752..4c8dd78a5 100644 --- a/lib/header.js +++ b/lib/header.js @@ -10,7 +10,7 @@ * @date @@date * * @license - * Copyright (C) 2013-2015 Jos de Jong + * Copyright (C) 2013-2016 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy diff --git a/lib/version.js b/lib/version.js index 225f57d7c..8652cbaec 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1,3 +1,3 @@ -module.exports = '2.5.0'; +module.exports = '2.6.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. diff --git a/package.json b/package.json index 68bb04f04..ffc0ebde0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "2.5.0", + "version": "2.6.0", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", "author": "Jos de Jong (https://github.com/josdejong)", "contributors": [