UNPKG

qics

Version:

A Javascript Idealistic Quantum Computer Simulation Library

880 lines (878 loc) 646 kB
"use strict"; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /** * math.js * https://github.com/josdejong/mathjs * * Math.js is an extensive math library for JavaScript and Node.js, * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * * @version 3.8.1 * @date 2017-01-22 * * @license * Copyright (C) 2013-2016 Jos de Jong <wjosdejong@gmail.com> * * 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 * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ !function (e, t) { "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? exports.math = t() : e.math = t(); }(undefined, 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, r(4)), a = r(8), o = r(10), s = 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(c.type, f, t, c.typed, c) : e.factory(c.type, f, t, c.typed), r.push(e), u.push(i)) : i = u[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 = [], u = [], c = a.mixin({});c.type = {}, c.expression = { transform: Object.create(c) }, c.typed = i.create(c.type);var f = { epsilon: 1e-12, matrix: "Matrix", number: "number", precision: 64, predictable: !1 };return c["import"] = t(o), c.config = t(s), e && c.config(e), c; }; }, function (e, t) { "use strict"; t.clone = function r(e) { var t = typeof e === "undefined" ? "undefined" : _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 === "undefined" ? "undefined" : _typeof(e)) == (typeof r === "undefined" ? "undefined" : _typeof(r)) && e == r; }, t.canDefineProperty = function () { try { if (Object.defineProperty) return Object.defineProperty({}, "x", { get: function get() {} }), !0; } catch (e) {}return !1; }, t.lazy = function (e, r, n) { if (t.canDefineProperty()) { var i, a = !0;Object.defineProperty(e, r, { get: function get() { return a && (i = n(), a = !1), i; }, set: function set(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; i < n.length; i++) { var a = n[i];a in r || (r[a] = {}), r = r[a]; }return r; }, t.isFactory = function (e) { return e && "function" == typeof e.factory; }; }, function (e, t, r) { var n = r(5), i = r(6).digits, _a = function a() { return _a = n.create, n; };t.create = function (e) { var t = _a();return t.types = [{ name: "number", test: function test(e) { return "number" == typeof e; } }, { name: "Complex", test: function test(e) { return e && e.isComplex; } }, { name: "BigNumber", test: function test(e) { return e && e.isBigNumber; } }, { name: "Fraction", test: function test(e) { return e && e.isFraction; } }, { name: "Unit", test: function test(e) { return e && e.isUnit; } }, { name: "string", test: function test(e) { return "string" == typeof e; } }, { name: "Array", test: Array.isArray }, { name: "Matrix", test: function test(e) { return e && e.isMatrix; } }, { name: "DenseMatrix", test: function test(e) { return e && e.isDenseMatrix; } }, { name: "SparseMatrix", test: function test(e) { return e && e.isSparseMatrix; } }, { name: "ImmutableDenseMatrix", test: function test(e) { return e && e.isImmutableDenseMatrix; } }, { name: "Range", test: function test(e) { return e && e.isRange; } }, { name: "Index", test: function test(e) { return e && e.isIndex; } }, { name: "boolean", test: function test(e) { return "boolean" == typeof e; } }, { name: "ResultSet", test: function test(e) { return e && e.isResultSet; } }, { name: "Help", test: function test(e) { return e && e.isHelp; } }, { name: "function", test: function test(e) { return "function" == typeof e; } }, { name: "Date", test: function test(e) { return e instanceof Date; } }, { name: "RegExp", test: function test(e) { return e instanceof RegExp; } }, { name: "Object", test: function test(e) { return "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)); } }, { name: "null", test: function test(e) { return null === e; } }, { name: "undefined", test: function test(e) { return void 0 === e; } }], t.conversions = [{ from: "number", to: "BigNumber", convert: function convert(t) { if (i(t) > 15) 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 convert(t) { return new e.Complex(t, 0); } }, { from: "number", to: "string", convert: function convert(e) { return e + ""; } }, { from: "BigNumber", to: "Complex", convert: function convert(t) { return new e.Complex(t.toNumber(), 0); } }, { from: "Fraction", to: "BigNumber", convert: function convert(e) { throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction."); } }, { from: "Fraction", to: "Complex", convert: function convert(t) { return new e.Complex(t.valueOf(), 0); } }, { from: "number", to: "Fraction", convert: function convert(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 convert(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 convert(e) { return +e; } }, { from: "boolean", to: "BigNumber", convert: function convert(t) { return new e.BigNumber(+t); } }, { from: "boolean", to: "Fraction", convert: function convert(t) { return new e.Fraction(+t); } }, { from: "boolean", to: "string", convert: function convert(e) { return +e; } }, { from: "null", to: "number", convert: function convert() { return 0; } }, { from: "null", to: "string", convert: function convert() { return "null"; } }, { from: "null", to: "BigNumber", convert: function convert() { return new e.BigNumber(0); } }, { from: "null", to: "Fraction", convert: function convert() { return new e.Fraction(0); } }, { from: "Array", to: "Matrix", convert: function convert(t) { return new e.DenseMatrix(t); } }, { from: "Matrix", to: "Array", convert: function convert(e) { return e.valueOf(); } }], t; }; }, function (e, t, r) { var n, i, a;!function (r, o) { i = [], n = o, a = "function" == typeof n ? n.apply(t, i) : n, !(void 0 !== a && (e.exports = a)); }(this, function () { function e() { function t(e) { for (var t, r = 0; r < M.types.length; r++) { var n = M.types[r];if (n.name === e) { t = n.test;break; } }if (!t) { var i;for (r = 0; r < M.types.length; r++) { if (n = M.types[r], n.name.toLowerCase() == e.toLowerCase()) { i = n.name;break; } }throw new Error('Unknown type "' + e + '"' + (i ? '. Did you mean "' + i + '"?' : "")); }return t; }function r(e) { for (var t = "", r = 0; r < e.length; r++) { var n = e[r];if (n.signatures && "" != n.name) if ("" == t) t = n.name;else if (t != n.name) { var i = new Error("Function names do not match (expected: " + t + ", actual: " + n.name + ")");throw i.data = { actual: n.name, expected: t }, i; } }return t; }function n(e, t, r, n, i) { var a, o = d(n), s = i ? i.split(",") : null, u = e || "unnamed", c = s && g(s, "any"), f = { fn: e, index: r, actual: n, expected: s };a = s ? t > r && !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; i < this.types.length; i++) { this.types[i] = this.types[i].trim(); } } } else { if (!Array.isArray(e)) { if (e instanceof a) return e.clone();throw new Error("String or Array expected"); }this.types = e; }this.conversions = [], this.varArgs = n || t || !1, this.anyType = -1 !== this.types.indexOf("any"); }function o(e, t) { var r;if ("string" == typeof e) r = "" !== e ? e.split(",") : [];else { if (!Array.isArray(e)) throw new Error("string or Array expected");r = e; }this.params = new Array(r.length), this.anyType = !1, this.varArgs = !1;for (var n = 0; n < r.length; n++) { var i = new a(r[n]);if (this.params[n] = i, i.anyType && (this.anyType = !0), n === r.length - 1) this.varArgs = i.varArgs;else if (i.varArgs) throw new SyntaxError('Unexpected variable arguments operator "..."'); }this.fn = t; }function s(e, t, r, n) { this.path = e || [], this.param = e[e.length - 1] || null, this.signature = t || null, this.childs = r || [], this.fallThrough = n || !1; }function u(e) { var t, r, n = {}, i = [];for (var a in e) { if (e.hasOwnProperty(a)) { var s = e[a];if (t = new o(a, s), t.ignore()) continue;var u = t.expand();for (r = 0; r < u.length; r++) { var c = u[r], f = c.toString(), l = n[f];if (l) { var p = o.compare(c, l);if (0 > p) 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; r < i.length; r++) { if (t = i[r], t.varArgs) for (var h = t.params.length - 1, m = t.params[h], d = 0; d < m.types.length;) { if (m.conversions[d]) for (var v = m.types[d], y = 0; y < i.length; y++) { var x = i[y], b = x.params[h];if (x !== t && b && g(b.types, v) && !b.conversions[h]) { m.types.splice(d, 1), m.conversions.splice(d, 1), d--;break; } }d++; } }return i; }function c(e) { for (var t = [], r = 0; r < e.length; r++) { e[r].anyType && t.push(e[r]); }return t; }function f(e) { for (var t = {}, r = 0; r < e.length; r++) { var n = e[r];if (n.fn && !n.hasConversions()) { var i = n.params.join(",");t[i] = n.fn; } }return t; }function l(e, t, r) { var n, i, o, u = t.length, c = [];for (n = 0; n < e.length; n++) { i = e[n], i.params.length !== u || o || (o = i), void 0 != i.params[u] && c.push(i); }c.sort(function (e, t) { return a.compare(e.params[u], t.params[u]); });var f = [];for (n = 0; n < c.length; n++) { i = c[n];var p = i.params[u], h = f.filter(function (e) { return e.param.overlapping(p); })[0];if (h) { if (h.param.varArgs) throw new Error('Conflicting types "' + h.param + '" and "' + p + '"');h.signatures.push(i); } else f.push({ param: p, signatures: [i] }); }var m = [];for (n = 0; n < r.length; n++) { r[n].paramsStartWith(t) && m.push(r[n]); }var d = !1;for (n = 0; n < m.length; n++) { if (!g(e, m[n])) { d = !0;break; } }var v = new Array(f.length);for (n = 0; n < f.length; n++) { var y = f[n];v[n] = l(y.signatures, t.concat(y.param), m); }return new s(t, o, v, d); }function p(e) { for (var t = [], r = 0; e > r; r++) { t[r] = "arg" + r; }return t; }function h(e, t) { var r = new i(), a = u(t);if (0 == a.length) throw new Error("No signatures provided");var o = c(a), s = l(a, [], o), h = [], d = e || "", g = p(m(a));h.push("function " + d + "(" + g.join(", ") + ") {"), h.push(' "use strict";'), h.push(" var name = '" + d + "';"), h.push(s.toCode(r, " ", !1)), h.push("}");var v = [r.toCode(), "return " + h.join("\n")].join("\n"), y = new Function(r.name, "createError", v), x = y(r, n);return x.signatures = f(a), x; }function m(e) { for (var t = 0, r = 0; r < e.length; r++) { var n = e[r].params.length;n > t && (t = n); }return t; }function d(e) { for (var t, r = 0; r < M.types.length; r++) { var n = M.types[r];if ("Object" === n.name) t = n;else if (n.test(e)) return n.name; }return t && t.test(e) ? t.name : "unknown"; }function g(e, t) { return -1 !== e.indexOf(t); }function v(e) { return e[e.length - 1]; }function y(e, t) { if (!e.signatures) throw new TypeError("Function is no typed-function");var r;if ("string" == typeof t) { r = t.split(",");for (var n = 0; n < r.length; n++) { r[n] = r[n].trim(); } } else { if (!Array.isArray(t)) throw new TypeError("String array or a comma separated string expected");r = t; }var i = r.join(","), a = e.signatures[i];if (a) return a;throw new TypeError("Signature not found (signature: " + (e.name || "unnamed") + "(" + r.join(", ") + "))"); }function x(e, t) { var r = d(e);if (t === r) return e;for (var n = 0; n < M.conversions.length; n++) { var i = M.conversions[n];if (i.from === r && i.to === t) return i.convert(e); }throw new Error("Cannot convert from " + r + " to " + t); }i.prototype.add = function (e, t) { var r = t || "fn";this.categories[r] || (this.categories[r] = []);var n = this.categories[r].indexOf(e);return -1 == n && (n = this.categories[r].length, this.categories[r].push(e)), r + n; }, i.prototype.toCode = function () { var e = [], t = this.name + ".categories", r = this.categories;for (var n in r) { if (r.hasOwnProperty(n)) for (var i = r[n], a = 0; a < i.length; a++) { e.push("var " + n + a + " = " + t + "['" + n + "'][" + a + "];"); } }return e.join("\n"); }, a.compare = function (e, t) { if (e.anyType) return 1;if (t.anyType) return -1;if (g(e.types, "Object")) return 1;if (g(t.types, "Object")) return -1;if (e.hasConversions()) { if (t.hasConversions()) { var r, n, i;for (r = 0; r < e.conversions.length; r++) { if (void 0 !== e.conversions[r]) { n = e.conversions[r];break; } }for (r = 0; r < t.conversions.length; r++) { if (void 0 !== t.conversions[r]) { i = t.conversions[r];break; } }return M.conversions.indexOf(n) - M.conversions.indexOf(i); }return 1; }if (t.hasConversions()) return -1;var a, o;for (r = 0; r < M.types.length; r++) { if (M.types[r].name === e.types[0]) { a = r;break; } }for (r = 0; r < M.types.length; r++) { if (M.types[r].name === t.types[0]) { o = r;break; } }return a - o; }, a.prototype.overlapping = function (e) { for (var t = 0; t < this.types.length; t++) { if (g(e.types, this.types[t])) return !0; }return !1; }, a.prototype.matches = function (e) { return this.anyType || e.anyType || this.overlapping(e); }, a.prototype.clone = function () { var e = new a(this.types.slice(), this.varArgs);return e.conversions = this.conversions.slice(), e; }, a.prototype.hasConversions = function () { return this.conversions.length > 0; }, a.prototype.contains = function (e) { for (var t = 0; t < this.types.length; t++) { if (e[this.types[t]]) return !0; }return !1; }, a.prototype.toString = function (e) { for (var t = [], r = {}, n = 0; n < this.types.length; n++) { var i = this.conversions[n], a = e && i ? i.to : this.types[n];a in r || (r[a] = !0, t.push(a)); }return (this.varArgs ? "..." : "") + t.join("|"); }, o.prototype.clone = function () { return new o(this.params.slice(), this.fn); }, o.prototype.expand = function () { function e(r, n) { if (n.length < r.params.length) { var i, s, u, c = r.params[n.length];if (c.varArgs) { for (s = c.clone(), i = 0; i < M.conversions.length; i++) { if (u = M.conversions[i], !g(c.types, u.from) && g(c.types, u.to)) { var f = s.types.length;s.types[f] = u.from, s.conversions[f] = u; } }e(r, n.concat(s)); } else { for (i = 0; i < c.types.length; i++) { e(r, n.concat(new a(c.types[i]))); }for (i = 0; i < M.conversions.length; i++) { u = M.conversions[i], !g(c.types, u.from) && g(c.types, u.to) && (s = new a(u.from), s.conversions[0] = u, e(r, n.concat(s))); } } } else t.push(new o(n, r.fn)); }var t = [];return e(this, []), t; }, o.compare = function (e, t) { if (e.params.length > t.params.length) return 1;if (e.params.length < t.params.length) return -1;var r, n = e.params.length, i = 0, o = 0;for (r = 0; n > r; 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 < e.params.length; r++) { var s = a.compare(e.params[r], t.params[r]);if (0 !== s) return s; }return 0; }, o.prototype.hasConversions = function () { for (var e = 0; e < this.params.length; e++) { if (this.params[e].hasConversions()) return !0; }return !1; }, o.prototype.ignore = function () { for (var e = {}, t = 0; t < M.ignore.length; t++) { e[M.ignore[t]] = !0; }for (t = 0; t < this.params.length; t++) { if (this.params[t].contains(e)) return !0; }return !1; }, o.prototype.paramsStartWith = function (e) { if (0 === e.length) return !0;for (var t = v(this.params), r = v(e), n = 0; n < e.length; n++) { var i = this.params[n] || (t.varArgs ? t : null), a = e[n] || (r.varArgs ? r : null);if (!i || !a || !i.matches(a)) return !1; }return !0; }, o.prototype.toCode = function (e, t) { for (var r = [], n = new Array(this.params.length), i = 0; i < this.params.length; i++) { var a = this.params[i], o = a.conversions[0];a.varArgs ? n[i] = "varArgs" : o ? n[i] = e.add(o.convert, "convert") + "(arg" + i + ")" : n[i] = "arg" + i; }var s = this.fn ? e.add(this.fn, "signature") : void 0;return s ? t + "return " + s + "(" + n.join(", ") + "); // signature: " + this.params.join(", ") : r.join("\n"); }, o.prototype.toString = function () { return this.params.join(", "); }, s.prototype.toCode = function (e, r) { var n = [];if (this.param) { var i = this.path.length - 1, a = this.param.conversions[0], o = "// type: " + (a ? a.from + " (convert to " + a.to + ")" : this.param);if (this.param.varArgs) { if (this.param.anyType) n.push(r + "if (arguments.length > " + i + ") {"), n.push(r + " var varArgs = [];"), n.push(r + " for (var i = " + i + "; i < arguments.length; i++) {"), n.push(r + " varArgs.push(arguments[i]);"), n.push(r + " }"), n.push(this.signature.toCode(e, r + " ")), n.push(r + "}");else { for (var s = function (r, n) { for (var i = [], a = 0; a < r.length; a++) { i[a] = e.add(t(r[a]), "test") + "(" + n + ")"; }return i.join(" || "); }.bind(this), u = this.param.types, c = [], f = 0; f < u.length; f++) { void 0 === this.param.conversions[f] && c.push(u[f]); }n.push(r + "if (" + s(u, "arg" + i) + ") { " + o), n.push(r + " var varArgs = [arg" + i + "];"), n.push(r + " for (var i = " + (i + 1) + "; i < arguments.length; i++) {"), n.push(r + " if (" + s(c, "arguments[i]") + ") {"), n.push(r + " varArgs.push(arguments[i]);");for (var f = 0; f < u.length; f++) { var l = this.param.conversions[f];if (l) { var p = e.add(t(u[f]), "test"), h = e.add(l.convert, "convert");n.push(r + " }"), n.push(r + " else if (" + p + "(arguments[i])) {"), n.push(r + " varArgs.push(" + h + "(arguments[i]));"); } }n.push(r + " } else {"), n.push(r + " throw createError(name, arguments.length, i, arguments[i], '" + c.join(",") + "');"), n.push(r + " }"), n.push(r + " }"), n.push(this.signature.toCode(e, r + " ")), n.push(r + "}"); } } else if (this.param.anyType) n.push(r + "// type: any"), n.push(this._innerCode(e, r));else { var m = this.param.types[0], p = "any" !== m ? e.add(t(m), "test") : null;n.push(r + "if (" + p + "(arg" + i + ")) { " + o), n.push(this._innerCode(e, r + " ")), n.push(r + "}"); } } else n.push(this._innerCode(e, r));return n.join("\n"); }, s.prototype._innerCode = function (e, t) { var r, n = [];for (this.signature && (n.push(t + "if (arguments.length === " + this.path.length + ") {"), n.push(this.signature.toCode(e, t + " ")), n.push(t + "}")), r = 0; r < this.childs.length; r++) { n.push(this.childs[r].toCode(e, t)); }if (!this.fallThrough || this.param && this.param.anyType) { var i = this._exceptions(e, t);i && n.push(i); }return n.join("\n"); }, s.prototype._exceptions = function (e, t) { var r = this.path.length;if (0 === this.childs.length) return [t + "if (arguments.length > " + r + ") {", t + " throw createError(name, arguments.length, " + r + ", arguments[" + r + "]);", t + "}"].join("\n");for (var n = {}, i = [], a = 0; a < this.childs.length; a++) { var o = this.childs[a];if (o.param) for (var s = 0; s < o.param.types.length; s++) { var u = o.param.types[s];u in n || o.param.conversions[s] || (n[u] = !0, i.push(u)); } }return t + "throw createError(name, arguments.length, " + r + ", arguments[" + r + "], '" + i.join(",") + "');"; };var b = [{ name: "number", test: function test(e) { return "number" == typeof e; } }, { name: "string", test: function test(e) { return "string" == typeof e; } }, { name: "boolean", test: function test(e) { return "boolean" == typeof e; } }, { name: "Function", test: function test(e) { return "function" == typeof e; } }, { name: "Array", test: Array.isArray }, { name: "Date", test: function test(e) { return e instanceof Date; } }, { name: "RegExp", test: function test(e) { return e instanceof RegExp; } }, { name: "Object", test: function test(e) { return "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)); } }, { name: "null", test: function test(e) { return null === e; } }, { name: "undefined", test: function test(e) { return void 0 === e; } }], w = {}, N = [], E = [], M = { config: w, types: b, conversions: N, ignore: E };return M = h("typed", { Object: function Object(e) { var t = [];for (var n in e) { e.hasOwnProperty(n) && t.push(e[n]); }var i = r(t);return h(i, e); }, "string, Object": h, "...Function": function Function(e) { for (var t, n = r(e), i = {}, a = 0; a < e.length; a++) { var o = e[a];if ("object" != _typeof(o.signatures)) throw t = new TypeError("Function is no typed-function (index: " + a + ")"), t.data = { index: a }, t;for (var s in o.signatures) { if (o.signatures.hasOwnProperty(s)) if (i.hasOwnProperty(s)) { if (o.signatures[s] !== i[s]) throw t = new Error('Signature "' + s + '" is defined twice'), t.data = { signature: s }, t; } else i[s] = o.signatures[s]; } }return h(n, i); } }), M.config = w, M.types = b, M.conversions = N, M.ignore = E, M.create = e, M.find = y, M.convert = x, M.addType = function (e) { if (!e || "string" != typeof e.name || "function" != typeof e.test) throw new TypeError("Object with properties {name: string, test: function} expected");M.types.push(e); }, M.addConversion = function (e) { if (!e || "string" != typeof e.from || "string" != typeof e.to || "function" != typeof e.convert) throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");M.conversions.push(e); }, M; }return e(); }); }, function (e, t, r) { "use strict"; var n = r(7);t.isNumber = function (e) { return "number" == typeof e; }, t.isInteger = function (e) { return isFinite(e) ? e == Math.round(e) : !1; }, t.sign = Math.sign || function (e) { return e > 0 ? 1 : 0 > e ? -1 : 0; }, t.format = function (e, r) { if ("function" == typeof r) return r(e);if (e === 1 / 0) return "Infinity";if (e === -(1 / 0)) return "-Infinity";if (isNaN(e)) return "NaN";var n = "auto", i = void 0;switch (r && (r.notation && (n = r.notation), t.isNumber(r) ? i = r : r.precision && (i = r.precision)), n) {case "fixed": return t.toFixed(e, i);case "exponential": return t.toExponential(e, i);case "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 i < t.DBL_EPSILON ? !0 : i <= Math.max(Math.abs(e), Math.abs(r)) * n; }return !1; }; }, function (e, t) { "use strict"; function r(e) { var t = String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if (!t) throw new SyntaxError("Invalid number");var r = t[1], n = t[2], i = parseFloat(t[4] || "0"), a = n.indexOf(".");i += -1 !== a ? a - 1 : n.length - 1, this.sign = r, this.coefficients = n.replace(".", "").replace(/^0*/, function (e) { return i -= e.length, ""; }).replace(/0*$/, "").split("").map(function (e) { return parseInt(e); }), 0 === this.coefficients.length && (this.coefficients.push(0), i++), this.exponent = i; }function n(e) { for (var t = [], r = 0; e > r; 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 < o && (i = i.concat(n(o - (i.length - 1))));for (var s = Math.abs(r - a), u = 1, c = ""; --s >= 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.length < a && (r = r.concat(n(a - r.length))), 0 > i && (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.length < e && (r = r.concat(n(e - r.length)));var a = r.shift();return this.sign + a + (r.length > 0 ? "." + 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.length < e && (s = s.concat(n(e - s.length))), s = s.concat(n(u - s.length + 1 + (s.length < e ? e - s.length : 0))), s = n(-u).concat(s);var c = u > 0 ? u : 0;return c < s.length - 1 && s.splice(c + 1, 0, "."), this.sign + s.join(""); }, r.prototype.clone = function () { var e = new r("0");return e.sign = this.sign, e.coefficients = this.coefficients.slice(0), e.exponent = this.exponent, e; }, r.prototype.roundDigits = function (e) { for (var t = this.clone(), r = t.coefficients; 0 >= 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 on(e, t, r) { var n = this.e || (this.e = {});return (n[e] || (n[e] = [])).push({ fn: t, ctx: r }), this; }, once: function once(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 emit(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 off(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)) h(e, t);else if (Array.isArray(e)) e.forEach(function (e) { c(e, t); });else if ("object" == (typeof e === "undefined" ? "undefined" : _typeof(e))) { for (var n in e) { if (e.hasOwnProperty(n)) { var i = e[n];m(i) ? f(n, i, t) : a(e) ? h(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)), d(u[e]) && d(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 t() { 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 h(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 f() { var i = r(e);if (d(c) && d(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 m(e) { return "function" == typeof e || "number" == typeof e || "string" == typeof e || "boolean" == typeof e || null === e || e && e.isUnit === !0 || e && e.isComplex === !0 || e && e.isBigNumber === !0 || e && e.isFraction === !0 || e && e.isMatrix === !0 || e && Array.isArray(e) === !0; }function d(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, i) { function a(e) { if (e) { var r = s.clone(t);o(e, "matrix", u), o(e, "number", c), s.deepExtend(t, e);var n = s.clone(t);return i.emit("config", n, r), n; }return s.clone(t); }var u = ["Matrix", "Array"], c = ["number", "BigNumber", "Fraction"];return a.MATRIX = u, a.NUMBER = c, a; }function i(e, t) { return -1 !== e.indexOf(t); }function a(e, t) { return e.map(function (e) { return e.toLowerCase(); }).indexOf(t.toLowerCase()); }function o(e, t, r) { if (void 0 !== e[t] && !i(r, e[t])) { var n = a(r, e[t]);-1 !== n ? (console.warn('Warning: Wrong casing for configuration option "' + t + '", should be "' + r[n] + '" instead of "' + e[t] + '".'), e[t] = r[n]) : console.warn('Warning: Unknown value "' + e[t] + '" for configuration option "' + t + '". Available options: ' + r.map(JSON.stringify).join(", ") + "."); } }var s = r(3);t.name = "config", t.math = !0, t.factory = n; }, function (e, t, r) { e.exports = [r(14), r(100), r(102), r(339), r(507), r(509)]; }, function (e, t, r) { e.exports = [r(15), r(20), r(21), r(26), r(33), r(37), r(70), r(71), r(73), r(74)]; }, function (e, t, r) { e.exports = [r(16), r(18)]; }, function (e, t, r) { function n(e, t, r, n, a) { var o = i.clone({ precision: t.precision });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);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) { var t, r, n, i = e.length - 1, a = "", o = e[0];if (i > 0) { for (a += o, t = 1; i > t; t++) { n = e[t] + "", r = Re - n.length, r && (a += g(r)), a += n; }o = e[t], n = o + "", r = Re - n.length, r && (a += g(r)); } else if (0 === o) return "0";for (; o % 10 === 0;) { o /= 10; }return a + o; }function o(e, t, r) { if (e !== ~~e || t > e || e > r) throw Error(Oe + e); }function s(e, t, r, n) { var i, a, o, s;for (a = e[0]; a >= 10; a /= 10) { --t; }return --t < 0 ? (t += Re, i = 0) : (i = Math.ceil((t + 1) / Re), t %= Re), a = Ce(10, Re - t), s = e[i] % a | 0, null == n ? 3 > t ? (0 == t ? s = s / 100 | 0 : 1 == t && (s = s / 10 | 0), o = 4 > r && 99999 == s || r > 3 && 49999 == s || 5e4 == s || 0 == s) : o = (4 > r && s + 1 == a || r > 3 && s + 1 == a / 2) && (e[i + 1] / a / 100 | 0) == Ce(10, t - 2) - 1 || (s == a / 2 || 0 == s) && 0 == (e[i + 1] / a / 100 | 0) : 4 > t ? (0 == t ? s = s / 1e3 | 0 : 1 == t ? s = s / 100 | 0 : 2 == t && (s = s / 10 | 0), o = (n || 4 > r) && 9999 == s || !n && r > 3 && 4999 == s) : o = ((n || 4 > r) && s + 1 == a || !n && r > 3 && s + 1 == a / 2) && (e[i + 1] / a / 1e3 | 0) == Ce(10, t - 3) - 1, o; }function u(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[0] += xe.indexOf(e.charAt(o++)), n = 0; n < a.length; n++) { a[n] > r - 1 && (void 0 === a[n + 1] && (a[n + 1] = 0), a[n + 1] += a[n] / r | 0, a[n] %= r); } }return a.reverse(); }function c(e, t) { var r, n, i = t.d.length;32 > i ? (r = Math.ceil(i / 3), n = Math.pow(4, -r).toString()) : (r = 16, n = "2.3283064365386962890625e-10"), e.precision += r, t = O(e, 1, t.times(n), new e(1));for (var a = r; a--;) { var o = t.times(t);t = o.times(o).minus(o).times(8).plus(1); }return e.precision -= r, t; }function f(e, t, r, n) { var i, a, o, s, u, c, f, l, p, h = e.constructor;e: if (null != t) { if (l = e.d, !l) return e;for (i = 1, s = l[0]; s >= 10; s /= 10) { i++; }if (a = t - i, 0 > a) a += Re, o = t, f = l[p = 0], u = f / Ce(10, i - o - 1) % 10 | 0;else if (p = Math.ceil((a + 1) / Re), s = l.length, p >= s) { if (!n) break e;for (; s++ <= p;) { l.push(0); }f = u = 0, i = 1, a %= Re, o = a - Re + 1; } else { for (f = s = l[p], i = 1; s >= 10; s /= 10) { i++; }a %= Re, o = a - Re + i, u = 0 > o ? 0 : f / Ce(10, i - o - 1) % 10 | 0; }if (n = n || 0 > t || void 0 !== l[p + 1] || (0 > o ? f : f % Ce(10, i - o - 1)), c = 4 > r ? (u || n) && (0 == r || r == (e.s < 0 ? 3 : 2)) : u > 5 || 5 == u && (4 == r || n || 6 == r && (a > 0 ? o > 0 ? f / Ce(10, i - o) : 0 : l[p - 1]) % 10 & 1 || r == (e.s < 0 ? 8 : 7)), 1 > t || !l[0]) return l.length = 0, c ? (t -= e.e + 1, l[0] = Ce(10, (Re - t % Re) % Re), e.e = -t || 0) : l[0] = e.e = 0, e;if (0 == a ? (l.length = p, s = 1, p--) : (l.length = p + 1, s = Ce(10, Re - a), l[p] = o > 0 ? (f / Ce(10, i - o) % Ce(10, o) | 0) * s : 0), c) for (;;) { if (0 == p) { for (a = 1, o = l[0]; o >= 10; o /= 10) { a++; }for (o = l[0] += s, s = 1; o >= 10; o /= 10) { s++; }a != s && (e.e++, l[0] == Ie && (l[0] = 1));break; }if (l[p] += s, l[p] != Ie) break;l[p--] = 0, s = 1; }for (a = l.length; 0 === l[--a];) { l.pop(); } }return Me && (e.e > h.maxE ? (e.d = null, e.e = NaN) : e.e < h.minE && (e.e = 0, e.d = [0])), e; }function l(e, t, r) { if (!e.isFinite()) return N(e);var n, i = e.e, o = a(e.d), s = o.length;return t ? (r && (n = r - s) > 0 ? o = o.charAt(0) + "." + o.slice(1) + g(n) : s > 1 && (o = o.charAt(0) + "." + o.slice(1)), o = o + (e.e < 0 ? "e" : "e+") + e.e) : 0 > i ? (o = "0." + g(-i - 1) + o, r && (n = r - s) > 0 && (o += g(n))) : i >= s ? (o += g(i + 1 - s), r && (n = r - i - 1) > 0 && (o = o + "." + g(n))) : ((n = i + 1) < s && (o = o.slice(0, n) + "." + o.slice(n)), r && (n = r - s) > 0 && (i + 1 === s && (o += "."), o += g(n))), o; }function p(e, t) { for (var r = 1, n = e[0]; n >= 10; n /= 10) { r++; }return r + t * Re - 1; }function h(e, t, r) { if (t > Ue) throw Me = !0, r && (e.precision = r), Error(_e);return f(new e(be), t, 1, !0); }function m(e, t, r) { if (t > qe) throw Error(_e);return f(new e(we), t, r, !0); }function d(e) { var t = e.length - 1, r = t * Re + 1;if (t = e[t]) { for (; t % 10 == 0; t /= 10) { r--; }for (t = e[0]; t >= 10; t /= 10) { r++; } }return r; }function g(e) { for (var t = ""; e--;) { t += "0"; }return t; }function v(e, t, r, n) { var i, a = new e(1), o = Math.ceil(n / Re + 4);for (Me = !1;;) { if (r % 2 && (a = a.times(t), C(a.d, o) && (i = !0)), r = Te(r / 2), 0 === r) { r = a.d.length - 1, i && 0 === a.d[r] && ++a.d[r];break; }t = t.times(t), C(t.d, o); }return Me = !0, a; }function y(e) { return 1 & e.d[e.d.length - 1]; }function x(e, t, r) { for (var n, i = new e(t[0]), a = 0; ++a < t.length;) { if (n = new e(t[a]), !n.s) { i = n;break; }i[r](n) && (i = n); }return i; }function b(e, t) { var r, n, i, o, u, c, l, p = 0, h = 0, m = 0, d = e.constructor, g = d.rounding, v = d.precision;if (!e.d || !e.d[0] || e.e > 17) return new d(e.d ? e.d[0] ? e.s < 0 ? 0 : 1 / 0 : 1 : e.s ? e.s < 0 ? 0 : e : NaN);for (null == t ? (Me = !1, l = v) : l = t, c = new d(.03125); e.e > -2;) { e = e.times(c), m += 5; }for (n = Math.log(Ce(2, m)) / Math.LN10 * 2 + 5 | 0, l += n, r = o = u = new d(1), d.precision = l;;) { if (o = f(o.times(e), l, 1), r = r.times(++h), c = u.plus(je(o, r, l, 1)), a(c.d).slice(0, l) === a(u.d).slice(0, l)) { for (i = m; i--;) { u = f(u.times(u), l, 1); }if (null != t) return d.precision = v, u;if (!(3 > p && s(u.d, l - n, g, p))) return f(u, d.precision = v, g, Me = !0);d.precision = l += 10, r = o = c = new d(1), h = 0, p++; }u = c; } }function w(e, t) { var r, n, i, o, u, c, l, p, m, d, g, v = 1, y = 10, x = e, b = x.d, N = x.constructor, E = N.rounding, M = N.precision;if (x.s < 0 || !b || !b[0] || !x.e && 1 == b[0] && 1 == b.length) return new N(b && !b[0] ? -1 / 0 : 1 != x.s ? NaN : b ? 0 : x);if (null == t ? (Me = !1, m = M) : m = t, N.precision = m += y, r = a(b), n = r.charAt(0), !(Math.abs(o = x.e) < 15e14)) return p = h(N, m + 2, M).times(o + ""), x = w(new N(n + "." + r.slice(1)), m - y).plus(p), N.precision = M, null == t ? f(x, M, E, Me = !0) : x;for (; 7 > n && 1 != n || 1 == n && r.charAt(1) > 3;) { x = x.times(e), r = a(x.d), n = r.charAt(0), v++; }for (o = x.e, n > 1 ? (x = new N("0." + r), o++) : x = new N(n + "." + r.slice(1)), d = x, l = u =