/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod2) => function __require() {
return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
};
var __export = (target, all2) => {
for (var name309 in all2)
__defProp(target, name309, { get: all2[name309], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target,
mod2
));
var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2);
// node_modules/typed-function/lib/umd/typed-function.js
var require_typed_function = __commonJS({
"node_modules/typed-function/lib/umd/typed-function.js"(exports, module2) {
(function(global, factory2) {
typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory2() : typeof define === "function" && define.amd ? define(factory2) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global["'typed'"] = factory2());
})(exports, function() {
"use strict";
function ok() {
return true;
}
function notOk() {
return false;
}
function undef() {
return void 0;
}
const NOT_TYPED_FUNCTION = "Argument is not a typed-function.";
function create2() {
function isPlainObject2(x) {
return typeof x === "object" && x !== null && x.constructor === Object;
}
const _types = [{
name: "number",
test: function(x) {
return typeof x === "number";
}
}, {
name: "string",
test: function(x) {
return typeof x === "string";
}
}, {
name: "boolean",
test: function(x) {
return typeof x === "boolean";
}
}, {
name: "Function",
test: function(x) {
return typeof x === "function";
}
}, {
name: "Array",
test: Array.isArray
}, {
name: "Date",
test: function(x) {
return x instanceof Date;
}
}, {
name: "RegExp",
test: function(x) {
return x instanceof RegExp;
}
}, {
name: "Object",
test: isPlainObject2
}, {
name: "null",
test: function(x) {
return x === null;
}
}, {
name: "undefined",
test: function(x) {
return x === void 0;
}
}];
const anyType = {
name: "any",
test: ok,
isAny: true
};
let typeMap;
let typeList;
let nConversions = 0;
let typed2 = {
createCount: 0
};
function findType(typeName) {
const type = typeMap.get(typeName);
if (type) {
return type;
}
let message = 'Unknown type "' + typeName + '"';
const name309 = typeName.toLowerCase();
let otherName;
for (otherName of typeList) {
if (otherName.toLowerCase() === name309) {
message += '. Did you mean "' + otherName + '" ?';
break;
}
}
throw new TypeError(message);
}
function addTypes(types) {
let beforeSpec = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "any";
const beforeIndex = beforeSpec ? findType(beforeSpec).index : typeList.length;
const newTypes = [];
for (let i = 0; i < types.length; ++i) {
if (!types[i] || typeof types[i].name !== "string" || typeof types[i].test !== "function") {
throw new TypeError("Object with properties {name: string, test: function} expected");
}
const typeName = types[i].name;
if (typeMap.has(typeName)) {
throw new TypeError('Duplicate type name "' + typeName + '"');
}
newTypes.push(typeName);
typeMap.set(typeName, {
name: typeName,
test: types[i].test,
isAny: types[i].isAny,
index: beforeIndex + i,
conversionsTo: []
// Newly added type can't have any conversions to it
});
}
const affectedTypes = typeList.slice(beforeIndex);
typeList = typeList.slice(0, beforeIndex).concat(newTypes).concat(affectedTypes);
for (let i = beforeIndex + newTypes.length; i < typeList.length; ++i) {
typeMap.get(typeList[i]).index = i;
}
}
function clear() {
typeMap = /* @__PURE__ */ new Map();
typeList = [];
nConversions = 0;
addTypes([anyType], false);
}
clear();
addTypes(_types);
function clearConversions() {
let typeName;
for (typeName of typeList) {
typeMap.get(typeName).conversionsTo = [];
}
nConversions = 0;
}
function findTypeNames(value) {
const matches = typeList.filter((name309) => {
const type = typeMap.get(name309);
return !type.isAny && type.test(value);
});
if (matches.length) {
return matches;
}
return ["any"];
}
function isTypedFunction(entity) {
return entity && typeof entity === "function" && "_typedFunctionData" in entity;
}
function findSignature(fn, signature, options) {
if (!isTypedFunction(fn)) {
throw new TypeError(NOT_TYPED_FUNCTION);
}
const exact = options && options.exact;
const stringSignature = Array.isArray(signature) ? signature.join(",") : signature;
const params = parseSignature(stringSignature);
const canonicalSignature = stringifyParams(params);
if (!exact || canonicalSignature in fn.signatures) {
const match = fn._typedFunctionData.signatureMap.get(canonicalSignature);
if (match) {
return match;
}
}
const nParams = params.length;
let remainingSignatures;
if (exact) {
remainingSignatures = [];
let name309;
for (name309 in fn.signatures) {
remainingSignatures.push(fn._typedFunctionData.signatureMap.get(name309));
}
} else {
remainingSignatures = fn._typedFunctionData.signatures;
}
for (let i = 0; i < nParams; ++i) {
const want = params[i];
const filteredSignatures = [];
let possibility;
for (possibility of remainingSignatures) {
const have = getParamAtIndex(possibility.params, i);
if (!have || want.restParam && !have.restParam) {
continue;
}
if (!have.hasAny) {
const haveTypes = paramTypeSet(have);
if (want.types.some((wtype) => !haveTypes.has(wtype.name))) {
continue;
}
}
filteredSignatures.push(possibility);
}
remainingSignatures = filteredSignatures;
if (remainingSignatures.length === 0)
break;
}
let candidate;
for (candidate of remainingSignatures) {
if (candidate.params.length <= nParams) {
return candidate;
}
}
throw new TypeError("Signature not found (signature: " + (fn.name || "unnamed") + "(" + stringifyParams(params, ", ") + "))");
}
function find(fn, signature, options) {
return findSignature(fn, signature, options).implementation;
}
function convert(value, typeName) {
const type = findType(typeName);
if (type.test(value)) {
return value;
}
const conversions = type.conversionsTo;
if (conversions.length === 0) {
throw new Error("There are no conversions to " + typeName + " defined.");
}
for (let i = 0; i < conversions.length; i++) {
const fromType = findType(conversions[i].from);
if (fromType.test(value)) {
return conversions[i].convert(value);
}
}
throw new Error("Cannot convert " + value + " to " + typeName);
}
function stringifyParams(params) {
let separator = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ",";
return params.map((p) => p.name).join(separator);
}
function parseParam(param) {
const restParam = param.indexOf("...") === 0;
const types = !restParam ? param : param.length > 3 ? param.slice(3) : "any";
const typeDefs = types.split("|").map((s) => findType(s.trim()));
let hasAny = false;
let paramName = restParam ? "..." : "";
const exactTypes = typeDefs.map(function(type) {
hasAny = type.isAny || hasAny;
paramName += type.name + "|";
return {
name: type.name,
typeIndex: type.index,
test: type.test,
isAny: type.isAny,
conversion: null,
conversionIndex: -1
};
});
return {
types: exactTypes,
name: paramName.slice(0, -1),
// remove trailing '|' from above
hasAny,
hasConversion: false,
restParam
};
}
function expandParam(param) {
const typeNames = param.types.map((t) => t.name);
const matchingConversions = availableConversions(typeNames);
let hasAny = param.hasAny;
let newName = param.name;
const convertibleTypes = matchingConversions.map(function(conversion) {
const type = findType(conversion.from);
hasAny = type.isAny || hasAny;
newName += "|" + conversion.from;
return {
name: conversion.from,
typeIndex: type.index,
test: type.test,
isAny: type.isAny,
conversion,
conversionIndex: conversion.index
};
});
return {
types: param.types.concat(convertibleTypes),
name: newName,
hasAny,
hasConversion: convertibleTypes.length > 0,
restParam: param.restParam
};
}
function paramTypeSet(param) {
if (!param.typeSet) {
param.typeSet = /* @__PURE__ */ new Set();
param.types.forEach((type) => param.typeSet.add(type.name));
}
return param.typeSet;
}
function parseSignature(rawSignature) {
const params = [];
if (typeof rawSignature !== "string") {
throw new TypeError("Signatures must be strings");
}
const signature = rawSignature.trim();
if (signature === "") {
return params;
}
const rawParams = signature.split(",");
for (let i = 0; i < rawParams.length; ++i) {
const parsedParam = parseParam(rawParams[i].trim());
if (parsedParam.restParam && i !== rawParams.length - 1) {
throw new SyntaxError('Unexpected rest parameter "' + rawParams[i] + '": only allowed for the last parameter');
}
if (parsedParam.types.length === 0) {
return null;
}
params.push(parsedParam);
}
return params;
}
function hasRestParam(params) {
const param = last(params);
return param ? param.restParam : false;
}
function compileTest(param) {
if (!param || param.types.length === 0) {
return ok;
} else if (param.types.length === 1) {
return findType(param.types[0].name).test;
} else if (param.types.length === 2) {
const test0 = findType(param.types[0].name).test;
const test1 = findType(param.types[1].name).test;
return function or(x) {
return test0(x) || test1(x);
};
} else {
const tests = param.types.map(function(type) {
return findType(type.name).test;
});
return function or(x) {
for (let i = 0; i < tests.length; i++) {
if (tests[i](x)) {
return true;
}
}
return false;
};
}
}
function compileTests(params) {
let tests, test0, test1;
if (hasRestParam(params)) {
tests = initial(params).map(compileTest);
const varIndex = tests.length;
const lastTest = compileTest(last(params));
const testRestParam = function(args) {
for (let i = varIndex; i < args.length; i++) {
if (!lastTest(args[i])) {
return false;
}
}
return true;
};
return function testArgs(args) {
for (let i = 0; i < tests.length; i++) {
if (!tests[i](args[i])) {
return false;
}
}
return testRestParam(args) && args.length >= varIndex + 1;
};
} else {
if (params.length === 0) {
return function testArgs(args) {
return args.length === 0;
};
} else if (params.length === 1) {
test0 = compileTest(params[0]);
return function testArgs(args) {
return test0(args[0]) && args.length === 1;
};
} else if (params.length === 2) {
test0 = compileTest(params[0]);
test1 = compileTest(params[1]);
return function testArgs(args) {
return test0(args[0]) && test1(args[1]) && args.length === 2;
};
} else {
tests = params.map(compileTest);
return function testArgs(args) {
for (let i = 0; i < tests.length; i++) {
if (!tests[i](args[i])) {
return false;
}
}
return args.length === tests.length;
};
}
}
}
function getParamAtIndex(params, index) {
return index < params.length ? params[index] : hasRestParam(params) ? last(params) : null;
}
function getTypeSetAtIndex(params, index) {
const param = getParamAtIndex(params, index);
if (!param) {
return /* @__PURE__ */ new Set();
}
return paramTypeSet(param);
}
function isExactType(type) {
return type.conversion === null || type.conversion === void 0;
}
function mergeExpectedParams(signatures, index) {
const typeSet = /* @__PURE__ */ new Set();
signatures.forEach((signature) => {
const paramSet = getTypeSetAtIndex(signature.params, index);
let name309;
for (name309 of paramSet) {
typeSet.add(name309);
}
});
return typeSet.has("any") ? ["any"] : Array.from(typeSet);
}
function createError(name309, args, signatures) {
let err, expected;
const _name = name309 || "unnamed";
let matchingSignatures = signatures;
let index;
for (index = 0; index < args.length; index++) {
const nextMatchingDefs = [];
matchingSignatures.forEach((signature) => {
const param = getParamAtIndex(signature.params, index);
const test = compileTest(param);
if ((index < signature.params.length || hasRestParam(signature.params)) && test(args[index])) {
nextMatchingDefs.push(signature);
}
});
if (nextMatchingDefs.length === 0) {
expected = mergeExpectedParams(matchingSignatures, index);
if (expected.length > 0) {
const actualTypes = findTypeNames(args[index]);
err = new TypeError("Unexpected type of argument in function " + _name + " (expected: " + expected.join(" or ") + ", actual: " + actualTypes.join(" | ") + ", index: " + index + ")");
err.data = {
category: "wrongType",
fn: _name,
index,
actual: actualTypes,
expected
};
return err;
}
} else {
matchingSignatures = nextMatchingDefs;
}
}
const lengths = matchingSignatures.map(function(signature) {
return hasRestParam(signature.params) ? Infinity : signature.params.length;
});
if (args.length < Math.min.apply(null, lengths)) {
expected = mergeExpectedParams(matchingSignatures, index);
err = new TypeError("Too few arguments in function " + _name + " (expected: " + expected.join(" or ") + ", index: " + args.length + ")");
err.data = {
category: "tooFewArgs",
fn: _name,
index: args.length,
expected
};
return err;
}
const maxLength = Math.max.apply(null, lengths);
if (args.length > maxLength) {
err = new TypeError("Too many arguments in function " + _name + " (expected: " + maxLength + ", actual: " + args.length + ")");
err.data = {
category: "tooManyArgs",
fn: _name,
index: args.length,
expectedLength: maxLength
};
return err;
}
const argTypes = [];
for (let i = 0; i < args.length; ++i) {
argTypes.push(findTypeNames(args[i]).join("|"));
}
err = new TypeError('Arguments of type "' + argTypes.join(", ") + '" do not match any of the defined signatures of function ' + _name + ".");
err.data = {
category: "mismatch",
actual: argTypes
};
return err;
}
function getLowestTypeIndex(param) {
let min2 = typeList.length + 1;
for (let i = 0; i < param.types.length; i++) {
if (isExactType(param.types[i])) {
min2 = Math.min(min2, param.types[i].typeIndex);
}
}
return min2;
}
function getLowestConversionIndex(param) {
let min2 = nConversions + 1;
for (let i = 0; i < param.types.length; i++) {
if (!isExactType(param.types[i])) {
min2 = Math.min(min2, param.types[i].conversionIndex);
}
}
return min2;
}
function compareParams(param1, param2) {
if (param1.hasAny) {
if (!param2.hasAny) {
return 1;
}
} else if (param2.hasAny) {
return -1;
}
if (param1.restParam) {
if (!param2.restParam) {
return 1;
}
} else if (param2.restParam) {
return -1;
}
if (param1.hasConversion) {
if (!param2.hasConversion) {
return 1;
}
} else if (param2.hasConversion) {
return -1;
}
const typeDiff = getLowestTypeIndex(param1) - getLowestTypeIndex(param2);
if (typeDiff < 0) {
return -1;
}
if (typeDiff > 0) {
return 1;
}
const convDiff = getLowestConversionIndex(param1) - getLowestConversionIndex(param2);
if (convDiff < 0) {
return -1;
}
if (convDiff > 0) {
return 1;
}
return 0;
}
function compareSignatures(signature1, signature2) {
const pars1 = signature1.params;
const pars2 = signature2.params;
const last1 = last(pars1);
const last2 = last(pars2);
const hasRest1 = hasRestParam(pars1);
const hasRest2 = hasRestParam(pars2);
if (hasRest1 && last1.hasAny) {
if (!hasRest2 || !last2.hasAny) {
return 1;
}
} else if (hasRest2 && last2.hasAny) {
return -1;
}
let any1 = 0;
let conv1 = 0;
let par;
for (par of pars1) {
if (par.hasAny)
++any1;
if (par.hasConversion)
++conv1;
}
let any2 = 0;
let conv2 = 0;
for (par of pars2) {
if (par.hasAny)
++any2;
if (par.hasConversion)
++conv2;
}
if (any1 !== any2) {
return any1 - any2;
}
if (hasRest1 && last1.hasConversion) {
if (!hasRest2 || !last2.hasConversion) {
return 1;
}
} else if (hasRest2 && last2.hasConversion) {
return -1;
}
if (conv1 !== conv2) {
return conv1 - conv2;
}
if (hasRest1) {
if (!hasRest2) {
return 1;
}
} else if (hasRest2) {
return -1;
}
const lengthCriterion = (pars1.length - pars2.length) * (hasRest1 ? -1 : 1);
if (lengthCriterion !== 0) {
return lengthCriterion;
}
const comparisons = [];
let tc = 0;
for (let i = 0; i < pars1.length; ++i) {
const thisComparison = compareParams(pars1[i], pars2[i]);
comparisons.push(thisComparison);
tc += thisComparison;
}
if (tc !== 0) {
return tc;
}
let c;
for (c of comparisons) {
if (c !== 0) {
return c;
}
}
return 0;
}
function availableConversions(typeNames) {
if (typeNames.length === 0) {
return [];
}
const types = typeNames.map(findType);
if (typeNames.length > 1) {
types.sort((t1, t2) => t1.index - t2.index);
}
let matches = types[0].conversionsTo;
if (typeNames.length === 1) {
return matches;
}
matches = matches.concat([]);
const knownTypes = new Set(typeNames);
for (let i = 1; i < types.length; ++i) {
let newMatch;
for (newMatch of types[i].conversionsTo) {
if (!knownTypes.has(newMatch.from)) {
matches.push(newMatch);
knownTypes.add(newMatch.from);
}
}
}
return matches;
}
function compileArgsPreprocessing(params, fn) {
let fnConvert = fn;
if (params.some((p) => p.hasConversion)) {
const restParam = hasRestParam(params);
const compiledConversions = params.map(compileArgConversion);
fnConvert = function convertArgs() {
const args = [];
const last2 = restParam ? arguments.length - 1 : arguments.length;
for (let i = 0; i < last2; i++) {
args[i] = compiledConversions[i](arguments[i]);
}
if (restParam) {
args[last2] = arguments[last2].map(compiledConversions[last2]);
}
return fn.apply(this, args);
};
}
let fnPreprocess = fnConvert;
if (hasRestParam(params)) {
const offset = params.length - 1;
fnPreprocess = function preprocessRestParams() {
return fnConvert.apply(this, slice(arguments, 0, offset).concat([slice(arguments, offset)]));
};
}
return fnPreprocess;
}
function compileArgConversion(param) {
let test0, test1, conversion0, conversion1;
const tests = [];
const conversions = [];
param.types.forEach(function(type) {
if (type.conversion) {
tests.push(findType(type.conversion.from).test);
conversions.push(type.conversion.convert);
}
});
switch (conversions.length) {
case 0:
return function convertArg(arg) {
return arg;
};
case 1:
test0 = tests[0];
conversion0 = conversions[0];
return function convertArg(arg) {
if (test0(arg)) {
return conversion0(arg);
}
return arg;
};
case 2:
test0 = tests[0];
test1 = tests[1];
conversion0 = conversions[0];
conversion1 = conversions[1];
return function convertArg(arg) {
if (test0(arg)) {
return conversion0(arg);
}
if (test1(arg)) {
return conversion1(arg);
}
return arg;
};
default:
return function convertArg(arg) {
for (let i = 0; i < conversions.length; i++) {
if (tests[i](arg)) {
return conversions[i](arg);
}
}
return arg;
};
}
}
function splitParams(params) {
function _splitParams(params2, index, paramsSoFar) {
if (index < params2.length) {
const param = params2[index];
let resultingParams = [];
if (param.restParam) {
const exactTypes = param.types.filter(isExactType);
if (exactTypes.length < param.types.length) {
resultingParams.push({
types: exactTypes,
name: "..." + exactTypes.map((t) => t.name).join("|"),
hasAny: exactTypes.some((t) => t.isAny),
hasConversion: false,
restParam: true
});
}
resultingParams.push(param);
} else {
resultingParams = param.types.map(function(type) {
return {
types: [type],
name: type.name,
hasAny: type.isAny,
hasConversion: type.conversion,
restParam: false
};
});
}
return flatMap(resultingParams, function(nextParam) {
return _splitParams(params2, index + 1, paramsSoFar.concat([nextParam]));
});
} else {
return [paramsSoFar];
}
}
return _splitParams(params, 0, []);
}
function conflicting(params1, params2) {
const ii = Math.max(params1.length, params2.length);
for (let i = 0; i < ii; i++) {
const typeSet1 = getTypeSetAtIndex(params1, i);
const typeSet2 = getTypeSetAtIndex(params2, i);
let overlap = false;
let name309;
for (name309 of typeSet2) {
if (typeSet1.has(name309)) {
overlap = true;
break;
}
}
if (!overlap) {
return false;
}
}
const len1 = params1.length;
const len2 = params2.length;
const restParam1 = hasRestParam(params1);
const restParam2 = hasRestParam(params2);
return restParam1 ? restParam2 ? len1 === len2 : len2 >= len1 : restParam2 ? len1 >= len2 : len1 === len2;
}
function clearResolutions(functionList) {
return functionList.map((fn) => {
if (isReferToSelf(fn)) {
return referToSelf(fn.referToSelf.callback);
}
if (isReferTo(fn)) {
return makeReferTo(fn.referTo.references, fn.referTo.callback);
}
return fn;
});
}
function collectResolutions(references, functionList, signatureMap) {
const resolvedReferences = [];
let reference;
for (reference of references) {
let resolution = signatureMap[reference];
if (typeof resolution !== "number") {
throw new TypeError('No definition for referenced signature "' + reference + '"');
}
resolution = functionList[resolution];
if (typeof resolution !== "function") {
return false;
}
resolvedReferences.push(resolution);
}
return resolvedReferences;
}
function resolveReferences(functionList, signatureMap, self2) {
const resolvedFunctions = clearResolutions(functionList);
const isResolved = new Array(resolvedFunctions.length).fill(false);
let leftUnresolved = true;
while (leftUnresolved) {
leftUnresolved = false;
let nothingResolved = true;
for (let i = 0; i < resolvedFunctions.length; ++i) {
if (isResolved[i])
continue;
const fn = resolvedFunctions[i];
if (isReferToSelf(fn)) {
resolvedFunctions[i] = fn.referToSelf.callback(self2);
resolvedFunctions[i].referToSelf = fn.referToSelf;
isResolved[i] = true;
nothingResolved = false;
} else if (isReferTo(fn)) {
const resolvedReferences = collectResolutions(fn.referTo.references, resolvedFunctions, signatureMap);
if (resolvedReferences) {
resolvedFunctions[i] = fn.referTo.callback.apply(this, resolvedReferences);
resolvedFunctions[i].referTo = fn.referTo;
isResolved[i] = true;
nothingResolved = false;
} else {
leftUnresolved = true;
}
}
}
if (nothingResolved && leftUnresolved) {
throw new SyntaxError("Circular reference detected in resolving typed.referTo");
}
}
return resolvedFunctions;
}
function validateDeprecatedThis(signaturesMap) {
const deprecatedThisRegex = /\bthis(\(|\.signatures\b)/;
Object.keys(signaturesMap).forEach((signature) => {
const fn = signaturesMap[signature];
if (deprecatedThisRegex.test(fn.toString())) {
throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.");
}
});
}
function createTypedFunction(name309, rawSignaturesMap) {
typed2.createCount++;
if (Object.keys(rawSignaturesMap).length === 0) {
throw new SyntaxError("No signatures provided");
}
if (typed2.warnAgainstDeprecatedThis) {
validateDeprecatedThis(rawSignaturesMap);
}
const parsedParams = [];
const originalFunctions = [];
const signaturesMap = {};
const preliminarySignatures = [];
let signature;
for (signature in rawSignaturesMap) {
if (!Object.prototype.hasOwnProperty.call(rawSignaturesMap, signature)) {
continue;
}
const params = parseSignature(signature);
if (!params)
continue;
parsedParams.forEach(function(pp) {
if (conflicting(pp, params)) {
throw new TypeError('Conflicting signatures "' + stringifyParams(pp) + '" and "' + stringifyParams(params) + '".');
}
});
parsedParams.push(params);
const functionIndex = originalFunctions.length;
originalFunctions.push(rawSignaturesMap[signature]);
const conversionParams = params.map(expandParam);
let sp;
for (sp of splitParams(conversionParams)) {
const spName = stringifyParams(sp);
preliminarySignatures.push({
params: sp,
name: spName,
fn: functionIndex
});
if (sp.every((p) => !p.hasConversion)) {
signaturesMap[spName] = functionIndex;
}
}
}
preliminarySignatures.sort(compareSignatures);
const resolvedFunctions = resolveReferences(originalFunctions, signaturesMap, theTypedFn);
let s;
for (s in signaturesMap) {
if (Object.prototype.hasOwnProperty.call(signaturesMap, s)) {
signaturesMap[s] = resolvedFunctions[signaturesMap[s]];
}
}
const signatures = [];
const internalSignatureMap = /* @__PURE__ */ new Map();
for (s of preliminarySignatures) {
if (!internalSignatureMap.has(s.name)) {
s.fn = resolvedFunctions[s.fn];
signatures.push(s);
internalSignatureMap.set(s.name, s);
}
}
const ok0 = signatures[0] && signatures[0].params.length <= 2 && !hasRestParam(signatures[0].params);
const ok1 = signatures[1] && signatures[1].params.length <= 2 && !hasRestParam(signatures[1].params);
const ok2 = signatures[2] && signatures[2].params.length <= 2 && !hasRestParam(signatures[2].params);
const ok3 = signatures[3] && signatures[3].params.length <= 2 && !hasRestParam(signatures[3].params);
const ok4 = signatures[4] && signatures[4].params.length <= 2 && !hasRestParam(signatures[4].params);
const ok5 = signatures[5] && signatures[5].params.length <= 2 && !hasRestParam(signatures[5].params);
const allOk = ok0 && ok1 && ok2 && ok3 && ok4 && ok5;
for (let i = 0; i < signatures.length; ++i) {
signatures[i].test = compileTests(signatures[i].params);
}
const test00 = ok0 ? compileTest(signatures[0].params[0]) : notOk;
const test10 = ok1 ? compileTest(signatures[1].params[0]) : notOk;
const test20 = ok2 ? compileTest(signatures[2].params[0]) : notOk;
const test30 = ok3 ? compileTest(signatures[3].params[0]) : notOk;
const test40 = ok4 ? compileTest(signatures[4].params[0]) : notOk;
const test50 = ok5 ? compileTest(signatures[5].params[0]) : notOk;
const test01 = ok0 ? compileTest(signatures[0].params[1]) : notOk;
const test11 = ok1 ? compileTest(signatures[1].params[1]) : notOk;
const test21 = ok2 ? compileTest(signatures[2].params[1]) : notOk;
const test31 = ok3 ? compileTest(signatures[3].params[1]) : notOk;
const test41 = ok4 ? compileTest(signatures[4].params[1]) : notOk;
const test51 = ok5 ? compileTest(signatures[5].params[1]) : notOk;
for (let i = 0; i < signatures.length; ++i) {
signatures[i].implementation = compileArgsPreprocessing(signatures[i].params, signatures[i].fn);
}
const fn0 = ok0 ? signatures[0].implementation : undef;
const fn1 = ok1 ? signatures[1].implementation : undef;
const fn2 = ok2 ? signatures[2].implementation : undef;
const fn3 = ok3 ? signatures[3].implementation : undef;
const fn4 = ok4 ? signatures[4].implementation : undef;
const fn5 = ok5 ? signatures[5].implementation : undef;
const len0 = ok0 ? signatures[0].params.length : -1;
const len1 = ok1 ? signatures[1].params.length : -1;
const len2 = ok2 ? signatures[2].params.length : -1;
const len3 = ok3 ? signatures[3].params.length : -1;
const len4 = ok4 ? signatures[4].params.length : -1;
const len5 = ok5 ? signatures[5].params.length : -1;
const iStart = allOk ? 6 : 0;
const iEnd = signatures.length;
const tests = signatures.map((s2) => s2.test);
const fns = signatures.map((s2) => s2.implementation);
const generic = function generic2() {
for (let i = iStart; i < iEnd; i++) {
if (tests[i](arguments)) {
return fns[i].apply(this, arguments);
}
}
return typed2.onMismatch(name309, arguments, signatures);
};
function theTypedFn(arg0, arg1) {
if (arguments.length === len0 && test00(arg0) && test01(arg1)) {
return fn0.apply(this, arguments);
}
if (arguments.length === len1 && test10(arg0) && test11(arg1)) {
return fn1.apply(this, arguments);
}
if (arguments.length === len2 && test20(arg0) && test21(arg1)) {
return fn2.apply(this, arguments);
}
if (arguments.length === len3 && test30(arg0) && test31(arg1)) {
return fn3.apply(this, arguments);
}
if (arguments.length === len4 && test40(arg0) && test41(arg1)) {
return fn4.apply(this, arguments);
}
if (arguments.length === len5 && test50(arg0) && test51(arg1)) {
return fn5.apply(this, arguments);
}
return generic.apply(this, arguments);
}
try {
Object.defineProperty(theTypedFn, "name", {
value: name309
});
} catch (err) {
}
theTypedFn.signatures = signaturesMap;
theTypedFn._typedFunctionData = {
signatures,
signatureMap: internalSignatureMap
};
return theTypedFn;
}
function _onMismatch(name309, args, signatures) {
throw createError(name309, args, signatures);
}
function initial(arr) {
return slice(arr, 0, arr.length - 1);
}
function last(arr) {
return arr[arr.length - 1];
}
function slice(arr, start, end) {
return Array.prototype.slice.call(arr, start, end);
}
function findInArray(arr, test) {
for (let i = 0; i < arr.length; i++) {
if (test(arr[i])) {
return arr[i];
}
}
return void 0;
}
function flatMap(arr, callback) {
return Array.prototype.concat.apply([], arr.map(callback));
}
function referTo() {
const references = initial(arguments).map((s) => stringifyParams(parseSignature(s)));
const callback = last(arguments);
if (typeof callback !== "function") {
throw new TypeError("Callback function expected as last argument");
}
return makeReferTo(references, callback);
}
function makeReferTo(references, callback) {
return {
referTo: {
references,
callback
}
};
}
function referToSelf(callback) {
if (typeof callback !== "function") {
throw new TypeError("Callback function expected as first argument");
}
return {
referToSelf: {
callback
}
};
}
function isReferTo(objectOrFn) {
return objectOrFn && typeof objectOrFn.referTo === "object" && Array.isArray(objectOrFn.referTo.references) && typeof objectOrFn.referTo.callback === "function";
}
function isReferToSelf(objectOrFn) {
return objectOrFn && typeof objectOrFn.referToSelf === "object" && typeof objectOrFn.referToSelf.callback === "function";
}
function checkName(nameSoFar, newName) {
if (!nameSoFar) {
return newName;
}
if (newName && newName !== nameSoFar) {
const err = new Error("Function names do not match (expected: " + nameSoFar + ", actual: " + newName + ")");
err.data = {
actual: newName,
expected: nameSoFar
};
throw err;
}
return nameSoFar;
}
function getObjectName(obj) {
let name309;
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key) && (isTypedFunction(obj[key]) || typeof obj[key].signature === "string")) {
name309 = checkName(name309, obj[key].name);
}
}
return name309;
}
function mergeSignatures(dest, source) {
let key;
for (key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
if (key in dest) {
if (source[key] !== dest[key]) {
const err = new Error('Signature "' + key + '" is defined twice');
err.data = {
signature: key,
sourceFunction: source[key],
destFunction: dest[key]
};
throw err;
}
}
dest[key] = source[key];
}
}
}
const saveTyped = typed2;
typed2 = function(maybeName) {
const named = typeof maybeName === "string";
const start = named ? 1 : 0;
let name309 = named ? maybeName : "";
const allSignatures = {};
for (let i = start; i < arguments.length; ++i) {
const item = arguments[i];
let theseSignatures = {};
let thisName;
if (typeof item === "function") {
thisName = item.name;
if (typeof item.signature === "string") {
theseSignatures[item.signature] = item;
} else if (isTypedFunction(item)) {
theseSignatures = item.signatures;
}
} else if (isPlainObject2(item)) {
theseSignatures = item;
if (!named) {
thisName = getObjectName(item);
}
}
if (Object.keys(theseSignatures).length === 0) {
const err = new TypeError("Argument to 'typed' at index " + i + " is not a (typed) function, nor an object with signatures as keys and functions as values.");
err.data = {
index: i,
argument: item
};
throw err;
}
if (!named) {
name309 = checkName(name309, thisName);
}
mergeSignatures(allSignatures, theseSignatures);
}
return createTypedFunction(name309 || "", allSignatures);
};
typed2.create = create2;
typed2.createCount = saveTyped.createCount;
typed2.onMismatch = _onMismatch;
typed2.throwMismatchError = _onMismatch;
typed2.createError = createError;
typed2.clear = clear;
typed2.clearConversions = clearConversions;
typed2.addTypes = addTypes;
typed2._findType = findType;
typed2.referTo = referTo;
typed2.referToSelf = referToSelf;
typed2.convert = convert;
typed2.findSignature = findSignature;
typed2.find = find;
typed2.isTypedFunction = isTypedFunction;
typed2.warnAgainstDeprecatedThis = true;
typed2.addType = function(type, beforeObjectTest) {
let before = "any";
if (beforeObjectTest !== false && typeMap.has("Object")) {
before = "Object";
}
typed2.addTypes([type], before);
};
function _validateConversion(conversion) {
if (!conversion || typeof conversion.from !== "string" || typeof conversion.to !== "string" || typeof conversion.convert !== "function") {
throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");
}
if (conversion.to === conversion.from) {
throw new SyntaxError('Illegal to define conversion from "' + conversion.from + '" to itself.');
}
}
typed2.addConversion = function(conversion) {
_validateConversion(conversion);
const to = findType(conversion.to);
if (to.conversionsTo.every(function(other) {
return other.from !== conversion.from;
})) {
to.conversionsTo.push({
from: conversion.from,
convert: conversion.convert,
index: nConversions++
});
} else {
throw new Error('There is already a conversion from "' + conversion.from + '" to "' + to.name + '"');
}
};
typed2.addConversions = function(conversions) {
conversions.forEach(typed2.addConversion);
};
typed2.removeConversion = function(conversion) {
_validateConversion(conversion);
const to = findType(conversion.to);
const existingConversion = findInArray(to.conversionsTo, (c) => c.from === conversion.from);
if (!existingConversion) {
throw new Error("Attempt to remove nonexistent conversion from " + conversion.from + " to " + conversion.to);
}
if (existingConversion.convert !== conversion.convert) {
throw new Error("Conversion to remove does not match existing conversion");
}
const index = to.conversionsTo.indexOf(existingConversion);
to.conversionsTo.splice(index, 1);
};
typed2.resolve = function(tf, argList) {
if (!isTypedFunction(tf)) {
throw new TypeError(NOT_TYPED_FUNCTION);
}
const sigs = tf._typedFunctionData.signatures;
for (let i = 0; i < sigs.length; ++i) {
if (sigs[i].test(argList)) {
return sigs[i];
}
}
return null;
};
return typed2;
}
var typedFunction3 = create2();
return typedFunction3;
});
}
});
// node_modules/complex.js/complex.js
var require_complex = __commonJS({
"node_modules/complex.js/complex.js"(exports, module2) {
(function(root) {
"use strict";
var cosh3 = Math.cosh || function(x) {
return Math.abs(x) < 1e-9 ? 1 - x : (Math.exp(x) + Math.exp(-x)) * 0.5;
};
var sinh3 = Math.sinh || function(x) {
return Math.abs(x) < 1e-9 ? x : (Math.exp(x) - Math.exp(-x)) * 0.5;
};
var cosm1 = function(x) {
var b = Math.PI / 4;
if (-b > x || x > b) {
return Math.cos(x) - 1;
}
var xx = x * x;
return xx * (xx * (xx * (xx * (xx * (xx * (xx * (xx / 20922789888e3 - 1 / 87178291200) + 1 / 479001600) - 1 / 3628800) + 1 / 40320) - 1 / 720) + 1 / 24) - 1 / 2);
};
var hypot2 = function(x, y) {
var a = Math.abs(x);
var b = Math.abs(y);
if (a < 3e3 && b < 3e3) {
return Math.sqrt(a * a + b * b);
}
if (a < b) {
a = b;
b = x / y;
} else {
b = y / x;
}
return a * Math.sqrt(1 + b * b);
};
var parser_exit = function() {
throw SyntaxError("Invalid Param");
};
function logHypot(a, b) {
var _a = Math.abs(a);
var _b = Math.abs(b);
if (a === 0) {
return Math.log(_b);
}
if (b === 0) {
return Math.log(_a);
}
if (_a < 3e3 && _b < 3e3) {
return Math.log(a * a + b * b) * 0.5;
}
a = a / 2;
b = b / 2;
return 0.5 * Math.log(a * a + b * b) + Math.LN2;
}
var parse = function(a, b) {
var z = { "re": 0, "im": 0 };
if (a === void 0 || a === null) {
z["re"] = z["im"] = 0;
} else if (b !== void 0) {
z["re"] = a;
z["im"] = b;
} else
switch (typeof a) {
case "object":
if ("im" in a && "re" in a) {
z["re"] = a["re"];
z["im"] = a["im"];
} else if ("abs" in a && "arg" in a) {
if (!Number.isFinite(a["abs"]) && Number.isFinite(a["arg"])) {
return Complex2["INFINITY"];
}
z["re"] = a["abs"] * Math.cos(a["arg"]);
z["im"] = a["abs"] * Math.sin(a["arg"]);
} else if ("r" in a && "phi" in a) {
if (!Number.isFinite(a["r"]) && Number.isFinite(a["phi"])) {
return Complex2["INFINITY"];
}
z["re"] = a["r"] * Math.cos(a["phi"]);
z["im"] = a["r"] * Math.sin(a["phi"]);
} else if (a.length === 2) {
z["re"] = a[0];
z["im"] = a[1];
} else {
parser_exit();
}
break;
case "string":
z["im"] = /* void */
z["re"] = 0;
var tokens = a.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);
var plus = 1;
var minus = 0;
if (tokens === null) {
parser_exit();
}
for (var i = 0; i < tokens.length; i++) {
var c = tokens[i];
if (c === " " || c === " " || c === "\n") {
} else if (c === "+") {
plus++;
} else if (c === "-") {
minus++;
} else if (c === "i" || c === "I") {
if (plus + minus === 0) {
parser_exit();
}
if (tokens[i + 1] !== " " && !isNaN(tokens[i + 1])) {
z["im"] += parseFloat((minus % 2 ? "-" : "") + tokens[i + 1]);
i++;
} else {
z["im"] += parseFloat((minus % 2 ? "-" : "") + "1");
}
plus = minus = 0;
} else {
if (plus + minus === 0 || isNaN(c)) {
parser_exit();
}
if (tokens[i + 1] === "i" || tokens[i + 1] === "I") {
z["im"] += parseFloat((minus % 2 ? "-" : "") + c);
i++;
} else {
z["re"] += parseFloat((minus % 2 ? "-" : "") + c);
}
plus = minus = 0;
}
}
if (plus + minus > 0) {
parser_exit();
}
break;
case "number":
z["im"] = 0;
z["re"] = a;
break;
default:
parser_exit();
}
if (isNaN(z["re"]) || isNaN(z["im"])) {
}
return z;
};
function Complex2(a, b) {
if (!(this instanceof Complex2)) {
return new Complex2(a, b);
}
var z = parse(a, b);
this["re"] = z["re"];
this["im"] = z["im"];
}
Complex2.prototype = {
"re": 0,
"im": 0,
/**
* Calculates the sign of a complex number, which is a normalized complex
*
* @returns {Complex}
*/
"sign": function() {
var abs2 = this["abs"]();
return new Complex2(
this["re"] / abs2,
this["im"] / abs2
);
},
/**
* Adds two complex numbers
*
* @returns {Complex}
*/
"add": function(a, b) {
var z = new Complex2(a, b);
if (this["isInfinite"]() && z["isInfinite"]()) {
return Complex2["NAN"];
}
if (this["isInfinite"]() || z["isInfinite"]()) {
return Complex2["INFINITY"];
}
return new Complex2(
this["re"] + z["re"],
this["im"] + z["im"]
);
},
/**
* Subtracts two complex numbers
*
* @returns {Complex}
*/
"sub": function(a, b) {
var z = new Complex2(a, b);
if (this["isInfinite"]() && z["isInfinite"]()) {
return Complex2["NAN"];
}
if (this["isInfinite"]() || z["isInfinite"]()) {
return Complex2["INFINITY"];
}
return new Complex2(
this["re"] - z["re"],
this["im"] - z["im"]
);
},
/**
* Multiplies two complex numbers
*
* @returns {Complex}
*/
"mul": function(a, b) {
var z = new Complex2(a, b);
if (this["isInfinite"]() && z["isZero"]() || this["isZero"]() && z["isInfinite"]()) {
return Complex2["NAN"];
}
if (this["isInfinite"]() || z["isInfinite"]()) {
return Complex2["INFINITY"];
}
if (z["im"] === 0 && this["im"] === 0) {
return new Complex2(this["re"] * z["re"], 0);
}
return new Complex2(
this["re"] * z["re"] - this["im"] * z["im"],
this["re"] * z["im"] + this["im"] * z["re"]
);
},
/**
* Divides two complex numbers
*
* @returns {Complex}
*/
"div": function(a, b) {
var z = new Complex2(a, b);
if (this["isZero"]() && z["isZero"]() || this["isInfinite"]() && z["isInfinite"]()) {
return Complex2["NAN"];
}
if (this["isInfinite"]() || z["isZero"]()) {
return Complex2["INFINITY"];
}
if (this["isZero"]() || z["isInfinite"]()) {
return Complex2["ZERO"];
}
a = this["re"];
b = this["im"];
var c = z["re"];
var d = z["im"];
var t, x;
if (0 === d) {
return new Complex2(a / c, b / c);
}
if (Math.abs(c) < Math.abs(d)) {
x = c / d;
t = c * x + d;
return new Complex2(
(a * x + b) / t,
(b * x - a) / t
);
} else {
x = d / c;
t = d * x + c;
return new Complex2(
(a + b * x) / t,
(b - a * x) / t
);
}
},
/**
* Calculate the power of two complex numbers
*
* @returns {Complex}
*/
"pow": function(a, b) {
var z = new Complex2(a, b);
a = this["re"];
b = this["im"];
if (z["isZero"]()) {
return Complex2["ONE"];
}
if (z["im"] === 0) {
if (b === 0 && a > 0) {
return new Complex2(Math.pow(a, z["re"]), 0);
} else if (a === 0) {
switch ((z["re"] % 4 + 4) % 4) {
case 0:
return new Complex2(Math.pow(b, z["re"]), 0);
case 1:
return new Complex2(0, Math.pow(b, z["re"]));
case 2:
return new Complex2(-Math.pow(b, z["re"]), 0);
case 3:
return new Complex2(0, -Math.pow(b, z["re"]));
}
}
}
if (a === 0 && b === 0 && z["re"] > 0 && z["im"] >= 0) {
return Complex2["ZERO"];
}
var arg = Math.atan2(b, a);
var loh = logHypot(a, b);
a = Math.exp(z["re"] * loh - z["im"] * arg);
b = z["im"] * loh + z["re"] * arg;
return new Complex2(
a * Math.cos(b),
a * Math.sin(b)
);
},
/**
* Calculate the complex square root
*
* @returns {Complex}
*/
"sqrt": function() {
var a = this["re"];
var b = this["im"];
var r = this["abs"]();
var re, im;
if (a >= 0) {
if (b === 0) {
return new Complex2(Math.sqrt(a), 0);
}
re = 0.5 * Math.sqrt(2 * (r + a));
} else {
re = Math.abs(b) / Math.sqrt(2 * (r - a));
}
if (a <= 0) {
im = 0.5 * Math.sqrt(2 * (r - a));
} else {
im = Math.abs(b) / Math.sqrt(2 * (r + a));
}
return new Complex2(re, b < 0 ? -im : im);
},
/**
* Calculate the complex exponent
*
* @returns {Complex}
*/
"exp": function() {
var tmp = Math.exp(this["re"]);
if (this["im"] === 0) {
}
return new Complex2(
tmp * Math.cos(this["im"]),
tmp * Math.sin(this["im"])
);
},
/**
* Calculate the complex exponent and subtracts one.
*
* This may be more accurate than `Complex(x).exp().sub(1)` if
* `x` is small.
*
* @returns {Complex}
*/
"expm1": function() {
var a = this["re"];
var b = this["im"];
return new Complex2(
Math.expm1(a) * Math.cos(b) + cosm1(b),
Math.exp(a) * Math.sin(b)
);
},
/**
* Calculate the natural log
*
* @returns {Complex}
*/
"log": function() {
var a = this["re"];
var b = this["im"];
if (b === 0 && a > 0) {
}
return new Complex2(
logHypot(a, b),
Math.atan2(b, a)
);
},
/**
* Calculate the magnitude of the complex number
*
* @returns {number}
*/
"abs": function() {
return hypot2(this["re"], this["im"]);
},
/**
* Calculate the angle of the complex number
*
* @returns {number}
*/
"arg": function() {
return Math.atan2(this["im"], this["re"]);
},
/**
* Calculate the sine of the complex number
*
* @returns {Complex}
*/
"sin": function() {
var a = this["re"];
var b = this["im"];
return new Complex2(
Math.sin(a) * cosh3(b),
Math.cos(a) * sinh3(b)
);
},
/**
* Calculate the cosine
*
* @returns {Complex}
*/
"cos": function() {
var a = this["re"];
var b = this["im"];
return new Complex2(
Math.cos(a) * cosh3(b),
-Math.sin(a) * sinh3(b)
);
},
/**
* Calculate the tangent
*
* @returns {Complex}
*/
"tan": function() {
var a = 2 * this["re"];
var b = 2 * this["im"];
var d = Math.cos(a) + cosh3(b);
return new Complex2(
Math.sin(a) / d,
sinh3(b) / d
);
},
/**
* Calculate the cotangent
*
* @returns {Complex}
*/
"cot": function() {
var a = 2 * this["re"];
var b = 2 * this["im"];
var d = Math.cos(a) - cosh3(b);
return new Complex2(
-Math.sin(a) / d,
sinh3(b) / d
);
},
/**
* Calculate the secant
*
* @returns {Complex}
*/
"sec": function() {
var a = this["re"];
var b = this["im"];
var d = 0.5 * cosh3(2 * b) + 0.5 * Math.cos(2 * a);
return new Complex2(
Math.cos(a) * cosh3(b) / d,
Math.sin(a) * sinh3(b) / d
);
},
/**
* Calculate the cosecans
*
* @returns {Complex}
*/
"csc": function() {
var a = this["re"];
var b = this["im"];
var d = 0.5 * cosh3(2 * b) - 0.5 * Math.cos(2 * a);
return new Complex2(
Math.sin(a) * cosh3(b) / d,
-Math.cos(a) * sinh3(b) / d
);
},
/**
* Calculate the complex arcus sinus
*
* @returns {Complex}
*/
"asin": function() {
var a = this["re"];
var b = this["im"];
var t1 = new Complex2(
b * b - a * a + 1,
-2 * a * b
)["sqrt"]();
var t2 = new Complex2(
t1["re"] - b,
t1["im"] + a
)["log"]();
return new Complex2(t2["im"], -t2["re"]);
},
/**
* Calculate the complex arcus cosinus
*
* @returns {Complex}
*/
"acos": function() {
var a = this["re"];
var b = this["im"];
var t1 = new Complex2(
b * b - a * a + 1,
-2 * a * b
)["sqrt"]();
var t2 = new Complex2(
t1["re"] - b,
t1["im"] + a
)["log"]();
return new Complex2(Math.PI / 2 - t2["im"], t2["re"]);
},
/**
* Calculate the complex arcus tangent
*
* @returns {Complex}
*/
"atan": function() {
var a = this["re"];
var b = this["im"];
if (a === 0) {
if (b === 1) {
return new Complex2(0, Infinity);
}
if (b === -1) {
return new Complex2(0, -Infinity);
}
}
var d = a * a + (1 - b) * (1 - b);
var t1 = new Complex2(
(1 - b * b - a * a) / d,
-2 * a / d
).log();
return new Complex2(-0.5 * t1["im"], 0.5 * t1["re"]);
},
/**
* Calculate the complex arcus cotangent
*
* @returns {Complex}
*/
"acot": function() {
var a = this["re"];
var b = this["im"];
if (b === 0) {
return new Complex2(Math.atan2(1, a), 0);
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).atan() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).atan();
},
/**
* Calculate the complex arcus secant
*
* @returns {Complex}
*/
"asec": function() {
var a = this["re"];
var b = this["im"];
if (a === 0 && b === 0) {
return new Complex2(0, Infinity);
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).acos() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).acos();
},
/**
* Calculate the complex arcus cosecans
*
* @returns {Complex}
*/
"acsc": function() {
var a = this["re"];
var b = this["im"];
if (a === 0 && b === 0) {
return new Complex2(Math.PI / 2, Infinity);
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).asin() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).asin();
},
/**
* Calculate the complex sinh
*
* @returns {Complex}
*/
"sinh": function() {
var a = this["re"];
var b = this["im"];
return new Complex2(
sinh3(a) * Math.cos(b),
cosh3(a) * Math.sin(b)
);
},
/**
* Calculate the complex cosh
*
* @returns {Complex}
*/
"cosh": function() {
var a = this["re"];
var b = this["im"];
return new Complex2(
cosh3(a) * Math.cos(b),
sinh3(a) * Math.sin(b)
);
},
/**
* Calculate the complex tanh
*
* @returns {Complex}
*/
"tanh": function() {
var a = 2 * this["re"];
var b = 2 * this["im"];
var d = cosh3(a) + Math.cos(b);
return new Complex2(
sinh3(a) / d,
Math.sin(b) / d
);
},
/**
* Calculate the complex coth
*
* @returns {Complex}
*/
"coth": function() {
var a = 2 * this["re"];
var b = 2 * this["im"];
var d = cosh3(a) - Math.cos(b);
return new Complex2(
sinh3(a) / d,
-Math.sin(b) / d
);
},
/**
* Calculate the complex coth
*
* @returns {Complex}
*/
"csch": function() {
var a = this["re"];
var b = this["im"];
var d = Math.cos(2 * b) - cosh3(2 * a);
return new Complex2(
-2 * sinh3(a) * Math.cos(b) / d,
2 * cosh3(a) * Math.sin(b) / d
);
},
/**
* Calculate the complex sech
*
* @returns {Complex}
*/
"sech": function() {
var a = this["re"];
var b = this["im"];
var d = Math.cos(2 * b) + cosh3(2 * a);
return new Complex2(
2 * cosh3(a) * Math.cos(b) / d,
-2 * sinh3(a) * Math.sin(b) / d
);
},
/**
* Calculate the complex asinh
*
* @returns {Complex}
*/
"asinh": function() {
var tmp = this["im"];
this["im"] = -this["re"];
this["re"] = tmp;
var res = this["asin"]();
this["re"] = -this["im"];
this["im"] = tmp;
tmp = res["re"];
res["re"] = -res["im"];
res["im"] = tmp;
return res;
},
/**
* Calculate the complex acosh
*
* @returns {Complex}
*/
"acosh": function() {
var res = this["acos"]();
if (res["im"] <= 0) {
var tmp = res["re"];
res["re"] = -res["im"];
res["im"] = tmp;
} else {
var tmp = res["im"];
res["im"] = -res["re"];
res["re"] = tmp;
}
return res;
},
/**
* Calculate the complex atanh
*
* @returns {Complex}
*/
"atanh": function() {
var a = this["re"];
var b = this["im"];
var noIM = a > 1 && b === 0;
var oneMinus = 1 - a;
var onePlus = 1 + a;
var d = oneMinus * oneMinus + b * b;
var x = d !== 0 ? new Complex2(
(onePlus * oneMinus - b * b) / d,
(b * oneMinus + onePlus * b) / d
) : new Complex2(
a !== -1 ? a / 0 : 0,
b !== 0 ? b / 0 : 0
);
var temp = x["re"];
x["re"] = logHypot(x["re"], x["im"]) / 2;
x["im"] = Math.atan2(x["im"], temp) / 2;
if (noIM) {
x["im"] = -x["im"];
}
return x;
},
/**
* Calculate the complex acoth
*
* @returns {Complex}
*/
"acoth": function() {
var a = this["re"];
var b = this["im"];
if (a === 0 && b === 0) {
return new Complex2(0, Math.PI / 2);
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).atanh() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).atanh();
},
/**
* Calculate the complex acsch
*
* @returns {Complex}
*/
"acsch": function() {
var a = this["re"];
var b = this["im"];
if (b === 0) {
return new Complex2(
a !== 0 ? Math.log(a + Math.sqrt(a * a + 1)) : Infinity,
0
);
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).asinh() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).asinh();
},
/**
* Calculate the complex asech
*
* @returns {Complex}
*/
"asech": function() {
var a = this["re"];
var b = this["im"];
if (this["isZero"]()) {
return Complex2["INFINITY"];
}
var d = a * a + b * b;
return d !== 0 ? new Complex2(
a / d,
-b / d
).acosh() : new Complex2(
a !== 0 ? a / 0 : 0,
b !== 0 ? -b / 0 : 0
).acosh();
},
/**
* Calculate the complex inverse 1/z
*
* @returns {Complex}
*/
"inverse": function() {
if (this["isZero"]()) {
return Complex2["INFINITY"];
}
if (this["isInfinite"]()) {
return Complex2["ZERO"];
}
var a = this["re"];
var b = this["im"];
var d = a * a + b * b;
return new Complex2(a / d, -b / d);
},
/**
* Returns the complex conjugate
*
* @returns {Complex}
*/
"conjugate": function() {
return new Complex2(this["re"], -this["im"]);
},
/**
* Gets the negated complex number
*
* @returns {Complex}
*/
"neg": function() {
return new Complex2(-this["re"], -this["im"]);
},
/**
* Ceils the actual complex number
*
* @returns {Complex}
*/
"ceil": function(places) {
places = Math.pow(10, places || 0);
return new Complex2(
Math.ceil(this["re"] * places) / places,
Math.ceil(this["im"] * places) / places
);
},
/**
* Floors the actual complex number
*
* @returns {Complex}
*/
"floor": function(places) {
places = Math.pow(10, places || 0);
return new Complex2(
Math.floor(this["re"] * places) / places,
Math.floor(this["im"] * places) / places
);
},
/**
* Ceils the actual complex number
*
* @returns {Complex}
*/
"round": function(places) {
places = Math.pow(10, places || 0);
return new Complex2(
Math.round(this["re"] * places) / places,
Math.round(this["im"] * places) / places
);
},
/**
* Compares two complex numbers
*
* **Note:** new Complex(Infinity).equals(Infinity) === false
*
* @returns {boolean}
*/
"equals": function(a, b) {
var z = new Complex2(a, b);
return Math.abs(z["re"] - this["re"]) <= Complex2["EPSILON"] && Math.abs(z["im"] - this["im"]) <= Complex2["EPSILON"];
},
/**
* Clones the actual object
*
* @returns {Complex}
*/
"clone": function() {
return new Complex2(this["re"], this["im"]);
},
/**
* Gets a string of the actual complex number
*
* @returns {string}
*/
"toString": function() {
var a = this["re"];
var b = this["im"];
var ret = "";
if (this["isNaN"]()) {
return "NaN";
}
if (this["isInfinite"]()) {
return "Infinity";
}
if (Math.abs(a) < Complex2["EPSILON"]) {
a = 0;
}
if (Math.abs(b) < Complex2["EPSILON"]) {
b = 0;
}
if (b === 0) {
return ret + a;
}
if (a !== 0) {
ret += a;
ret += " ";
if (b < 0) {
b = -b;
ret += "-";
} else {
ret += "+";
}
ret += " ";
} else if (b < 0) {
b = -b;
ret += "-";
}
if (1 !== b) {
ret += b;
}
return ret + "i";
},
/**
* Returns the actual number as a vector
*
* @returns {Array}
*/
"toVector": function() {
return [this["re"], this["im"]];
},
/**
* Returns the actual real value of the current object
*
* @returns {number|null}
*/
"valueOf": function() {
if (this["im"] === 0) {
return this["re"];
}
return null;
},
/**
* Determines whether a complex number is not on the Riemann sphere.
*
* @returns {boolean}
*/
"isNaN": function() {
return isNaN(this["re"]) || isNaN(this["im"]);
},
/**
* Determines whether or not a complex number is at the zero pole of the
* Riemann sphere.
*
* @returns {boolean}
*/
"isZero": function() {
return this["im"] === 0 && this["re"] === 0;
},
/**
* Determines whether a complex number is not at the infinity pole of the
* Riemann sphere.
*
* @returns {boolean}
*/
"isFinite": function() {
return isFinite(this["re"]) && isFinite(this["im"]);
},
/**
* Determines whether or not a complex number is at the infinity pole of the
* Riemann sphere.
*
* @returns {boolean}
*/
"isInfinite": function() {
return !(this["isNaN"]() || this["isFinite"]());
}
};
Complex2["ZERO"] = new Complex2(0, 0);
Complex2["ONE"] = new Complex2(1, 0);
Complex2["I"] = new Complex2(0, 1);
Complex2["PI"] = new Complex2(Math.PI, 0);
Complex2["E"] = new Complex2(Math.E, 0);
Complex2["INFINITY"] = new Complex2(Infinity, Infinity);
Complex2["NAN"] = new Complex2(NaN, NaN);
Complex2["EPSILON"] = 1e-15;
if (typeof define === "function" && define["amd"]) {
define([], function() {
return Complex2;
});
} else if (typeof exports === "object") {
Object.defineProperty(Complex2, "__esModule", { "value": true });
Complex2["default"] = Complex2;
Complex2["Complex"] = Complex2;
module2["exports"] = Complex2;
} else {
root["Complex"] = Complex2;
}
})(exports);
}
});
// node_modules/fraction.js/fraction.js
var require_fraction = __commonJS({
"node_modules/fraction.js/fraction.js"(exports, module2) {
(function(root) {
"use strict";
var MAX_CYCLE_LEN = 2e3;
var P3 = {
"s": 1,
"n": 0,
"d": 1
};
function assign2(n, s) {
if (isNaN(n = parseInt(n, 10))) {
throw InvalidParameter();
}
return n * s;
}
function newFraction(n, d) {
if (d === 0) {
throw DivisionByZero();
}
var f = Object.create(Fraction2.prototype);
f["s"] = n < 0 ? -1 : 1;
n = n < 0 ? -n : n;
var a = gcd(n, d);
f["n"] = n / a;
f["d"] = d / a;
return f;
}
function factorize(num) {
var factors = {};
var n = num;
var i = 2;
var s = 4;
while (s <= n) {
while (n % i === 0) {
n /= i;
factors[i] = (factors[i] || 0) + 1;
}
s += 1 + 2 * i++;
}
if (n !== num) {
if (n > 1)
factors[n] = (factors[n] || 0) + 1;
} else {
factors[num] = (factors[num] || 0) + 1;
}
return factors;
}
var parse = function(p1, p2) {
var n = 0, d = 1, s = 1;
var v = 0, w = 0, x = 0, y = 1, z = 1;
var A = 0, B = 1;
var C = 1, D = 1;
var N = 1e7;
var M;
if (p1 === void 0 || p1 === null) {
} else if (p2 !== void 0) {
n = p1;
d = p2;
s = n * d;
if (n % 1 !== 0 || d % 1 !== 0) {
throw NonIntegerParameter();
}
} else
switch (typeof p1) {
case "object": {
if ("d" in p1 && "n" in p1) {
n = p1["n"];
d = p1["d"];
if ("s" in p1)
n *= p1["s"];
} else if (0 in p1) {
n = p1[0];
if (1 in p1)
d = p1[1];
} else {
throw InvalidParameter();
}
s = n * d;
break;
}
case "number": {
if (p1 < 0) {
s = p1;
p1 = -p1;
}
if (p1 % 1 === 0) {
n = p1;
} else if (p1 > 0) {
if (p1 >= 1) {
z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));
p1 /= z;
}
while (B <= N && D <= N) {
M = (A + C) / (B + D);
if (p1 === M) {
if (B + D <= N) {
n = A + C;
d = B + D;
} else if (D > B) {
n = C;
d = D;
} else {
n = A;
d = B;
}
break;
} else {
if (p1 > M) {
A += C;
B += D;
} else {
C += A;
D += B;
}
if (B > N) {
n = C;
d = D;
} else {
n = A;
d = B;
}
}
}
n *= z;
} else if (isNaN(p1) || isNaN(p2)) {
d = n = NaN;
}
break;
}
case "string": {
B = p1.match(/\d+|./g);
if (B === null)
throw InvalidParameter();
if (B[A] === "-") {
s = -1;
A++;
} else if (B[A] === "+") {
A++;
}
if (B.length === A + 1) {
w = assign2(B[A++], s);
} else if (B[A + 1] === "." || B[A] === ".") {
if (B[A] !== ".") {
v = assign2(B[A++], s);
}
A++;
if (A + 1 === B.length || B[A + 1] === "(" && B[A + 3] === ")" || B[A + 1] === "'" && B[A + 3] === "'") {
w = assign2(B[A], s);
y = Math.pow(10, B[A].length);
A++;
}
if (B[A] === "(" && B[A + 2] === ")" || B[A] === "'" && B[A + 2] === "'") {
x = assign2(B[A + 1], s);
z = Math.pow(10, B[A + 1].length) - 1;
A += 3;
}
} else if (B[A + 1] === "/" || B[A + 1] === ":") {
w = assign2(B[A], s);
y = assign2(B[A + 2], 1);
A += 3;
} else if (B[A + 3] === "/" && B[A + 1] === " ") {
v = assign2(B[A], s);
w = assign2(B[A + 2], s);
y = assign2(B[A + 4], 1);
A += 5;
}
if (B.length <= A) {
d = y * z;
s = /* void */
n = x + d * v + z * w;
break;
}
}
default:
throw InvalidParameter();
}
if (d === 0) {
throw DivisionByZero();
}
P3["s"] = s < 0 ? -1 : 1;
P3["n"] = Math.abs(n);
P3["d"] = Math.abs(d);
};
function modpow(b, e2, m) {
var r = 1;
for (; e2 > 0; b = b * b % m, e2 >>= 1) {
if (e2 & 1) {
r = r * b % m;
}
}
return r;
}
function cycleLen(n, d) {
for (; d % 2 === 0; d /= 2) {
}
for (; d % 5 === 0; d /= 5) {
}
if (d === 1)
return 0;
var rem = 10 % d;
var t = 1;
for (; rem !== 1; t++) {
rem = rem * 10 % d;
if (t > MAX_CYCLE_LEN)
return 0;
}
return t;
}
function cycleStart(n, d, len) {
var rem1 = 1;
var rem2 = modpow(10, len, d);
for (var t = 0; t < 300; t++) {
if (rem1 === rem2)
return t;
rem1 = rem1 * 10 % d;
rem2 = rem2 * 10 % d;
}
return 0;
}
function gcd(a, b) {
if (!a)
return b;
if (!b)
return a;
while (1) {
a %= b;
if (!a)
return b;
b %= a;
if (!b)
return a;
}
}
;
function Fraction2(a, b) {
parse(a, b);
if (this instanceof Fraction2) {
a = gcd(P3["d"], P3["n"]);
this["s"] = P3["s"];
this["n"] = P3["n"] / a;
this["d"] = P3["d"] / a;
} else {
return newFraction(P3["s"] * P3["n"], P3["d"]);
}
}
var DivisionByZero = function() {
return new Error("Division by Zero");
};
var InvalidParameter = function() {
return new Error("Invalid argument");
};
var NonIntegerParameter = function() {
return new Error("Parameters must be integer");
};
Fraction2.prototype = {
"s": 1,
"n": 0,
"d": 1,
/**
* Calculates the absolute value
*
* Ex: new Fraction(-4).abs() => 4
**/
"abs": function() {
return newFraction(this["n"], this["d"]);
},
/**
* Inverts the sign of the current fraction
*
* Ex: new Fraction(-4).neg() => 4
**/
"neg": function() {
return newFraction(-this["s"] * this["n"], this["d"]);
},
/**
* Adds two rational numbers
*
* Ex: new Fraction({n: 2, d: 3}).add("14.9") => 467 / 30
**/
"add": function(a, b) {
parse(a, b);
return newFraction(
this["s"] * this["n"] * P3["d"] + P3["s"] * this["d"] * P3["n"],
this["d"] * P3["d"]
);
},
/**
* Subtracts two rational numbers
*
* Ex: new Fraction({n: 2, d: 3}).add("14.9") => -427 / 30
**/
"sub": function(a, b) {
parse(a, b);
return newFraction(
this["s"] * this["n"] * P3["d"] - P3["s"] * this["d"] * P3["n"],
this["d"] * P3["d"]
);
},
/**
* Multiplies two rational numbers
*
* Ex: new Fraction("-17.(345)").mul(3) => 5776 / 111
**/
"mul": function(a, b) {
parse(a, b);
return newFraction(
this["s"] * P3["s"] * this["n"] * P3["n"],
this["d"] * P3["d"]
);
},
/**
* Divides two rational numbers
*
* Ex: new Fraction("-17.(345)").inverse().div(3)
**/
"div": function(a, b) {
parse(a, b);
return newFraction(
this["s"] * P3["s"] * this["n"] * P3["d"],
this["d"] * P3["n"]
);
},
/**
* Clones the actual object
*
* Ex: new Fraction("-17.(345)").clone()
**/
"clone": function() {
return newFraction(this["s"] * this["n"], this["d"]);
},
/**
* Calculates the modulo of two rational numbers - a more precise fmod
*
* Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)
**/
"mod": function(a, b) {
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
if (a === void 0) {
return newFraction(this["s"] * this["n"] % this["d"], 1);
}
parse(a, b);
if (0 === P3["n"] && 0 === this["d"]) {
throw DivisionByZero();
}
return newFraction(
this["s"] * (P3["d"] * this["n"]) % (P3["n"] * this["d"]),
P3["d"] * this["d"]
);
},
/**
* Calculates the fractional gcd of two rational numbers
*
* Ex: new Fraction(5,8).gcd(3,7) => 1/56
*/
"gcd": function(a, b) {
parse(a, b);
return newFraction(gcd(P3["n"], this["n"]) * gcd(P3["d"], this["d"]), P3["d"] * this["d"]);
},
/**
* Calculates the fractional lcm of two rational numbers
*
* Ex: new Fraction(5,8).lcm(3,7) => 15
*/
"lcm": function(a, b) {
parse(a, b);
if (P3["n"] === 0 && this["n"] === 0) {
return newFraction(0, 1);
}
return newFraction(P3["n"] * this["n"], gcd(P3["n"], this["n"]) * gcd(P3["d"], this["d"]));
},
/**
* Calculates the ceil of a rational number
*
* Ex: new Fraction('4.(3)').ceil() => (5 / 1)
**/
"ceil": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return newFraction(Math.ceil(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Calculates the floor of a rational number
*
* Ex: new Fraction('4.(3)').floor() => (4 / 1)
**/
"floor": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return newFraction(Math.floor(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Rounds a rational numbers
*
* Ex: new Fraction('4.(3)').round() => (4 / 1)
**/
"round": function(places) {
places = Math.pow(10, places || 0);
if (isNaN(this["n"]) || isNaN(this["d"])) {
return new Fraction2(NaN);
}
return newFraction(Math.round(places * this["s"] * this["n"] / this["d"]), places);
},
/**
* Gets the inverse of the fraction, means numerator and denominator are exchanged
*
* Ex: new Fraction([-3, 4]).inverse() => -4 / 3
**/
"inverse": function() {
return newFraction(this["s"] * this["d"], this["n"]);
},
/**
* Calculates the fraction to some rational exponent, if possible
*
* Ex: new Fraction(-1,2).pow(-3) => -8
*/
"pow": function(a, b) {
parse(a, b);
if (P3["d"] === 1) {
if (P3["s"] < 0) {
return newFraction(Math.pow(this["s"] * this["d"], P3["n"]), Math.pow(this["n"], P3["n"]));
} else {
return newFraction(Math.pow(this["s"] * this["n"], P3["n"]), Math.pow(this["d"], P3["n"]));
}
}
if (this["s"] < 0)
return null;
var N = factorize(this["n"]);
var D = factorize(this["d"]);
var n = 1;
var d = 1;
for (var k in N) {
if (k === "1")
continue;
if (k === "0") {
n = 0;
break;
}
N[k] *= P3["n"];
if (N[k] % P3["d"] === 0) {
N[k] /= P3["d"];
} else
return null;
n *= Math.pow(k, N[k]);
}
for (var k in D) {
if (k === "1")
continue;
D[k] *= P3["n"];
if (D[k] % P3["d"] === 0) {
D[k] /= P3["d"];
} else
return null;
d *= Math.pow(k, D[k]);
}
if (P3["s"] < 0) {
return newFraction(d, n);
}
return newFraction(n, d);
},
/**
* Check if two rational numbers are the same
*
* Ex: new Fraction(19.6).equals([98, 5]);
**/
"equals": function(a, b) {
parse(a, b);
return this["s"] * this["n"] * P3["d"] === P3["s"] * P3["n"] * this["d"];
},
/**
* Check if two rational numbers are the same
*
* Ex: new Fraction(19.6).equals([98, 5]);
**/
"compare": function(a, b) {
parse(a, b);
var t = this["s"] * this["n"] * P3["d"] - P3["s"] * P3["n"] * this["d"];
return (0 < t) - (t < 0);
},
"simplify": function(eps) {
if (isNaN(this["n"]) || isNaN(this["d"])) {
return this;
}
eps = eps || 1e-3;
var thisABS = this["abs"]();
var cont = thisABS["toContinued"]();
for (var i = 1; i < cont.length; i++) {
var s = newFraction(cont[i - 1], 1);
for (var k = i - 2; k >= 0; k--) {
s = s["inverse"]()["add"](cont[k]);
}
if (Math.abs(s["sub"](thisABS).valueOf()) < eps) {
return s["mul"](this["s"]);
}
}
return this;
},
/**
* Check if two rational numbers are divisible
*
* Ex: new Fraction(19.6).divisible(1.5);
*/
"divisible": function(a, b) {
parse(a, b);
return !(!(P3["n"] * this["d"]) || this["n"] * P3["d"] % (P3["n"] * this["d"]));
},
/**
* Returns a decimal representation of the fraction
*
* Ex: new Fraction("100.'91823'").valueOf() => 100.91823918239183
**/
"valueOf": function() {
return this["s"] * this["n"] / this["d"];
},
/**
* Returns a string-fraction representation of a Fraction object
*
* Ex: new Fraction("1.'3'").toFraction(true) => "4 1/3"
**/
"toFraction": function(excludeWhole) {
var whole, str = "";
var n = this["n"];
var d = this["d"];
if (this["s"] < 0) {
str += "-";
}
if (d === 1) {
str += n;
} else {
if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
str += whole;
str += " ";
n %= d;
}
str += n;
str += "/";
str += d;
}
return str;
},
/**
* Returns a latex representation of a Fraction object
*
* Ex: new Fraction("1.'3'").toLatex() => "\frac{4}{3}"
**/
"toLatex": function(excludeWhole) {
var whole, str = "";
var n = this["n"];
var d = this["d"];
if (this["s"] < 0) {
str += "-";
}
if (d === 1) {
str += n;
} else {
if (excludeWhole && (whole = Math.floor(n / d)) > 0) {
str += whole;
n %= d;
}
str += "\\frac{";
str += n;
str += "}{";
str += d;
str += "}";
}
return str;
},
/**
* Returns an array of continued fraction elements
*
* Ex: new Fraction("7/8").toContinued() => [0,1,7]
*/
"toContinued": function() {
var t;
var a = this["n"];
var b = this["d"];
var res = [];
if (isNaN(a) || isNaN(b)) {
return res;
}
do {
res.push(Math.floor(a / b));
t = a % b;
a = b;
b = t;
} while (a !== 1);
return res;
},
/**
* Creates a string representation of a fraction with all digits
*
* Ex: new Fraction("100.'91823'").toString() => "100.(91823)"
**/
"toString": function(dec) {
var N = this["n"];
var D = this["d"];
if (isNaN(N) || isNaN(D)) {
return "NaN";
}
dec = dec || 15;
var cycLen = cycleLen(N, D);
var cycOff = cycleStart(N, D, cycLen);
var str = this["s"] < 0 ? "-" : "";
str += N / D | 0;
N %= D;
N *= 10;
if (N)
str += ".";
if (cycLen) {
for (var i = cycOff; i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
str += "(";
for (var i = cycLen; i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
str += ")";
} else {
for (var i = dec; N && i--; ) {
str += N / D | 0;
N %= D;
N *= 10;
}
}
return str;
}
};
if (typeof exports === "object") {
Object.defineProperty(Fraction2, "__esModule", { "value": true });
Fraction2["default"] = Fraction2;
Fraction2["Fraction"] = Fraction2;
module2["exports"] = Fraction2;
} else {
root["Fraction"] = Fraction2;
}
})(exports);
}
});
// node_modules/javascript-natural-sort/naturalSort.js
var require_naturalSort = __commonJS({
"node_modules/javascript-natural-sort/naturalSort.js"(exports, module2) {
module2.exports = function naturalSort2(a, b) {
"use strict";
var re = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, sre = /(^[ ]*|[ ]*$)/g, dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, hre = /^0x[0-9a-f]+$/i, ore = /^0/, i = function(s) {
return naturalSort2.insensitive && ("" + s).toLowerCase() || "" + s;
}, x = i(a).replace(sre, "") || "", y = i(b).replace(sre, "") || "", xN = x.replace(re, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"), yN = y.replace(re, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"), xD = parseInt(x.match(hre), 16) || xN.length !== 1 && x.match(dre) && Date.parse(x), yD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null, oFxNcL, oFyNcL;
if (yD) {
if (xD < yD) {
return -1;
} else if (xD > yD) {
return 1;
}
}
for (var cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
oFxNcL = !(xN[cLoc] || "").match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
oFyNcL = !(yN[cLoc] || "").match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
return isNaN(oFxNcL) ? 1 : -1;
} else if (typeof oFxNcL !== typeof oFyNcL) {
oFxNcL += "";
oFyNcL += "";
}
if (oFxNcL < oFyNcL) {
return -1;
}
if (oFxNcL > oFyNcL) {
return 1;
}
}
return 0;
};
}
});
// node_modules/escape-latex/dist/index.js
var require_dist = __commonJS({
"node_modules/escape-latex/dist/index.js"(exports, module2) {
"use strict";
var _extends2 = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var defaultEscapes = {
"{": "\\{",
"}": "\\}",
"\\": "\\textbackslash{}",
"#": "\\#",
$: "\\$",
"%": "\\%",
"&": "\\&",
"^": "\\textasciicircum{}",
_: "\\_",
"~": "\\textasciitilde{}"
};
var formatEscapes = {
"\u2013": "\\--",
"\u2014": "\\---",
" ": "~",
" ": "\\qquad{}",
"\r\n": "\\newline{}",
"\n": "\\newline{}"
};
var defaultEscapeMapFn = function defaultEscapeMapFn2(defaultEscapes2, formatEscapes2) {
return _extends2({}, defaultEscapes2, formatEscapes2);
};
module2.exports = function(str) {
var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$preserveFormatti = _ref.preserveFormatting, preserveFormatting = _ref$preserveFormatti === void 0 ? false : _ref$preserveFormatti, _ref$escapeMapFn = _ref.escapeMapFn, escapeMapFn = _ref$escapeMapFn === void 0 ? defaultEscapeMapFn : _ref$escapeMapFn;
var runningStr = String(str);
var result = "";
var escapes = escapeMapFn(_extends2({}, defaultEscapes), preserveFormatting ? _extends2({}, formatEscapes) : {});
var escapeKeys = Object.keys(escapes);
var _loop = function _loop2() {
var specialCharFound = false;
escapeKeys.forEach(function(key, index) {
if (specialCharFound) {
return;
}
if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {
result += escapes[escapeKeys[index]];
runningStr = runningStr.slice(key.length, runningStr.length);
specialCharFound = true;
}
});
if (!specialCharFound) {
result += runningStr.slice(0, 1);
runningStr = runningStr.slice(1, runningStr.length);
}
};
while (runningStr) {
_loop();
}
return result;
};
}
});
// node_modules/seedrandom/lib/alea.js
var require_alea = __commonJS({
"node_modules/seedrandom/lib/alea.js"(exports, module2) {
(function(global, module3, define2) {
function Alea(seed) {
var me = this, mash = Mash();
me.next = function() {
var t = 2091639 * me.s0 + me.c * 23283064365386963e-26;
me.s0 = me.s1;
me.s1 = me.s2;
return me.s2 = t - (me.c = t | 0);
};
me.c = 1;
me.s0 = mash(" ");
me.s1 = mash(" ");
me.s2 = mash(" ");
me.s0 -= mash(seed);
if (me.s0 < 0) {
me.s0 += 1;
}
me.s1 -= mash(seed);
if (me.s1 < 0) {
me.s1 += 1;
}
me.s2 -= mash(seed);
if (me.s2 < 0) {
me.s2 += 1;
}
mash = null;
}
function copy(f, t) {
t.c = f.c;
t.s0 = f.s0;
t.s1 = f.s1;
t.s2 = f.s2;
return t;
}
function impl(seed, opts) {
var xg = new Alea(seed), state = opts && opts.state, prng = xg.next;
prng.int32 = function() {
return xg.next() * 4294967296 | 0;
};
prng.double = function() {
return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32;
};
prng.quick = prng;
if (state) {
if (typeof state == "object")
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
function Mash() {
var n = 4022871197;
var mash = function(data) {
data = String(data);
for (var i = 0; i < data.length; i++) {
n += data.charCodeAt(i);
var h = 0.02519603282416938 * n;
n = h >>> 0;
h -= n;
h *= n;
n = h >>> 0;
h -= n;
n += h * 4294967296;
}
return (n >>> 0) * 23283064365386963e-26;
};
return mash;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.alea = impl;
}
})(
exports,
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/lib/xor128.js
var require_xor128 = __commonJS({
"node_modules/seedrandom/lib/xor128.js"(exports, module2) {
(function(global, module3, define2) {
function XorGen(seed) {
var me = this, strseed = "";
me.x = 0;
me.y = 0;
me.z = 0;
me.w = 0;
me.next = function() {
var t = me.x ^ me.x << 11;
me.x = me.y;
me.y = me.z;
me.z = me.w;
return me.w ^= me.w >>> 19 ^ t ^ t >>> 8;
};
if (seed === (seed | 0)) {
me.x = seed;
} else {
strseed += seed;
}
for (var k = 0; k < strseed.length + 64; k++) {
me.x ^= strseed.charCodeAt(k) | 0;
me.next();
}
}
function copy(f, t) {
t.x = f.x;
t.y = f.y;
t.z = f.z;
t.w = f.w;
return t;
}
function impl(seed, opts) {
var xg = new XorGen(seed), state = opts && opts.state, prng = function() {
return (xg.next() >>> 0) / 4294967296;
};
prng.double = function() {
do {
var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21);
} while (result === 0);
return result;
};
prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (typeof state == "object")
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.xor128 = impl;
}
})(
exports,
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/lib/xorwow.js
var require_xorwow = __commonJS({
"node_modules/seedrandom/lib/xorwow.js"(exports, module2) {
(function(global, module3, define2) {
function XorGen(seed) {
var me = this, strseed = "";
me.next = function() {
var t = me.x ^ me.x >>> 2;
me.x = me.y;
me.y = me.z;
me.z = me.w;
me.w = me.v;
return (me.d = me.d + 362437 | 0) + (me.v = me.v ^ me.v << 4 ^ (t ^ t << 1)) | 0;
};
me.x = 0;
me.y = 0;
me.z = 0;
me.w = 0;
me.v = 0;
if (seed === (seed | 0)) {
me.x = seed;
} else {
strseed += seed;
}
for (var k = 0; k < strseed.length + 64; k++) {
me.x ^= strseed.charCodeAt(k) | 0;
if (k == strseed.length) {
me.d = me.x << 10 ^ me.x >>> 4;
}
me.next();
}
}
function copy(f, t) {
t.x = f.x;
t.y = f.y;
t.z = f.z;
t.w = f.w;
t.v = f.v;
t.d = f.d;
return t;
}
function impl(seed, opts) {
var xg = new XorGen(seed), state = opts && opts.state, prng = function() {
return (xg.next() >>> 0) / 4294967296;
};
prng.double = function() {
do {
var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21);
} while (result === 0);
return result;
};
prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (typeof state == "object")
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.xorwow = impl;
}
})(
exports,
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/lib/xorshift7.js
var require_xorshift7 = __commonJS({
"node_modules/seedrandom/lib/xorshift7.js"(exports, module2) {
(function(global, module3, define2) {
function XorGen(seed) {
var me = this;
me.next = function() {
var X = me.x, i = me.i, t, v, w;
t = X[i];
t ^= t >>> 7;
v = t ^ t << 24;
t = X[i + 1 & 7];
v ^= t ^ t >>> 10;
t = X[i + 3 & 7];
v ^= t ^ t >>> 3;
t = X[i + 4 & 7];
v ^= t ^ t << 7;
t = X[i + 7 & 7];
t = t ^ t << 13;
v ^= t ^ t << 9;
X[i] = v;
me.i = i + 1 & 7;
return v;
};
function init(me2, seed2) {
var j, w, X = [];
if (seed2 === (seed2 | 0)) {
w = X[0] = seed2;
} else {
seed2 = "" + seed2;
for (j = 0; j < seed2.length; ++j) {
X[j & 7] = X[j & 7] << 15 ^ seed2.charCodeAt(j) + X[j + 1 & 7] << 13;
}
}
while (X.length < 8)
X.push(0);
for (j = 0; j < 8 && X[j] === 0; ++j)
;
if (j == 8)
w = X[7] = -1;
else
w = X[j];
me2.x = X;
me2.i = 0;
for (j = 256; j > 0; --j) {
me2.next();
}
}
init(me, seed);
}
function copy(f, t) {
t.x = f.x.slice();
t.i = f.i;
return t;
}
function impl(seed, opts) {
if (seed == null)
seed = +new Date();
var xg = new XorGen(seed), state = opts && opts.state, prng = function() {
return (xg.next() >>> 0) / 4294967296;
};
prng.double = function() {
do {
var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21);
} while (result === 0);
return result;
};
prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (state.x)
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.xorshift7 = impl;
}
})(
exports,
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/lib/xor4096.js
var require_xor4096 = __commonJS({
"node_modules/seedrandom/lib/xor4096.js"(exports, module2) {
(function(global, module3, define2) {
function XorGen(seed) {
var me = this;
me.next = function() {
var w = me.w, X = me.X, i = me.i, t, v;
me.w = w = w + 1640531527 | 0;
v = X[i + 34 & 127];
t = X[i = i + 1 & 127];
v ^= v << 13;
t ^= t << 17;
v ^= v >>> 15;
t ^= t >>> 12;
v = X[i] = v ^ t;
me.i = i;
return v + (w ^ w >>> 16) | 0;
};
function init(me2, seed2) {
var t, v, i, j, w, X = [], limit = 128;
if (seed2 === (seed2 | 0)) {
v = seed2;
seed2 = null;
} else {
seed2 = seed2 + "\0";
v = 0;
limit = Math.max(limit, seed2.length);
}
for (i = 0, j = -32; j < limit; ++j) {
if (seed2)
v ^= seed2.charCodeAt((j + 32) % seed2.length);
if (j === 0)
w = v;
v ^= v << 10;
v ^= v >>> 15;
v ^= v << 4;
v ^= v >>> 13;
if (j >= 0) {
w = w + 1640531527 | 0;
t = X[j & 127] ^= v + w;
i = 0 == t ? i + 1 : 0;
}
}
if (i >= 128) {
X[(seed2 && seed2.length || 0) & 127] = -1;
}
i = 127;
for (j = 4 * 128; j > 0; --j) {
v = X[i + 34 & 127];
t = X[i = i + 1 & 127];
v ^= v << 13;
t ^= t << 17;
v ^= v >>> 15;
t ^= t >>> 12;
X[i] = v ^ t;
}
me2.w = w;
me2.X = X;
me2.i = i;
}
init(me, seed);
}
function copy(f, t) {
t.i = f.i;
t.w = f.w;
t.X = f.X.slice();
return t;
}
;
function impl(seed, opts) {
if (seed == null)
seed = +new Date();
var xg = new XorGen(seed), state = opts && opts.state, prng = function() {
return (xg.next() >>> 0) / 4294967296;
};
prng.double = function() {
do {
var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21);
} while (result === 0);
return result;
};
prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (state.X)
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.xor4096 = impl;
}
})(
exports,
// window object or global
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/lib/tychei.js
var require_tychei = __commonJS({
"node_modules/seedrandom/lib/tychei.js"(exports, module2) {
(function(global, module3, define2) {
function XorGen(seed) {
var me = this, strseed = "";
me.next = function() {
var b = me.b, c = me.c, d = me.d, a = me.a;
b = b << 25 ^ b >>> 7 ^ c;
c = c - d | 0;
d = d << 24 ^ d >>> 8 ^ a;
a = a - b | 0;
me.b = b = b << 20 ^ b >>> 12 ^ c;
me.c = c = c - d | 0;
me.d = d << 16 ^ c >>> 16 ^ a;
return me.a = a - b | 0;
};
me.a = 0;
me.b = 0;
me.c = 2654435769 | 0;
me.d = 1367130551;
if (seed === Math.floor(seed)) {
me.a = seed / 4294967296 | 0;
me.b = seed | 0;
} else {
strseed += seed;
}
for (var k = 0; k < strseed.length + 20; k++) {
me.b ^= strseed.charCodeAt(k) | 0;
me.next();
}
}
function copy(f, t) {
t.a = f.a;
t.b = f.b;
t.c = f.c;
t.d = f.d;
return t;
}
;
function impl(seed, opts) {
var xg = new XorGen(seed), state = opts && opts.state, prng = function() {
return (xg.next() >>> 0) / 4294967296;
};
prng.double = function() {
do {
var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21);
} while (result === 0);
return result;
};
prng.int32 = xg.next;
prng.quick = prng;
if (state) {
if (typeof state == "object")
copy(state, xg);
prng.state = function() {
return copy(xg, {});
};
}
return prng;
}
if (module3 && module3.exports) {
module3.exports = impl;
} else if (define2 && define2.amd) {
define2(function() {
return impl;
});
} else {
this.tychei = impl;
}
})(
exports,
typeof module2 == "object" && module2,
// present in node.js
typeof define == "function" && define
// present with an AMD loader
);
}
});
// node_modules/seedrandom/seedrandom.js
var require_seedrandom = __commonJS({
"node_modules/seedrandom/seedrandom.js"(exports, module2) {
(function(global, pool, math2) {
var width = 256, chunks = 6, digits2 = 52, rngname = "random", startdenom = math2.pow(width, chunks), significance = math2.pow(2, digits2), overflow = significance * 2, mask = width - 1, nodecrypto;
function seedrandom2(seed, options, callback) {
var key = [];
options = options == true ? { entropy: true } : options || {};
var shortseed = mixkey(flatten2(
options.entropy ? [seed, tostring(pool)] : seed == null ? autoseed() : seed,
3
), key);
var arc4 = new ARC4(key);
var prng = function() {
var n = arc4.g(chunks), d = startdenom, x = 0;
while (n < significance) {
n = (n + x) * width;
d *= width;
x = arc4.g(1);
}
while (n >= overflow) {
n /= 2;
d /= 2;
x >>>= 1;
}
return (n + x) / d;
};
prng.int32 = function() {
return arc4.g(4) | 0;
};
prng.quick = function() {
return arc4.g(4) / 4294967296;
};
prng.double = prng;
mixkey(tostring(arc4.S), pool);
return (options.pass || callback || function(prng2, seed2, is_math_call, state) {
if (state) {
if (state.S) {
copy(state, arc4);
}
prng2.state = function() {
return copy(arc4, {});
};
}
if (is_math_call) {
math2[rngname] = prng2;
return seed2;
} else
return prng2;
})(
prng,
shortseed,
"global" in options ? options.global : this == math2,
options.state
);
}
function ARC4(key) {
var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];
if (!keylen) {
key = [keylen++];
}
while (i < width) {
s[i] = i++;
}
for (i = 0; i < width; i++) {
s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];
s[j] = t;
}
(me.g = function(count) {
var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S;
while (count--) {
t2 = s2[i2 = mask & i2 + 1];
r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)];
}
me.i = i2;
me.j = j2;
return r;
})(width);
}
function copy(f, t) {
t.i = f.i;
t.j = f.j;
t.S = f.S.slice();
return t;
}
;
function flatten2(obj, depth) {
var result = [], typ = typeof obj, prop;
if (depth && typ == "object") {
for (prop in obj) {
try {
result.push(flatten2(obj[prop], depth - 1));
} catch (e2) {
}
}
}
return result.length ? result : typ == "string" ? obj : obj + "\0";
}
function mixkey(seed, key) {
var stringseed = seed + "", smear, j = 0;
while (j < stringseed.length) {
key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);
}
return tostring(key);
}
function autoseed() {
try {
var out;
if (nodecrypto && (out = nodecrypto.randomBytes)) {
out = out(width);
} else {
out = new Uint8Array(width);
(global.crypto || global.msCrypto).getRandomValues(out);
}
return tostring(out);
} catch (e2) {
var browser = global.navigator, plugins = browser && browser.plugins;
return [+new Date(), global, plugins, global.screen, tostring(pool)];
}
}
function tostring(a) {
return String.fromCharCode.apply(0, a);
}
mixkey(math2.random(), pool);
if (typeof module2 == "object" && module2.exports) {
module2.exports = seedrandom2;
try {
nodecrypto = require("crypto");
} catch (ex) {
}
} else if (typeof define == "function" && define.amd) {
define(function() {
return seedrandom2;
});
} else {
math2["seed" + rngname] = seedrandom2;
}
})(
// global: `self` in browsers (including strict mode and web workers),
// otherwise `this` in Node and other environments
typeof self !== "undefined" ? self : exports,
[],
// pool: entropy pool starts empty
Math
// math: package containing random, pow, and seedrandom
);
}
});
// node_modules/seedrandom/index.js
var require_seedrandom2 = __commonJS({
"node_modules/seedrandom/index.js"(exports, module2) {
var alea = require_alea();
var xor128 = require_xor128();
var xorwow = require_xorwow();
var xorshift7 = require_xorshift7();
var xor4096 = require_xor4096();
var tychei = require_tychei();
var sr = require_seedrandom();
sr.alea = alea;
sr.xor128 = xor128;
sr.xorwow = xorwow;
sr.xorshift7 = xorshift7;
sr.xor4096 = xor4096;
sr.tychei = tychei;
module2.exports = sr;
}
});
// node_modules/tiny-emitter/index.js
var require_tiny_emitter = __commonJS({
"node_modules/tiny-emitter/index.js"(exports, module2) {
function E() {
}
E.prototype = {
on: function(name309, callback, ctx) {
var e2 = this.e || (this.e = {});
(e2[name309] || (e2[name309] = [])).push({
fn: callback,
ctx
});
return this;
},
once: function(name309, callback, ctx) {
var self2 = this;
function listener() {
self2.off(name309, listener);
callback.apply(ctx, arguments);
}
;
listener._ = callback;
return this.on(name309, listener, ctx);
},
emit: function(name309) {
var data = [].slice.call(arguments, 1);
var evtArr = ((this.e || (this.e = {}))[name309] || []).slice();
var i = 0;
var len = evtArr.length;
for (i; i < len; i++) {
evtArr[i].fn.apply(evtArr[i].ctx, data);
}
return this;
},
off: function(name309, callback) {
var e2 = this.e || (this.e = {});
var evts = e2[name309];
var liveEvents = [];
if (evts && callback) {
for (var i = 0, len = evts.length; i < len; i++) {
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
liveEvents.push(evts[i]);
}
}
liveEvents.length ? e2[name309] = liveEvents : delete e2[name309];
return this;
}
};
module2.exports = E;
module2.exports.TinyEmitter = E;
}
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => CalcCraftPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian2 = require("obsidian");
// src/settings.ts
var import_obsidian = require("obsidian");
// src/support.ts
var buyMeACoffee = `
`;
var paypal = `
`;
var revolut = `
`;
// src/settings.ts
var DefaultSettings = {
precision: -1,
showLabels: true,
formula_background_color_toggle: true,
showBorders: true,
digitGrouping: false,
groupingSeparator: ",",
decimalSeparator: ".",
formula_background_error_toggle: true,
formula_background_parents_toggle: true,
formula_background_children_toggle: true,
formula_background_matrix_toggle: true,
formula_background_color_light: "#e0f2ff",
formula_font_color_light: "#008bc7",
formula_background_matrix_light: "#edf3f8",
formula_font_matrix_light: "#3f74ab",
formula_background_error_light: "#ff7aaf",
formula_font_error_light: "#feffc7",
formula_background_parents_light: "#157ca8",
formula_font_parents_light: "#e3f2fe",
formula_background_children_light: "#80f9c5",
formula_font_children_light: "#004480",
formula_background_color_dark: "#393347",
formula_font_color_dark: "#fffafa",
formula_background_matrix_dark: "#393346",
formula_font_matrix_dark: "#ffffff",
formula_background_error_dark: "#5c0000",
formula_font_error_dark: "#eca7a7",
formula_background_parents_dark: "#1f5656",
formula_font_parents_dark: "#dff5fb",
formula_background_children_dark: "#5c5275",
formula_font_children_dark: "#dcffa8",
enableClassFilter: false,
requiredClass: "calccraft"
};
var CalcCraftSettingsTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
}
display() {
const { containerEl } = this;
containerEl.empty();
new import_obsidian.Setting(containerEl).setName("how many decimals").setDesc("use `-1` for default").addText(
(text) => text.setPlaceholder("-1").setValue(this.plugin.settings.precision.toString()).onChange(async (value) => {
const numValue = parseInt(value);
if (isNaN(numValue)) {
this.plugin.settings.precision = -1;
} else {
this.plugin.settings.precision = numValue;
}
await this.plugin.saveSettings();
this.reloadPages();
})
);
new import_obsidian.Setting(containerEl).setName("Enable digit grouping").setDesc("Add thousands separators to large numbers (e.g., 1,234.56)").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.digitGrouping).onChange(async (value) => {
this.plugin.settings.digitGrouping = value;
await this.plugin.saveSettings();
this.display();
this.reloadPages();
})
);
if (this.plugin.settings.digitGrouping) {
new import_obsidian.Setting(containerEl).setName("Grouping separator").setDesc("Character for thousands separator (e.g., ',' for 1,234 or '.' for 1.234 or ' ' for 1 234)").addText(
(text) => text.setPlaceholder(",").setValue(this.plugin.settings.groupingSeparator).onChange(async (value) => {
this.plugin.settings.groupingSeparator = value || ",";
await this.plugin.saveSettings();
this.reloadPages();
})
);
}
new import_obsidian.Setting(containerEl).setName("Decimal separator").setDesc("Character for decimal point (e.g., '.' for 3.14 or ',' for 3,14)").addText(
(text) => text.setPlaceholder(".").setValue(this.plugin.settings.decimalSeparator).onChange(async (value) => {
this.plugin.settings.decimalSeparator = value || ".";
await this.plugin.saveSettings();
this.reloadPages();
})
);
new import_obsidian.Setting(containerEl).setName("show labels").setDesc("show labels.").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.showLabels).onChange(async (value) => {
this.plugin.settings.showLabels = value;
await this.plugin.saveSettings();
this.reloadPages();
})
);
new import_obsidian.Setting(containerEl).setName("show formula cell borders").setDesc("show borders.").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.showBorders).onChange(async (value) => {
this.plugin.settings.showBorders = value;
await this.plugin.saveSettings();
this.reloadPages();
})
);
new import_obsidian.Setting(containerEl).setName("Only process pages with specific cssclass").setDesc("When enabled, only pages with the specified cssclass in frontmatter will be processed").addToggle(
(toggle) => toggle.setValue(this.plugin.settings.enableClassFilter).onChange(async (value) => {
this.plugin.settings.enableClassFilter = value;
await this.plugin.saveSettings();
this.display();
this.reloadPages();
})
);
if (this.plugin.settings.enableClassFilter) {
new import_obsidian.Setting(containerEl).setName("Required cssclass").setDesc("Pages must have this cssclass in frontmatter to be processed").addText((text) => {
text.setPlaceholder("calccraft").setValue(this.plugin.settings.requiredClass).onChange(async (value) => {
this.plugin.settings.requiredClass = value || "calccraft";
await this.plugin.saveSettings();
});
text.inputEl.addEventListener("blur", () => {
this.reloadPages();
});
});
} else {
new import_obsidian.Setting(containerEl).setName("Required cssclass").setDesc("Pages must have this cssclass in frontmatter to be processed (disabled)").addText((text) => {
text.setPlaceholder("calccraft").setValue(this.plugin.settings.requiredClass).setDisabled(true);
text.inputEl.style.opacity = "0.5";
text.inputEl.style.backgroundColor = "#f5f5f5";
});
}
const themes = ["light", "dark"];
themes.forEach((theme) => {
this.containerEl.createEl("h5", {
text: `${theme} theme colors`
});
this.createColorpicker_fg_bg(
containerEl,
"formula's cells color",
"always shown",
`formula_font_color_${theme}`,
`formula_background_color_${theme}`
);
this.createColorpicker_fg_bg(
containerEl,
"error cell color",
"if cell is not computable",
`formula_font_error_${theme}`,
`formula_background_error_${theme}`
);
this.createColorpicker_fg_bg(
containerEl,
"parents cell color",
"When you hover over a cell, highlight the cells upon which this cell depends.",
`formula_font_parents_${theme}`,
`formula_background_parents_${theme}`
);
this.createColorpicker_fg_bg(
containerEl,
"children cell color",
"When you hover over a cell, highlight the cells that depend on this cell.",
`formula_font_children_${theme}`,
`formula_background_children_${theme}`
);
this.createColorpicker_fg_bg(
containerEl,
"matrix cell color",
"[light theme]",
`formula_font_matrix_${theme}`,
`formula_background_matrix_${theme}`
);
});
const div2 = containerEl.createEl("div", {
cls: "advanced-tables-donation"
});
const donateText = document.createElement("p");
donateText.appendText(
"If this plugin adds value for you and you would like to help support continued development, please use the buttons below:"
);
div2.appendChild(donateText);
const parser = new DOMParser();
div2.appendChild(
createDonateButton(
"https://www.paypal.com/paypalme/klaudyu",
parser.parseFromString(paypal, "text/xml").documentElement
)
);
div2.appendChild(
createDonateButton(
"https://www.buymeacoffee.com/klaudyul",
parser.parseFromString(buyMeACoffee, "text/xml").documentElement
)
);
div2.appendChild(
createDonateButton(
"https://revolut.me/klaudyu",
parser.parseFromString(revolut, "text/xml").documentElement
)
);
}
reloadPages() {
this.app.workspace.getLeavesOfType("markdown").forEach((e2) => e2.rebuildView());
}
createColorpicker_fg_bg(containerEl, name309, description, colorfg, colorbg) {
const sett = new import_obsidian.Setting(containerEl).setName(name309).setDesc(description);
const togglename = colorbg.substring(
0,
colorbg.lastIndexOf("_") === -1 ? colorbg.length : colorbg.lastIndexOf("_")
) + "_toggle";
sett.addToggle(
(toggle) => toggle.setValue(this.plugin.settings[togglename]).onChange(async (value) => {
this.plugin.settings[togglename] = value;
await this.plugin.saveSettings();
this.display();
this.reloadPages();
})
);
if (this.plugin.settings[togglename]) {
this.createColorPicker(sett, "font color:", colorfg);
this.createColorPicker(sett, "background color:", colorbg);
}
}
createColorPicker(setting, text, variable) {
this.plugin.cssVariables.push(variable);
const color_picker = createEl(
"input",
{
type: "color",
cls: "settings-color-picker"
},
(el) => {
el.value = this.plugin.settings[variable];
el.onchange = () => {
this.plugin.settings[variable] = el.value;
this.plugin.saveSettings();
document.documentElement.style.setProperty(
"--CalcCraft_" + variable,
this.plugin.settings[variable]
);
};
}
);
setting.controlEl.appendChild(createEl("span", { text }));
setting.controlEl.appendChild(color_picker);
}
};
var createDonateButton = (link, img) => {
const a = document.createElement("a");
a.setAttribute("href", link);
a.addClass("advanced-tables-donate-button");
a.appendChild(img);
return a;
};
// node_modules/@babel/runtime/helpers/esm/extends.js
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
// node_modules/mathjs/lib/esm/core/config.js
var DEFAULT_CONFIG = {
// minimum relative difference between two compared values,
// used by all comparison functions
epsilon: 1e-12,
// type of default matrix output. Choose 'matrix' (default) or 'array'
matrix: "Matrix",
// type of default number output. Choose 'number' (default) 'BigNumber', or 'Fraction
number: "number",
// number of significant digits in BigNumbers
precision: 64,
// predictable output type of functions. When true, output type depends only
// on the input types. When false (default), output type can vary depending
// on input values. For example `math.sqrt(-4)` returns `complex('2i')` when
// predictable is false, and returns `NaN` when true.
predictable: false,
// random seed for seeded pseudo random number generation
// null = randomly seed
randomSeed: null
};
// node_modules/mathjs/lib/esm/utils/is.js
function isNumber(x) {
return typeof x === "number";
}
function isBigNumber(x) {
if (!x || typeof x !== "object" || typeof x.constructor !== "function") {
return false;
}
if (x.isBigNumber === true && typeof x.constructor.prototype === "object" && x.constructor.prototype.isBigNumber === true) {
return true;
}
if (typeof x.constructor.isDecimal === "function" && x.constructor.isDecimal(x) === true) {
return true;
}
return false;
}
function isComplex(x) {
return x && typeof x === "object" && Object.getPrototypeOf(x).isComplex === true || false;
}
function isFraction(x) {
return x && typeof x === "object" && Object.getPrototypeOf(x).isFraction === true || false;
}
function isUnit(x) {
return x && x.constructor.prototype.isUnit === true || false;
}
function isString(x) {
return typeof x === "string";
}
var isArray = Array.isArray;
function isMatrix(x) {
return x && x.constructor.prototype.isMatrix === true || false;
}
function isCollection(x) {
return Array.isArray(x) || isMatrix(x);
}
function isDenseMatrix(x) {
return x && x.isDenseMatrix && x.constructor.prototype.isMatrix === true || false;
}
function isSparseMatrix(x) {
return x && x.isSparseMatrix && x.constructor.prototype.isMatrix === true || false;
}
function isRange(x) {
return x && x.constructor.prototype.isRange === true || false;
}
function isIndex(x) {
return x && x.constructor.prototype.isIndex === true || false;
}
function isBoolean(x) {
return typeof x === "boolean";
}
function isResultSet(x) {
return x && x.constructor.prototype.isResultSet === true || false;
}
function isHelp(x) {
return x && x.constructor.prototype.isHelp === true || false;
}
function isFunction(x) {
return typeof x === "function";
}
function isDate(x) {
return x instanceof Date;
}
function isRegExp(x) {
return x instanceof RegExp;
}
function isObject(x) {
return !!(x && typeof x === "object" && x.constructor === Object && !isComplex(x) && !isFraction(x));
}
function isNull(x) {
return x === null;
}
function isUndefined(x) {
return x === void 0;
}
function isAccessorNode(x) {
return x && x.isAccessorNode === true && x.constructor.prototype.isNode === true || false;
}
function isArrayNode(x) {
return x && x.isArrayNode === true && x.constructor.prototype.isNode === true || false;
}
function isAssignmentNode(x) {
return x && x.isAssignmentNode === true && x.constructor.prototype.isNode === true || false;
}
function isBlockNode(x) {
return x && x.isBlockNode === true && x.constructor.prototype.isNode === true || false;
}
function isConditionalNode(x) {
return x && x.isConditionalNode === true && x.constructor.prototype.isNode === true || false;
}
function isConstantNode(x) {
return x && x.isConstantNode === true && x.constructor.prototype.isNode === true || false;
}
function rule2Node(node) {
return isConstantNode(node) || isOperatorNode(node) && node.args.length === 1 && isConstantNode(node.args[0]) && "-+~".includes(node.op);
}
function isFunctionAssignmentNode(x) {
return x && x.isFunctionAssignmentNode === true && x.constructor.prototype.isNode === true || false;
}
function isFunctionNode(x) {
return x && x.isFunctionNode === true && x.constructor.prototype.isNode === true || false;
}
function isIndexNode(x) {
return x && x.isIndexNode === true && x.constructor.prototype.isNode === true || false;
}
function isNode(x) {
return x && x.isNode === true && x.constructor.prototype.isNode === true || false;
}
function isObjectNode(x) {
return x && x.isObjectNode === true && x.constructor.prototype.isNode === true || false;
}
function isOperatorNode(x) {
return x && x.isOperatorNode === true && x.constructor.prototype.isNode === true || false;
}
function isParenthesisNode(x) {
return x && x.isParenthesisNode === true && x.constructor.prototype.isNode === true || false;
}
function isRangeNode(x) {
return x && x.isRangeNode === true && x.constructor.prototype.isNode === true || false;
}
function isRelationalNode(x) {
return x && x.isRelationalNode === true && x.constructor.prototype.isNode === true || false;
}
function isSymbolNode(x) {
return x && x.isSymbolNode === true && x.constructor.prototype.isNode === true || false;
}
function isChain(x) {
return x && x.constructor.prototype.isChain === true || false;
}
function typeOf(x) {
var t = typeof x;
if (t === "object") {
if (x === null)
return "null";
if (isBigNumber(x))
return "BigNumber";
if (x.constructor && x.constructor.name)
return x.constructor.name;
return "Object";
}
return t;
}
// node_modules/mathjs/lib/esm/utils/object.js
function clone(x) {
var type = typeof x;
if (type === "number" || type === "string" || type === "boolean" || x === null || x === void 0) {
return x;
}
if (typeof x.clone === "function") {
return x.clone();
}
if (Array.isArray(x)) {
return x.map(function(value) {
return clone(value);
});
}
if (x instanceof Date)
return new Date(x.valueOf());
if (isBigNumber(x))
return x;
if (x instanceof RegExp)
throw new TypeError("Cannot clone " + x);
return mapObject(x, clone);
}
function mapObject(object, callback) {
var clone4 = {};
for (var key in object) {
if (hasOwnProperty(object, key)) {
clone4[key] = callback(object[key]);
}
}
return clone4;
}
function extend(a, b) {
for (var prop in b) {
if (hasOwnProperty(b, prop)) {
a[prop] = b[prop];
}
}
return a;
}
function deepExtend(a, b) {
if (Array.isArray(b)) {
throw new TypeError("Arrays are not supported by deepExtend");
}
for (var prop in b) {
if (hasOwnProperty(b, prop) && !(prop in Object.prototype) && !(prop in Function.prototype)) {
if (b[prop] && b[prop].constructor === Object) {
if (a[prop] === void 0) {
a[prop] = {};
}
if (a[prop] && a[prop].constructor === Object) {
deepExtend(a[prop], b[prop]);
} else {
a[prop] = b[prop];
}
} else if (Array.isArray(b[prop])) {
throw new TypeError("Arrays are not supported by deepExtend");
} else {
a[prop] = b[prop];
}
}
}
return a;
}
function deepStrictEqual(a, b) {
var prop, i, len;
if (Array.isArray(a)) {
if (!Array.isArray(b)) {
return false;
}
if (a.length !== b.length) {
return false;
}
for (i = 0, len = a.length; i < len; i++) {
if (!deepStrictEqual(a[i], b[i])) {
return false;
}
}
return true;
} else if (typeof a === "function") {
return a === b;
} else if (a instanceof Object) {
if (Array.isArray(b) || !(b instanceof Object)) {
return false;
}
for (prop in a) {
if (!(prop in b) || !deepStrictEqual(a[prop], b[prop])) {
return false;
}
}
for (prop in b) {
if (!(prop in a)) {
return false;
}
}
return true;
} else {
return a === b;
}
}
function deepFlatten(nestedObject) {
var flattenedObject = {};
_deepFlatten(nestedObject, flattenedObject);
return flattenedObject;
}
function _deepFlatten(nestedObject, flattenedObject) {
for (var prop in nestedObject) {
if (hasOwnProperty(nestedObject, prop)) {
var value = nestedObject[prop];
if (typeof value === "object" && value !== null) {
_deepFlatten(value, flattenedObject);
} else {
flattenedObject[prop] = value;
}
}
}
}
function lazy(object, prop, valueResolver) {
var _uninitialized = true;
var _value;
Object.defineProperty(object, prop, {
get: function get() {
if (_uninitialized) {
_value = valueResolver();
_uninitialized = false;
}
return _value;
},
set: function set(value) {
_value = value;
_uninitialized = false;
},
configurable: true,
enumerable: true
});
}
function hasOwnProperty(object, property) {
return object && Object.hasOwnProperty.call(object, property);
}
function isLegacyFactory(object) {
return object && typeof object.factory === "function";
}
function pickShallow(object, properties2) {
var copy = {};
for (var i = 0; i < properties2.length; i++) {
var key = properties2[i];
var value = object[key];
if (value !== void 0) {
copy[key] = value;
}
}
return copy;
}
function values(object) {
return Object.keys(object).map((key) => object[key]);
}
// node_modules/mathjs/lib/esm/core/function/config.js
var MATRIX_OPTIONS = ["Matrix", "Array"];
var NUMBER_OPTIONS = ["number", "BigNumber", "Fraction"];
function configFactory(config2, emit) {
function _config(options) {
if (options) {
var prev = mapObject(config2, clone);
validateOption(options, "matrix", MATRIX_OPTIONS);
validateOption(options, "number", NUMBER_OPTIONS);
deepExtend(config2, options);
var curr = mapObject(config2, clone);
var changes = mapObject(options, clone);
emit("config", curr, prev, changes);
return curr;
} else {
return mapObject(config2, clone);
}
}
_config.MATRIX_OPTIONS = MATRIX_OPTIONS;
_config.NUMBER_OPTIONS = NUMBER_OPTIONS;
Object.keys(DEFAULT_CONFIG).forEach((key) => {
Object.defineProperty(_config, key, {
get: () => config2[key],
enumerable: true,
configurable: true
});
});
return _config;
}
function contains(array, item) {
return array.indexOf(item) !== -1;
}
function validateOption(options, name309, values2) {
if (options[name309] !== void 0 && !contains(values2, options[name309])) {
console.warn('Warning: Unknown value "' + options[name309] + '" for configuration option "' + name309 + '". Available options: ' + values2.map((value) => JSON.stringify(value)).join(", ") + ".");
}
}
// node_modules/mathjs/lib/esm/factoriesAny.js
var factoriesAny_exports = {};
__export(factoriesAny_exports, {
createAbs: () => createAbs,
createAccessorNode: () => createAccessorNode,
createAcos: () => createAcos,
createAcosh: () => createAcosh,
createAcot: () => createAcot,
createAcoth: () => createAcoth,
createAcsc: () => createAcsc,
createAcsch: () => createAcsch,
createAdd: () => createAdd,
createAddScalar: () => createAddScalar,
createAnd: () => createAnd,
createApply: () => createApply,
createApplyTransform: () => createApplyTransform,
createArg: () => createArg,
createArrayNode: () => createArrayNode,
createAsec: () => createAsec,
createAsech: () => createAsech,
createAsin: () => createAsin,
createAsinh: () => createAsinh,
createAssignmentNode: () => createAssignmentNode,
createAtan: () => createAtan,
createAtan2: () => createAtan2,
createAtanh: () => createAtanh,
createAtomicMass: () => createAtomicMass,
createAvogadro: () => createAvogadro,
createBellNumbers: () => createBellNumbers,
createBigNumberClass: () => createBigNumberClass,
createBignumber: () => createBignumber,
createBin: () => createBin,
createBitAnd: () => createBitAnd,
createBitNot: () => createBitNot,
createBitOr: () => createBitOr,
createBitXor: () => createBitXor,
createBlockNode: () => createBlockNode,
createBohrMagneton: () => createBohrMagneton,
createBohrRadius: () => createBohrRadius,
createBoltzmann: () => createBoltzmann,
createBoolean: () => createBoolean,
createCatalan: () => createCatalan,
createCbrt: () => createCbrt,
createCeil: () => createCeil,
createChain: () => createChain,
createChainClass: () => createChainClass,
createClassicalElectronRadius: () => createClassicalElectronRadius,
createClone: () => createClone,
createColumn: () => createColumn,
createColumnTransform: () => createColumnTransform,
createCombinations: () => createCombinations,
createCombinationsWithRep: () => createCombinationsWithRep,
createCompare: () => createCompare,
createCompareNatural: () => createCompareNatural,
createCompareText: () => createCompareText,
createCompile: () => createCompile,
createComplex: () => createComplex,
createComplexClass: () => createComplexClass,
createComposition: () => createComposition,
createConcat: () => createConcat,
createConcatTransform: () => createConcatTransform,
createConditionalNode: () => createConditionalNode,
createConductanceQuantum: () => createConductanceQuantum,
createConj: () => createConj,
createConstantNode: () => createConstantNode,
createCorr: () => createCorr,
createCos: () => createCos,
createCosh: () => createCosh,
createCot: () => createCot,
createCoth: () => createCoth,
createCoulomb: () => createCoulomb,
createCount: () => createCount,
createCreateUnit: () => createCreateUnit,
createCross: () => createCross,
createCsc: () => createCsc,
createCsch: () => createCsch,
createCtranspose: () => createCtranspose,
createCube: () => createCube,
createCumSum: () => createCumSum,
createCumSumTransform: () => createCumSumTransform,
createDeepEqual: () => createDeepEqual,
createDenseMatrixClass: () => createDenseMatrixClass,
createDerivative: () => createDerivative,
createDet: () => createDet,
createDeuteronMass: () => createDeuteronMass,
createDiag: () => createDiag,
createDiff: () => createDiff,
createDiffTransform: () => createDiffTransform,
createDistance: () => createDistance,
createDivide: () => createDivide,
createDivideScalar: () => createDivideScalar,
createDot: () => createDot,
createDotDivide: () => createDotDivide,
createDotMultiply: () => createDotMultiply,
createDotPow: () => createDotPow,
createE: () => createE,
createEfimovFactor: () => createEfimovFactor,
createEigs: () => createEigs,
createElectricConstant: () => createElectricConstant,
createElectronMass: () => createElectronMass,
createElementaryCharge: () => createElementaryCharge,
createEqual: () => createEqual,
createEqualScalar: () => createEqualScalar,
createEqualText: () => createEqualText,
createErf: () => createErf,
createEvaluate: () => createEvaluate,
createExp: () => createExp,
createExpm: () => createExpm,
createExpm1: () => createExpm1,
createFactorial: () => createFactorial,
createFalse: () => createFalse,
createFaraday: () => createFaraday,
createFermiCoupling: () => createFermiCoupling,
createFft: () => createFft,
createFibonacciHeapClass: () => createFibonacciHeapClass,
createFilter: () => createFilter,
createFilterTransform: () => createFilterTransform,
createFineStructure: () => createFineStructure,
createFirstRadiation: () => createFirstRadiation,
createFix: () => createFix,
createFlatten: () => createFlatten,
createFloor: () => createFloor,
createForEach: () => createForEach,
createForEachTransform: () => createForEachTransform,
createFormat: () => createFormat,
createFraction: () => createFraction,
createFractionClass: () => createFractionClass,
createFreqz: () => createFreqz,
createFunctionAssignmentNode: () => createFunctionAssignmentNode,
createFunctionNode: () => createFunctionNode,
createGamma: () => createGamma,
createGasConstant: () => createGasConstant,
createGcd: () => createGcd,
createGetMatrixDataType: () => createGetMatrixDataType,
createGravitationConstant: () => createGravitationConstant,
createGravity: () => createGravity,
createHartreeEnergy: () => createHartreeEnergy,
createHasNumericValue: () => createHasNumericValue,
createHelp: () => createHelp,
createHelpClass: () => createHelpClass,
createHex: () => createHex,
createHypot: () => createHypot,
createI: () => createI,
createIdentity: () => createIdentity,
createIfft: () => createIfft,
createIm: () => createIm,
createImmutableDenseMatrixClass: () => createImmutableDenseMatrixClass,
createIndex: () => createIndex,
createIndexClass: () => createIndexClass,
createIndexNode: () => createIndexNode,
createIndexTransform: () => createIndexTransform,
createInfinity: () => createInfinity,
createIntersect: () => createIntersect,
createInv: () => createInv,
createInverseConductanceQuantum: () => createInverseConductanceQuantum,
createInvmod: () => createInvmod,
createIsInteger: () => createIsInteger,
createIsNaN: () => createIsNaN,
createIsNegative: () => createIsNegative,
createIsNumeric: () => createIsNumeric,
createIsPositive: () => createIsPositive,
createIsPrime: () => createIsPrime,
createIsZero: () => createIsZero,
createKldivergence: () => createKldivergence,
createKlitzing: () => createKlitzing,
createKron: () => createKron,
createLN10: () => createLN10,
createLN2: () => createLN2,
createLOG10E: () => createLOG10E,
createLOG2E: () => createLOG2E,
createLarger: () => createLarger,
createLargerEq: () => createLargerEq,
createLcm: () => createLcm,
createLeafCount: () => createLeafCount,
createLeftShift: () => createLeftShift,
createLgamma: () => createLgamma,
createLog: () => createLog,
createLog10: () => createLog10,
createLog1p: () => createLog1p,
createLog2: () => createLog2,
createLoschmidt: () => createLoschmidt,
createLsolve: () => createLsolve,
createLsolveAll: () => createLsolveAll,
createLup: () => createLup,
createLusolve: () => createLusolve,
createLyap: () => createLyap,
createMad: () => createMad,
createMagneticConstant: () => createMagneticConstant,
createMagneticFluxQuantum: () => createMagneticFluxQuantum,
createMap: () => createMap2,
createMapTransform: () => createMapTransform,
createMatrix: () => createMatrix,
createMatrixClass: () => createMatrixClass,
createMatrixFromColumns: () => createMatrixFromColumns,
createMatrixFromFunction: () => createMatrixFromFunction,
createMatrixFromRows: () => createMatrixFromRows,
createMax: () => createMax,
createMaxTransform: () => createMaxTransform,
createMean: () => createMean,
createMeanTransform: () => createMeanTransform,
createMedian: () => createMedian,
createMin: () => createMin,
createMinTransform: () => createMinTransform,
createMod: () => createMod,
createMode: () => createMode,
createMolarMass: () => createMolarMass,
createMolarMassC12: () => createMolarMassC12,
createMolarPlanckConstant: () => createMolarPlanckConstant,
createMolarVolume: () => createMolarVolume,
createMultinomial: () => createMultinomial,
createMultiply: () => createMultiply,
createMultiplyScalar: () => createMultiplyScalar,
createNaN: () => createNaN,
createNeutronMass: () => createNeutronMass,
createNode: () => createNode,
createNorm: () => createNorm,
createNot: () => createNot,
createNthRoot: () => createNthRoot,
createNthRoots: () => createNthRoots,
createNuclearMagneton: () => createNuclearMagneton,
createNull: () => createNull,
createNumber: () => createNumber,
createNumeric: () => createNumeric,
createObjectNode: () => createObjectNode,
createOct: () => createOct,
createOnes: () => createOnes,
createOperatorNode: () => createOperatorNode,
createOr: () => createOr,
createParenthesisNode: () => createParenthesisNode,
createParse: () => createParse,
createParser: () => createParser,
createParserClass: () => createParserClass,
createPartitionSelect: () => createPartitionSelect,
createPermutations: () => createPermutations,
createPhi: () => createPhi,
createPi: () => createPi,
createPickRandom: () => createPickRandom,
createPinv: () => createPinv,
createPlanckCharge: () => createPlanckCharge,
createPlanckConstant: () => createPlanckConstant,
createPlanckLength: () => createPlanckLength,
createPlanckMass: () => createPlanckMass,
createPlanckTemperature: () => createPlanckTemperature,
createPlanckTime: () => createPlanckTime,
createPolynomialRoot: () => createPolynomialRoot,
createPow: () => createPow,
createPrint: () => createPrint,
createPrintTransform: () => createPrintTransform,
createProd: () => createProd,
createProtonMass: () => createProtonMass,
createQr: () => createQr,
createQuantileSeq: () => createQuantileSeq,
createQuantileSeqTransform: () => createQuantileSeqTransform,
createQuantumOfCirculation: () => createQuantumOfCirculation,
createRandom: () => createRandom,
createRandomInt: () => createRandomInt,
createRange: () => createRange,
createRangeClass: () => createRangeClass,
createRangeNode: () => createRangeNode,
createRangeTransform: () => createRangeTransform,
createRationalize: () => createRationalize,
createRe: () => createRe,
createReducedPlanckConstant: () => createReducedPlanckConstant,
createRelationalNode: () => createRelationalNode,
createReplacer: () => createReplacer,
createReshape: () => createReshape,
createResize: () => createResize,
createResolve: () => createResolve,
createResultSet: () => createResultSet,
createReviver: () => createReviver,
createRightArithShift: () => createRightArithShift,
createRightLogShift: () => createRightLogShift,
createRotate: () => createRotate,
createRotationMatrix: () => createRotationMatrix,
createRound: () => createRound,
createRow: () => createRow,
createRowTransform: () => createRowTransform,
createRydberg: () => createRydberg,
createSQRT1_2: () => createSQRT1_2,
createSQRT2: () => createSQRT2,
createSackurTetrode: () => createSackurTetrode,
createSchur: () => createSchur,
createSec: () => createSec,
createSech: () => createSech,
createSecondRadiation: () => createSecondRadiation,
createSetCartesian: () => createSetCartesian,
createSetDifference: () => createSetDifference,
createSetDistinct: () => createSetDistinct,
createSetIntersect: () => createSetIntersect,
createSetIsSubset: () => createSetIsSubset,
createSetMultiplicity: () => createSetMultiplicity,
createSetPowerset: () => createSetPowerset,
createSetSize: () => createSetSize,
createSetSymDifference: () => createSetSymDifference,
createSetUnion: () => createSetUnion,
createSign: () => createSign,
createSimplify: () => createSimplify,
createSimplifyConstant: () => createSimplifyConstant,
createSimplifyCore: () => createSimplifyCore,
createSin: () => createSin,
createSinh: () => createSinh,
createSize: () => createSize,
createSlu: () => createSlu,
createSmaller: () => createSmaller,
createSmallerEq: () => createSmallerEq,
createSolveODE: () => createSolveODE,
createSort: () => createSort,
createSpaClass: () => createSpaClass,
createSparse: () => createSparse,
createSparseMatrixClass: () => createSparseMatrixClass,
createSpeedOfLight: () => createSpeedOfLight,
createSplitUnit: () => createSplitUnit,
createSqrt: () => createSqrt,
createSqrtm: () => createSqrtm,
createSquare: () => createSquare,
createSqueeze: () => createSqueeze,
createStd: () => createStd,
createStdTransform: () => createStdTransform,
createStefanBoltzmann: () => createStefanBoltzmann,
createStirlingS2: () => createStirlingS2,
createString: () => createString,
createSubset: () => createSubset,
createSubsetTransform: () => createSubsetTransform,
createSubtract: () => createSubtract,
createSum: () => createSum,
createSumTransform: () => createSumTransform,
createSylvester: () => createSylvester,
createSymbolNode: () => createSymbolNode,
createSymbolicEqual: () => createSymbolicEqual,
createTan: () => createTan,
createTanh: () => createTanh,
createTau: () => createTau,
createThomsonCrossSection: () => createThomsonCrossSection,
createTo: () => createTo,
createTrace: () => createTrace,
createTranspose: () => createTranspose,
createTrue: () => createTrue,
createTypeOf: () => createTypeOf,
createTyped: () => createTyped,
createUnaryMinus: () => createUnaryMinus,
createUnaryPlus: () => createUnaryPlus,
createUnequal: () => createUnequal,
createUnitClass: () => createUnitClass,
createUnitFunction: () => createUnitFunction,
createUppercaseE: () => createUppercaseE,
createUppercasePi: () => createUppercasePi,
createUsolve: () => createUsolve,
createUsolveAll: () => createUsolveAll,
createVacuumImpedance: () => createVacuumImpedance,
createVariance: () => createVariance,
createVarianceTransform: () => createVarianceTransform,
createVersion: () => createVersion,
createWeakMixingAngle: () => createWeakMixingAngle,
createWienDisplacement: () => createWienDisplacement,
createXgcd: () => createXgcd,
createXor: () => createXor,
createZeros: () => createZeros,
createZeta: () => createZeta,
createZpk2tf: () => createZpk2tf
});
// node_modules/mathjs/lib/esm/core/function/typed.js
var import_typed_function = __toESM(require_typed_function(), 1);
// node_modules/mathjs/lib/esm/utils/number.js
function isInteger(value) {
if (typeof value === "boolean") {
return true;
}
return isFinite(value) ? value === Math.round(value) : false;
}
var sign = Math.sign || function(x) {
if (x > 0) {
return 1;
} else if (x < 0) {
return -1;
} else {
return 0;
}
};
var log2 = Math.log2 || function log22(x) {
return Math.log(x) / Math.LN2;
};
var log10 = Math.log10 || function log102(x) {
return Math.log(x) / Math.LN10;
};
var log1p = Math.log1p || function(x) {
return Math.log(x + 1);
};
var cbrt = Math.cbrt || function cbrt2(x) {
if (x === 0) {
return x;
}
var negate = x < 0;
var result;
if (negate) {
x = -x;
}
if (isFinite(x)) {
result = Math.exp(Math.log(x) / 3);
result = (x / (result * result) + 2 * result) / 3;
} else {
result = x;
}
return negate ? -result : result;
};
var expm1 = Math.expm1 || function expm12(x) {
return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;
};
function formatNumberToBase(n, base, size) {
var prefixes = {
2: "0b",
8: "0o",
16: "0x"
};
var prefix = prefixes[base];
var suffix = "";
if (size) {
if (size < 1) {
throw new Error("size must be in greater than 0");
}
if (!isInteger(size)) {
throw new Error("size must be an integer");
}
if (n > 2 ** (size - 1) - 1 || n < -(2 ** (size - 1))) {
throw new Error("Value must be in range [-2^".concat(size - 1, ", 2^").concat(size - 1, "-1]"));
}
if (!isInteger(n)) {
throw new Error("Value must be an integer");
}
if (n < 0) {
n = n + 2 ** size;
}
suffix = "i".concat(size);
}
var sign3 = "";
if (n < 0) {
n = -n;
sign3 = "-";
}
return "".concat(sign3).concat(prefix).concat(n.toString(base)).concat(suffix);
}
function format(value, options) {
if (typeof options === "function") {
return options(value);
}
if (value === Infinity) {
return "Infinity";
} else if (value === -Infinity) {
return "-Infinity";
} else if (isNaN(value)) {
return "NaN";
}
var notation = "auto";
var precision;
var wordSize;
if (options) {
if (options.notation) {
notation = options.notation;
}
if (isNumber(options)) {
precision = options;
} else if (isNumber(options.precision)) {
precision = options.precision;
}
if (options.wordSize) {
wordSize = options.wordSize;
if (typeof wordSize !== "number") {
throw new Error('Option "wordSize" must be a number');
}
}
}
switch (notation) {
case "fixed":
return toFixed(value, precision);
case "exponential":
return toExponential(value, precision);
case "engineering":
return toEngineering(value, precision);
case "bin":
return formatNumberToBase(value, 2, wordSize);
case "oct":
return formatNumberToBase(value, 8, wordSize);
case "hex":
return formatNumberToBase(value, 16, wordSize);
case "auto":
return toPrecision(value, precision, options && options).replace(/((\.\d*?)(0+))($|e)/, function() {
var digits2 = arguments[2];
var e2 = arguments[4];
return digits2 !== "." ? digits2 + e2 : e2;
});
default:
throw new Error('Unknown notation "' + notation + '". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.');
}
}
function splitNumber(value) {
var match = String(value).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);
if (!match) {
throw new SyntaxError("Invalid number " + value);
}
var sign3 = match[1];
var digits2 = match[2];
var exponent = parseFloat(match[4] || "0");
var dot = digits2.indexOf(".");
exponent += dot !== -1 ? dot - 1 : digits2.length - 1;
var coefficients = digits2.replace(".", "").replace(/^0*/, function(zeros2) {
exponent -= zeros2.length;
return "";
}).replace(/0*$/, "").split("").map(function(d) {
return parseInt(d);
});
if (coefficients.length === 0) {
coefficients.push(0);
exponent++;
}
return {
sign: sign3,
coefficients,
exponent
};
}
function toEngineering(value, precision) {
if (isNaN(value) || !isFinite(value)) {
return String(value);
}
var split = splitNumber(value);
var rounded = roundDigits(split, precision);
var e2 = rounded.exponent;
var c = rounded.coefficients;
var newExp = e2 % 3 === 0 ? e2 : e2 < 0 ? e2 - 3 - e2 % 3 : e2 - e2 % 3;
if (isNumber(precision)) {
while (precision > c.length || e2 - newExp + 1 > c.length) {
c.push(0);
}
} else {
var missingZeros = Math.abs(e2 - newExp) - (c.length - 1);
for (var i = 0; i < missingZeros; i++) {
c.push(0);
}
}
var expDiff = Math.abs(e2 - newExp);
var decimalIdx = 1;
while (expDiff > 0) {
decimalIdx++;
expDiff--;
}
var decimals = c.slice(decimalIdx).join("");
var decimalVal = isNumber(precision) && decimals.length || decimals.match(/[1-9]/) ? "." + decimals : "";
var str = c.slice(0, decimalIdx).join("") + decimalVal + "e" + (e2 >= 0 ? "+" : "") + newExp.toString();
return rounded.sign + str;
}
function toFixed(value, precision) {
if (isNaN(value) || !isFinite(value)) {
return String(value);
}
var splitValue = splitNumber(value);
var rounded = typeof precision === "number" ? roundDigits(splitValue, splitValue.exponent + 1 + precision) : splitValue;
var c = rounded.coefficients;
var p = rounded.exponent + 1;
var pp = p + (precision || 0);
if (c.length < pp) {
c = c.concat(zeros(pp - c.length));
}
if (p < 0) {
c = zeros(-p + 1).concat(c);
p = 1;
}
if (p < c.length) {
c.splice(p, 0, p === 0 ? "0." : ".");
}
return rounded.sign + c.join("");
}
function toExponential(value, precision) {
if (isNaN(value) || !isFinite(value)) {
return String(value);
}
var split = splitNumber(value);
var rounded = precision ? roundDigits(split, precision) : split;
var c = rounded.coefficients;
var e2 = rounded.exponent;
if (c.length < precision) {
c = c.concat(zeros(precision - c.length));
}
var first = c.shift();
return rounded.sign + first + (c.length > 0 ? "." + c.join("") : "") + "e" + (e2 >= 0 ? "+" : "") + e2;
}
function toPrecision(value, precision, options) {
if (isNaN(value) || !isFinite(value)) {
return String(value);
}
var lowerExp = options && options.lowerExp !== void 0 ? options.lowerExp : -3;
var upperExp = options && options.upperExp !== void 0 ? options.upperExp : 5;
var split = splitNumber(value);
var rounded = precision ? roundDigits(split, precision) : split;
if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {
return toExponential(value, precision);
} else {
var c = rounded.coefficients;
var e2 = rounded.exponent;
if (c.length < precision) {
c = c.concat(zeros(precision - c.length));
}
c = c.concat(zeros(e2 - c.length + 1 + (c.length < precision ? precision - c.length : 0)));
c = zeros(-e2).concat(c);
var dot = e2 > 0 ? e2 : 0;
if (dot < c.length - 1) {
c.splice(dot + 1, 0, ".");
}
return rounded.sign + c.join("");
}
}
function roundDigits(split, precision) {
var rounded = {
sign: split.sign,
coefficients: split.coefficients,
exponent: split.exponent
};
var c = rounded.coefficients;
while (precision <= 0) {
c.unshift(0);
rounded.exponent++;
precision++;
}
if (c.length > precision) {
var removed = c.splice(precision, c.length - precision);
if (removed[0] >= 5) {
var i = precision - 1;
c[i]++;
while (c[i] === 10) {
c.pop();
if (i === 0) {
c.unshift(0);
rounded.exponent++;
i++;
}
i--;
c[i]++;
}
}
}
return rounded;
}
function zeros(length) {
var arr = [];
for (var i = 0; i < length; i++) {
arr.push(0);
}
return arr;
}
function digits(value) {
return value.toExponential().replace(/e.*$/, "").replace(/^0\.?0*|\./, "").length;
}
var DBL_EPSILON = Number.EPSILON || 2220446049250313e-31;
function nearlyEqual(x, y, epsilon) {
if (epsilon === null || epsilon === void 0) {
return x === y;
}
if (x === y) {
return true;
}
if (isNaN(x) || isNaN(y)) {
return false;
}
if (isFinite(x) && isFinite(y)) {
var diff = Math.abs(x - y);
if (diff < DBL_EPSILON) {
return true;
} else {
return diff <= Math.max(Math.abs(x), Math.abs(y)) * epsilon;
}
}
return false;
}
var acosh = Math.acosh || function(x) {
return Math.log(Math.sqrt(x * x - 1) + x);
};
var asinh = Math.asinh || function(x) {
return Math.log(Math.sqrt(x * x + 1) + x);
};
var atanh = Math.atanh || function(x) {
return Math.log((1 + x) / (1 - x)) / 2;
};
var cosh = Math.cosh || function(x) {
return (Math.exp(x) + Math.exp(-x)) / 2;
};
var sinh = Math.sinh || function(x) {
return (Math.exp(x) - Math.exp(-x)) / 2;
};
var tanh = Math.tanh || function(x) {
var e2 = Math.exp(2 * x);
return (e2 - 1) / (e2 + 1);
};
function copysign(x, y) {
var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;
var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;
return signx ^ signy ? -x : x;
}
// node_modules/mathjs/lib/esm/utils/bignumber/formatter.js
function formatBigNumberToBase(n, base, size) {
var BigNumberCtor = n.constructor;
var big2 = new BigNumberCtor(2);
var suffix = "";
if (size) {
if (size < 1) {
throw new Error("size must be in greater than 0");
}
if (!isInteger(size)) {
throw new Error("size must be an integer");
}
if (n.greaterThan(big2.pow(size - 1).sub(1)) || n.lessThan(big2.pow(size - 1).mul(-1))) {
throw new Error("Value must be in range [-2^".concat(size - 1, ", 2^").concat(size - 1, "-1]"));
}
if (!n.isInteger()) {
throw new Error("Value must be an integer");
}
if (n.lessThan(0)) {
n = n.add(big2.pow(size));
}
suffix = "i".concat(size);
}
switch (base) {
case 2:
return "".concat(n.toBinary()).concat(suffix);
case 8:
return "".concat(n.toOctal()).concat(suffix);
case 16:
return "".concat(n.toHexadecimal()).concat(suffix);
default:
throw new Error("Base ".concat(base, " not supported "));
}
}
function format2(value, options) {
if (typeof options === "function") {
return options(value);
}
if (!value.isFinite()) {
return value.isNaN() ? "NaN" : value.gt(0) ? "Infinity" : "-Infinity";
}
var notation = "auto";
var precision;
var wordSize;
if (options !== void 0) {
if (options.notation) {
notation = options.notation;
}
if (typeof options === "number") {
precision = options;
} else if (options.precision !== void 0) {
precision = options.precision;
}
if (options.wordSize) {
wordSize = options.wordSize;
if (typeof wordSize !== "number") {
throw new Error('Option "wordSize" must be a number');
}
}
}
switch (notation) {
case "fixed":
return toFixed2(value, precision);
case "exponential":
return toExponential2(value, precision);
case "engineering":
return toEngineering2(value, precision);
case "bin":
return formatBigNumberToBase(value, 2, wordSize);
case "oct":
return formatBigNumberToBase(value, 8, wordSize);
case "hex":
return formatBigNumberToBase(value, 16, wordSize);
case "auto": {
var lowerExp = options && options.lowerExp !== void 0 ? options.lowerExp : -3;
var upperExp = options && options.upperExp !== void 0 ? options.upperExp : 5;
if (value.isZero())
return "0";
var str;
var rounded = value.toSignificantDigits(precision);
var exp2 = rounded.e;
if (exp2 >= lowerExp && exp2 < upperExp) {
str = rounded.toFixed();
} else {
str = toExponential2(value, precision);
}
return str.replace(/((\.\d*?)(0+))($|e)/, function() {
var digits2 = arguments[2];
var e2 = arguments[4];
return digits2 !== "." ? digits2 + e2 : e2;
});
}
default:
throw new Error('Unknown notation "' + notation + '". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.');
}
}
function toEngineering2(value, precision) {
var e2 = value.e;
var newExp = e2 % 3 === 0 ? e2 : e2 < 0 ? e2 - 3 - e2 % 3 : e2 - e2 % 3;
var valueWithoutExp = value.mul(Math.pow(10, -newExp));
var valueStr = valueWithoutExp.toPrecision(precision);
if (valueStr.indexOf("e") !== -1) {
var BigNumber = value.constructor;
valueStr = new BigNumber(valueStr).toFixed();
}
return valueStr + "e" + (e2 >= 0 ? "+" : "") + newExp.toString();
}
function toExponential2(value, precision) {
if (precision !== void 0) {
return value.toExponential(precision - 1);
} else {
return value.toExponential();
}
}
function toFixed2(value, precision) {
return value.toFixed(precision);
}
// node_modules/mathjs/lib/esm/utils/string.js
function endsWith(text, search) {
var start = text.length - search.length;
var end = text.length;
return text.substring(start, end) === search;
}
function format3(value, options) {
var result = _format(value, options);
if (options && typeof options === "object" && "truncate" in options && result.length > options.truncate) {
return result.substring(0, options.truncate - 3) + "...";
}
return result;
}
function _format(value, options) {
if (typeof value === "number") {
return format(value, options);
}
if (isBigNumber(value)) {
return format2(value, options);
}
if (looksLikeFraction(value)) {
if (!options || options.fraction !== "decimal") {
return value.s * value.n + "/" + value.d;
} else {
return value.toString();
}
}
if (Array.isArray(value)) {
return formatArray(value, options);
}
if (isString(value)) {
return '"' + value + '"';
}
if (typeof value === "function") {
return value.syntax ? String(value.syntax) : "function";
}
if (value && typeof value === "object") {
if (typeof value.format === "function") {
return value.format(options);
} else if (value && value.toString(options) !== {}.toString()) {
return value.toString(options);
} else {
var entries = Object.keys(value).map((key) => {
return '"' + key + '": ' + format3(value[key], options);
});
return "{" + entries.join(", ") + "}";
}
}
return String(value);
}
function stringify(value) {
var text = String(value);
var escaped = "";
var i = 0;
while (i < text.length) {
var c = text.charAt(i);
if (c === "\\") {
escaped += c;
i++;
c = text.charAt(i);
if (c === "" || '"\\/bfnrtu'.indexOf(c) === -1) {
escaped += "\\";
}
escaped += c;
} else if (c === '"') {
escaped += '\\"';
} else {
escaped += c;
}
i++;
}
return '"' + escaped + '"';
}
function escape(value) {
var text = String(value);
text = text.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(//g, ">");
return text;
}
function formatArray(array, options) {
if (Array.isArray(array)) {
var str = "[";
var len = array.length;
for (var i = 0; i < len; i++) {
if (i !== 0) {
str += ", ";
}
str += formatArray(array[i], options);
}
str += "]";
return str;
} else {
return format3(array, options);
}
}
function looksLikeFraction(value) {
return value && typeof value === "object" && typeof value.s === "number" && typeof value.n === "number" && typeof value.d === "number" || false;
}
function compareText(x, y) {
if (!isString(x)) {
throw new TypeError("Unexpected type of argument in function compareText (expected: string or Array or Matrix, actual: " + typeOf(x) + ", index: 0)");
}
if (!isString(y)) {
throw new TypeError("Unexpected type of argument in function compareText (expected: string or Array or Matrix, actual: " + typeOf(y) + ", index: 1)");
}
return x === y ? 0 : x > y ? 1 : -1;
}
// node_modules/mathjs/lib/esm/error/DimensionError.js
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;
// node_modules/mathjs/lib/esm/error/IndexError.js
function IndexError(index, min2, max2) {
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 = min2;
} else {
this.min = min2;
this.max = max2;
}
if (this.min !== void 0 && this.index < this.min) {
this.message = "Index out of range (" + this.index + " < " + this.min + ")";
} else if (this.max !== void 0 && 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;
// node_modules/mathjs/lib/esm/utils/array.js
function arraySize(x) {
var s = [];
while (Array.isArray(x)) {
s.push(x.length);
x = x[0];
}
return s;
}
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) {
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 {
for (i = 0; i < len; i++) {
if (Array.isArray(array[i])) {
throw new DimensionError(size.length + 1, size.length, ">");
}
}
}
}
function validate(array, size) {
var isScalar = size.length === 0;
if (isScalar) {
if (Array.isArray(array)) {
throw new DimensionError(array.length, 0);
}
} else {
_validate(array, size, 0);
}
}
function validateIndexSourceSize(value, index) {
var valueSize = value.isMatrix ? value._size : arraySize(value);
var sourceSize = index._sourceSize;
sourceSize.forEach((sourceDim, i) => {
if (sourceDim !== null && sourceDim !== valueSize[i]) {
throw new DimensionError(sourceDim, valueSize[i]);
}
});
}
function validateIndex(index, length) {
if (index !== void 0) {
if (!isNumber(index) || !isInteger(index)) {
throw new TypeError("Index must be an integer (value: " + index + ")");
}
if (index < 0 || typeof length === "number" && index >= length) {
throw new IndexError(index, length);
}
}
}
function isEmptyIndex(index) {
for (var i = 0; i < index._dimensions.length; ++i) {
var dimension = index._dimensions[i];
if (dimension._data && isArray(dimension._data)) {
if (dimension._size[0] === 0) {
return true;
}
} else if (dimension.isRange) {
if (dimension.start === dimension.end) {
return true;
}
} else if (isString(dimension)) {
if (dimension.length === 0) {
return true;
}
}
}
return false;
}
function resize(array, size, defaultValue) {
if (!Array.isArray(size)) {
throw new TypeError("Array expected");
}
if (size.length === 0) {
throw new Error("Resizing to scalar is not supported");
}
size.forEach(function(value) {
if (!isNumber(value) || !isInteger(value) || value < 0) {
throw new TypeError("Invalid size, must contain positive integers (size: " + format3(size) + ")");
}
});
if (isNumber(array) || isBigNumber(array)) {
array = [array];
}
var _defaultValue = defaultValue !== void 0 ? defaultValue : 0;
_resize(array, size, 0, _defaultValue);
return array;
}
function _resize(array, size, dim, defaultValue) {
var i;
var elem;
var oldLen = array.length;
var newLen = size[dim];
var minLen = Math.min(oldLen, newLen);
array.length = newLen;
if (dim < size.length - 1) {
var dimNext = dim + 1;
for (i = 0; i < minLen; i++) {
elem = array[i];
if (!Array.isArray(elem)) {
elem = [elem];
array[i] = elem;
}
_resize(elem, size, dimNext, defaultValue);
}
for (i = minLen; i < newLen; i++) {
elem = [];
array[i] = elem;
_resize(elem, size, dimNext, defaultValue);
}
} else {
for (i = 0; i < minLen; i++) {
while (Array.isArray(array[i])) {
array[i] = array[i][0];
}
}
for (i = minLen; i < newLen; i++) {
array[i] = defaultValue;
}
}
}
function reshape(array, sizes) {
var flatArray = flatten(array);
var currentLength = flatArray.length;
if (!Array.isArray(array) || !Array.isArray(sizes)) {
throw new TypeError("Array expected");
}
if (sizes.length === 0) {
throw new DimensionError(0, currentLength, "!=");
}
sizes = processSizesWildcard(sizes, currentLength);
var newLength = product(sizes);
if (currentLength !== newLength) {
throw new DimensionError(newLength, currentLength, "!=");
}
try {
return _reshape(flatArray, sizes);
} catch (e2) {
if (e2 instanceof DimensionError) {
throw new DimensionError(newLength, currentLength, "!=");
}
throw e2;
}
}
function processSizesWildcard(sizes, currentLength) {
var newLength = product(sizes);
var processedSizes = sizes.slice();
var WILDCARD = -1;
var wildCardIndex = sizes.indexOf(WILDCARD);
var isMoreThanOneWildcard = sizes.indexOf(WILDCARD, wildCardIndex + 1) >= 0;
if (isMoreThanOneWildcard) {
throw new Error("More than one wildcard in sizes");
}
var hasWildcard = wildCardIndex >= 0;
var canReplaceWildcard = currentLength % newLength === 0;
if (hasWildcard) {
if (canReplaceWildcard) {
processedSizes[wildCardIndex] = -currentLength / newLength;
} else {
throw new Error("Could not replace wildcard, since " + currentLength + " is no multiple of " + -newLength);
}
}
return processedSizes;
}
function product(array) {
return array.reduce((prev, curr) => prev * curr, 1);
}
function _reshape(array, sizes) {
var tmpArray = array;
var tmpArray2;
for (var sizeIndex = sizes.length - 1; sizeIndex > 0; sizeIndex--) {
var size = sizes[sizeIndex];
tmpArray2 = [];
var length = tmpArray.length / size;
for (var i = 0; i < length; i++) {
tmpArray2.push(tmpArray.slice(i * size, (i + 1) * size));
}
tmpArray = tmpArray2;
}
return tmpArray;
}
function squeeze(array, size) {
var s = size || arraySize(array);
while (Array.isArray(array) && array.length === 1) {
array = array[0];
s.shift();
}
var dims = s.length;
while (s[dims - 1] === 1) {
dims--;
}
if (dims < s.length) {
array = _squeeze(array, dims, 0);
s.length = dims;
}
return array;
}
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;
}
function unsqueeze(array, dims, outer, size) {
var s = size || arraySize(array);
if (outer) {
for (var i = 0; i < outer; i++) {
array = [array];
s.unshift(1);
}
}
array = _unsqueeze(array, dims, 0);
while (s.length < dims) {
s.push(1);
}
return array;
}
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;
}
function flatten(array) {
if (!Array.isArray(array)) {
return array;
}
var flat = [];
array.forEach(function callback(value) {
if (Array.isArray(value)) {
value.forEach(callback);
} else {
flat.push(value);
}
});
return flat;
}
function map(array, callback) {
return Array.prototype.map.call(array, callback);
}
function forEach(array, callback) {
Array.prototype.forEach.call(array, callback);
}
function filter(array, callback) {
if (arraySize(array).length !== 1) {
throw new Error("Only one dimensional matrices supported");
}
return Array.prototype.filter.call(array, callback);
}
function filterRegExp(array, regexp) {
if (arraySize(array).length !== 1) {
throw new Error("Only one dimensional matrices supported");
}
return Array.prototype.filter.call(array, (entry) => regexp.test(entry));
}
function join(array, separator) {
return Array.prototype.join.call(array, separator);
}
function identify(a) {
if (!Array.isArray(a)) {
throw new TypeError("Array input expected");
}
if (a.length === 0) {
return a;
}
var b = [];
var count = 0;
b[0] = {
value: a[0],
identifier: 0
};
for (var i = 1; i < a.length; i++) {
if (a[i] === a[i - 1]) {
count++;
} else {
count = 0;
}
b.push({
value: a[i],
identifier: count
});
}
return b;
}
function generalize(a) {
if (!Array.isArray(a)) {
throw new TypeError("Array input expected");
}
if (a.length === 0) {
return a;
}
var b = [];
for (var i = 0; i < a.length; i++) {
b.push(a[i].value);
}
return b;
}
function getArrayDataType(array, typeOf2) {
var type;
var length = 0;
for (var i = 0; i < array.length; i++) {
var item = array[i];
var _isArray = Array.isArray(item);
if (i === 0 && _isArray) {
length = item.length;
}
if (_isArray && item.length !== length) {
return void 0;
}
var itemType = _isArray ? getArrayDataType(item, typeOf2) : typeOf2(item);
if (type === void 0) {
type = itemType;
} else if (type !== itemType) {
return "mixed";
} else {
}
}
return type;
}
function contains2(array, item) {
return array.indexOf(item) !== -1;
}
function concatRecursive(a, b, concatDim, dim) {
if (dim < concatDim) {
if (a.length !== b.length) {
throw new DimensionError(a.length, b.length);
}
var c = [];
for (var i = 0; i < a.length; i++) {
c[i] = concatRecursive(a[i], b[i], concatDim, dim + 1);
}
return c;
} else {
return a.concat(b);
}
}
function concat() {
var arrays = Array.prototype.slice.call(arguments, 0, -1);
var concatDim = Array.prototype.slice.call(arguments, -1);
if (arrays.length === 1) {
return arrays[0];
}
if (arrays.length > 1) {
return arrays.slice(1).reduce(function(A, B) {
return concatRecursive(A, B, concatDim, 0);
}, arrays[0]);
} else {
throw new Error("Wrong number of arguments in function concat");
}
}
function broadcastSizes() {
for (var _len = arguments.length, sizes = new Array(_len), _key = 0; _key < _len; _key++) {
sizes[_key] = arguments[_key];
}
var dimensions = sizes.map((s) => s.length);
var N = Math.max(...dimensions);
var sizeMax = new Array(N).fill(null);
for (var i = 0; i < sizes.length; i++) {
var size = sizes[i];
var dim = dimensions[i];
for (var j = 0; j < dim; j++) {
var n = N - dim + j;
if (size[j] > sizeMax[n]) {
sizeMax[n] = size[j];
}
}
}
for (var _i = 0; _i < sizes.length; _i++) {
checkBroadcastingRules(sizes[_i], sizeMax);
}
return sizeMax;
}
function checkBroadcastingRules(size, toSize) {
var N = toSize.length;
var dim = size.length;
for (var j = 0; j < dim; j++) {
var n = N - dim + j;
if (size[j] < toSize[n] && size[j] > 1 || size[j] > toSize[n]) {
throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(size, ") not possible to broadcast dimension ").concat(dim, " with size ").concat(size[j], " to size ").concat(toSize[n]));
}
}
}
function broadcastTo(array, toSize) {
var Asize = arraySize(array);
if (deepStrictEqual(Asize, toSize)) {
return array;
}
checkBroadcastingRules(Asize, toSize);
var broadcastedSize = broadcastSizes(Asize, toSize);
var N = broadcastedSize.length;
var paddedSize = [...Array(N - Asize.length).fill(1), ...Asize];
var A = clone2(array);
if (Asize.length < N) {
A = reshape(A, paddedSize);
Asize = arraySize(A);
}
for (var dim = 0; dim < N; dim++) {
if (Asize[dim] < broadcastedSize[dim]) {
A = stretch(A, broadcastedSize[dim], dim);
Asize = arraySize(A);
}
}
return A;
}
function stretch(arrayToStretch, sizeToStretch, dimToStretch) {
return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);
}
function clone2(array) {
return _extends([], array);
}
// node_modules/mathjs/lib/esm/utils/factory.js
function factory(name309, dependencies309, create2, meta) {
function assertAndCreate(scope) {
var deps = pickShallow(scope, dependencies309.map(stripOptionalNotation));
assertDependencies(name309, dependencies309, scope);
return create2(deps);
}
assertAndCreate.isFactory = true;
assertAndCreate.fn = name309;
assertAndCreate.dependencies = dependencies309.slice().sort();
if (meta) {
assertAndCreate.meta = meta;
}
return assertAndCreate;
}
function isFactory(obj) {
return typeof obj === "function" && typeof obj.fn === "string" && Array.isArray(obj.dependencies);
}
function assertDependencies(name309, dependencies309, scope) {
var allDefined = dependencies309.filter((dependency) => !isOptionalDependency(dependency)).every((dependency) => scope[dependency] !== void 0);
if (!allDefined) {
var missingDependencies = dependencies309.filter((dependency) => scope[dependency] === void 0);
throw new Error('Cannot create function "'.concat(name309, '", ') + "some dependencies are missing: ".concat(missingDependencies.map((d) => '"'.concat(d, '"')).join(", "), "."));
}
}
function isOptionalDependency(dependency) {
return dependency && dependency[0] === "?";
}
function stripOptionalNotation(dependency) {
return dependency && dependency[0] === "?" ? dependency.slice(1) : dependency;
}
// node_modules/mathjs/lib/esm/utils/customs.js
function getSafeProperty(object, prop) {
if (isPlainObject(object) && isSafeProperty(object, prop)) {
return object[prop];
}
if (typeof object[prop] === "function" && isSafeMethod(object, prop)) {
throw new Error('Cannot access method "' + prop + '" as a property');
}
throw new Error('No access to property "' + prop + '"');
}
function setSafeProperty(object, prop, value) {
if (isPlainObject(object) && isSafeProperty(object, prop)) {
object[prop] = value;
return value;
}
throw new Error('No access to property "' + prop + '"');
}
function hasSafeProperty(object, prop) {
return prop in object;
}
function isSafeProperty(object, prop) {
if (!object || typeof object !== "object") {
return false;
}
if (hasOwnProperty(safeNativeProperties, prop)) {
return true;
}
if (prop in Object.prototype) {
return false;
}
if (prop in Function.prototype) {
return false;
}
return true;
}
function getSafeMethod(object, method) {
if (!isSafeMethod(object, method)) {
throw new Error('No access to method "' + method + '"');
}
return object[method];
}
function isSafeMethod(object, method) {
if (object === null || object === void 0 || typeof object[method] !== "function") {
return false;
}
if (hasOwnProperty(object, method) && Object.getPrototypeOf && method in Object.getPrototypeOf(object)) {
return false;
}
if (hasOwnProperty(safeNativeMethods, method)) {
return true;
}
if (method in Object.prototype) {
return false;
}
if (method in Function.prototype) {
return false;
}
return true;
}
function isPlainObject(object) {
return typeof object === "object" && object && object.constructor === Object;
}
var safeNativeProperties = {
length: true,
name: true
};
var safeNativeMethods = {
toString: true,
valueOf: true,
toLocaleString: true
};
// node_modules/mathjs/lib/esm/utils/map.js
var ObjectWrappingMap = class {
constructor(object) {
this.wrappedObject = object;
}
keys() {
return Object.keys(this.wrappedObject);
}
get(key) {
return getSafeProperty(this.wrappedObject, key);
}
set(key, value) {
setSafeProperty(this.wrappedObject, key, value);
return this;
}
has(key) {
return hasSafeProperty(this.wrappedObject, key);
}
};
function createEmptyMap() {
return /* @__PURE__ */ new Map();
}
function createMap(mapOrObject) {
if (!mapOrObject) {
return createEmptyMap();
}
if (isMap(mapOrObject)) {
return mapOrObject;
}
if (isObject(mapOrObject)) {
return new ObjectWrappingMap(mapOrObject);
}
throw new Error("createMap can create maps from objects or Maps");
}
function toObject(map2) {
if (map2 instanceof ObjectWrappingMap) {
return map2.wrappedObject;
}
var object = {};
for (var key of map2.keys()) {
var value = map2.get(key);
setSafeProperty(object, key, value);
}
return object;
}
function isMap(object) {
if (!object) {
return false;
}
return object instanceof Map || object instanceof ObjectWrappingMap || typeof object.set === "function" && typeof object.get === "function" && typeof object.keys === "function" && typeof object.has === "function";
}
function assign(map2) {
for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
objects[_key - 1] = arguments[_key];
}
for (var args of objects) {
if (!args) {
continue;
}
if (isMap(args)) {
for (var key of args.keys()) {
map2.set(key, args.get(key));
}
} else if (isObject(args)) {
for (var _key2 of Object.keys(args)) {
map2.set(_key2, args[_key2]);
}
}
}
return map2;
}
// node_modules/mathjs/lib/esm/core/function/typed.js
var _createTyped2 = function _createTyped() {
_createTyped2 = import_typed_function.default.create;
return import_typed_function.default;
};
var dependencies = ["?BigNumber", "?Complex", "?DenseMatrix", "?Fraction"];
var createTyped = /* @__PURE__ */ factory("typed", dependencies, function createTyped2(_ref) {
var {
BigNumber,
Complex: Complex2,
DenseMatrix,
Fraction: Fraction2
} = _ref;
var typed2 = _createTyped2();
typed2.clear();
typed2.addTypes([
{
name: "number",
test: isNumber
},
{
name: "Complex",
test: isComplex
},
{
name: "BigNumber",
test: isBigNumber
},
{
name: "Fraction",
test: isFraction
},
{
name: "Unit",
test: isUnit
},
// The following type matches a valid variable name, i.e., an alphanumeric
// string starting with an alphabetic character. It is used (at least)
// in the definition of the derivative() function, as the argument telling
// what to differentiate over must (currently) be a variable.
{
name: "identifier",
test: (s) => isString && /^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(s)
},
{
name: "string",
test: isString
},
{
name: "Chain",
test: isChain
},
{
name: "Array",
test: isArray
},
{
name: "Matrix",
test: isMatrix
},
{
name: "DenseMatrix",
test: isDenseMatrix
},
{
name: "SparseMatrix",
test: isSparseMatrix
},
{
name: "Range",
test: isRange
},
{
name: "Index",
test: isIndex
},
{
name: "boolean",
test: isBoolean
},
{
name: "ResultSet",
test: isResultSet
},
{
name: "Help",
test: isHelp
},
{
name: "function",
test: isFunction
},
{
name: "Date",
test: isDate
},
{
name: "RegExp",
test: isRegExp
},
{
name: "null",
test: isNull
},
{
name: "undefined",
test: isUndefined
},
{
name: "AccessorNode",
test: isAccessorNode
},
{
name: "ArrayNode",
test: isArrayNode
},
{
name: "AssignmentNode",
test: isAssignmentNode
},
{
name: "BlockNode",
test: isBlockNode
},
{
name: "ConditionalNode",
test: isConditionalNode
},
{
name: "ConstantNode",
test: isConstantNode
},
{
name: "FunctionNode",
test: isFunctionNode
},
{
name: "FunctionAssignmentNode",
test: isFunctionAssignmentNode
},
{
name: "IndexNode",
test: isIndexNode
},
{
name: "Node",
test: isNode
},
{
name: "ObjectNode",
test: isObjectNode
},
{
name: "OperatorNode",
test: isOperatorNode
},
{
name: "ParenthesisNode",
test: isParenthesisNode
},
{
name: "RangeNode",
test: isRangeNode
},
{
name: "RelationalNode",
test: isRelationalNode
},
{
name: "SymbolNode",
test: isSymbolNode
},
{
name: "Map",
test: isMap
},
{
name: "Object",
test: isObject
}
// order 'Object' last, it matches on other classes too
]);
typed2.addConversions([{
from: "number",
to: "BigNumber",
convert: function convert(x) {
if (!BigNumber) {
throwNoBignumber(x);
}
if (digits(x) > 15) {
throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: " + x + "). Use function bignumber(x) to convert to BigNumber.");
}
return new BigNumber(x);
}
}, {
from: "number",
to: "Complex",
convert: function convert(x) {
if (!Complex2) {
throwNoComplex(x);
}
return new Complex2(x, 0);
}
}, {
from: "BigNumber",
to: "Complex",
convert: function convert(x) {
if (!Complex2) {
throwNoComplex(x);
}
return new Complex2(x.toNumber(), 0);
}
}, {
from: "Fraction",
to: "BigNumber",
convert: function convert(x) {
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(x) {
if (!Complex2) {
throwNoComplex(x);
}
return new Complex2(x.valueOf(), 0);
}
}, {
from: "number",
to: "Fraction",
convert: function convert(x) {
if (!Fraction2) {
throwNoFraction(x);
}
var f = new Fraction2(x);
if (f.valueOf() !== x) {
throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: " + x + "). Use function fraction(x) to convert to Fraction.");
}
return f;
}
}, {
// FIXME: add conversion from Fraction to number, for example for `sqrt(fraction(1,3))`
// from: 'Fraction',
// to: 'number',
// convert: function (x) {
// return x.valueOf()
// }
// }, {
from: "string",
to: "number",
convert: function convert(x) {
var n = Number(x);
if (isNaN(n)) {
throw new Error('Cannot convert "' + x + '" to a number');
}
return n;
}
}, {
from: "string",
to: "BigNumber",
convert: function convert(x) {
if (!BigNumber) {
throwNoBignumber(x);
}
try {
return new BigNumber(x);
} catch (err) {
throw new Error('Cannot convert "' + x + '" to BigNumber');
}
}
}, {
from: "string",
to: "Fraction",
convert: function convert(x) {
if (!Fraction2) {
throwNoFraction(x);
}
try {
return new Fraction2(x);
} catch (err) {
throw new Error('Cannot convert "' + x + '" to Fraction');
}
}
}, {
from: "string",
to: "Complex",
convert: function convert(x) {
if (!Complex2) {
throwNoComplex(x);
}
try {
return new Complex2(x);
} catch (err) {
throw new Error('Cannot convert "' + x + '" to Complex');
}
}
}, {
from: "boolean",
to: "number",
convert: function convert(x) {
return +x;
}
}, {
from: "boolean",
to: "BigNumber",
convert: function convert(x) {
if (!BigNumber) {
throwNoBignumber(x);
}
return new BigNumber(+x);
}
}, {
from: "boolean",
to: "Fraction",
convert: function convert(x) {
if (!Fraction2) {
throwNoFraction(x);
}
return new Fraction2(+x);
}
}, {
from: "boolean",
to: "string",
convert: function convert(x) {
return String(x);
}
}, {
from: "Array",
to: "Matrix",
convert: function convert(array) {
if (!DenseMatrix) {
throwNoMatrix();
}
return new DenseMatrix(array);
}
}, {
from: "Matrix",
to: "Array",
convert: function convert(matrix) {
return matrix.valueOf();
}
}]);
typed2.onMismatch = (name309, args, signatures) => {
var usualError = typed2.createError(name309, args, signatures);
if (["wrongType", "mismatch"].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) && // check if the function can be unary:
signatures.some((sig) => !sig.params.includes(","))) {
var err = new TypeError("Function '".concat(name309, "' doesn't apply to matrices. To call it ") + "elementwise on a matrix 'M', try 'map(M, ".concat(name309, ")'."));
err.data = usualError.data;
throw err;
}
throw usualError;
};
typed2.onMismatch = (name309, args, signatures) => {
var usualError = typed2.createError(name309, args, signatures);
if (["wrongType", "mismatch"].includes(usualError.data.category) && args.length === 1 && isCollection(args[0]) && // check if the function can be unary:
signatures.some((sig) => !sig.params.includes(","))) {
var err = new TypeError("Function '".concat(name309, "' doesn't apply to matrices. To call it ") + "elementwise on a matrix 'M', try 'map(M, ".concat(name309, ")'."));
err.data = usualError.data;
throw err;
}
throw usualError;
};
return typed2;
});
function throwNoBignumber(x) {
throw new Error("Cannot convert value ".concat(x, " into a BigNumber: no class 'BigNumber' provided"));
}
function throwNoComplex(x) {
throw new Error("Cannot convert value ".concat(x, " into a Complex number: no class 'Complex' provided"));
}
function throwNoMatrix() {
throw new Error("Cannot convert array into a Matrix: no class 'DenseMatrix' provided");
}
function throwNoFraction(x) {
throw new Error("Cannot convert value ".concat(x, " into a Fraction, no class 'Fraction' provided."));
}
// node_modules/mathjs/lib/esm/type/resultset/ResultSet.js
var name = "ResultSet";
var dependencies2 = [];
var createResultSet = /* @__PURE__ */ factory(name, dependencies2, () => {
function ResultSet(entries) {
if (!(this instanceof ResultSet)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
this.entries = entries || [];
}
ResultSet.prototype.type = "ResultSet";
ResultSet.prototype.isResultSet = true;
ResultSet.prototype.valueOf = function() {
return this.entries;
};
ResultSet.prototype.toString = function() {
return "[" + this.entries.join(", ") + "]";
};
ResultSet.prototype.toJSON = function() {
return {
mathjs: "ResultSet",
entries: this.entries
};
};
ResultSet.fromJSON = function(json) {
return new ResultSet(json.entries);
};
return ResultSet;
}, {
isClass: true
});
// node_modules/decimal.js/decimal.mjs
var EXP_LIMIT = 9e15;
var MAX_DIGITS = 1e9;
var NUMERALS = "0123456789abcdef";
var LN10 = "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058";
var PI = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789";
var DEFAULTS = {
// These values must be integers within the stated ranges (inclusive).
// Most of these values can be changed at run-time using the `Decimal.config` method.
// The maximum number of significant digits of the result of a calculation or base conversion.
// E.g. `Decimal.config({ precision: 20 });`
precision: 20,
// 1 to MAX_DIGITS
// The rounding mode used when rounding to `precision`.
//
// ROUND_UP 0 Away from zero.
// ROUND_DOWN 1 Towards zero.
// ROUND_CEIL 2 Towards +Infinity.
// ROUND_FLOOR 3 Towards -Infinity.
// ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.
// ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.
// ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.
// ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.
// ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.
//
// E.g.
// `Decimal.rounding = 4;`
// `Decimal.rounding = Decimal.ROUND_HALF_UP;`
rounding: 4,
// 0 to 8
// The modulo mode used when calculating the modulus: a mod n.
// The quotient (q = a / n) is calculated according to the corresponding rounding mode.
// The remainder (r) is calculated as: r = a - n * q.
//
// UP 0 The remainder is positive if the dividend is negative, else is negative.
// DOWN 1 The remainder has the same sign as the dividend (JavaScript %).
// FLOOR 3 The remainder has the same sign as the divisor (Python %).
// HALF_EVEN 6 The IEEE 754 remainder function.
// EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.
//
// Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian
// division (9) are commonly used for the modulus operation. The other rounding modes can also
// be used, but they may not give useful results.
modulo: 1,
// 0 to 9
// The exponent value at and beneath which `toString` returns exponential notation.
// JavaScript numbers: -7
toExpNeg: -7,
// 0 to -EXP_LIMIT
// The exponent value at and above which `toString` returns exponential notation.
// JavaScript numbers: 21
toExpPos: 21,
// 0 to EXP_LIMIT
// The minimum exponent value, beneath which underflow to zero occurs.
// JavaScript numbers: -324 (5e-324)
minE: -EXP_LIMIT,
// -1 to -EXP_LIMIT
// The maximum exponent value, above which overflow to Infinity occurs.
// JavaScript numbers: 308 (1.7976931348623157e+308)
maxE: EXP_LIMIT,
// 1 to EXP_LIMIT
// Whether to use cryptographically-secure random number generation, if available.
crypto: false
// true/false
};
var inexact;
var quadrant;
var external = true;
var decimalError = "[DecimalError] ";
var invalidArgument = decimalError + "Invalid argument: ";
var precisionLimitExceeded = decimalError + "Precision limit exceeded";
var cryptoUnavailable = decimalError + "crypto unavailable";
var tag = "[object Decimal]";
var mathfloor = Math.floor;
var mathpow = Math.pow;
var isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i;
var isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i;
var isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i;
var isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
var BASE = 1e7;
var LOG_BASE = 7;
var MAX_SAFE_INTEGER = 9007199254740991;
var LN10_PRECISION = LN10.length - 1;
var PI_PRECISION = PI.length - 1;
var P = { toStringTag: tag };
P.absoluteValue = P.abs = function() {
var x = new this.constructor(this);
if (x.s < 0)
x.s = 1;
return finalise(x);
};
P.ceil = function() {
return finalise(new this.constructor(this), this.e + 1, 2);
};
P.clampedTo = P.clamp = function(min2, max2) {
var k, x = this, Ctor = x.constructor;
min2 = new Ctor(min2);
max2 = new Ctor(max2);
if (!min2.s || !max2.s)
return new Ctor(NaN);
if (min2.gt(max2))
throw Error(invalidArgument + max2);
k = x.cmp(min2);
return k < 0 ? min2 : x.cmp(max2) > 0 ? max2 : new Ctor(x);
};
P.comparedTo = P.cmp = function(y) {
var i, j, xdL, ydL, x = this, xd = x.d, yd = (y = new x.constructor(y)).d, xs = x.s, ys = y.s;
if (!xd || !yd) {
return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;
}
if (!xd[0] || !yd[0])
return xd[0] ? xs : yd[0] ? -ys : 0;
if (xs !== ys)
return xs;
if (x.e !== y.e)
return x.e > y.e ^ xs < 0 ? 1 : -1;
xdL = xd.length;
ydL = yd.length;
for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {
if (xd[i] !== yd[i])
return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;
}
return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;
};
P.cosine = P.cos = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (!x.d)
return new Ctor(NaN);
if (!x.d[0])
return new Ctor(1);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
Ctor.rounding = 1;
x = cosine(Ctor, toLessThanHalfPi(Ctor, x));
Ctor.precision = pr;
Ctor.rounding = rm;
return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);
};
P.cubeRoot = P.cbrt = function() {
var e2, m, n, r, rep, s, sd, t, t3, t3plusx, x = this, Ctor = x.constructor;
if (!x.isFinite() || x.isZero())
return new Ctor(x);
external = false;
s = x.s * mathpow(x.s * x, 1 / 3);
if (!s || Math.abs(s) == 1 / 0) {
n = digitsToString(x.d);
e2 = x.e;
if (s = (e2 - n.length + 1) % 3)
n += s == 1 || s == -2 ? "0" : "00";
s = mathpow(n, 1 / 3);
e2 = mathfloor((e2 + 1) / 3) - (e2 % 3 == (e2 < 0 ? -1 : 2));
if (s == 1 / 0) {
n = "5e" + e2;
} else {
n = s.toExponential();
n = n.slice(0, n.indexOf("e") + 1) + e2;
}
r = new Ctor(n);
r.s = x.s;
} else {
r = new Ctor(s.toString());
}
sd = (e2 = Ctor.precision) + 3;
for (; ; ) {
t = r;
t3 = t.times(t).times(t);
t3plusx = t3.plus(x);
r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);
if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
n = n.slice(sd - 3, sd + 1);
if (n == "9999" || !rep && n == "4999") {
if (!rep) {
finalise(t, e2 + 1, 0);
if (t.times(t).times(t).eq(x)) {
r = t;
break;
}
}
sd += 4;
rep = 1;
} else {
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
finalise(r, e2 + 1, 1);
m = !r.times(r).times(r).eq(x);
}
break;
}
}
}
external = true;
return finalise(r, e2, Ctor.rounding, m);
};
P.decimalPlaces = P.dp = function() {
var w, d = this.d, n = NaN;
if (d) {
w = d.length - 1;
n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;
w = d[w];
if (w)
for (; w % 10 == 0; w /= 10)
n--;
if (n < 0)
n = 0;
}
return n;
};
P.dividedBy = P.div = function(y) {
return divide(this, new this.constructor(y));
};
P.dividedToIntegerBy = P.divToInt = function(y) {
var x = this, Ctor = x.constructor;
return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);
};
P.equals = P.eq = function(y) {
return this.cmp(y) === 0;
};
P.floor = function() {
return finalise(new this.constructor(this), this.e + 1, 3);
};
P.greaterThan = P.gt = function(y) {
return this.cmp(y) > 0;
};
P.greaterThanOrEqualTo = P.gte = function(y) {
var k = this.cmp(y);
return k == 1 || k === 0;
};
P.hyperbolicCosine = P.cosh = function() {
var k, n, pr, rm, len, x = this, Ctor = x.constructor, one = new Ctor(1);
if (!x.isFinite())
return new Ctor(x.s ? 1 / 0 : NaN);
if (x.isZero())
return one;
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
Ctor.rounding = 1;
len = x.d.length;
if (len < 32) {
k = Math.ceil(len / 3);
n = (1 / tinyPow(4, k)).toString();
} else {
k = 16;
n = "2.3283064365386962890625e-10";
}
x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);
var cosh2_x, i = k, d8 = new Ctor(8);
for (; i--; ) {
cosh2_x = x.times(x);
x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));
}
return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);
};
P.hyperbolicSine = P.sinh = function() {
var k, pr, rm, len, x = this, Ctor = x.constructor;
if (!x.isFinite() || x.isZero())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
Ctor.rounding = 1;
len = x.d.length;
if (len < 3) {
x = taylorSeries(Ctor, 2, x, x, true);
} else {
k = 1.4 * Math.sqrt(len);
k = k > 16 ? 16 : k | 0;
x = x.times(1 / tinyPow(5, k));
x = taylorSeries(Ctor, 2, x, x, true);
var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
for (; k--; ) {
sinh2_x = x.times(x);
x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));
}
}
Ctor.precision = pr;
Ctor.rounding = rm;
return finalise(x, pr, rm, true);
};
P.hyperbolicTangent = P.tanh = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (!x.isFinite())
return new Ctor(x.s);
if (x.isZero())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + 7;
Ctor.rounding = 1;
return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);
};
P.inverseCosine = P.acos = function() {
var halfPi, x = this, Ctor = x.constructor, k = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding;
if (k !== -1) {
return k === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN);
}
if (x.isZero())
return getPi(Ctor, pr + 4, rm).times(0.5);
Ctor.precision = pr + 6;
Ctor.rounding = 1;
x = x.asin();
halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
Ctor.precision = pr;
Ctor.rounding = rm;
return halfPi.minus(x);
};
P.inverseHyperbolicCosine = P.acosh = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (x.lte(1))
return new Ctor(x.eq(1) ? 0 : NaN);
if (!x.isFinite())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;
Ctor.rounding = 1;
external = false;
x = x.times(x).minus(1).sqrt().plus(x);
external = true;
Ctor.precision = pr;
Ctor.rounding = rm;
return x.ln();
};
P.inverseHyperbolicSine = P.asinh = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (!x.isFinite() || x.isZero())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;
Ctor.rounding = 1;
external = false;
x = x.times(x).plus(1).sqrt().plus(x);
external = true;
Ctor.precision = pr;
Ctor.rounding = rm;
return x.ln();
};
P.inverseHyperbolicTangent = P.atanh = function() {
var pr, rm, wpr, xsd, x = this, Ctor = x.constructor;
if (!x.isFinite())
return new Ctor(NaN);
if (x.e >= 0)
return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);
pr = Ctor.precision;
rm = Ctor.rounding;
xsd = x.sd();
if (Math.max(xsd, pr) < 2 * -x.e - 1)
return finalise(new Ctor(x), pr, rm, true);
Ctor.precision = wpr = xsd - x.e;
x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);
Ctor.precision = pr + 4;
Ctor.rounding = 1;
x = x.ln();
Ctor.precision = pr;
Ctor.rounding = rm;
return x.times(0.5);
};
P.inverseSine = P.asin = function() {
var halfPi, k, pr, rm, x = this, Ctor = x.constructor;
if (x.isZero())
return new Ctor(x);
k = x.abs().cmp(1);
pr = Ctor.precision;
rm = Ctor.rounding;
if (k !== -1) {
if (k === 0) {
halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
halfPi.s = x.s;
return halfPi;
}
return new Ctor(NaN);
}
Ctor.precision = pr + 6;
Ctor.rounding = 1;
x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();
Ctor.precision = pr;
Ctor.rounding = rm;
return x.times(2);
};
P.inverseTangent = P.atan = function() {
var i, j, k, n, px, t, r, wpr, x2, x = this, Ctor = x.constructor, pr = Ctor.precision, rm = Ctor.rounding;
if (!x.isFinite()) {
if (!x.s)
return new Ctor(NaN);
if (pr + 4 <= PI_PRECISION) {
r = getPi(Ctor, pr + 4, rm).times(0.5);
r.s = x.s;
return r;
}
} else if (x.isZero()) {
return new Ctor(x);
} else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {
r = getPi(Ctor, pr + 4, rm).times(0.25);
r.s = x.s;
return r;
}
Ctor.precision = wpr = pr + 10;
Ctor.rounding = 1;
k = Math.min(28, wpr / LOG_BASE + 2 | 0);
for (i = k; i; --i)
x = x.div(x.times(x).plus(1).sqrt().plus(1));
external = false;
j = Math.ceil(wpr / LOG_BASE);
n = 1;
x2 = x.times(x);
r = new Ctor(x);
px = x;
for (; i !== -1; ) {
px = px.times(x2);
t = r.minus(px.div(n += 2));
px = px.times(x2);
r = t.plus(px.div(n += 2));
if (r.d[j] !== void 0)
for (i = j; r.d[i] === t.d[i] && i--; )
;
}
if (k)
r = r.times(2 << k - 1);
external = true;
return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);
};
P.isFinite = function() {
return !!this.d;
};
P.isInteger = P.isInt = function() {
return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;
};
P.isNaN = function() {
return !this.s;
};
P.isNegative = P.isNeg = function() {
return this.s < 0;
};
P.isPositive = P.isPos = function() {
return this.s > 0;
};
P.isZero = function() {
return !!this.d && this.d[0] === 0;
};
P.lessThan = P.lt = function(y) {
return this.cmp(y) < 0;
};
P.lessThanOrEqualTo = P.lte = function(y) {
return this.cmp(y) < 1;
};
P.logarithm = P.log = function(base) {
var isBase10, d, denominator, k, inf, num, sd, r, arg = this, Ctor = arg.constructor, pr = Ctor.precision, rm = Ctor.rounding, guard = 5;
if (base == null) {
base = new Ctor(10);
isBase10 = true;
} else {
base = new Ctor(base);
d = base.d;
if (base.s < 0 || !d || !d[0] || base.eq(1))
return new Ctor(NaN);
isBase10 = base.eq(10);
}
d = arg.d;
if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {
return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);
}
if (isBase10) {
if (d.length > 1) {
inf = true;
} else {
for (k = d[0]; k % 10 === 0; )
k /= 10;
inf = k !== 1;
}
}
external = false;
sd = pr + guard;
num = naturalLogarithm(arg, sd);
denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
r = divide(num, denominator, sd, 1);
if (checkRoundingDigits(r.d, k = pr, rm)) {
do {
sd += 10;
num = naturalLogarithm(arg, sd);
denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
r = divide(num, denominator, sd, 1);
if (!inf) {
if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {
r = finalise(r, pr + 1, 0);
}
break;
}
} while (checkRoundingDigits(r.d, k += 10, rm));
}
external = true;
return finalise(r, pr, rm);
};
P.minus = P.sub = function(y) {
var d, e2, i, j, k, len, pr, rm, xd, xe, xLTy, yd, x = this, Ctor = x.constructor;
y = new Ctor(y);
if (!x.d || !y.d) {
if (!x.s || !y.s)
y = new Ctor(NaN);
else if (x.d)
y.s = -y.s;
else
y = new Ctor(y.d || x.s !== y.s ? x : NaN);
return y;
}
if (x.s != y.s) {
y.s = -y.s;
return x.plus(y);
}
xd = x.d;
yd = y.d;
pr = Ctor.precision;
rm = Ctor.rounding;
if (!xd[0] || !yd[0]) {
if (yd[0])
y.s = -y.s;
else if (xd[0])
y = new Ctor(x);
else
return new Ctor(rm === 3 ? -0 : 0);
return external ? finalise(y, pr, rm) : y;
}
e2 = mathfloor(y.e / LOG_BASE);
xe = mathfloor(x.e / LOG_BASE);
xd = xd.slice();
k = xe - e2;
if (k) {
xLTy = k < 0;
if (xLTy) {
d = xd;
k = -k;
len = yd.length;
} else {
d = yd;
e2 = xe;
len = xd.length;
}
i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;
if (k > i) {
k = i;
d.length = 1;
}
d.reverse();
for (i = k; i--; )
d.push(0);
d.reverse();
} else {
i = xd.length;
len = yd.length;
xLTy = i < len;
if (xLTy)
len = i;
for (i = 0; i < len; i++) {
if (xd[i] != yd[i]) {
xLTy = xd[i] < yd[i];
break;
}
}
k = 0;
}
if (xLTy) {
d = xd;
xd = yd;
yd = d;
y.s = -y.s;
}
len = xd.length;
for (i = yd.length - len; i > 0; --i)
xd[len++] = 0;
for (i = yd.length; i > k; ) {
if (xd[--i] < yd[i]) {
for (j = i; j && xd[--j] === 0; )
xd[j] = BASE - 1;
--xd[j];
xd[i] += BASE;
}
xd[i] -= yd[i];
}
for (; xd[--len] === 0; )
xd.pop();
for (; xd[0] === 0; xd.shift())
--e2;
if (!xd[0])
return new Ctor(rm === 3 ? -0 : 0);
y.d = xd;
y.e = getBase10Exponent(xd, e2);
return external ? finalise(y, pr, rm) : y;
};
P.modulo = P.mod = function(y) {
var q, x = this, Ctor = x.constructor;
y = new Ctor(y);
if (!x.d || !y.s || y.d && !y.d[0])
return new Ctor(NaN);
if (!y.d || x.d && !x.d[0]) {
return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);
}
external = false;
if (Ctor.modulo == 9) {
q = divide(x, y.abs(), 0, 3, 1);
q.s *= y.s;
} else {
q = divide(x, y, 0, Ctor.modulo, 1);
}
q = q.times(y);
external = true;
return x.minus(q);
};
P.naturalExponential = P.exp = function() {
return naturalExponential(this);
};
P.naturalLogarithm = P.ln = function() {
return naturalLogarithm(this);
};
P.negated = P.neg = function() {
var x = new this.constructor(this);
x.s = -x.s;
return finalise(x);
};
P.plus = P.add = function(y) {
var carry, d, e2, i, k, len, pr, rm, xd, yd, x = this, Ctor = x.constructor;
y = new Ctor(y);
if (!x.d || !y.d) {
if (!x.s || !y.s)
y = new Ctor(NaN);
else if (!x.d)
y = new Ctor(y.d || x.s === y.s ? x : NaN);
return y;
}
if (x.s != y.s) {
y.s = -y.s;
return x.minus(y);
}
xd = x.d;
yd = y.d;
pr = Ctor.precision;
rm = Ctor.rounding;
if (!xd[0] || !yd[0]) {
if (!yd[0])
y = new Ctor(x);
return external ? finalise(y, pr, rm) : y;
}
k = mathfloor(x.e / LOG_BASE);
e2 = mathfloor(y.e / LOG_BASE);
xd = xd.slice();
i = k - e2;
if (i) {
if (i < 0) {
d = xd;
i = -i;
len = yd.length;
} else {
d = yd;
e2 = k;
len = xd.length;
}
k = Math.ceil(pr / LOG_BASE);
len = k > len ? k + 1 : len + 1;
if (i > len) {
i = len;
d.length = 1;
}
d.reverse();
for (; i--; )
d.push(0);
d.reverse();
}
len = xd.length;
i = yd.length;
if (len - i < 0) {
i = len;
d = yd;
yd = xd;
xd = d;
}
for (carry = 0; i; ) {
carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;
xd[i] %= BASE;
}
if (carry) {
xd.unshift(carry);
++e2;
}
for (len = xd.length; xd[--len] == 0; )
xd.pop();
y.d = xd;
y.e = getBase10Exponent(xd, e2);
return external ? finalise(y, pr, rm) : y;
};
P.precision = P.sd = function(z) {
var k, x = this;
if (z !== void 0 && z !== !!z && z !== 1 && z !== 0)
throw Error(invalidArgument + z);
if (x.d) {
k = getPrecision(x.d);
if (z && x.e + 1 > k)
k = x.e + 1;
} else {
k = NaN;
}
return k;
};
P.round = function() {
var x = this, Ctor = x.constructor;
return finalise(new Ctor(x), x.e + 1, Ctor.rounding);
};
P.sine = P.sin = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (!x.isFinite())
return new Ctor(NaN);
if (x.isZero())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
Ctor.rounding = 1;
x = sine(Ctor, toLessThanHalfPi(Ctor, x));
Ctor.precision = pr;
Ctor.rounding = rm;
return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);
};
P.squareRoot = P.sqrt = function() {
var m, n, sd, r, rep, t, x = this, d = x.d, e2 = x.e, s = x.s, Ctor = x.constructor;
if (s !== 1 || !d || !d[0]) {
return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);
}
external = false;
s = Math.sqrt(+x);
if (s == 0 || s == 1 / 0) {
n = digitsToString(d);
if ((n.length + e2) % 2 == 0)
n += "0";
s = Math.sqrt(n);
e2 = mathfloor((e2 + 1) / 2) - (e2 < 0 || e2 % 2);
if (s == 1 / 0) {
n = "5e" + e2;
} else {
n = s.toExponential();
n = n.slice(0, n.indexOf("e") + 1) + e2;
}
r = new Ctor(n);
} else {
r = new Ctor(s.toString());
}
sd = (e2 = Ctor.precision) + 3;
for (; ; ) {
t = r;
r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);
if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
n = n.slice(sd - 3, sd + 1);
if (n == "9999" || !rep && n == "4999") {
if (!rep) {
finalise(t, e2 + 1, 0);
if (t.times(t).eq(x)) {
r = t;
break;
}
}
sd += 4;
rep = 1;
} else {
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
finalise(r, e2 + 1, 1);
m = !r.times(r).eq(x);
}
break;
}
}
}
external = true;
return finalise(r, e2, Ctor.rounding, m);
};
P.tangent = P.tan = function() {
var pr, rm, x = this, Ctor = x.constructor;
if (!x.isFinite())
return new Ctor(NaN);
if (x.isZero())
return new Ctor(x);
pr = Ctor.precision;
rm = Ctor.rounding;
Ctor.precision = pr + 10;
Ctor.rounding = 1;
x = x.sin();
x.s = 1;
x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);
Ctor.precision = pr;
Ctor.rounding = rm;
return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);
};
P.times = P.mul = function(y) {
var carry, e2, i, k, r, rL, t, xdL, ydL, x = this, Ctor = x.constructor, xd = x.d, yd = (y = new Ctor(y)).d;
y.s *= x.s;
if (!xd || !xd[0] || !yd || !yd[0]) {
return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd ? NaN : !xd || !yd ? y.s / 0 : y.s * 0);
}
e2 = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);
xdL = xd.length;
ydL = yd.length;
if (xdL < ydL) {
r = xd;
xd = yd;
yd = r;
rL = xdL;
xdL = ydL;
ydL = rL;
}
r = [];
rL = xdL + ydL;
for (i = rL; i--; )
r.push(0);
for (i = ydL; --i >= 0; ) {
carry = 0;
for (k = xdL + i; k > i; ) {
t = r[k] + yd[i] * xd[k - i - 1] + carry;
r[k--] = t % BASE | 0;
carry = t / BASE | 0;
}
r[k] = (r[k] + carry) % BASE | 0;
}
for (; !r[--rL]; )
r.pop();
if (carry)
++e2;
else
r.shift();
y.d = r;
y.e = getBase10Exponent(r, e2);
return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;
};
P.toBinary = function(sd, rm) {
return toStringBinary(this, 2, sd, rm);
};
P.toDecimalPlaces = P.toDP = function(dp, rm) {
var x = this, Ctor = x.constructor;
x = new Ctor(x);
if (dp === void 0)
return x;
checkInt32(dp, 0, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
return finalise(x, dp + x.e + 1, rm);
};
P.toExponential = function(dp, rm) {
var str, x = this, Ctor = x.constructor;
if (dp === void 0) {
str = finiteToString(x, true);
} else {
checkInt32(dp, 0, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
x = finalise(new Ctor(x), dp + 1, rm);
str = finiteToString(x, true, dp + 1);
}
return x.isNeg() && !x.isZero() ? "-" + str : str;
};
P.toFixed = function(dp, rm) {
var str, y, x = this, Ctor = x.constructor;
if (dp === void 0) {
str = finiteToString(x);
} else {
checkInt32(dp, 0, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
y = finalise(new Ctor(x), dp + x.e + 1, rm);
str = finiteToString(y, false, dp + y.e + 1);
}
return x.isNeg() && !x.isZero() ? "-" + str : str;
};
P.toFraction = function(maxD) {
var d, d0, d1, d2, e2, k, n, n0, n16, pr, q, r, x = this, xd = x.d, Ctor = x.constructor;
if (!xd)
return new Ctor(x);
n16 = d0 = new Ctor(1);
d1 = n0 = new Ctor(0);
d = new Ctor(d1);
e2 = d.e = getPrecision(xd) - x.e - 1;
k = e2 % LOG_BASE;
d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);
if (maxD == null) {
maxD = e2 > 0 ? d : n16;
} else {
n = new Ctor(maxD);
if (!n.isInt() || n.lt(n16))
throw Error(invalidArgument + n);
maxD = n.gt(d) ? e2 > 0 ? d : n16 : n;
}
external = false;
n = new Ctor(digitsToString(xd));
pr = Ctor.precision;
Ctor.precision = e2 = xd.length * LOG_BASE * 2;
for (; ; ) {
q = divide(n, d, 0, 1, 1);
d2 = d0.plus(q.times(d1));
if (d2.cmp(maxD) == 1)
break;
d0 = d1;
d1 = d2;
d2 = n16;
n16 = n0.plus(q.times(d2));
n0 = d2;
d2 = d;
d = n.minus(q.times(d2));
n = d2;
}
d2 = divide(maxD.minus(d0), d1, 0, 1, 1);
n0 = n0.plus(d2.times(n16));
d0 = d0.plus(d2.times(d1));
n0.s = n16.s = x.s;
r = divide(n16, d1, e2, 1).minus(x).abs().cmp(divide(n0, d0, e2, 1).minus(x).abs()) < 1 ? [n16, d1] : [n0, d0];
Ctor.precision = pr;
external = true;
return r;
};
P.toHexadecimal = P.toHex = function(sd, rm) {
return toStringBinary(this, 16, sd, rm);
};
P.toNearest = function(y, rm) {
var x = this, Ctor = x.constructor;
x = new Ctor(x);
if (y == null) {
if (!x.d)
return x;
y = new Ctor(1);
rm = Ctor.rounding;
} else {
y = new Ctor(y);
if (rm === void 0) {
rm = Ctor.rounding;
} else {
checkInt32(rm, 0, 8);
}
if (!x.d)
return y.s ? x : y;
if (!y.d) {
if (y.s)
y.s = x.s;
return y;
}
}
if (y.d[0]) {
external = false;
x = divide(x, y, 0, rm, 1).times(y);
external = true;
finalise(x);
} else {
y.s = x.s;
x = y;
}
return x;
};
P.toNumber = function() {
return +this;
};
P.toOctal = function(sd, rm) {
return toStringBinary(this, 8, sd, rm);
};
P.toPower = P.pow = function(y) {
var e2, k, pr, r, rm, s, x = this, Ctor = x.constructor, yn = +(y = new Ctor(y));
if (!x.d || !y.d || !x.d[0] || !y.d[0])
return new Ctor(mathpow(+x, yn));
x = new Ctor(x);
if (x.eq(1))
return x;
pr = Ctor.precision;
rm = Ctor.rounding;
if (y.eq(1))
return finalise(x, pr, rm);
e2 = mathfloor(y.e / LOG_BASE);
if (e2 >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {
r = intPow(Ctor, x, k, pr);
return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);
}
s = x.s;
if (s < 0) {
if (e2 < y.d.length - 1)
return new Ctor(NaN);
if ((y.d[e2] & 1) == 0)
s = 1;
if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {
x.s = s;
return x;
}
}
k = mathpow(+x, yn);
e2 = k == 0 || !isFinite(k) ? mathfloor(yn * (Math.log("0." + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k + "").e;
if (e2 > Ctor.maxE + 1 || e2 < Ctor.minE - 1)
return new Ctor(e2 > 0 ? s / 0 : 0);
external = false;
Ctor.rounding = x.s = 1;
k = Math.min(12, (e2 + "").length);
r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);
if (r.d) {
r = finalise(r, pr + 5, 1);
if (checkRoundingDigits(r.d, pr, rm)) {
e2 = pr + 10;
r = finalise(naturalExponential(y.times(naturalLogarithm(x, e2 + k)), e2), e2 + 5, 1);
if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {
r = finalise(r, pr + 1, 0);
}
}
}
r.s = s;
external = true;
Ctor.rounding = rm;
return finalise(r, pr, rm);
};
P.toPrecision = function(sd, rm) {
var str, x = this, Ctor = x.constructor;
if (sd === void 0) {
str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
} else {
checkInt32(sd, 1, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
x = finalise(new Ctor(x), sd, rm);
str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);
}
return x.isNeg() && !x.isZero() ? "-" + str : str;
};
P.toSignificantDigits = P.toSD = function(sd, rm) {
var x = this, Ctor = x.constructor;
if (sd === void 0) {
sd = Ctor.precision;
rm = Ctor.rounding;
} else {
checkInt32(sd, 1, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
}
return finalise(new Ctor(x), sd, rm);
};
P.toString = function() {
var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
return x.isNeg() && !x.isZero() ? "-" + str : str;
};
P.truncated = P.trunc = function() {
return finalise(new this.constructor(this), this.e + 1, 1);
};
P.valueOf = P.toJSON = function() {
var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
return x.isNeg() ? "-" + str : str;
};
function digitsToString(d) {
var i, k, ws, indexOfLastWord = d.length - 1, str = "", w = d[0];
if (indexOfLastWord > 0) {
str += w;
for (i = 1; i < indexOfLastWord; i++) {
ws = d[i] + "";
k = LOG_BASE - ws.length;
if (k)
str += getZeroString(k);
str += ws;
}
w = d[i];
ws = w + "";
k = LOG_BASE - ws.length;
if (k)
str += getZeroString(k);
} else if (w === 0) {
return "0";
}
for (; w % 10 === 0; )
w /= 10;
return str + w;
}
function checkInt32(i, min2, max2) {
if (i !== ~~i || i < min2 || i > max2) {
throw Error(invalidArgument + i);
}
}
function checkRoundingDigits(d, i, rm, repeating) {
var di, k, r, rd;
for (k = d[0]; k >= 10; k /= 10)
--i;
if (--i < 0) {
i += LOG_BASE;
di = 0;
} else {
di = Math.ceil((i + 1) / LOG_BASE);
i %= LOG_BASE;
}
k = mathpow(10, LOG_BASE - i);
rd = d[di] % k | 0;
if (repeating == null) {
if (i < 3) {
if (i == 0)
rd = rd / 100 | 0;
else if (i == 1)
rd = rd / 10 | 0;
r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 5e4 || rd == 0;
} else {
r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;
}
} else {
if (i < 4) {
if (i == 0)
rd = rd / 1e3 | 0;
else if (i == 1)
rd = rd / 100 | 0;
else if (i == 2)
rd = rd / 10 | 0;
r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;
} else {
r = ((repeating || rm < 4) && rd + 1 == k || !repeating && rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 1e3 | 0) == mathpow(10, i - 3) - 1;
}
}
return r;
}
function convertBase(str, baseIn, baseOut) {
var j, arr = [0], arrL, i = 0, strL = str.length;
for (; i < strL; ) {
for (arrL = arr.length; arrL--; )
arr[arrL] *= baseIn;
arr[0] += NUMERALS.indexOf(str.charAt(i++));
for (j = 0; j < arr.length; j++) {
if (arr[j] > baseOut - 1) {
if (arr[j + 1] === void 0)
arr[j + 1] = 0;
arr[j + 1] += arr[j] / baseOut | 0;
arr[j] %= baseOut;
}
}
}
return arr.reverse();
}
function cosine(Ctor, x) {
var k, len, y;
if (x.isZero())
return x;
len = x.d.length;
if (len < 32) {
k = Math.ceil(len / 3);
y = (1 / tinyPow(4, k)).toString();
} else {
k = 16;
y = "2.3283064365386962890625e-10";
}
Ctor.precision += k;
x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));
for (var i = k; i--; ) {
var cos2x = x.times(x);
x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);
}
Ctor.precision -= k;
return x;
}
var divide = function() {
function multiplyInteger(x, k, base) {
var temp, carry = 0, i = x.length;
for (x = x.slice(); i--; ) {
temp = x[i] * k + carry;
x[i] = temp % base | 0;
carry = temp / base | 0;
}
if (carry)
x.unshift(carry);
return x;
}
function compare(a, b, aL, bL) {
var i, r;
if (aL != bL) {
r = aL > bL ? 1 : -1;
} else {
for (i = r = 0; i < aL; i++) {
if (a[i] != b[i]) {
r = a[i] > b[i] ? 1 : -1;
break;
}
}
}
return r;
}
function subtract(a, b, aL, base) {
var i = 0;
for (; aL--; ) {
a[aL] -= i;
i = a[aL] < b[aL] ? 1 : 0;
a[aL] = i * base + a[aL] - b[aL];
}
for (; !a[0] && a.length > 1; )
a.shift();
}
return function(x, y, pr, rm, dp, base) {
var cmp, e2, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz, Ctor = x.constructor, sign3 = x.s == y.s ? 1 : -1, xd = x.d, yd = y.d;
if (!xd || !xd[0] || !yd || !yd[0]) {
return new Ctor(
// Return NaN if either NaN, or both Infinity or 0.
!x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : (
// Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.
xd && xd[0] == 0 || !yd ? sign3 * 0 : sign3 / 0
)
);
}
if (base) {
logBase = 1;
e2 = x.e - y.e;
} else {
base = BASE;
logBase = LOG_BASE;
e2 = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);
}
yL = yd.length;
xL = xd.length;
q = new Ctor(sign3);
qd = q.d = [];
for (i = 0; yd[i] == (xd[i] || 0); i++)
;
if (yd[i] > (xd[i] || 0))
e2--;
if (pr == null) {
sd = pr = Ctor.precision;
rm = Ctor.rounding;
} else if (dp) {
sd = pr + (x.e - y.e) + 1;
} else {
sd = pr;
}
if (sd < 0) {
qd.push(1);
more = true;
} else {
sd = sd / logBase + 2 | 0;
i = 0;
if (yL == 1) {
k = 0;
yd = yd[0];
sd++;
for (; (i < xL || k) && sd--; i++) {
t = k * base + (xd[i] || 0);
qd[i] = t / yd | 0;
k = t % yd | 0;
}
more = k || i < xL;
} else {
k = base / (yd[0] + 1) | 0;
if (k > 1) {
yd = multiplyInteger(yd, k, base);
xd = multiplyInteger(xd, k, base);
yL = yd.length;
xL = xd.length;
}
xi = yL;
rem = xd.slice(0, yL);
remL = rem.length;
for (; remL < yL; )
rem[remL++] = 0;
yz = yd.slice();
yz.unshift(0);
yd0 = yd[0];
if (yd[1] >= base / 2)
++yd0;
do {
k = 0;
cmp = compare(yd, rem, yL, remL);
if (cmp < 0) {
rem0 = rem[0];
if (yL != remL)
rem0 = rem0 * base + (rem[1] || 0);
k = rem0 / yd0 | 0;
if (k > 1) {
if (k >= base)
k = base - 1;
prod = multiplyInteger(yd, k, base);
prodL = prod.length;
remL = rem.length;
cmp = compare(prod, rem, prodL, remL);
if (cmp == 1) {
k--;
subtract(prod, yL < prodL ? yz : yd, prodL, base);
}
} else {
if (k == 0)
cmp = k = 1;
prod = yd.slice();
}
prodL = prod.length;
if (prodL < remL)
prod.unshift(0);
subtract(rem, prod, remL, base);
if (cmp == -1) {
remL = rem.length;
cmp = compare(yd, rem, yL, remL);
if (cmp < 1) {
k++;
subtract(rem, yL < remL ? yz : yd, remL, base);
}
}
remL = rem.length;
} else if (cmp === 0) {
k++;
rem = [0];
}
qd[i++] = k;
if (cmp && rem[0]) {
rem[remL++] = xd[xi] || 0;
} else {
rem = [xd[xi]];
remL = 1;
}
} while ((xi++ < xL || rem[0] !== void 0) && sd--);
more = rem[0] !== void 0;
}
if (!qd[0])
qd.shift();
}
if (logBase == 1) {
q.e = e2;
inexact = more;
} else {
for (i = 1, k = qd[0]; k >= 10; k /= 10)
i++;
q.e = i + e2 * logBase - 1;
finalise(q, dp ? pr + q.e + 1 : pr, rm, more);
}
return q;
};
}();
function finalise(x, sd, rm, isTruncated) {
var digits2, i, j, k, rd, roundUp, w, xd, xdi, Ctor = x.constructor;
out:
if (sd != null) {
xd = x.d;
if (!xd)
return x;
for (digits2 = 1, k = xd[0]; k >= 10; k /= 10)
digits2++;
i = sd - digits2;
if (i < 0) {
i += LOG_BASE;
j = sd;
w = xd[xdi = 0];
rd = w / mathpow(10, digits2 - j - 1) % 10 | 0;
} else {
xdi = Math.ceil((i + 1) / LOG_BASE);
k = xd.length;
if (xdi >= k) {
if (isTruncated) {
for (; k++ <= xdi; )
xd.push(0);
w = rd = 0;
digits2 = 1;
i %= LOG_BASE;
j = i - LOG_BASE + 1;
} else {
break out;
}
} else {
w = k = xd[xdi];
for (digits2 = 1; k >= 10; k /= 10)
digits2++;
i %= LOG_BASE;
j = i - LOG_BASE + digits2;
rd = j < 0 ? 0 : w / mathpow(10, digits2 - j - 1) % 10 | 0;
}
}
isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits2 - j - 1));
roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && // Check whether the digit to the left of the rounding digit is odd.
(i > 0 ? j > 0 ? w / mathpow(10, digits2 - j) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
if (sd < 1 || !xd[0]) {
xd.length = 0;
if (roundUp) {
sd -= x.e + 1;
xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);
x.e = -sd || 0;
} else {
xd[0] = x.e = 0;
}
return x;
}
if (i == 0) {
xd.length = xdi;
k = 1;
xdi--;
} else {
xd.length = xdi + 1;
k = mathpow(10, LOG_BASE - i);
xd[xdi] = j > 0 ? (w / mathpow(10, digits2 - j) % mathpow(10, j) | 0) * k : 0;
}
if (roundUp) {
for (; ; ) {
if (xdi == 0) {
for (i = 1, j = xd[0]; j >= 10; j /= 10)
i++;
j = xd[0] += k;
for (k = 1; j >= 10; j /= 10)
k++;
if (i != k) {
x.e++;
if (xd[0] == BASE)
xd[0] = 1;
}
break;
} else {
xd[xdi] += k;
if (xd[xdi] != BASE)
break;
xd[xdi--] = 0;
k = 1;
}
}
}
for (i = xd.length; xd[--i] === 0; )
xd.pop();
}
if (external) {
if (x.e > Ctor.maxE) {
x.d = null;
x.e = NaN;
} else if (x.e < Ctor.minE) {
x.e = 0;
x.d = [0];
}
}
return x;
}
function finiteToString(x, isExp, sd) {
if (!x.isFinite())
return nonFiniteToString(x);
var k, e2 = x.e, str = digitsToString(x.d), len = str.length;
if (isExp) {
if (sd && (k = sd - len) > 0) {
str = str.charAt(0) + "." + str.slice(1) + getZeroString(k);
} else if (len > 1) {
str = str.charAt(0) + "." + str.slice(1);
}
str = str + (x.e < 0 ? "e" : "e+") + x.e;
} else if (e2 < 0) {
str = "0." + getZeroString(-e2 - 1) + str;
if (sd && (k = sd - len) > 0)
str += getZeroString(k);
} else if (e2 >= len) {
str += getZeroString(e2 + 1 - len);
if (sd && (k = sd - e2 - 1) > 0)
str = str + "." + getZeroString(k);
} else {
if ((k = e2 + 1) < len)
str = str.slice(0, k) + "." + str.slice(k);
if (sd && (k = sd - len) > 0) {
if (e2 + 1 === len)
str += ".";
str += getZeroString(k);
}
}
return str;
}
function getBase10Exponent(digits2, e2) {
var w = digits2[0];
for (e2 *= LOG_BASE; w >= 10; w /= 10)
e2++;
return e2;
}
function getLn10(Ctor, sd, pr) {
if (sd > LN10_PRECISION) {
external = true;
if (pr)
Ctor.precision = pr;
throw Error(precisionLimitExceeded);
}
return finalise(new Ctor(LN10), sd, 1, true);
}
function getPi(Ctor, sd, rm) {
if (sd > PI_PRECISION)
throw Error(precisionLimitExceeded);
return finalise(new Ctor(PI), sd, rm, true);
}
function getPrecision(digits2) {
var w = digits2.length - 1, len = w * LOG_BASE + 1;
w = digits2[w];
if (w) {
for (; w % 10 == 0; w /= 10)
len--;
for (w = digits2[0]; w >= 10; w /= 10)
len++;
}
return len;
}
function getZeroString(k) {
var zs = "";
for (; k--; )
zs += "0";
return zs;
}
function intPow(Ctor, x, n, pr) {
var isTruncated, r = new Ctor(1), k = Math.ceil(pr / LOG_BASE + 4);
external = false;
for (; ; ) {
if (n % 2) {
r = r.times(x);
if (truncate(r.d, k))
isTruncated = true;
}
n = mathfloor(n / 2);
if (n === 0) {
n = r.d.length - 1;
if (isTruncated && r.d[n] === 0)
++r.d[n];
break;
}
x = x.times(x);
truncate(x.d, k);
}
external = true;
return r;
}
function isOdd(n) {
return n.d[n.d.length - 1] & 1;
}
function maxOrMin(Ctor, args, ltgt) {
var y, x = new Ctor(args[0]), i = 0;
for (; ++i < args.length; ) {
y = new Ctor(args[i]);
if (!y.s) {
x = y;
break;
} else if (x[ltgt](y)) {
x = y;
}
}
return x;
}
function naturalExponential(x, sd) {
var denominator, guard, j, pow2, sum2, t, wpr, rep = 0, i = 0, k = 0, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
if (!x.d || !x.d[0] || x.e > 17) {
return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0);
}
if (sd == null) {
external = false;
wpr = pr;
} else {
wpr = sd;
}
t = new Ctor(0.03125);
while (x.e > -2) {
x = x.times(t);
k += 5;
}
guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;
wpr += guard;
denominator = pow2 = sum2 = new Ctor(1);
Ctor.precision = wpr;
for (; ; ) {
pow2 = finalise(pow2.times(x), wpr, 1);
denominator = denominator.times(++i);
t = sum2.plus(divide(pow2, denominator, wpr, 1));
if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum2.d).slice(0, wpr)) {
j = k;
while (j--)
sum2 = finalise(sum2.times(sum2), wpr, 1);
if (sd == null) {
if (rep < 3 && checkRoundingDigits(sum2.d, wpr - guard, rm, rep)) {
Ctor.precision = wpr += 10;
denominator = pow2 = t = new Ctor(1);
i = 0;
rep++;
} else {
return finalise(sum2, Ctor.precision = pr, rm, external = true);
}
} else {
Ctor.precision = pr;
return sum2;
}
}
sum2 = t;
}
}
function naturalLogarithm(y, sd) {
var c, c0, denominator, e2, numerator, rep, sum2, t, wpr, x1, x2, n = 1, guard = 10, x = y, xd = x.d, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {
return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);
}
if (sd == null) {
external = false;
wpr = pr;
} else {
wpr = sd;
}
Ctor.precision = wpr += guard;
c = digitsToString(xd);
c0 = c.charAt(0);
if (Math.abs(e2 = x.e) < 15e14) {
while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {
x = x.times(y);
c = digitsToString(x.d);
c0 = c.charAt(0);
n++;
}
e2 = x.e;
if (c0 > 1) {
x = new Ctor("0." + c);
e2++;
} else {
x = new Ctor(c0 + "." + c.slice(1));
}
} else {
t = getLn10(Ctor, wpr + 2, pr).times(e2 + "");
x = naturalLogarithm(new Ctor(c0 + "." + c.slice(1)), wpr - guard).plus(t);
Ctor.precision = pr;
return sd == null ? finalise(x, pr, rm, external = true) : x;
}
x1 = x;
sum2 = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);
x2 = finalise(x.times(x), wpr, 1);
denominator = 3;
for (; ; ) {
numerator = finalise(numerator.times(x2), wpr, 1);
t = sum2.plus(divide(numerator, new Ctor(denominator), wpr, 1));
if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum2.d).slice(0, wpr)) {
sum2 = sum2.times(2);
if (e2 !== 0)
sum2 = sum2.plus(getLn10(Ctor, wpr + 2, pr).times(e2 + ""));
sum2 = divide(sum2, new Ctor(n), wpr, 1);
if (sd == null) {
if (checkRoundingDigits(sum2.d, wpr - guard, rm, rep)) {
Ctor.precision = wpr += guard;
t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);
x2 = finalise(x.times(x), wpr, 1);
denominator = rep = 1;
} else {
return finalise(sum2, Ctor.precision = pr, rm, external = true);
}
} else {
Ctor.precision = pr;
return sum2;
}
}
sum2 = t;
denominator += 2;
}
}
function nonFiniteToString(x) {
return String(x.s * x.s / 0);
}
function parseDecimal(x, str) {
var e2, i, len;
if ((e2 = str.indexOf(".")) > -1)
str = str.replace(".", "");
if ((i = str.search(/e/i)) > 0) {
if (e2 < 0)
e2 = i;
e2 += +str.slice(i + 1);
str = str.substring(0, i);
} else if (e2 < 0) {
e2 = str.length;
}
for (i = 0; str.charCodeAt(i) === 48; i++)
;
for (len = str.length; str.charCodeAt(len - 1) === 48; --len)
;
str = str.slice(i, len);
if (str) {
len -= i;
x.e = e2 = e2 - i - 1;
x.d = [];
i = (e2 + 1) % LOG_BASE;
if (e2 < 0)
i += LOG_BASE;
if (i < len) {
if (i)
x.d.push(+str.slice(0, i));
for (len -= LOG_BASE; i < len; )
x.d.push(+str.slice(i, i += LOG_BASE));
str = str.slice(i);
i = LOG_BASE - str.length;
} else {
i -= len;
}
for (; i--; )
str += "0";
x.d.push(+str);
if (external) {
if (x.e > x.constructor.maxE) {
x.d = null;
x.e = NaN;
} else if (x.e < x.constructor.minE) {
x.e = 0;
x.d = [0];
}
}
} else {
x.e = 0;
x.d = [0];
}
return x;
}
function parseOther(x, str) {
var base, Ctor, divisor, i, isFloat, len, p, xd, xe;
if (str.indexOf("_") > -1) {
str = str.replace(/(\d)_(?=\d)/g, "$1");
if (isDecimal.test(str))
return parseDecimal(x, str);
} else if (str === "Infinity" || str === "NaN") {
if (!+str)
x.s = NaN;
x.e = NaN;
x.d = null;
return x;
}
if (isHex.test(str)) {
base = 16;
str = str.toLowerCase();
} else if (isBinary.test(str)) {
base = 2;
} else if (isOctal.test(str)) {
base = 8;
} else {
throw Error(invalidArgument + str);
}
i = str.search(/p/i);
if (i > 0) {
p = +str.slice(i + 1);
str = str.substring(2, i);
} else {
str = str.slice(2);
}
i = str.indexOf(".");
isFloat = i >= 0;
Ctor = x.constructor;
if (isFloat) {
str = str.replace(".", "");
len = str.length;
i = len - i;
divisor = intPow(Ctor, new Ctor(base), i, i * 2);
}
xd = convertBase(str, base, BASE);
xe = xd.length - 1;
for (i = xe; xd[i] === 0; --i)
xd.pop();
if (i < 0)
return new Ctor(x.s * 0);
x.e = getBase10Exponent(xd, xe);
x.d = xd;
external = false;
if (isFloat)
x = divide(x, divisor, len * 4);
if (p)
x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));
external = true;
return x;
}
function sine(Ctor, x) {
var k, len = x.d.length;
if (len < 3) {
return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);
}
k = 1.4 * Math.sqrt(len);
k = k > 16 ? 16 : k | 0;
x = x.times(1 / tinyPow(5, k));
x = taylorSeries(Ctor, 2, x, x);
var sin2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
for (; k--; ) {
sin2_x = x.times(x);
x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));
}
return x;
}
function taylorSeries(Ctor, n, x, y, isHyperbolic) {
var j, t, u, x2, i = 1, pr = Ctor.precision, k = Math.ceil(pr / LOG_BASE);
external = false;
x2 = x.times(x);
u = new Ctor(y);
for (; ; ) {
t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);
u = isHyperbolic ? y.plus(t) : y.minus(t);
y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);
t = u.plus(y);
if (t.d[k] !== void 0) {
for (j = k; t.d[j] === u.d[j] && j--; )
;
if (j == -1)
break;
}
j = u;
u = y;
y = t;
t = j;
i++;
}
external = true;
t.d.length = k + 1;
return t;
}
function tinyPow(b, e2) {
var n = b;
while (--e2)
n *= b;
return n;
}
function toLessThanHalfPi(Ctor, x) {
var t, isNeg = x.s < 0, pi2 = getPi(Ctor, Ctor.precision, 1), halfPi = pi2.times(0.5);
x = x.abs();
if (x.lte(halfPi)) {
quadrant = isNeg ? 4 : 1;
return x;
}
t = x.divToInt(pi2);
if (t.isZero()) {
quadrant = isNeg ? 3 : 2;
} else {
x = x.minus(t.times(pi2));
if (x.lte(halfPi)) {
quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1;
return x;
}
quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2;
}
return x.minus(pi2).abs();
}
function toStringBinary(x, baseOut, sd, rm) {
var base, e2, i, k, len, roundUp, str, xd, y, Ctor = x.constructor, isExp = sd !== void 0;
if (isExp) {
checkInt32(sd, 1, MAX_DIGITS);
if (rm === void 0)
rm = Ctor.rounding;
else
checkInt32(rm, 0, 8);
} else {
sd = Ctor.precision;
rm = Ctor.rounding;
}
if (!x.isFinite()) {
str = nonFiniteToString(x);
} else {
str = finiteToString(x);
i = str.indexOf(".");
if (isExp) {
base = 2;
if (baseOut == 16) {
sd = sd * 4 - 3;
} else if (baseOut == 8) {
sd = sd * 3 - 2;
}
} else {
base = baseOut;
}
if (i >= 0) {
str = str.replace(".", "");
y = new Ctor(1);
y.e = str.length - i;
y.d = convertBase(finiteToString(y), 10, base);
y.e = y.d.length;
}
xd = convertBase(str, 10, base);
e2 = len = xd.length;
for (; xd[--len] == 0; )
xd.pop();
if (!xd[0]) {
str = isExp ? "0p+0" : "0";
} else {
if (i < 0) {
e2--;
} else {
x = new Ctor(x);
x.d = xd;
x.e = e2;
x = divide(x, y, sd, rm, 0, base);
xd = x.d;
e2 = x.e;
roundUp = inexact;
}
i = xd[sd];
k = base / 2;
roundUp = roundUp || xd[sd + 1] !== void 0;
roundUp = rm < 4 ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7));
xd.length = sd;
if (roundUp) {
for (; ++xd[--sd] > base - 1; ) {
xd[sd] = 0;
if (!sd) {
++e2;
xd.unshift(1);
}
}
}
for (len = xd.length; !xd[len - 1]; --len)
;
for (i = 0, str = ""; i < len; i++)
str += NUMERALS.charAt(xd[i]);
if (isExp) {
if (len > 1) {
if (baseOut == 16 || baseOut == 8) {
i = baseOut == 16 ? 4 : 3;
for (--len; len % i; len++)
str += "0";
xd = convertBase(str, base, baseOut);
for (len = xd.length; !xd[len - 1]; --len)
;
for (i = 1, str = "1."; i < len; i++)
str += NUMERALS.charAt(xd[i]);
} else {
str = str.charAt(0) + "." + str.slice(1);
}
}
str = str + (e2 < 0 ? "p" : "p+") + e2;
} else if (e2 < 0) {
for (; ++e2; )
str = "0" + str;
str = "0." + str;
} else {
if (++e2 > len)
for (e2 -= len; e2--; )
str += "0";
else if (e2 < len)
str = str.slice(0, e2) + "." + str.slice(e2);
}
}
str = (baseOut == 16 ? "0x" : baseOut == 2 ? "0b" : baseOut == 8 ? "0o" : "") + str;
}
return x.s < 0 ? "-" + str : str;
}
function truncate(arr, len) {
if (arr.length > len) {
arr.length = len;
return true;
}
}
function abs(x) {
return new this(x).abs();
}
function acos(x) {
return new this(x).acos();
}
function acosh2(x) {
return new this(x).acosh();
}
function add(x, y) {
return new this(x).plus(y);
}
function asin(x) {
return new this(x).asin();
}
function asinh2(x) {
return new this(x).asinh();
}
function atan(x) {
return new this(x).atan();
}
function atanh2(x) {
return new this(x).atanh();
}
function atan2(y, x) {
y = new this(y);
x = new this(x);
var r, pr = this.precision, rm = this.rounding, wpr = pr + 4;
if (!y.s || !x.s) {
r = new this(NaN);
} else if (!y.d && !x.d) {
r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);
r.s = y.s;
} else if (!x.d || y.isZero()) {
r = x.s < 0 ? getPi(this, pr, rm) : new this(0);
r.s = y.s;
} else if (!y.d || x.isZero()) {
r = getPi(this, wpr, 1).times(0.5);
r.s = y.s;
} else if (x.s < 0) {
this.precision = wpr;
this.rounding = 1;
r = this.atan(divide(y, x, wpr, 1));
x = getPi(this, wpr, 1);
this.precision = pr;
this.rounding = rm;
r = y.s < 0 ? r.minus(x) : r.plus(x);
} else {
r = this.atan(divide(y, x, wpr, 1));
}
return r;
}
function cbrt3(x) {
return new this(x).cbrt();
}
function ceil(x) {
return finalise(x = new this(x), x.e + 1, 2);
}
function clamp(x, min2, max2) {
return new this(x).clamp(min2, max2);
}
function config(obj) {
if (!obj || typeof obj !== "object")
throw Error(decimalError + "Object expected");
var i, p, v, useDefaults = obj.defaults === true, ps = [
"precision",
1,
MAX_DIGITS,
"rounding",
0,
8,
"toExpNeg",
-EXP_LIMIT,
0,
"toExpPos",
0,
EXP_LIMIT,
"maxE",
0,
EXP_LIMIT,
"minE",
-EXP_LIMIT,
0,
"modulo",
0,
9
];
for (i = 0; i < ps.length; i += 3) {
if (p = ps[i], useDefaults)
this[p] = DEFAULTS[p];
if ((v = obj[p]) !== void 0) {
if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2])
this[p] = v;
else
throw Error(invalidArgument + p + ": " + v);
}
}
if (p = "crypto", useDefaults)
this[p] = DEFAULTS[p];
if ((v = obj[p]) !== void 0) {
if (v === true || v === false || v === 0 || v === 1) {
if (v) {
if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
this[p] = true;
} else {
throw Error(cryptoUnavailable);
}
} else {
this[p] = false;
}
} else {
throw Error(invalidArgument + p + ": " + v);
}
}
return this;
}
function cos(x) {
return new this(x).cos();
}
function cosh2(x) {
return new this(x).cosh();
}
function clone3(obj) {
var i, p, ps;
function Decimal2(v) {
var e2, i2, t, x = this;
if (!(x instanceof Decimal2))
return new Decimal2(v);
x.constructor = Decimal2;
if (isDecimalInstance(v)) {
x.s = v.s;
if (external) {
if (!v.d || v.e > Decimal2.maxE) {
x.e = NaN;
x.d = null;
} else if (v.e < Decimal2.minE) {
x.e = 0;
x.d = [0];
} else {
x.e = v.e;
x.d = v.d.slice();
}
} else {
x.e = v.e;
x.d = v.d ? v.d.slice() : v.d;
}
return;
}
t = typeof v;
if (t === "number") {
if (v === 0) {
x.s = 1 / v < 0 ? -1 : 1;
x.e = 0;
x.d = [0];
return;
}
if (v < 0) {
v = -v;
x.s = -1;
} else {
x.s = 1;
}
if (v === ~~v && v < 1e7) {
for (e2 = 0, i2 = v; i2 >= 10; i2 /= 10)
e2++;
if (external) {
if (e2 > Decimal2.maxE) {
x.e = NaN;
x.d = null;
} else if (e2 < Decimal2.minE) {
x.e = 0;
x.d = [0];
} else {
x.e = e2;
x.d = [v];
}
} else {
x.e = e2;
x.d = [v];
}
return;
} else if (v * 0 !== 0) {
if (!v)
x.s = NaN;
x.e = NaN;
x.d = null;
return;
}
return parseDecimal(x, v.toString());
} else if (t !== "string") {
throw Error(invalidArgument + v);
}
if ((i2 = v.charCodeAt(0)) === 45) {
v = v.slice(1);
x.s = -1;
} else {
if (i2 === 43)
v = v.slice(1);
x.s = 1;
}
return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);
}
Decimal2.prototype = P;
Decimal2.ROUND_UP = 0;
Decimal2.ROUND_DOWN = 1;
Decimal2.ROUND_CEIL = 2;
Decimal2.ROUND_FLOOR = 3;
Decimal2.ROUND_HALF_UP = 4;
Decimal2.ROUND_HALF_DOWN = 5;
Decimal2.ROUND_HALF_EVEN = 6;
Decimal2.ROUND_HALF_CEIL = 7;
Decimal2.ROUND_HALF_FLOOR = 8;
Decimal2.EUCLID = 9;
Decimal2.config = Decimal2.set = config;
Decimal2.clone = clone3;
Decimal2.isDecimal = isDecimalInstance;
Decimal2.abs = abs;
Decimal2.acos = acos;
Decimal2.acosh = acosh2;
Decimal2.add = add;
Decimal2.asin = asin;
Decimal2.asinh = asinh2;
Decimal2.atan = atan;
Decimal2.atanh = atanh2;
Decimal2.atan2 = atan2;
Decimal2.cbrt = cbrt3;
Decimal2.ceil = ceil;
Decimal2.clamp = clamp;
Decimal2.cos = cos;
Decimal2.cosh = cosh2;
Decimal2.div = div;
Decimal2.exp = exp;
Decimal2.floor = floor;
Decimal2.hypot = hypot;
Decimal2.ln = ln;
Decimal2.log = log;
Decimal2.log10 = log103;
Decimal2.log2 = log23;
Decimal2.max = max;
Decimal2.min = min;
Decimal2.mod = mod;
Decimal2.mul = mul;
Decimal2.pow = pow;
Decimal2.random = random;
Decimal2.round = round;
Decimal2.sign = sign2;
Decimal2.sin = sin;
Decimal2.sinh = sinh2;
Decimal2.sqrt = sqrt;
Decimal2.sub = sub;
Decimal2.sum = sum;
Decimal2.tan = tan;
Decimal2.tanh = tanh2;
Decimal2.trunc = trunc;
if (obj === void 0)
obj = {};
if (obj) {
if (obj.defaults !== true) {
ps = ["precision", "rounding", "toExpNeg", "toExpPos", "maxE", "minE", "modulo", "crypto"];
for (i = 0; i < ps.length; )
if (!obj.hasOwnProperty(p = ps[i++]))
obj[p] = this[p];
}
}
Decimal2.config(obj);
return Decimal2;
}
function div(x, y) {
return new this(x).div(y);
}
function exp(x) {
return new this(x).exp();
}
function floor(x) {
return finalise(x = new this(x), x.e + 1, 3);
}
function hypot() {
var i, n, t = new this(0);
external = false;
for (i = 0; i < arguments.length; ) {
n = new this(arguments[i++]);
if (!n.d) {
if (n.s) {
external = true;
return new this(1 / 0);
}
t = n;
} else if (t.d) {
t = t.plus(n.times(n));
}
}
external = true;
return t.sqrt();
}
function isDecimalInstance(obj) {
return obj instanceof Decimal || obj && obj.toStringTag === tag || false;
}
function ln(x) {
return new this(x).ln();
}
function log(x, y) {
return new this(x).log(y);
}
function log23(x) {
return new this(x).log(2);
}
function log103(x) {
return new this(x).log(10);
}
function max() {
return maxOrMin(this, arguments, "lt");
}
function min() {
return maxOrMin(this, arguments, "gt");
}
function mod(x, y) {
return new this(x).mod(y);
}
function mul(x, y) {
return new this(x).mul(y);
}
function pow(x, y) {
return new this(x).pow(y);
}
function random(sd) {
var d, e2, k, n, i = 0, r = new this(1), rd = [];
if (sd === void 0)
sd = this.precision;
else
checkInt32(sd, 1, MAX_DIGITS);
k = Math.ceil(sd / LOG_BASE);
if (!this.crypto) {
for (; i < k; )
rd[i++] = Math.random() * 1e7 | 0;
} else if (crypto.getRandomValues) {
d = crypto.getRandomValues(new Uint32Array(k));
for (; i < k; ) {
n = d[i];
if (n >= 429e7) {
d[i] = crypto.getRandomValues(new Uint32Array(1))[0];
} else {
rd[i++] = n % 1e7;
}
}
} else if (crypto.randomBytes) {
d = crypto.randomBytes(k *= 4);
for (; i < k; ) {
n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 127) << 24);
if (n >= 214e7) {
crypto.randomBytes(4).copy(d, i);
} else {
rd.push(n % 1e7);
i += 4;
}
}
i = k / 4;
} else {
throw Error(cryptoUnavailable);
}
k = rd[--i];
sd %= LOG_BASE;
if (k && sd) {
n = mathpow(10, LOG_BASE - sd);
rd[i] = (k / n | 0) * n;
}
for (; rd[i] === 0; i--)
rd.pop();
if (i < 0) {
e2 = 0;
rd = [0];
} else {
e2 = -1;
for (; rd[0] === 0; e2 -= LOG_BASE)
rd.shift();
for (k = 1, n = rd[0]; n >= 10; n /= 10)
k++;
if (k < LOG_BASE)
e2 -= LOG_BASE - k;
}
r.e = e2;
r.d = rd;
return r;
}
function round(x) {
return finalise(x = new this(x), x.e + 1, this.rounding);
}
function sign2(x) {
x = new this(x);
return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN;
}
function sin(x) {
return new this(x).sin();
}
function sinh2(x) {
return new this(x).sinh();
}
function sqrt(x) {
return new this(x).sqrt();
}
function sub(x, y) {
return new this(x).sub(y);
}
function sum() {
var i = 0, args = arguments, x = new this(args[i]);
external = false;
for (; x.s && ++i < args.length; )
x = x.plus(args[i]);
external = true;
return finalise(x, this.precision, this.rounding);
}
function tan(x) {
return new this(x).tan();
}
function tanh2(x) {
return new this(x).tanh();
}
function trunc(x) {
return finalise(x = new this(x), x.e + 1, 1);
}
P[Symbol.for("nodejs.util.inspect.custom")] = P.toString;
P[Symbol.toStringTag] = "Decimal";
var Decimal = P.constructor = clone3(DEFAULTS);
LN10 = new Decimal(LN10);
PI = new Decimal(PI);
var decimal_default = Decimal;
// node_modules/mathjs/lib/esm/type/bignumber/BigNumber.js
var name2 = "BigNumber";
var dependencies3 = ["?on", "config"];
var createBigNumberClass = /* @__PURE__ */ factory(name2, dependencies3, (_ref) => {
var {
on,
config: config2
} = _ref;
var BigNumber = decimal_default.clone({
precision: config2.precision,
modulo: decimal_default.EUCLID
});
BigNumber.prototype = Object.create(BigNumber.prototype);
BigNumber.prototype.type = "BigNumber";
BigNumber.prototype.isBigNumber = true;
BigNumber.prototype.toJSON = function() {
return {
mathjs: "BigNumber",
value: this.toString()
};
};
BigNumber.fromJSON = function(json) {
return new BigNumber(json.value);
};
if (on) {
on("config", function(curr, prev) {
if (curr.precision !== prev.precision) {
BigNumber.config({
precision: curr.precision
});
}
});
}
return BigNumber;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/complex/Complex.js
var import_complex = __toESM(require_complex(), 1);
var name3 = "Complex";
var dependencies4 = [];
var createComplexClass = /* @__PURE__ */ factory(name3, dependencies4, () => {
Object.defineProperty(import_complex.default, "name", {
value: "Complex"
});
import_complex.default.prototype.constructor = import_complex.default;
import_complex.default.prototype.type = "Complex";
import_complex.default.prototype.isComplex = true;
import_complex.default.prototype.toJSON = function() {
return {
mathjs: "Complex",
re: this.re,
im: this.im
};
};
import_complex.default.prototype.toPolar = function() {
return {
r: this.abs(),
phi: this.arg()
};
};
import_complex.default.prototype.format = function(options) {
var str = "";
var im = this.im;
var re = this.re;
var strRe = format(this.re, options);
var strIm = format(this.im, options);
var precision = isNumber(options) ? options : options ? options.precision : null;
if (precision !== null) {
var epsilon = Math.pow(10, -precision);
if (Math.abs(re / im) < epsilon) {
re = 0;
}
if (Math.abs(im / re) < epsilon) {
im = 0;
}
}
if (im === 0) {
str = strRe;
} else if (re === 0) {
if (im === 1) {
str = "i";
} else if (im === -1) {
str = "-i";
} else {
str = strIm + "i";
}
} else {
if (im < 0) {
if (im === -1) {
str = strRe + " - i";
} else {
str = strRe + " - " + strIm.substring(1) + "i";
}
} else {
if (im === 1) {
str = strRe + " + i";
} else {
str = strRe + " + " + strIm + "i";
}
}
}
return str;
};
import_complex.default.fromPolar = function(args) {
switch (arguments.length) {
case 1: {
var arg = arguments[0];
if (typeof arg === "object") {
return (0, import_complex.default)(arg);
} else {
throw new TypeError("Input has to be an object with r and phi keys.");
}
}
case 2: {
var r = arguments[0];
var phi2 = arguments[1];
if (isNumber(r)) {
if (isUnit(phi2) && phi2.hasBase("ANGLE")) {
phi2 = phi2.toNumber("rad");
}
if (isNumber(phi2)) {
return new import_complex.default({
r,
phi: phi2
});
}
throw new TypeError("Phi is not a number nor an angle unit.");
} else {
throw new TypeError("Radius r is not a number.");
}
}
default:
throw new SyntaxError("Wrong number of arguments in function fromPolar");
}
};
import_complex.default.prototype.valueOf = import_complex.default.prototype.toString;
import_complex.default.fromJSON = function(json) {
return new import_complex.default(json);
};
import_complex.default.compare = function(a, b) {
if (a.re > b.re) {
return 1;
}
if (a.re < b.re) {
return -1;
}
if (a.im > b.im) {
return 1;
}
if (a.im < b.im) {
return -1;
}
return 0;
};
return import_complex.default;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/fraction/Fraction.js
var import_fraction = __toESM(require_fraction(), 1);
var name4 = "Fraction";
var dependencies5 = [];
var createFractionClass = /* @__PURE__ */ factory(name4, dependencies5, () => {
Object.defineProperty(import_fraction.default, "name", {
value: "Fraction"
});
import_fraction.default.prototype.constructor = import_fraction.default;
import_fraction.default.prototype.type = "Fraction";
import_fraction.default.prototype.isFraction = true;
import_fraction.default.prototype.toJSON = function() {
return {
mathjs: "Fraction",
n: this.s * this.n,
d: this.d
};
};
import_fraction.default.fromJSON = function(json) {
return new import_fraction.default(json);
};
return import_fraction.default;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/matrix/Range.js
var name5 = "Range";
var dependencies6 = [];
var createRangeClass = /* @__PURE__ */ factory(name5, dependencies6, () => {
function Range(start, end, step) {
if (!(this instanceof Range)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
var hasStart = start !== null && start !== void 0;
var hasEnd = end !== null && end !== void 0;
var hasStep = step !== null && step !== void 0;
if (hasStart) {
if (isBigNumber(start)) {
start = start.toNumber();
} else if (typeof start !== "number") {
throw new TypeError("Parameter start must be a number");
}
}
if (hasEnd) {
if (isBigNumber(end)) {
end = end.toNumber();
} else if (typeof end !== "number") {
throw new TypeError("Parameter end must be a number");
}
}
if (hasStep) {
if (isBigNumber(step)) {
step = step.toNumber();
} else if (typeof step !== "number") {
throw new TypeError("Parameter step must be a number");
}
}
this.start = hasStart ? parseFloat(start) : 0;
this.end = hasEnd ? parseFloat(end) : 0;
this.step = hasStep ? parseFloat(step) : 1;
}
Range.prototype.type = "Range";
Range.prototype.isRange = true;
Range.parse = function(str) {
if (typeof str !== "string") {
return null;
}
var args = str.split(":");
var nums = args.map(function(arg) {
return parseFloat(arg);
});
var invalid = nums.some(function(num) {
return isNaN(num);
});
if (invalid) {
return null;
}
switch (nums.length) {
case 2:
return new Range(nums[0], nums[1]);
case 3:
return new Range(nums[0], nums[2], nums[1]);
default:
return null;
}
};
Range.prototype.clone = function() {
return new Range(this.start, this.end, this.step);
};
Range.prototype.size = function() {
var len = 0;
var start = this.start;
var step = this.step;
var end = this.end;
var diff = end - start;
if (sign(step) === sign(diff)) {
len = Math.ceil(diff / step);
} else if (diff === 0) {
len = 0;
}
if (isNaN(len)) {
len = 0;
}
return [len];
};
Range.prototype.min = function() {
var size = this.size()[0];
if (size > 0) {
if (this.step > 0) {
return this.start;
} else {
return this.start + (size - 1) * this.step;
}
} else {
return void 0;
}
};
Range.prototype.max = function() {
var size = this.size()[0];
if (size > 0) {
if (this.step > 0) {
return this.start + (size - 1) * this.step;
} else {
return this.start;
}
} else {
return void 0;
}
};
Range.prototype.forEach = function(callback) {
var x = this.start;
var step = this.step;
var end = this.end;
var i = 0;
if (step > 0) {
while (x < end) {
callback(x, [i], this);
x += step;
i++;
}
} else if (step < 0) {
while (x > end) {
callback(x, [i], this);
x += step;
i++;
}
}
};
Range.prototype.map = function(callback) {
var array = [];
this.forEach(function(value, index, obj) {
array[index[0]] = callback(value, index, obj);
});
return array;
};
Range.prototype.toArray = function() {
var array = [];
this.forEach(function(value, index) {
array[index[0]] = value;
});
return array;
};
Range.prototype.valueOf = function() {
return this.toArray();
};
Range.prototype.format = function(options) {
var str = format(this.start, options);
if (this.step !== 1) {
str += ":" + format(this.step, options);
}
str += ":" + format(this.end, options);
return str;
};
Range.prototype.toString = function() {
return this.format();
};
Range.prototype.toJSON = function() {
return {
mathjs: "Range",
start: this.start,
end: this.end,
step: this.step
};
};
Range.fromJSON = function(json) {
return new Range(json.start, json.end, json.step);
};
return Range;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/matrix/Matrix.js
var name6 = "Matrix";
var dependencies7 = [];
var createMatrixClass = /* @__PURE__ */ factory(name6, dependencies7, () => {
function Matrix() {
if (!(this instanceof Matrix)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
}
Matrix.prototype.type = "Matrix";
Matrix.prototype.isMatrix = true;
Matrix.prototype.storage = function() {
throw new Error("Cannot invoke storage on a Matrix interface");
};
Matrix.prototype.datatype = function() {
throw new Error("Cannot invoke datatype on a Matrix interface");
};
Matrix.prototype.create = function(data, datatype) {
throw new Error("Cannot invoke create on a Matrix interface");
};
Matrix.prototype.subset = function(index, replacement, defaultValue) {
throw new Error("Cannot invoke subset on a Matrix interface");
};
Matrix.prototype.get = function(index) {
throw new Error("Cannot invoke get on a Matrix interface");
};
Matrix.prototype.set = function(index, value, defaultValue) {
throw new Error("Cannot invoke set on a Matrix interface");
};
Matrix.prototype.resize = function(size, defaultValue) {
throw new Error("Cannot invoke resize on a Matrix interface");
};
Matrix.prototype.reshape = function(size, defaultValue) {
throw new Error("Cannot invoke reshape on a Matrix interface");
};
Matrix.prototype.clone = function() {
throw new Error("Cannot invoke clone on a Matrix interface");
};
Matrix.prototype.size = function() {
throw new Error("Cannot invoke size on a Matrix interface");
};
Matrix.prototype.map = function(callback, skipZeros) {
throw new Error("Cannot invoke map on a Matrix interface");
};
Matrix.prototype.forEach = function(callback) {
throw new Error("Cannot invoke forEach on a Matrix interface");
};
Matrix.prototype[Symbol.iterator] = function() {
throw new Error("Cannot iterate a Matrix interface");
};
Matrix.prototype.toArray = function() {
throw new Error("Cannot invoke toArray on a Matrix interface");
};
Matrix.prototype.valueOf = function() {
throw new Error("Cannot invoke valueOf on a Matrix interface");
};
Matrix.prototype.format = function(options) {
throw new Error("Cannot invoke format on a Matrix interface");
};
Matrix.prototype.toString = function() {
throw new Error("Cannot invoke toString on a Matrix interface");
};
return Matrix;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/utils/lruQueue.js
function lruQueue(limit) {
var size = 0;
var base = 1;
var queue = /* @__PURE__ */ Object.create(null);
var map2 = /* @__PURE__ */ Object.create(null);
var index = 0;
var del = function del2(id) {
var oldIndex = map2[id];
if (!oldIndex)
return;
delete queue[oldIndex];
delete map2[id];
--size;
if (base !== oldIndex)
return;
if (!size) {
index = 0;
base = 1;
return;
}
while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {
}
};
limit = Math.abs(limit);
return {
hit: function hit(id) {
var oldIndex = map2[id];
var nuIndex = ++index;
queue[nuIndex] = id;
map2[id] = nuIndex;
if (!oldIndex) {
++size;
if (size <= limit)
return void 0;
id = queue[base];
del(id);
return id;
}
delete queue[oldIndex];
if (base !== oldIndex)
return void 0;
while (!Object.prototype.hasOwnProperty.call(queue, ++base)) {
}
return void 0;
},
delete: del,
clear: function clear() {
size = index = 0;
base = 1;
queue = /* @__PURE__ */ Object.create(null);
map2 = /* @__PURE__ */ Object.create(null);
}
};
}
// node_modules/mathjs/lib/esm/utils/function.js
function memoize(fn) {
var {
hasher: hasher2,
limit
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
limit = limit == null ? Number.POSITIVE_INFINITY : limit;
hasher2 = hasher2 == null ? JSON.stringify : hasher2;
return function memoize2() {
if (typeof memoize2.cache !== "object") {
memoize2.cache = {
values: /* @__PURE__ */ new Map(),
lru: lruQueue(limit || Number.POSITIVE_INFINITY)
};
}
var args = [];
for (var i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
var hash = hasher2(args);
if (memoize2.cache.values.has(hash)) {
memoize2.cache.lru.hit(hash);
return memoize2.cache.values.get(hash);
}
var newVal = fn.apply(fn, args);
memoize2.cache.values.set(hash, newVal);
memoize2.cache.values.delete(memoize2.cache.lru.hit(hash));
return newVal;
};
}
function maxArgumentCount(fn) {
return Object.keys(fn.signatures || {}).reduce(function(args, signature) {
var count = (signature.match(/,/g) || []).length + 1;
return Math.max(args, count);
}, -1);
}
// node_modules/mathjs/lib/esm/type/matrix/DenseMatrix.js
var name7 = "DenseMatrix";
var dependencies8 = ["Matrix"];
var createDenseMatrixClass = /* @__PURE__ */ factory(name7, dependencies8, (_ref) => {
var {
Matrix
} = _ref;
function DenseMatrix(data, datatype) {
if (!(this instanceof DenseMatrix)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
if (datatype && !isString(datatype)) {
throw new Error("Invalid datatype: " + datatype);
}
if (isMatrix(data)) {
if (data.type === "DenseMatrix") {
this._data = clone(data._data);
this._size = clone(data._size);
this._datatype = datatype || data._datatype;
} else {
this._data = data.toArray();
this._size = data.size();
this._datatype = datatype || data._datatype;
}
} else if (data && isArray(data.data) && isArray(data.size)) {
this._data = data.data;
this._size = data.size;
validate(this._data, this._size);
this._datatype = datatype || data.datatype;
} else if (isArray(data)) {
this._data = preprocess(data);
this._size = arraySize(this._data);
validate(this._data, this._size);
this._datatype = datatype;
} else if (data) {
throw new TypeError("Unsupported type of data (" + typeOf(data) + ")");
} else {
this._data = [];
this._size = [0];
this._datatype = datatype;
}
}
DenseMatrix.prototype = new Matrix();
DenseMatrix.prototype.createDenseMatrix = function(data, datatype) {
return new DenseMatrix(data, datatype);
};
Object.defineProperty(DenseMatrix, "name", {
value: "DenseMatrix"
});
DenseMatrix.prototype.constructor = DenseMatrix;
DenseMatrix.prototype.type = "DenseMatrix";
DenseMatrix.prototype.isDenseMatrix = true;
DenseMatrix.prototype.getDataType = function() {
return getArrayDataType(this._data, typeOf);
};
DenseMatrix.prototype.storage = function() {
return "dense";
};
DenseMatrix.prototype.datatype = function() {
return this._datatype;
};
DenseMatrix.prototype.create = function(data, datatype) {
return new DenseMatrix(data, datatype);
};
DenseMatrix.prototype.subset = function(index, replacement, defaultValue) {
switch (arguments.length) {
case 1:
return _get(this, index);
case 2:
case 3:
return _set(this, index, replacement, defaultValue);
default:
throw new SyntaxError("Wrong number of arguments");
}
};
DenseMatrix.prototype.get = function(index) {
if (!isArray(index)) {
throw new TypeError("Array expected");
}
if (index.length !== this._size.length) {
throw new DimensionError(index.length, this._size.length);
}
for (var x = 0; x < index.length; x++) {
validateIndex(index[x], this._size[x]);
}
var data = this._data;
for (var i = 0, ii = index.length; i < ii; i++) {
var indexI = index[i];
validateIndex(indexI, data.length);
data = data[indexI];
}
return data;
};
DenseMatrix.prototype.set = function(index, value, defaultValue) {
if (!isArray(index)) {
throw new TypeError("Array expected");
}
if (index.length < this._size.length) {
throw new DimensionError(index.length, this._size.length, "<");
}
var i, ii, indexI;
var size = index.map(function(i2) {
return i2 + 1;
});
_fit(this, size, defaultValue);
var data = this._data;
for (i = 0, ii = index.length - 1; i < ii; i++) {
indexI = index[i];
validateIndex(indexI, data.length);
data = data[indexI];
}
indexI = index[index.length - 1];
validateIndex(indexI, data.length);
data[indexI] = value;
return this;
};
function _get(matrix, index) {
if (!isIndex(index)) {
throw new TypeError("Invalid index");
}
var isScalar = index.isScalar();
if (isScalar) {
return matrix.get(index.min());
} else {
var size = index.size();
if (size.length !== matrix._size.length) {
throw new DimensionError(size.length, matrix._size.length);
}
var min2 = index.min();
var max2 = index.max();
for (var i = 0, ii = matrix._size.length; i < ii; i++) {
validateIndex(min2[i], matrix._size[i]);
validateIndex(max2[i], matrix._size[i]);
}
return new DenseMatrix(_getSubmatrix(matrix._data, index, size.length, 0), matrix._datatype);
}
}
function _getSubmatrix(data, index, dims, dim) {
var last = dim === dims - 1;
var range = index.dimension(dim);
if (last) {
return range.map(function(i) {
validateIndex(i, data.length);
return data[i];
}).valueOf();
} else {
return range.map(function(i) {
validateIndex(i, data.length);
var child = data[i];
return _getSubmatrix(child, index, dims, dim + 1);
}).valueOf();
}
}
function _set(matrix, index, submatrix, defaultValue) {
if (!index || index.isIndex !== true) {
throw new TypeError("Invalid index");
}
var iSize = index.size();
var isScalar = index.isScalar();
var sSize;
if (isMatrix(submatrix)) {
sSize = submatrix.size();
submatrix = submatrix.valueOf();
} else {
sSize = arraySize(submatrix);
}
if (isScalar) {
if (sSize.length !== 0) {
throw new TypeError("Scalar expected");
}
matrix.set(index.min(), submatrix, defaultValue);
} else {
if (!deepStrictEqual(sSize, iSize)) {
try {
if (sSize.length === 0) {
submatrix = broadcastTo([submatrix], iSize);
} else {
submatrix = broadcastTo(submatrix, iSize);
}
sSize = arraySize(submatrix);
} catch (_unused) {
}
}
if (iSize.length < matrix._size.length) {
throw new DimensionError(iSize.length, matrix._size.length, "<");
}
if (sSize.length < iSize.length) {
var i = 0;
var outer = 0;
while (iSize[i] === 1 && sSize[i] === 1) {
i++;
}
while (iSize[i] === 1) {
outer++;
i++;
}
submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);
}
if (!deepStrictEqual(iSize, sSize)) {
throw new DimensionError(iSize, sSize, ">");
}
var size = index.max().map(function(i2) {
return i2 + 1;
});
_fit(matrix, size, defaultValue);
var dims = iSize.length;
var dim = 0;
_setSubmatrix(matrix._data, index, submatrix, dims, dim);
}
return matrix;
}
function _setSubmatrix(data, index, submatrix, dims, dim) {
var last = dim === dims - 1;
var range = index.dimension(dim);
if (last) {
range.forEach(function(dataIndex, subIndex) {
validateIndex(dataIndex);
data[dataIndex] = submatrix[subIndex[0]];
});
} else {
range.forEach(function(dataIndex, subIndex) {
validateIndex(dataIndex);
_setSubmatrix(data[dataIndex], index, submatrix[subIndex[0]], dims, dim + 1);
});
}
}
DenseMatrix.prototype.resize = function(size, defaultValue, copy) {
if (!isCollection(size)) {
throw new TypeError("Array or Matrix expected");
}
var sizeArray = size.valueOf().map((value) => {
return Array.isArray(value) && value.length === 1 ? value[0] : value;
});
var m = copy ? this.clone() : this;
return _resize2(m, sizeArray, defaultValue);
};
function _resize2(matrix, size, defaultValue) {
if (size.length === 0) {
var v = matrix._data;
while (isArray(v)) {
v = v[0];
}
return v;
}
matrix._size = size.slice(0);
matrix._data = resize(matrix._data, matrix._size, defaultValue);
return matrix;
}
DenseMatrix.prototype.reshape = function(size, copy) {
var m = copy ? this.clone() : this;
m._data = reshape(m._data, size);
var currentLength = m._size.reduce((length, size2) => length * size2);
m._size = processSizesWildcard(size, currentLength);
return m;
};
function _fit(matrix, size, defaultValue) {
var newSize = matrix._size.slice(0);
var changed = false;
while (newSize.length < size.length) {
newSize.push(0);
changed = true;
}
for (var i = 0, ii = size.length; i < ii; i++) {
if (size[i] > newSize[i]) {
newSize[i] = size[i];
changed = true;
}
}
if (changed) {
_resize2(matrix, newSize, defaultValue);
}
}
DenseMatrix.prototype.clone = function() {
var m = new DenseMatrix({
data: clone(this._data),
size: clone(this._size),
datatype: this._datatype
});
return m;
};
DenseMatrix.prototype.size = function() {
return this._size.slice(0);
};
DenseMatrix.prototype.map = function(callback) {
var me = this;
var args = maxArgumentCount(callback);
var recurse = function recurse2(value, index) {
if (isArray(value)) {
return value.map(function(child, i) {
return recurse2(child, index.concat(i));
});
} else {
if (args === 1) {
return callback(value);
} else if (args === 2) {
return callback(value, index);
} else {
return callback(value, index, me);
}
}
};
var data = recurse(this._data, []);
var datatype = this._datatype !== void 0 ? getArrayDataType(data, typeOf) : void 0;
return new DenseMatrix(data, datatype);
};
DenseMatrix.prototype.forEach = function(callback) {
var me = this;
var recurse = function recurse2(value, index) {
if (isArray(value)) {
value.forEach(function(child, i) {
recurse2(child, index.concat(i));
});
} else {
callback(value, index, me);
}
};
recurse(this._data, []);
};
DenseMatrix.prototype[Symbol.iterator] = function* () {
var recurse = function* recurse2(value, index) {
if (isArray(value)) {
for (var i = 0; i < value.length; i++) {
yield* recurse2(value[i], index.concat(i));
}
} else {
yield {
value,
index
};
}
};
yield* recurse(this._data, []);
};
DenseMatrix.prototype.rows = function() {
var result = [];
var s = this.size();
if (s.length !== 2) {
throw new TypeError("Rows can only be returned for a 2D matrix.");
}
var data = this._data;
for (var row of data) {
result.push(new DenseMatrix([row], this._datatype));
}
return result;
};
DenseMatrix.prototype.columns = function() {
var _this = this;
var result = [];
var s = this.size();
if (s.length !== 2) {
throw new TypeError("Rows can only be returned for a 2D matrix.");
}
var data = this._data;
var _loop = function _loop2(i2) {
var col = data.map((row) => [row[i2]]);
result.push(new DenseMatrix(col, _this._datatype));
};
for (var i = 0; i < s[1]; i++) {
_loop(i);
}
return result;
};
DenseMatrix.prototype.toArray = function() {
return clone(this._data);
};
DenseMatrix.prototype.valueOf = function() {
return this._data;
};
DenseMatrix.prototype.format = function(options) {
return format3(this._data, options);
};
DenseMatrix.prototype.toString = function() {
return format3(this._data);
};
DenseMatrix.prototype.toJSON = function() {
return {
mathjs: "DenseMatrix",
data: this._data,
size: this._size,
datatype: this._datatype
};
};
DenseMatrix.prototype.diagonal = function(k) {
if (k) {
if (isBigNumber(k)) {
k = k.toNumber();
}
if (!isNumber(k) || !isInteger(k)) {
throw new TypeError("The parameter k must be an integer number");
}
} else {
k = 0;
}
var kSuper = k > 0 ? k : 0;
var kSub = k < 0 ? -k : 0;
var rows = this._size[0];
var columns = this._size[1];
var n = Math.min(rows - kSub, columns - kSuper);
var data = [];
for (var i = 0; i < n; i++) {
data[i] = this._data[i + kSub][i + kSuper];
}
return new DenseMatrix({
data,
size: [n],
datatype: this._datatype
});
};
DenseMatrix.diagonal = function(size, value, k, defaultValue) {
if (!isArray(size)) {
throw new TypeError("Array expected, size parameter");
}
if (size.length !== 2) {
throw new Error("Only two dimensions matrix are supported");
}
size = size.map(function(s) {
if (isBigNumber(s)) {
s = s.toNumber();
}
if (!isNumber(s) || !isInteger(s) || s < 1) {
throw new Error("Size values must be positive integers");
}
return s;
});
if (k) {
if (isBigNumber(k)) {
k = k.toNumber();
}
if (!isNumber(k) || !isInteger(k)) {
throw new TypeError("The parameter k must be an integer number");
}
} else {
k = 0;
}
var kSuper = k > 0 ? k : 0;
var kSub = k < 0 ? -k : 0;
var rows = size[0];
var columns = size[1];
var n = Math.min(rows - kSub, columns - kSuper);
var _value;
if (isArray(value)) {
if (value.length !== n) {
throw new Error("Invalid value array length");
}
_value = function _value2(i) {
return value[i];
};
} else if (isMatrix(value)) {
var ms = value.size();
if (ms.length !== 1 || ms[0] !== n) {
throw new Error("Invalid matrix length");
}
_value = function _value2(i) {
return value.get([i]);
};
} else {
_value = function _value2() {
return value;
};
}
if (!defaultValue) {
defaultValue = isBigNumber(_value(0)) ? _value(0).mul(0) : 0;
}
var data = [];
if (size.length > 0) {
data = resize(data, size, defaultValue);
for (var d = 0; d < n; d++) {
data[d + kSub][d + kSuper] = _value(d);
}
}
return new DenseMatrix({
data,
size: [rows, columns]
});
};
DenseMatrix.fromJSON = function(json) {
return new DenseMatrix(json);
};
DenseMatrix.prototype.swapRows = function(i, j) {
if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {
throw new Error("Row index must be positive integers");
}
if (this._size.length !== 2) {
throw new Error("Only two dimensional matrix is supported");
}
validateIndex(i, this._size[0]);
validateIndex(j, this._size[0]);
DenseMatrix._swapRows(i, j, this._data);
return this;
};
DenseMatrix._swapRows = function(i, j, data) {
var vi = data[i];
data[i] = data[j];
data[j] = vi;
};
function preprocess(data) {
if (isMatrix(data)) {
return preprocess(data.valueOf());
}
if (isArray(data)) {
return data.map(preprocess);
}
return data;
}
return DenseMatrix;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/function/utils/clone.js
var name8 = "clone";
var dependencies9 = ["typed"];
var createClone = /* @__PURE__ */ factory(name8, dependencies9, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name8, {
any: clone
});
});
// node_modules/mathjs/lib/esm/utils/switch.js
function _switch(mat) {
var I = mat.length;
var J = mat[0].length;
var i, j;
var ret = [];
for (j = 0; j < J; j++) {
var tmp = [];
for (i = 0; i < I; i++) {
tmp.push(mat[i][j]);
}
ret.push(tmp);
}
return ret;
}
// node_modules/mathjs/lib/esm/utils/collection.js
function containsCollections(array) {
for (var i = 0; i < array.length; i++) {
if (isCollection(array[i])) {
return true;
}
}
return false;
}
function deepForEach(array, callback) {
if (isMatrix(array)) {
array = array.valueOf();
}
for (var i = 0, ii = array.length; i < ii; i++) {
var value = array[i];
if (Array.isArray(value)) {
deepForEach(value, callback);
} else {
callback(value);
}
}
}
function deepMap(array, callback, skipZeros) {
if (array && typeof array.map === "function") {
return array.map(function(x) {
return deepMap(x, callback, skipZeros);
});
} else {
return callback(array);
}
}
function reduce(mat, dim, callback) {
var size = Array.isArray(mat) ? arraySize(mat) : mat.size();
if (dim < 0 || dim >= size.length) {
throw new IndexError(dim, size.length);
}
if (isMatrix(mat)) {
return mat.create(_reduce(mat.valueOf(), dim, callback));
} else {
return _reduce(mat, dim, callback);
}
}
function _reduce(mat, dim, callback) {
var i, ret, val, tran;
if (dim <= 0) {
if (!Array.isArray(mat[0])) {
val = mat[0];
for (i = 1; i < mat.length; i++) {
val = callback(val, mat[i]);
}
return val;
} else {
tran = _switch(mat);
ret = [];
for (i = 0; i < tran.length; i++) {
ret[i] = _reduce(tran[i], dim - 1, callback);
}
return ret;
}
} else {
ret = [];
for (i = 0; i < mat.length; i++) {
ret[i] = _reduce(mat[i], dim - 1, callback);
}
return ret;
}
}
function scatter(a, j, w, x, u, mark, cindex, f, inverse, update, value) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var k, k0, k1, i;
if (x) {
for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
i = aindex[k];
if (w[i] !== mark) {
w[i] = mark;
cindex.push(i);
if (update) {
x[i] = inverse ? f(avalues[k], value) : f(value, avalues[k]);
u[i] = mark;
} else {
x[i] = avalues[k];
}
} else {
x[i] = inverse ? f(avalues[k], x[i]) : f(x[i], avalues[k]);
u[i] = mark;
}
}
} else {
for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
i = aindex[k];
if (w[i] !== mark) {
w[i] = mark;
cindex.push(i);
} else {
u[i] = mark;
}
}
}
}
// node_modules/mathjs/lib/esm/function/utils/isInteger.js
var name9 = "isInteger";
var dependencies10 = ["typed"];
var createIsInteger = /* @__PURE__ */ factory(name9, dependencies10, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name9, {
number: isInteger,
// TODO: what to do with isInteger(add(0.1, 0.2)) ?
BigNumber: function BigNumber(x) {
return x.isInt();
},
Fraction: function Fraction2(x) {
return x.d === 1 && isFinite(x.n);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/plain/number/arithmetic.js
var n1 = "number";
var n2 = "number, number";
function absNumber(a) {
return Math.abs(a);
}
absNumber.signature = n1;
function addNumber(a, b) {
return a + b;
}
addNumber.signature = n2;
function subtractNumber(a, b) {
return a - b;
}
subtractNumber.signature = n2;
function multiplyNumber(a, b) {
return a * b;
}
multiplyNumber.signature = n2;
function divideNumber(a, b) {
return a / b;
}
divideNumber.signature = n2;
function unaryMinusNumber(x) {
return -x;
}
unaryMinusNumber.signature = n1;
function unaryPlusNumber(x) {
return x;
}
unaryPlusNumber.signature = n1;
function cbrtNumber(x) {
return cbrt(x);
}
cbrtNumber.signature = n1;
function cubeNumber(x) {
return x * x * x;
}
cubeNumber.signature = n1;
function expNumber(x) {
return Math.exp(x);
}
expNumber.signature = n1;
function expm1Number(x) {
return expm1(x);
}
expm1Number.signature = n1;
function gcdNumber(a, b) {
if (!isInteger(a) || !isInteger(b)) {
throw new Error("Parameters in function gcd must be integer numbers");
}
var r;
while (b !== 0) {
r = a % b;
a = b;
b = r;
}
return a < 0 ? -a : a;
}
gcdNumber.signature = n2;
function lcmNumber(a, b) {
if (!isInteger(a) || !isInteger(b)) {
throw new Error("Parameters in function lcm must be integer numbers");
}
if (a === 0 || b === 0) {
return 0;
}
var t;
var prod = a * b;
while (b !== 0) {
t = b;
b = a % t;
a = t;
}
return Math.abs(prod / a);
}
lcmNumber.signature = n2;
function logNumber(x, y) {
if (y) {
return Math.log(x) / Math.log(y);
}
return Math.log(x);
}
function log10Number(x) {
return log10(x);
}
log10Number.signature = n1;
function log2Number(x) {
return log2(x);
}
log2Number.signature = n1;
function log1pNumber(x) {
return log1p(x);
}
log1pNumber.signature = n1;
function modNumber(x, y) {
return y === 0 ? x : x - y * Math.floor(x / y);
}
modNumber.signature = n2;
function nthRootNumber(a) {
var root = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 2;
var inv = root < 0;
if (inv) {
root = -root;
}
if (root === 0) {
throw new Error("Root must be non-zero");
}
if (a < 0 && Math.abs(root) % 2 !== 1) {
throw new Error("Root must be odd when a is negative.");
}
if (a === 0) {
return inv ? Infinity : 0;
}
if (!isFinite(a)) {
return inv ? 0 : a;
}
var x = Math.pow(Math.abs(a), 1 / root);
x = a < 0 ? -x : x;
return inv ? 1 / x : x;
}
function signNumber(x) {
return sign(x);
}
signNumber.signature = n1;
function sqrtNumber(x) {
return Math.sqrt(x);
}
sqrtNumber.signature = n1;
function squareNumber(x) {
return x * x;
}
squareNumber.signature = n1;
function xgcdNumber(a, b) {
var t;
var q;
var r;
var x = 0;
var lastx = 1;
var y = 1;
var lasty = 0;
if (!isInteger(a) || !isInteger(b)) {
throw new Error("Parameters in function xgcd must be integer numbers");
}
while (b) {
q = Math.floor(a / b);
r = a - q * b;
t = x;
x = lastx - q * x;
lastx = t;
t = y;
y = lasty - q * y;
lasty = t;
a = b;
b = r;
}
var res;
if (a < 0) {
res = [-a, -lastx, -lasty];
} else {
res = [a, a ? lastx : 0, lasty];
}
return res;
}
xgcdNumber.signature = n2;
function powNumber(x, y) {
if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {
return 0;
}
return Math.pow(x, y);
}
powNumber.signature = n2;
function roundNumber(value) {
var decimals = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
if (!isInteger(decimals) || decimals < 0 || decimals > 15) {
throw new Error("Number of decimals in function round must be an integer from 0 to 15 inclusive");
}
return parseFloat(toFixed(value, decimals));
}
function normNumber(x) {
return Math.abs(x);
}
normNumber.signature = n1;
// node_modules/mathjs/lib/esm/plain/number/bitwise.js
var n12 = "number";
var n22 = "number, number";
function bitAndNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function bitAnd");
}
return x & y;
}
bitAndNumber.signature = n22;
function bitNotNumber(x) {
if (!isInteger(x)) {
throw new Error("Integer expected in function bitNot");
}
return ~x;
}
bitNotNumber.signature = n12;
function bitOrNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function bitOr");
}
return x | y;
}
bitOrNumber.signature = n22;
function bitXorNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function bitXor");
}
return x ^ y;
}
bitXorNumber.signature = n22;
function leftShiftNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function leftShift");
}
return x << y;
}
leftShiftNumber.signature = n22;
function rightArithShiftNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function rightArithShift");
}
return x >> y;
}
rightArithShiftNumber.signature = n22;
function rightLogShiftNumber(x, y) {
if (!isInteger(x) || !isInteger(y)) {
throw new Error("Integers expected in function rightLogShift");
}
return x >>> y;
}
rightLogShiftNumber.signature = n22;
// node_modules/mathjs/lib/esm/utils/product.js
function product2(i, n) {
if (n < i) {
return 1;
}
if (n === i) {
return n;
}
var half = n + i >> 1;
return product2(i, half) * product2(half + 1, n);
}
// node_modules/mathjs/lib/esm/plain/number/combinations.js
function combinationsNumber(n, k) {
if (!isInteger(n) || n < 0) {
throw new TypeError("Positive integer value expected in function combinations");
}
if (!isInteger(k) || k < 0) {
throw new TypeError("Positive integer value expected in function combinations");
}
if (k > n) {
throw new TypeError("k must be less than or equal to n");
}
var nMinusk = n - k;
var answer = 1;
var firstnumerator = k < nMinusk ? nMinusk + 1 : k + 1;
var nextdivisor = 2;
var lastdivisor = k < nMinusk ? k : nMinusk;
for (var nextnumerator = firstnumerator; nextnumerator <= n; ++nextnumerator) {
answer *= nextnumerator;
while (nextdivisor <= lastdivisor && answer % nextdivisor === 0) {
answer /= nextdivisor;
++nextdivisor;
}
}
if (nextdivisor <= lastdivisor) {
answer /= product2(nextdivisor, lastdivisor);
}
return answer;
}
combinationsNumber.signature = "number, number";
// node_modules/mathjs/lib/esm/plain/number/constants.js
var pi = Math.PI;
var tau = 2 * Math.PI;
var e = Math.E;
var phi = 1.618033988749895;
// node_modules/mathjs/lib/esm/plain/number/logical.js
var n13 = "number";
var n23 = "number, number";
function notNumber(x) {
return !x;
}
notNumber.signature = n13;
function orNumber(x, y) {
return !!(x || y);
}
orNumber.signature = n23;
function xorNumber(x, y) {
return !!x !== !!y;
}
xorNumber.signature = n23;
function andNumber(x, y) {
return !!(x && y);
}
andNumber.signature = n23;
// node_modules/mathjs/lib/esm/plain/number/probability.js
function gammaNumber(n) {
var x;
if (isInteger(n)) {
if (n <= 0) {
return isFinite(n) ? Infinity : NaN;
}
if (n > 171) {
return Infinity;
}
return product2(1, n - 1);
}
if (n < 0.5) {
return Math.PI / (Math.sin(Math.PI * n) * gammaNumber(1 - n));
}
if (n >= 171.35) {
return Infinity;
}
if (n > 85) {
var twoN = n * n;
var threeN = twoN * n;
var fourN = threeN * n;
var fiveN = fourN * n;
return Math.sqrt(2 * Math.PI / n) * Math.pow(n / Math.E, n) * (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) - 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) + 5246819 / (75246796800 * fiveN * n));
}
--n;
x = gammaP[0];
for (var i = 1; i < gammaP.length; ++i) {
x += gammaP[i] / (n + i);
}
var t = n + gammaG + 0.5;
return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x;
}
gammaNumber.signature = "number";
var gammaG = 4.7421875;
var gammaP = [0.9999999999999971, 57.15623566586292, -59.59796035547549, 14.136097974741746, -0.4919138160976202, 3399464998481189e-20, 4652362892704858e-20, -9837447530487956e-20, 1580887032249125e-19, -21026444172410488e-20, 21743961811521265e-20, -1643181065367639e-19, 8441822398385275e-20, -26190838401581408e-21, 36899182659531625e-22];
var lnSqrt2PI = 0.9189385332046728;
var lgammaG = 5;
var lgammaN = 7;
var lgammaSeries = [1.000000000190015, 76.18009172947146, -86.50532032941678, 24.01409824083091, -1.231739572450155, 0.001208650973866179, -5395239384953e-18];
function lgammaNumber(n) {
if (n < 0)
return NaN;
if (n === 0)
return Infinity;
if (!isFinite(n))
return n;
if (n < 0.5) {
return Math.log(Math.PI / Math.sin(Math.PI * n)) - lgammaNumber(1 - n);
}
n = n - 1;
var base = n + lgammaG + 0.5;
var sum2 = lgammaSeries[0];
for (var i = lgammaN - 1; i >= 1; i--) {
sum2 += lgammaSeries[i] / (n + i);
}
return lnSqrt2PI + (n + 0.5) * Math.log(base) - base + Math.log(sum2);
}
lgammaNumber.signature = "number";
// node_modules/mathjs/lib/esm/plain/number/trigonometry.js
var n14 = "number";
var n24 = "number, number";
function acosNumber(x) {
return Math.acos(x);
}
acosNumber.signature = n14;
function acoshNumber(x) {
return acosh(x);
}
acoshNumber.signature = n14;
function acotNumber(x) {
return Math.atan(1 / x);
}
acotNumber.signature = n14;
function acothNumber(x) {
return isFinite(x) ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2 : 0;
}
acothNumber.signature = n14;
function acscNumber(x) {
return Math.asin(1 / x);
}
acscNumber.signature = n14;
function acschNumber(x) {
var xInv = 1 / x;
return Math.log(xInv + Math.sqrt(xInv * xInv + 1));
}
acschNumber.signature = n14;
function asecNumber(x) {
return Math.acos(1 / x);
}
asecNumber.signature = n14;
function asechNumber(x) {
var xInv = 1 / x;
var ret = Math.sqrt(xInv * xInv - 1);
return Math.log(ret + xInv);
}
asechNumber.signature = n14;
function asinNumber(x) {
return Math.asin(x);
}
asinNumber.signature = n14;
function asinhNumber(x) {
return asinh(x);
}
asinhNumber.signature = n14;
function atanNumber(x) {
return Math.atan(x);
}
atanNumber.signature = n14;
function atan2Number(y, x) {
return Math.atan2(y, x);
}
atan2Number.signature = n24;
function atanhNumber(x) {
return atanh(x);
}
atanhNumber.signature = n14;
function cosNumber(x) {
return Math.cos(x);
}
cosNumber.signature = n14;
function coshNumber(x) {
return cosh(x);
}
coshNumber.signature = n14;
function cotNumber(x) {
return 1 / Math.tan(x);
}
cotNumber.signature = n14;
function cothNumber(x) {
var e2 = Math.exp(2 * x);
return (e2 + 1) / (e2 - 1);
}
cothNumber.signature = n14;
function cscNumber(x) {
return 1 / Math.sin(x);
}
cscNumber.signature = n14;
function cschNumber(x) {
if (x === 0) {
return Number.POSITIVE_INFINITY;
} else {
return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x);
}
}
cschNumber.signature = n14;
function secNumber(x) {
return 1 / Math.cos(x);
}
secNumber.signature = n14;
function sechNumber(x) {
return 2 / (Math.exp(x) + Math.exp(-x));
}
sechNumber.signature = n14;
function sinNumber(x) {
return Math.sin(x);
}
sinNumber.signature = n14;
function sinhNumber(x) {
return sinh(x);
}
sinhNumber.signature = n14;
function tanNumber(x) {
return Math.tan(x);
}
tanNumber.signature = n14;
function tanhNumber(x) {
return tanh(x);
}
tanhNumber.signature = n14;
// node_modules/mathjs/lib/esm/plain/number/utils.js
var n15 = "number";
function isIntegerNumber(x) {
return isInteger(x);
}
isIntegerNumber.signature = n15;
function isNegativeNumber(x) {
return x < 0;
}
isNegativeNumber.signature = n15;
function isPositiveNumber(x) {
return x > 0;
}
isPositiveNumber.signature = n15;
function isZeroNumber(x) {
return x === 0;
}
isZeroNumber.signature = n15;
function isNaNNumber(x) {
return Number.isNaN(x);
}
isNaNNumber.signature = n15;
// node_modules/mathjs/lib/esm/function/utils/isNegative.js
var name10 = "isNegative";
var dependencies11 = ["typed"];
var createIsNegative = /* @__PURE__ */ factory(name10, dependencies11, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name10, {
number: isNegativeNumber,
BigNumber: function BigNumber(x) {
return x.isNeg() && !x.isZero() && !x.isNaN();
},
Fraction: function Fraction2(x) {
return x.s < 0;
},
Unit: typed2.referToSelf((self2) => (x) => typed2.find(self2, x.valueType())(x.value)),
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/utils/isNumeric.js
var name11 = "isNumeric";
var dependencies12 = ["typed"];
var createIsNumeric = /* @__PURE__ */ factory(name11, dependencies12, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name11, {
"number | BigNumber | Fraction | boolean": () => true,
"Complex | Unit | string | null | undefined | Node": () => false,
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/utils/hasNumericValue.js
var name12 = "hasNumericValue";
var dependencies13 = ["typed", "isNumeric"];
var createHasNumericValue = /* @__PURE__ */ factory(name12, dependencies13, (_ref) => {
var {
typed: typed2,
isNumeric
} = _ref;
return typed2(name12, {
boolean: () => true,
string: function string(x) {
return x.trim().length > 0 && !isNaN(Number(x));
},
any: function any(x) {
return isNumeric(x);
}
});
});
// node_modules/mathjs/lib/esm/function/utils/isPositive.js
var name13 = "isPositive";
var dependencies14 = ["typed"];
var createIsPositive = /* @__PURE__ */ factory(name13, dependencies14, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name13, {
number: isPositiveNumber,
BigNumber: function BigNumber(x) {
return !x.isNeg() && !x.isZero() && !x.isNaN();
},
Fraction: function Fraction2(x) {
return x.s > 0 && x.n > 0;
},
Unit: typed2.referToSelf((self2) => (x) => typed2.find(self2, x.valueType())(x.value)),
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/utils/isZero.js
var name14 = "isZero";
var dependencies15 = ["typed"];
var createIsZero = /* @__PURE__ */ factory(name14, dependencies15, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name14, {
number: isZeroNumber,
BigNumber: function BigNumber(x) {
return x.isZero();
},
Complex: function Complex2(x) {
return x.re === 0 && x.im === 0;
},
Fraction: function Fraction2(x) {
return x.d === 1 && x.n === 0;
},
Unit: typed2.referToSelf((self2) => (x) => typed2.find(self2, x.valueType())(x.value)),
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/utils/isNaN.js
var name15 = "isNaN";
var dependencies16 = ["typed"];
var createIsNaN = /* @__PURE__ */ factory(name15, dependencies16, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name15, {
number: isNaNNumber,
BigNumber: function BigNumber(x) {
return x.isNaN();
},
Fraction: function Fraction2(x) {
return false;
},
Complex: function Complex2(x) {
return x.isNaN();
},
Unit: function Unit(x) {
return Number.isNaN(x.value);
},
"Array | Matrix": function ArrayMatrix(x) {
return deepMap(x, Number.isNaN);
}
});
});
// node_modules/mathjs/lib/esm/function/utils/typeOf.js
var name16 = "typeOf";
var dependencies17 = ["typed"];
var createTypeOf = /* @__PURE__ */ factory(name16, dependencies17, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name16, {
any: typeOf
});
});
// node_modules/mathjs/lib/esm/utils/bignumber/nearlyEqual.js
function nearlyEqual2(x, y, epsilon) {
if (epsilon === null || epsilon === void 0) {
return x.eq(y);
}
if (x.eq(y)) {
return true;
}
if (x.isNaN() || y.isNaN()) {
return false;
}
if (x.isFinite() && y.isFinite()) {
var diff = x.minus(y).abs();
if (diff.isZero()) {
return true;
} else {
var max2 = x.constructor.max(x.abs(), y.abs());
return diff.lte(max2.times(epsilon));
}
}
return false;
}
// node_modules/mathjs/lib/esm/utils/complex.js
function complexEquals(x, y, epsilon) {
return nearlyEqual(x.re, y.re, epsilon) && nearlyEqual(x.im, y.im, epsilon);
}
// node_modules/mathjs/lib/esm/function/relational/compareUnits.js
var createCompareUnits = /* @__PURE__ */ factory("compareUnits", ["typed"], (_ref) => {
var {
typed: typed2
} = _ref;
return {
"Unit, Unit": typed2.referToSelf((self2) => (x, y) => {
if (!x.equalBase(y)) {
throw new Error("Cannot compare units with different base");
}
return typed2.find(self2, [x.valueType(), y.valueType()])(x.value, y.value);
})
};
});
// node_modules/mathjs/lib/esm/function/relational/equalScalar.js
var name17 = "equalScalar";
var dependencies18 = ["typed", "config"];
var createEqualScalar = /* @__PURE__ */ factory(name17, dependencies18, (_ref) => {
var {
typed: typed2,
config: config2
} = _ref;
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name17, {
"boolean, boolean": function booleanBoolean(x, y) {
return x === y;
},
"number, number": function numberNumber(x, y) {
return nearlyEqual(x, y, config2.epsilon);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.eq(y) || nearlyEqual2(x, y, config2.epsilon);
},
"Fraction, Fraction": function FractionFraction(x, y) {
return x.equals(y);
},
"Complex, Complex": function ComplexComplex(x, y) {
return complexEquals(x, y, config2.epsilon);
}
}, compareUnits);
});
var createEqualScalarNumber = factory(name17, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name17, {
"number, number": function numberNumber(x, y) {
return nearlyEqual(x, y, config2.epsilon);
}
});
});
// node_modules/mathjs/lib/esm/type/matrix/SparseMatrix.js
var name18 = "SparseMatrix";
var dependencies19 = ["typed", "equalScalar", "Matrix"];
var createSparseMatrixClass = /* @__PURE__ */ factory(name18, dependencies19, (_ref) => {
var {
typed: typed2,
equalScalar,
Matrix
} = _ref;
function SparseMatrix(data, datatype) {
if (!(this instanceof SparseMatrix)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
if (datatype && !isString(datatype)) {
throw new Error("Invalid datatype: " + datatype);
}
if (isMatrix(data)) {
_createFromMatrix(this, data, datatype);
} else if (data && isArray(data.index) && isArray(data.ptr) && isArray(data.size)) {
this._values = data.values;
this._index = data.index;
this._ptr = data.ptr;
this._size = data.size;
this._datatype = datatype || data.datatype;
} else if (isArray(data)) {
_createFromArray(this, data, datatype);
} else if (data) {
throw new TypeError("Unsupported type of data (" + typeOf(data) + ")");
} else {
this._values = [];
this._index = [];
this._ptr = [0];
this._size = [0, 0];
this._datatype = datatype;
}
}
function _createFromMatrix(matrix, source, datatype) {
if (source.type === "SparseMatrix") {
matrix._values = source._values ? clone(source._values) : void 0;
matrix._index = clone(source._index);
matrix._ptr = clone(source._ptr);
matrix._size = clone(source._size);
matrix._datatype = datatype || source._datatype;
} else {
_createFromArray(matrix, source.valueOf(), datatype || source._datatype);
}
}
function _createFromArray(matrix, data, datatype) {
matrix._values = [];
matrix._index = [];
matrix._ptr = [];
matrix._datatype = datatype;
var rows = data.length;
var columns = 0;
var eq = equalScalar;
var zero = 0;
if (isString(datatype)) {
eq = typed2.find(equalScalar, [datatype, datatype]) || equalScalar;
zero = typed2.convert(0, datatype);
}
if (rows > 0) {
var j = 0;
do {
matrix._ptr.push(matrix._index.length);
for (var i = 0; i < rows; i++) {
var row = data[i];
if (isArray(row)) {
if (j === 0 && columns < row.length) {
columns = row.length;
}
if (j < row.length) {
var v = row[j];
if (!eq(v, zero)) {
matrix._values.push(v);
matrix._index.push(i);
}
}
} else {
if (j === 0 && columns < 1) {
columns = 1;
}
if (!eq(row, zero)) {
matrix._values.push(row);
matrix._index.push(i);
}
}
}
j++;
} while (j < columns);
}
matrix._ptr.push(matrix._index.length);
matrix._size = [rows, columns];
}
SparseMatrix.prototype = new Matrix();
SparseMatrix.prototype.createSparseMatrix = function(data, datatype) {
return new SparseMatrix(data, datatype);
};
Object.defineProperty(SparseMatrix, "name", {
value: "SparseMatrix"
});
SparseMatrix.prototype.constructor = SparseMatrix;
SparseMatrix.prototype.type = "SparseMatrix";
SparseMatrix.prototype.isSparseMatrix = true;
SparseMatrix.prototype.getDataType = function() {
return getArrayDataType(this._values, typeOf);
};
SparseMatrix.prototype.storage = function() {
return "sparse";
};
SparseMatrix.prototype.datatype = function() {
return this._datatype;
};
SparseMatrix.prototype.create = function(data, datatype) {
return new SparseMatrix(data, datatype);
};
SparseMatrix.prototype.density = function() {
var rows = this._size[0];
var columns = this._size[1];
return rows !== 0 && columns !== 0 ? this._index.length / (rows * columns) : 0;
};
SparseMatrix.prototype.subset = function(index, replacement, defaultValue) {
if (!this._values) {
throw new Error("Cannot invoke subset on a Pattern only matrix");
}
switch (arguments.length) {
case 1:
return _getsubset(this, index);
case 2:
case 3:
return _setsubset(this, index, replacement, defaultValue);
default:
throw new SyntaxError("Wrong number of arguments");
}
};
function _getsubset(matrix, idx) {
if (!isIndex(idx)) {
throw new TypeError("Invalid index");
}
var isScalar = idx.isScalar();
if (isScalar) {
return matrix.get(idx.min());
}
var size = idx.size();
if (size.length !== matrix._size.length) {
throw new DimensionError(size.length, matrix._size.length);
}
var i, ii, k, kk;
var min2 = idx.min();
var max2 = idx.max();
for (i = 0, ii = matrix._size.length; i < ii; i++) {
validateIndex(min2[i], matrix._size[i]);
validateIndex(max2[i], matrix._size[i]);
}
var mvalues = matrix._values;
var mindex = matrix._index;
var mptr = matrix._ptr;
var rows = idx.dimension(0);
var columns = idx.dimension(1);
var w = [];
var pv = [];
rows.forEach(function(i2, r) {
pv[i2] = r[0];
w[i2] = true;
});
var values2 = mvalues ? [] : void 0;
var index = [];
var ptr = [];
columns.forEach(function(j) {
ptr.push(index.length);
for (k = mptr[j], kk = mptr[j + 1]; k < kk; k++) {
i = mindex[k];
if (w[i] === true) {
index.push(pv[i]);
if (values2) {
values2.push(mvalues[k]);
}
}
}
});
ptr.push(index.length);
return new SparseMatrix({
values: values2,
index,
ptr,
size,
datatype: matrix._datatype
});
}
function _setsubset(matrix, index, submatrix, defaultValue) {
if (!index || index.isIndex !== true) {
throw new TypeError("Invalid index");
}
var iSize = index.size();
var isScalar = index.isScalar();
var sSize;
if (isMatrix(submatrix)) {
sSize = submatrix.size();
submatrix = submatrix.toArray();
} else {
sSize = arraySize(submatrix);
}
if (isScalar) {
if (sSize.length !== 0) {
throw new TypeError("Scalar expected");
}
matrix.set(index.min(), submatrix, defaultValue);
} else {
if (iSize.length !== 1 && iSize.length !== 2) {
throw new DimensionError(iSize.length, matrix._size.length, "<");
}
if (sSize.length < iSize.length) {
var i = 0;
var outer = 0;
while (iSize[i] === 1 && sSize[i] === 1) {
i++;
}
while (iSize[i] === 1) {
outer++;
i++;
}
submatrix = unsqueeze(submatrix, iSize.length, outer, sSize);
}
if (!deepStrictEqual(iSize, sSize)) {
throw new DimensionError(iSize, sSize, ">");
}
if (iSize.length === 1) {
var range = index.dimension(0);
range.forEach(function(dataIndex, subIndex) {
validateIndex(dataIndex);
matrix.set([dataIndex, 0], submatrix[subIndex[0]], defaultValue);
});
} else {
var firstDimensionRange = index.dimension(0);
var secondDimensionRange = index.dimension(1);
firstDimensionRange.forEach(function(firstDataIndex, firstSubIndex) {
validateIndex(firstDataIndex);
secondDimensionRange.forEach(function(secondDataIndex, secondSubIndex) {
validateIndex(secondDataIndex);
matrix.set([firstDataIndex, secondDataIndex], submatrix[firstSubIndex[0]][secondSubIndex[0]], defaultValue);
});
});
}
}
return matrix;
}
SparseMatrix.prototype.get = function(index) {
if (!isArray(index)) {
throw new TypeError("Array expected");
}
if (index.length !== this._size.length) {
throw new DimensionError(index.length, this._size.length);
}
if (!this._values) {
throw new Error("Cannot invoke get on a Pattern only matrix");
}
var i = index[0];
var j = index[1];
validateIndex(i, this._size[0]);
validateIndex(j, this._size[1]);
var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);
if (k < this._ptr[j + 1] && this._index[k] === i) {
return this._values[k];
}
return 0;
};
SparseMatrix.prototype.set = function(index, v, defaultValue) {
if (!isArray(index)) {
throw new TypeError("Array expected");
}
if (index.length !== this._size.length) {
throw new DimensionError(index.length, this._size.length);
}
if (!this._values) {
throw new Error("Cannot invoke set on a Pattern only matrix");
}
var i = index[0];
var j = index[1];
var rows = this._size[0];
var columns = this._size[1];
var eq = equalScalar;
var zero = 0;
if (isString(this._datatype)) {
eq = typed2.find(equalScalar, [this._datatype, this._datatype]) || equalScalar;
zero = typed2.convert(0, this._datatype);
}
if (i > rows - 1 || j > columns - 1) {
_resize2(this, Math.max(i + 1, rows), Math.max(j + 1, columns), defaultValue);
rows = this._size[0];
columns = this._size[1];
}
validateIndex(i, rows);
validateIndex(j, columns);
var k = _getValueIndex(i, this._ptr[j], this._ptr[j + 1], this._index);
if (k < this._ptr[j + 1] && this._index[k] === i) {
if (!eq(v, zero)) {
this._values[k] = v;
} else {
_remove(k, j, this._values, this._index, this._ptr);
}
} else {
if (!eq(v, zero)) {
_insert(k, i, j, v, this._values, this._index, this._ptr);
}
}
return this;
};
function _getValueIndex(i, top, bottom, index) {
if (bottom - top === 0) {
return bottom;
}
for (var r = top; r < bottom; r++) {
if (index[r] === i) {
return r;
}
}
return top;
}
function _remove(k, j, values2, index, ptr) {
values2.splice(k, 1);
index.splice(k, 1);
for (var x = j + 1; x < ptr.length; x++) {
ptr[x]--;
}
}
function _insert(k, i, j, v, values2, index, ptr) {
values2.splice(k, 0, v);
index.splice(k, 0, i);
for (var x = j + 1; x < ptr.length; x++) {
ptr[x]++;
}
}
SparseMatrix.prototype.resize = function(size, defaultValue, copy) {
if (!isCollection(size)) {
throw new TypeError("Array or Matrix expected");
}
var sizeArray = size.valueOf().map((value) => {
return Array.isArray(value) && value.length === 1 ? value[0] : value;
});
if (sizeArray.length !== 2) {
throw new Error("Only two dimensions matrix are supported");
}
sizeArray.forEach(function(value) {
if (!isNumber(value) || !isInteger(value) || value < 0) {
throw new TypeError("Invalid size, must contain positive integers (size: " + format3(sizeArray) + ")");
}
});
var m = copy ? this.clone() : this;
return _resize2(m, sizeArray[0], sizeArray[1], defaultValue);
};
function _resize2(matrix, rows, columns, defaultValue) {
var value = defaultValue || 0;
var eq = equalScalar;
var zero = 0;
if (isString(matrix._datatype)) {
eq = typed2.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;
zero = typed2.convert(0, matrix._datatype);
value = typed2.convert(value, matrix._datatype);
}
var ins = !eq(value, zero);
var r = matrix._size[0];
var c = matrix._size[1];
var i, j, k;
if (columns > c) {
for (j = c; j < columns; j++) {
matrix._ptr[j] = matrix._values.length;
if (ins) {
for (i = 0; i < r; i++) {
matrix._values.push(value);
matrix._index.push(i);
}
}
}
matrix._ptr[columns] = matrix._values.length;
} else if (columns < c) {
matrix._ptr.splice(columns + 1, c - columns);
matrix._values.splice(matrix._ptr[columns], matrix._values.length);
matrix._index.splice(matrix._ptr[columns], matrix._index.length);
}
c = columns;
if (rows > r) {
if (ins) {
var n = 0;
for (j = 0; j < c; j++) {
matrix._ptr[j] = matrix._ptr[j] + n;
k = matrix._ptr[j + 1] + n;
var p = 0;
for (i = r; i < rows; i++, p++) {
matrix._values.splice(k + p, 0, value);
matrix._index.splice(k + p, 0, i);
n++;
}
}
matrix._ptr[c] = matrix._values.length;
}
} else if (rows < r) {
var d = 0;
for (j = 0; j < c; j++) {
matrix._ptr[j] = matrix._ptr[j] - d;
var k0 = matrix._ptr[j];
var k1 = matrix._ptr[j + 1] - d;
for (k = k0; k < k1; k++) {
i = matrix._index[k];
if (i > rows - 1) {
matrix._values.splice(k, 1);
matrix._index.splice(k, 1);
d++;
}
}
}
matrix._ptr[j] = matrix._values.length;
}
matrix._size[0] = rows;
matrix._size[1] = columns;
return matrix;
}
SparseMatrix.prototype.reshape = function(sizes, copy) {
if (!isArray(sizes)) {
throw new TypeError("Array expected");
}
if (sizes.length !== 2) {
throw new Error("Sparse matrices can only be reshaped in two dimensions");
}
sizes.forEach(function(value) {
if (!isNumber(value) || !isInteger(value) || value <= -2 || value === 0) {
throw new TypeError("Invalid size, must contain positive integers or -1 (size: " + format3(sizes) + ")");
}
});
var currentLength = this._size[0] * this._size[1];
sizes = processSizesWildcard(sizes, currentLength);
var newLength = sizes[0] * sizes[1];
if (currentLength !== newLength) {
throw new Error("Reshaping sparse matrix will result in the wrong number of elements");
}
var m = copy ? this.clone() : this;
if (this._size[0] === sizes[0] && this._size[1] === sizes[1]) {
return m;
}
var colIndex = [];
for (var i = 0; i < m._ptr.length; i++) {
for (var j = 0; j < m._ptr[i + 1] - m._ptr[i]; j++) {
colIndex.push(i);
}
}
var values2 = m._values.slice();
var rowIndex = m._index.slice();
for (var _i = 0; _i < m._index.length; _i++) {
var r1 = rowIndex[_i];
var c1 = colIndex[_i];
var flat = r1 * m._size[1] + c1;
colIndex[_i] = flat % sizes[1];
rowIndex[_i] = Math.floor(flat / sizes[1]);
}
m._values.length = 0;
m._index.length = 0;
m._ptr.length = sizes[1] + 1;
m._size = sizes.slice();
for (var _i2 = 0; _i2 < m._ptr.length; _i2++) {
m._ptr[_i2] = 0;
}
for (var h = 0; h < values2.length; h++) {
var _i3 = rowIndex[h];
var _j = colIndex[h];
var v = values2[h];
var k = _getValueIndex(_i3, m._ptr[_j], m._ptr[_j + 1], m._index);
_insert(k, _i3, _j, v, m._values, m._index, m._ptr);
}
return m;
};
SparseMatrix.prototype.clone = function() {
var m = new SparseMatrix({
values: this._values ? clone(this._values) : void 0,
index: clone(this._index),
ptr: clone(this._ptr),
size: clone(this._size),
datatype: this._datatype
});
return m;
};
SparseMatrix.prototype.size = function() {
return this._size.slice(0);
};
SparseMatrix.prototype.map = function(callback, skipZeros) {
if (!this._values) {
throw new Error("Cannot invoke map on a Pattern only matrix");
}
var me = this;
var rows = this._size[0];
var columns = this._size[1];
var args = maxArgumentCount(callback);
var invoke = function invoke2(v, i, j) {
if (args === 1)
return callback(v);
if (args === 2)
return callback(v, [i, j]);
return callback(v, [i, j], me);
};
return _map3(this, 0, rows - 1, 0, columns - 1, invoke, skipZeros);
};
function _map3(matrix, minRow, maxRow, minColumn, maxColumn, callback, skipZeros) {
var values2 = [];
var index = [];
var ptr = [];
var eq = equalScalar;
var zero = 0;
if (isString(matrix._datatype)) {
eq = typed2.find(equalScalar, [matrix._datatype, matrix._datatype]) || equalScalar;
zero = typed2.convert(0, matrix._datatype);
}
var invoke = function invoke2(v, x, y) {
v = callback(v, x, y);
if (!eq(v, zero)) {
values2.push(v);
index.push(x);
}
};
for (var j = minColumn; j <= maxColumn; j++) {
ptr.push(values2.length);
var k0 = matrix._ptr[j];
var k1 = matrix._ptr[j + 1];
if (skipZeros) {
for (var k = k0; k < k1; k++) {
var i = matrix._index[k];
if (i >= minRow && i <= maxRow) {
invoke(matrix._values[k], i - minRow, j - minColumn);
}
}
} else {
var _values = {};
for (var _k = k0; _k < k1; _k++) {
var _i4 = matrix._index[_k];
_values[_i4] = matrix._values[_k];
}
for (var _i5 = minRow; _i5 <= maxRow; _i5++) {
var value = _i5 in _values ? _values[_i5] : 0;
invoke(value, _i5 - minRow, j - minColumn);
}
}
}
ptr.push(values2.length);
return new SparseMatrix({
values: values2,
index,
ptr,
size: [maxRow - minRow + 1, maxColumn - minColumn + 1]
});
}
SparseMatrix.prototype.forEach = function(callback, skipZeros) {
if (!this._values) {
throw new Error("Cannot invoke forEach on a Pattern only matrix");
}
var me = this;
var rows = this._size[0];
var columns = this._size[1];
for (var j = 0; j < columns; j++) {
var k0 = this._ptr[j];
var k1 = this._ptr[j + 1];
if (skipZeros) {
for (var k = k0; k < k1; k++) {
var i = this._index[k];
callback(this._values[k], [i, j], me);
}
} else {
var values2 = {};
for (var _k2 = k0; _k2 < k1; _k2++) {
var _i6 = this._index[_k2];
values2[_i6] = this._values[_k2];
}
for (var _i7 = 0; _i7 < rows; _i7++) {
var value = _i7 in values2 ? values2[_i7] : 0;
callback(value, [_i7, j], me);
}
}
}
};
SparseMatrix.prototype[Symbol.iterator] = function* () {
if (!this._values) {
throw new Error("Cannot iterate a Pattern only matrix");
}
var columns = this._size[1];
for (var j = 0; j < columns; j++) {
var k0 = this._ptr[j];
var k1 = this._ptr[j + 1];
for (var k = k0; k < k1; k++) {
var i = this._index[k];
yield {
value: this._values[k],
index: [i, j]
};
}
}
};
SparseMatrix.prototype.toArray = function() {
return _toArray(this._values, this._index, this._ptr, this._size, true);
};
SparseMatrix.prototype.valueOf = function() {
return _toArray(this._values, this._index, this._ptr, this._size, false);
};
function _toArray(values2, index, ptr, size, copy) {
var rows = size[0];
var columns = size[1];
var a = [];
var i, j;
for (i = 0; i < rows; i++) {
a[i] = [];
for (j = 0; j < columns; j++) {
a[i][j] = 0;
}
}
for (j = 0; j < columns; j++) {
var k0 = ptr[j];
var k1 = ptr[j + 1];
for (var k = k0; k < k1; k++) {
i = index[k];
a[i][j] = values2 ? copy ? clone(values2[k]) : values2[k] : 1;
}
}
return a;
}
SparseMatrix.prototype.format = function(options) {
var rows = this._size[0];
var columns = this._size[1];
var density = this.density();
var str = "Sparse Matrix [" + format3(rows, options) + " x " + format3(columns, options) + "] density: " + format3(density, options) + "\n";
for (var j = 0; j < columns; j++) {
var k0 = this._ptr[j];
var k1 = this._ptr[j + 1];
for (var k = k0; k < k1; k++) {
var i = this._index[k];
str += "\n (" + format3(i, options) + ", " + format3(j, options) + ") ==> " + (this._values ? format3(this._values[k], options) : "X");
}
}
return str;
};
SparseMatrix.prototype.toString = function() {
return format3(this.toArray());
};
SparseMatrix.prototype.toJSON = function() {
return {
mathjs: "SparseMatrix",
values: this._values,
index: this._index,
ptr: this._ptr,
size: this._size,
datatype: this._datatype
};
};
SparseMatrix.prototype.diagonal = function(k) {
if (k) {
if (isBigNumber(k)) {
k = k.toNumber();
}
if (!isNumber(k) || !isInteger(k)) {
throw new TypeError("The parameter k must be an integer number");
}
} else {
k = 0;
}
var kSuper = k > 0 ? k : 0;
var kSub = k < 0 ? -k : 0;
var rows = this._size[0];
var columns = this._size[1];
var n = Math.min(rows - kSub, columns - kSuper);
var values2 = [];
var index = [];
var ptr = [];
ptr[0] = 0;
for (var j = kSuper; j < columns && values2.length < n; j++) {
var k0 = this._ptr[j];
var k1 = this._ptr[j + 1];
for (var x = k0; x < k1; x++) {
var i = this._index[x];
if (i === j - kSuper + kSub) {
values2.push(this._values[x]);
index[values2.length - 1] = i - kSub;
break;
}
}
}
ptr.push(values2.length);
return new SparseMatrix({
values: values2,
index,
ptr,
size: [n, 1]
});
};
SparseMatrix.fromJSON = function(json) {
return new SparseMatrix(json);
};
SparseMatrix.diagonal = function(size, value, k, defaultValue, datatype) {
if (!isArray(size)) {
throw new TypeError("Array expected, size parameter");
}
if (size.length !== 2) {
throw new Error("Only two dimensions matrix are supported");
}
size = size.map(function(s) {
if (isBigNumber(s)) {
s = s.toNumber();
}
if (!isNumber(s) || !isInteger(s) || s < 1) {
throw new Error("Size values must be positive integers");
}
return s;
});
if (k) {
if (isBigNumber(k)) {
k = k.toNumber();
}
if (!isNumber(k) || !isInteger(k)) {
throw new TypeError("The parameter k must be an integer number");
}
} else {
k = 0;
}
var eq = equalScalar;
var zero = 0;
if (isString(datatype)) {
eq = typed2.find(equalScalar, [datatype, datatype]) || equalScalar;
zero = typed2.convert(0, datatype);
}
var kSuper = k > 0 ? k : 0;
var kSub = k < 0 ? -k : 0;
var rows = size[0];
var columns = size[1];
var n = Math.min(rows - kSub, columns - kSuper);
var _value;
if (isArray(value)) {
if (value.length !== n) {
throw new Error("Invalid value array length");
}
_value = function _value2(i2) {
return value[i2];
};
} else if (isMatrix(value)) {
var ms = value.size();
if (ms.length !== 1 || ms[0] !== n) {
throw new Error("Invalid matrix length");
}
_value = function _value2(i2) {
return value.get([i2]);
};
} else {
_value = function _value2() {
return value;
};
}
var values2 = [];
var index = [];
var ptr = [];
for (var j = 0; j < columns; j++) {
ptr.push(values2.length);
var i = j - kSuper;
if (i >= 0 && i < n) {
var v = _value(i);
if (!eq(v, zero)) {
index.push(i + kSub);
values2.push(v);
}
}
}
ptr.push(values2.length);
return new SparseMatrix({
values: values2,
index,
ptr,
size: [rows, columns]
});
};
SparseMatrix.prototype.swapRows = function(i, j) {
if (!isNumber(i) || !isInteger(i) || !isNumber(j) || !isInteger(j)) {
throw new Error("Row index must be positive integers");
}
if (this._size.length !== 2) {
throw new Error("Only two dimensional matrix is supported");
}
validateIndex(i, this._size[0]);
validateIndex(j, this._size[0]);
SparseMatrix._swapRows(i, j, this._size[1], this._values, this._index, this._ptr);
return this;
};
SparseMatrix._forEachRow = function(j, values2, index, ptr, callback) {
var k0 = ptr[j];
var k1 = ptr[j + 1];
for (var k = k0; k < k1; k++) {
callback(index[k], values2[k]);
}
};
SparseMatrix._swapRows = function(x, y, columns, values2, index, ptr) {
for (var j = 0; j < columns; j++) {
var k0 = ptr[j];
var k1 = ptr[j + 1];
var kx = _getValueIndex(x, k0, k1, index);
var ky = _getValueIndex(y, k0, k1, index);
if (kx < k1 && ky < k1 && index[kx] === x && index[ky] === y) {
if (values2) {
var v = values2[kx];
values2[kx] = values2[ky];
values2[ky] = v;
}
continue;
}
if (kx < k1 && index[kx] === x && (ky >= k1 || index[ky] !== y)) {
var vx = values2 ? values2[kx] : void 0;
index.splice(ky, 0, y);
if (values2) {
values2.splice(ky, 0, vx);
}
index.splice(ky <= kx ? kx + 1 : kx, 1);
if (values2) {
values2.splice(ky <= kx ? kx + 1 : kx, 1);
}
continue;
}
if (ky < k1 && index[ky] === y && (kx >= k1 || index[kx] !== x)) {
var vy = values2 ? values2[ky] : void 0;
index.splice(kx, 0, x);
if (values2) {
values2.splice(kx, 0, vy);
}
index.splice(kx <= ky ? ky + 1 : ky, 1);
if (values2) {
values2.splice(kx <= ky ? ky + 1 : ky, 1);
}
}
}
};
return SparseMatrix;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/number.js
var name19 = "number";
var dependencies20 = ["typed"];
function getNonDecimalNumberParts(input) {
var nonDecimalWithRadixMatch = input.match(/(0[box])([0-9a-fA-F]*)\.([0-9a-fA-F]*)/);
if (nonDecimalWithRadixMatch) {
var radix = {
"0b": 2,
"0o": 8,
"0x": 16
}[nonDecimalWithRadixMatch[1]];
var integerPart = nonDecimalWithRadixMatch[2];
var fractionalPart = nonDecimalWithRadixMatch[3];
return {
input,
radix,
integerPart,
fractionalPart
};
} else {
return null;
}
}
function makeNumberFromNonDecimalParts(parts) {
var n = parseInt(parts.integerPart, parts.radix);
var f = 0;
for (var i = 0; i < parts.fractionalPart.length; i++) {
var digitValue = parseInt(parts.fractionalPart[i], parts.radix);
f += digitValue / Math.pow(parts.radix, i + 1);
}
var result = n + f;
if (isNaN(result)) {
throw new SyntaxError('String "' + parts.input + '" is no valid number');
}
return result;
}
var createNumber = /* @__PURE__ */ factory(name19, dependencies20, (_ref) => {
var {
typed: typed2
} = _ref;
var number = typed2("number", {
"": function _() {
return 0;
},
number: function number2(x) {
return x;
},
string: function string(x) {
if (x === "NaN")
return NaN;
var nonDecimalNumberParts = getNonDecimalNumberParts(x);
if (nonDecimalNumberParts) {
return makeNumberFromNonDecimalParts(nonDecimalNumberParts);
}
var size = 0;
var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);
if (wordSizeSuffixMatch) {
size = Number(wordSizeSuffixMatch[2]);
x = wordSizeSuffixMatch[1];
}
var num = Number(x);
if (isNaN(num)) {
throw new SyntaxError('String "' + x + '" is no valid number');
}
if (wordSizeSuffixMatch) {
if (num > 2 ** size - 1) {
throw new SyntaxError('String "'.concat(x, '" is out of range'));
}
if (num >= 2 ** (size - 1)) {
num = num - 2 ** size;
}
}
return num;
},
BigNumber: function BigNumber(x) {
return x.toNumber();
},
Fraction: function Fraction2(x) {
return x.valueOf();
},
Unit: typed2.referToSelf((self2) => (x) => {
var clone4 = x.clone();
clone4.value = self2(x.value);
return clone4;
}),
null: function _null(x) {
return 0;
},
"Unit, string | Unit": function UnitStringUnit(unit, valuelessUnit) {
return unit.toNumber(valuelessUnit);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
number.fromJSON = function(json) {
return parseFloat(json.value);
};
return number;
});
// node_modules/mathjs/lib/esm/type/string.js
var name20 = "string";
var dependencies21 = ["typed"];
var createString = /* @__PURE__ */ factory(name20, dependencies21, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name20, {
"": function _() {
return "";
},
number: format,
null: function _null(x) {
return "null";
},
boolean: function boolean(x) {
return x + "";
},
string: function string(x) {
return x;
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2)),
any: function any(x) {
return String(x);
}
});
});
// node_modules/mathjs/lib/esm/type/boolean.js
var name21 = "boolean";
var dependencies22 = ["typed"];
var createBoolean = /* @__PURE__ */ factory(name21, dependencies22, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name21, {
"": function _() {
return false;
},
boolean: function boolean(x) {
return x;
},
number: function number(x) {
return !!x;
},
null: function _null(x) {
return false;
},
BigNumber: function BigNumber(x) {
return !x.isZero();
},
string: function string(x) {
var lcase = x.toLowerCase();
if (lcase === "true") {
return true;
} else if (lcase === "false") {
return false;
}
var num = Number(x);
if (x !== "" && !isNaN(num)) {
return !!num;
}
throw new Error('Cannot convert "' + x + '" to a boolean');
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/type/bignumber/function/bignumber.js
var name22 = "bignumber";
var dependencies23 = ["typed", "BigNumber"];
var createBignumber = /* @__PURE__ */ factory(name22, dependencies23, (_ref) => {
var {
typed: typed2,
BigNumber
} = _ref;
return typed2("bignumber", {
"": function _() {
return new BigNumber(0);
},
number: function number(x) {
return new BigNumber(x + "");
},
string: function string(x) {
var wordSizeSuffixMatch = x.match(/(0[box][0-9a-fA-F]*)i([0-9]*)/);
if (wordSizeSuffixMatch) {
var size = wordSizeSuffixMatch[2];
var n = BigNumber(wordSizeSuffixMatch[1]);
var twoPowSize = new BigNumber(2).pow(Number(size));
if (n.gt(twoPowSize.sub(1))) {
throw new SyntaxError('String "'.concat(x, '" is out of range'));
}
var twoPowSizeSubOne = new BigNumber(2).pow(Number(size) - 1);
if (n.gte(twoPowSizeSubOne)) {
return n.sub(twoPowSize);
} else {
return n;
}
}
return new BigNumber(x);
},
BigNumber: function BigNumber2(x) {
return x;
},
Unit: typed2.referToSelf((self2) => (x) => {
var clone4 = x.clone();
clone4.value = self2(x.value);
return clone4;
}),
Fraction: function Fraction2(x) {
return new BigNumber(x.n).div(x.d).times(x.s);
},
null: function _null(x) {
return new BigNumber(0);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/type/complex/function/complex.js
var name23 = "complex";
var dependencies24 = ["typed", "Complex"];
var createComplex = /* @__PURE__ */ factory(name23, dependencies24, (_ref) => {
var {
typed: typed2,
Complex: Complex2
} = _ref;
return typed2("complex", {
"": function _() {
return Complex2.ZERO;
},
number: function number(x) {
return new Complex2(x, 0);
},
"number, number": function numberNumber(re, im) {
return new Complex2(re, im);
},
// TODO: this signature should be redundant
"BigNumber, BigNumber": function BigNumberBigNumber(re, im) {
return new Complex2(re.toNumber(), im.toNumber());
},
Fraction: function Fraction2(x) {
return new Complex2(x.valueOf(), 0);
},
Complex: function Complex3(x) {
return x.clone();
},
string: function string(x) {
return Complex2(x);
},
null: function _null(x) {
return Complex2(0);
},
Object: function Object2(x) {
if ("re" in x && "im" in x) {
return new Complex2(x.re, x.im);
}
if ("r" in x && "phi" in x || "abs" in x && "arg" in x) {
return new Complex2(x);
}
throw new Error("Expected object with properties (re and im) or (r and phi) or (abs and arg)");
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/type/fraction/function/fraction.js
var name24 = "fraction";
var dependencies25 = ["typed", "Fraction"];
var createFraction = /* @__PURE__ */ factory(name24, dependencies25, (_ref) => {
var {
typed: typed2,
Fraction: Fraction2
} = _ref;
return typed2("fraction", {
number: function number(x) {
if (!isFinite(x) || isNaN(x)) {
throw new Error(x + " cannot be represented as a fraction");
}
return new Fraction2(x);
},
string: function string(x) {
return new Fraction2(x);
},
"number, number": function numberNumber(numerator, denominator) {
return new Fraction2(numerator, denominator);
},
null: function _null(x) {
return new Fraction2(0);
},
BigNumber: function BigNumber(x) {
return new Fraction2(x.toString());
},
Fraction: function Fraction3(x) {
return x;
},
Unit: typed2.referToSelf((self2) => (x) => {
var clone4 = x.clone();
clone4.value = self2(x.value);
return clone4;
}),
Object: function Object2(x) {
return new Fraction2(x);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/type/matrix/function/matrix.js
var name25 = "matrix";
var dependencies26 = ["typed", "Matrix", "DenseMatrix", "SparseMatrix"];
var createMatrix = /* @__PURE__ */ factory(name25, dependencies26, (_ref) => {
var {
typed: typed2,
Matrix,
DenseMatrix,
SparseMatrix
} = _ref;
return typed2(name25, {
"": function _() {
return _create([]);
},
string: function string(format4) {
return _create([], format4);
},
"string, string": function stringString(format4, datatype) {
return _create([], format4, datatype);
},
Array: function Array2(data) {
return _create(data);
},
Matrix: function Matrix2(data) {
return _create(data, data.storage());
},
"Array | Matrix, string": _create,
"Array | Matrix, string, string": _create
});
function _create(data, format4, datatype) {
if (format4 === "dense" || format4 === "default" || format4 === void 0) {
return new DenseMatrix(data, datatype);
}
if (format4 === "sparse") {
return new SparseMatrix(data, datatype);
}
throw new TypeError("Unknown matrix type " + JSON.stringify(format4) + ".");
}
});
// node_modules/mathjs/lib/esm/function/matrix/matrixFromFunction.js
var name26 = "matrixFromFunction";
var dependencies27 = ["typed", "matrix", "isZero"];
var createMatrixFromFunction = /* @__PURE__ */ factory(name26, dependencies27, (_ref) => {
var {
typed: typed2,
matrix,
isZero
} = _ref;
return typed2(name26, {
"Array | Matrix, function, string, string": function ArrayMatrixFunctionStringString(size, fn, format4, datatype) {
return _create(size, fn, format4, datatype);
},
"Array | Matrix, function, string": function ArrayMatrixFunctionString(size, fn, format4) {
return _create(size, fn, format4);
},
"Matrix, function": function MatrixFunction(size, fn) {
return _create(size, fn, "dense");
},
"Array, function": function ArrayFunction(size, fn) {
return _create(size, fn, "dense").toArray();
},
"Array | Matrix, string, function": function ArrayMatrixStringFunction(size, format4, fn) {
return _create(size, fn, format4);
},
"Array | Matrix, string, string, function": function ArrayMatrixStringStringFunction(size, format4, datatype, fn) {
return _create(size, fn, format4, datatype);
}
});
function _create(size, fn, format4, datatype) {
var m;
if (datatype !== void 0) {
m = matrix(format4, datatype);
} else {
m = matrix(format4);
}
m.resize(size);
m.forEach(function(_, index) {
var val = fn(index);
if (isZero(val))
return;
m.set(index, val);
});
return m;
}
});
// node_modules/mathjs/lib/esm/function/matrix/matrixFromRows.js
var name27 = "matrixFromRows";
var dependencies28 = ["typed", "matrix", "flatten", "size"];
var createMatrixFromRows = /* @__PURE__ */ factory(name27, dependencies28, (_ref) => {
var {
typed: typed2,
matrix,
flatten: flatten2,
size
} = _ref;
return typed2(name27, {
"...Array": function Array2(arr) {
return _createArray(arr);
},
"...Matrix": function Matrix(arr) {
return matrix(_createArray(arr.map((m) => m.toArray())));
}
// TODO implement this properly for SparseMatrix
});
function _createArray(arr) {
if (arr.length === 0)
throw new TypeError("At least one row is needed to construct a matrix.");
var N = checkVectorTypeAndReturnLength(arr[0]);
var result = [];
for (var row of arr) {
var rowLength = checkVectorTypeAndReturnLength(row);
if (rowLength !== N) {
throw new TypeError("The vectors had different length: " + (N | 0) + " \u2260 " + (rowLength | 0));
}
result.push(flatten2(row));
}
return result;
}
function checkVectorTypeAndReturnLength(vec) {
var s = size(vec);
if (s.length === 1) {
return s[0];
} else if (s.length === 2) {
if (s[0] === 1) {
return s[1];
} else if (s[1] === 1) {
return s[0];
} else {
throw new TypeError("At least one of the arguments is not a vector.");
}
} else {
throw new TypeError("Only one- or two-dimensional vectors are supported.");
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/matrixFromColumns.js
var name28 = "matrixFromColumns";
var dependencies29 = ["typed", "matrix", "flatten", "size"];
var createMatrixFromColumns = /* @__PURE__ */ factory(name28, dependencies29, (_ref) => {
var {
typed: typed2,
matrix,
flatten: flatten2,
size
} = _ref;
return typed2(name28, {
"...Array": function Array2(arr) {
return _createArray(arr);
},
"...Matrix": function Matrix(arr) {
return matrix(_createArray(arr.map((m) => m.toArray())));
}
// TODO implement this properly for SparseMatrix
});
function _createArray(arr) {
if (arr.length === 0)
throw new TypeError("At least one column is needed to construct a matrix.");
var N = checkVectorTypeAndReturnLength(arr[0]);
var result = [];
for (var i = 0; i < N; i++) {
result[i] = [];
}
for (var col of arr) {
var colLength = checkVectorTypeAndReturnLength(col);
if (colLength !== N) {
throw new TypeError("The vectors had different length: " + (N | 0) + " \u2260 " + (colLength | 0));
}
var f = flatten2(col);
for (var _i = 0; _i < N; _i++) {
result[_i].push(f[_i]);
}
}
return result;
}
function checkVectorTypeAndReturnLength(vec) {
var s = size(vec);
if (s.length === 1) {
return s[0];
} else if (s.length === 2) {
if (s[0] === 1) {
return s[1];
} else if (s[1] === 1) {
return s[0];
} else {
throw new TypeError("At least one of the arguments is not a vector.");
}
} else {
throw new TypeError("Only one- or two-dimensional vectors are supported.");
}
}
});
// node_modules/mathjs/lib/esm/type/unit/function/splitUnit.js
var name29 = "splitUnit";
var dependencies30 = ["typed"];
var createSplitUnit = /* @__PURE__ */ factory(name29, dependencies30, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name29, {
"Unit, Array": function UnitArray(unit, parts) {
return unit.splitUnit(parts);
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/unaryMinus.js
var name30 = "unaryMinus";
var dependencies31 = ["typed"];
var createUnaryMinus = /* @__PURE__ */ factory(name30, dependencies31, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name30, {
number: unaryMinusNumber,
"Complex | BigNumber | Fraction": (x) => x.neg(),
Unit: typed2.referToSelf((self2) => (x) => {
var res = x.clone();
res.value = typed2.find(self2, res.valueType())(x.value);
return res;
}),
// deep map collection, skip zeros since unaryMinus(0) = 0
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2, true))
// TODO: add support for string
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/unaryPlus.js
var name31 = "unaryPlus";
var dependencies32 = ["typed", "config", "BigNumber"];
var createUnaryPlus = /* @__PURE__ */ factory(name31, dependencies32, (_ref) => {
var {
typed: typed2,
config: config2,
BigNumber
} = _ref;
return typed2(name31, {
number: unaryPlusNumber,
Complex: function Complex2(x) {
return x;
},
BigNumber: function BigNumber2(x) {
return x;
},
Fraction: function Fraction2(x) {
return x;
},
Unit: function Unit(x) {
return x.clone();
},
// deep map collection, skip zeros since unaryPlus(0) = 0
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2, true)),
"boolean | string": function booleanString(x) {
return config2.number === "BigNumber" ? new BigNumber(+x) : +x;
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/abs.js
var name32 = "abs";
var dependencies33 = ["typed"];
var createAbs = /* @__PURE__ */ factory(name32, dependencies33, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name32, {
number: absNumber,
"Complex | BigNumber | Fraction | Unit": (x) => x.abs(),
// deep map collection, skip zeros since abs(0) = 0
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2, true))
});
});
// node_modules/mathjs/lib/esm/function/matrix/apply.js
var name33 = "apply";
var dependencies34 = ["typed", "isInteger"];
var createApply = /* @__PURE__ */ factory(name33, dependencies34, (_ref) => {
var {
typed: typed2,
isInteger: isInteger2
} = _ref;
return typed2(name33, {
"Array | Matrix, number | BigNumber, function": function ArrayMatrixNumberBigNumberFunction(mat, dim, callback) {
if (!isInteger2(dim)) {
throw new TypeError("Integer number expected for dimension");
}
var size = Array.isArray(mat) ? arraySize(mat) : mat.size();
if (dim < 0 || dim >= size.length) {
throw new IndexError(dim, size.length);
}
if (isMatrix(mat)) {
return mat.create(_apply(mat.valueOf(), dim, callback));
} else {
return _apply(mat, dim, callback);
}
}
});
});
function _apply(mat, dim, callback) {
var i, ret, tran;
if (dim <= 0) {
if (!Array.isArray(mat[0])) {
return callback(mat);
} else {
tran = _switch2(mat);
ret = [];
for (i = 0; i < tran.length; i++) {
ret[i] = _apply(tran[i], dim - 1, callback);
}
return ret;
}
} else {
ret = [];
for (i = 0; i < mat.length; i++) {
ret[i] = _apply(mat[i], dim - 1, callback);
}
return ret;
}
}
function _switch2(mat) {
var I = mat.length;
var J = mat[0].length;
var i, j;
var ret = [];
for (j = 0; j < J; j++) {
var tmp = [];
for (i = 0; i < I; i++) {
tmp.push(mat[i][j]);
}
ret.push(tmp);
}
return ret;
}
// node_modules/mathjs/lib/esm/function/arithmetic/addScalar.js
var name34 = "addScalar";
var dependencies35 = ["typed"];
var createAddScalar = /* @__PURE__ */ factory(name34, dependencies35, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name34, {
"number, number": addNumber,
"Complex, Complex": function ComplexComplex(x, y) {
return x.add(y);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.plus(y);
},
"Fraction, Fraction": function FractionFraction(x, y) {
return x.add(y);
},
"Unit, Unit": typed2.referToSelf((self2) => (x, y) => {
if (x.value === null || x.value === void 0) {
throw new Error("Parameter x contains a unit with undefined value");
}
if (y.value === null || y.value === void 0) {
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 = typed2.find(self2, [res.valueType(), y.valueType()])(res.value, y.value);
res.fixPrefix = false;
return res;
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/cbrt.js
var name35 = "cbrt";
var dependencies36 = ["config", "typed", "isNegative", "unaryMinus", "matrix", "Complex", "BigNumber", "Fraction"];
var createCbrt = /* @__PURE__ */ factory(name35, dependencies36, (_ref) => {
var {
config: config2,
typed: typed2,
isNegative,
unaryMinus,
matrix,
Complex: Complex2,
BigNumber,
Fraction: Fraction2
} = _ref;
return typed2(name35, {
number: cbrtNumber,
// note: signature 'number, boolean' is also supported,
// created by typed as it knows how to convert number to Complex
Complex: _cbrtComplex,
"Complex, boolean": _cbrtComplex,
BigNumber: function BigNumber2(x) {
return x.cbrt();
},
Unit: _cbrtUnit
});
function _cbrtComplex(x, allRoots) {
var arg3 = x.arg() / 3;
var abs2 = x.abs();
var principal = new Complex2(cbrtNumber(abs2), 0).mul(new Complex2(0, arg3).exp());
if (allRoots) {
var all2 = [principal, new Complex2(cbrtNumber(abs2), 0).mul(new Complex2(0, arg3 + Math.PI * 2 / 3).exp()), new Complex2(cbrtNumber(abs2), 0).mul(new Complex2(0, arg3 - Math.PI * 2 / 3).exp())];
return config2.matrix === "Array" ? all2 : matrix(all2);
} else {
return principal;
}
}
function _cbrtUnit(x) {
if (x.value && isComplex(x.value)) {
var result = x.clone();
result.value = 1;
result = result.pow(1 / 3);
result.value = _cbrtComplex(x.value);
return result;
} else {
var negate = isNegative(x.value);
if (negate) {
x.value = unaryMinus(x.value);
}
var third;
if (isBigNumber(x.value)) {
third = new BigNumber(1).div(3);
} else if (isFraction(x.value)) {
third = new Fraction2(1, 3);
} else {
third = 1 / 3;
}
var _result = x.pow(third);
if (negate) {
_result.value = unaryMinus(_result.value);
}
return _result;
}
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo11xS0s.js
var name36 = "matAlgo11xS0s";
var dependencies37 = ["typed", "equalScalar"];
var createMatAlgo11xS0s = /* @__PURE__ */ factory(name36, dependencies37, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo11xS0s(s, b, callback, inverse) {
var avalues = s._values;
var aindex = s._index;
var aptr = s._ptr;
var asize = s._size;
var adt = s._datatype;
if (!avalues) {
throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string") {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
b = typed2.convert(b, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = [];
var cindex = [];
var cptr = [];
for (var j = 0; j < columns; j++) {
cptr[j] = cindex.length;
for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
var i = aindex[k];
var v = inverse ? cf(b, avalues[k]) : cf(avalues[k], b);
if (!eq(v, zero)) {
cindex.push(i);
cvalues.push(v);
}
}
}
cptr[columns] = cindex.length;
return s.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo12xSfs.js
var name37 = "matAlgo12xSfs";
var dependencies38 = ["typed", "DenseMatrix"];
var createMatAlgo12xSfs = /* @__PURE__ */ factory(name37, dependencies38, (_ref) => {
var {
typed: typed2,
DenseMatrix
} = _ref;
return function matAlgo12xSfs(s, b, callback, inverse) {
var avalues = s._values;
var aindex = s._index;
var aptr = s._ptr;
var asize = s._size;
var adt = s._datatype;
if (!avalues) {
throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var cf = callback;
if (typeof adt === "string") {
dt = adt;
b = typed2.convert(b, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cdata = [];
var x = [];
var w = [];
for (var j = 0; j < columns; j++) {
var mark = j + 1;
for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
var r = aindex[k];
x[r] = avalues[k];
w[r] = mark;
}
for (var i = 0; i < rows; i++) {
if (j === 0) {
cdata[i] = [];
}
if (w[i] === mark) {
cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);
} else {
cdata[i][j] = inverse ? cf(b, 0) : cf(0, b);
}
}
}
return new DenseMatrix({
data: cdata,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo14xDs.js
var name38 = "matAlgo14xDs";
var dependencies39 = ["typed"];
var createMatAlgo14xDs = /* @__PURE__ */ factory(name38, dependencies39, (_ref) => {
var {
typed: typed2
} = _ref;
return function matAlgo14xDs(a, b, callback, inverse) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var dt;
var cf = callback;
if (typeof adt === "string") {
dt = adt;
b = typed2.convert(b, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cdata = asize.length > 0 ? _iterate(cf, 0, asize, asize[0], adata, b, inverse) : [];
return a.createDenseMatrix({
data: cdata,
size: clone(asize),
datatype: dt
});
};
function _iterate(f, level, s, n, av, bv, inverse) {
var cv = [];
if (level === s.length - 1) {
for (var i = 0; i < n; i++) {
cv[i] = inverse ? f(bv, av[i]) : f(av[i], bv);
}
} else {
for (var j = 0; j < n; j++) {
cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv, inverse);
}
}
return cv;
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/ceil.js
var name39 = "ceil";
var dependencies40 = ["typed", "config", "round", "matrix", "equalScalar", "zeros", "DenseMatrix"];
var createCeilNumber = /* @__PURE__ */ factory(name39, ["typed", "config", "round"], (_ref) => {
var {
typed: typed2,
config: config2,
round: round2
} = _ref;
return typed2(name39, {
number: function number(x) {
if (nearlyEqual(x, round2(x), config2.epsilon)) {
return round2(x);
} else {
return Math.ceil(x);
}
},
"number, number": function numberNumber(x, n) {
if (nearlyEqual(x, round2(x, n), config2.epsilon)) {
return round2(x, n);
} else {
var [number, exponent] = "".concat(x, "e").split("e");
var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
[number, exponent] = "".concat(result, "e").split("e");
return Number("".concat(number, "e").concat(Number(exponent) - n));
}
}
});
});
var createCeil = /* @__PURE__ */ factory(name39, dependencies40, (_ref2) => {
var {
typed: typed2,
config: config2,
round: round2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix
} = _ref2;
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var ceilNumber = createCeilNumber({
typed: typed2,
config: config2,
round: round2
});
return typed2("ceil", {
number: ceilNumber.signatures.number,
"number,number": ceilNumber.signatures["number,number"],
Complex: function Complex2(x) {
return x.ceil();
},
"Complex, number": function ComplexNumber(x, n) {
return x.ceil(n);
},
"Complex, BigNumber": function ComplexBigNumber(x, n) {
return x.ceil(n.toNumber());
},
BigNumber: function BigNumber(x) {
if (nearlyEqual2(x, round2(x), config2.epsilon)) {
return round2(x);
} else {
return x.ceil();
}
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, n) {
if (nearlyEqual2(x, round2(x, n), config2.epsilon)) {
return round2(x, n);
} else {
return x.toDecimalPlaces(n.toNumber(), decimal_default.ROUND_CEIL);
}
},
Fraction: function Fraction2(x) {
return x.ceil();
},
"Fraction, number": function FractionNumber(x, n) {
return x.ceil(n);
},
"Fraction, BigNumber": function FractionBigNumber(x, n) {
return x.ceil(n.toNumber());
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => {
return deepMap(x, self2, true);
}),
"Array, number | BigNumber": typed2.referToSelf((self2) => (x, n) => {
return deepMap(x, (i) => self2(i, n), true);
}),
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(x, y, self2, false);
}),
"number | Complex | Fraction | BigNumber, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(y), x, self2, true).valueOf();
}),
"number | Complex | Fraction | BigNumber, Matrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0))
return zeros2(y.size(), y.storage());
if (y.storage() === "dense") {
return matAlgo14xDs(y, x, self2, true);
}
return matAlgo12xSfs(y, x, self2, true);
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/cube.js
var name40 = "cube";
var dependencies41 = ["typed"];
var createCube = /* @__PURE__ */ factory(name40, dependencies41, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name40, {
number: cubeNumber,
Complex: function Complex2(x) {
return x.mul(x).mul(x);
},
BigNumber: function BigNumber(x) {
return x.times(x).times(x);
},
Fraction: function Fraction2(x) {
return x.pow(3);
},
Unit: function Unit(x) {
return x.pow(3);
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/exp.js
var name41 = "exp";
var dependencies42 = ["typed"];
var createExp = /* @__PURE__ */ factory(name41, dependencies42, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name41, {
number: expNumber,
Complex: function Complex2(x) {
return x.exp();
},
BigNumber: function BigNumber(x) {
return x.exp();
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/expm1.js
var name42 = "expm1";
var dependencies43 = ["typed", "Complex"];
var createExpm1 = /* @__PURE__ */ factory(name42, dependencies43, (_ref) => {
var {
typed: typed2,
Complex: _Complex
} = _ref;
return typed2(name42, {
number: expm1Number,
Complex: function Complex2(x) {
var r = Math.exp(x.re);
return new _Complex(r * Math.cos(x.im) - 1, r * Math.sin(x.im));
},
BigNumber: function BigNumber(x) {
return x.exp().minus(1);
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/fix.js
var name43 = "fix";
var dependencies44 = ["typed", "Complex", "matrix", "ceil", "floor", "equalScalar", "zeros", "DenseMatrix"];
var createFixNumber = /* @__PURE__ */ factory(name43, ["typed", "ceil", "floor"], (_ref) => {
var {
typed: typed2,
ceil: ceil2,
floor: floor2
} = _ref;
return typed2(name43, {
number: function number(x) {
return x > 0 ? floor2(x) : ceil2(x);
},
"number, number": function numberNumber(x, n) {
return x > 0 ? floor2(x, n) : ceil2(x, n);
}
});
});
var createFix = /* @__PURE__ */ factory(name43, dependencies44, (_ref2) => {
var {
typed: typed2,
Complex: _Complex,
matrix,
ceil: ceil2,
floor: floor2,
equalScalar,
zeros: zeros2,
DenseMatrix
} = _ref2;
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var fixNumber = createFixNumber({
typed: typed2,
ceil: ceil2,
floor: floor2
});
return typed2("fix", {
number: fixNumber.signatures.number,
"number, number | BigNumber": fixNumber.signatures["number,number"],
Complex: function Complex2(x) {
return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));
},
"Complex, number": function ComplexNumber(x, n) {
return new _Complex(x.re > 0 ? floor2(x.re, n) : ceil2(x.re, n), x.im > 0 ? floor2(x.im, n) : ceil2(x.im, n));
},
"Complex, BigNumber": function ComplexBigNumber(x, bn) {
var n = bn.toNumber();
return new _Complex(x.re > 0 ? floor2(x.re, n) : ceil2(x.re, n), x.im > 0 ? floor2(x.im, n) : ceil2(x.im, n));
},
BigNumber: function BigNumber(x) {
return x.isNegative() ? ceil2(x) : floor2(x);
},
"BigNumber, number | BigNumber": function BigNumberNumberBigNumber(x, n) {
return x.isNegative() ? ceil2(x, n) : floor2(x, n);
},
Fraction: function Fraction2(x) {
return x.s < 0 ? x.ceil() : x.floor();
},
"Fraction, number | BigNumber": function FractionNumberBigNumber(x, n) {
return x.s < 0 ? ceil2(x, n) : floor2(x, n);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => {
return deepMap(x, self2, true);
}),
"Array | Matrix, number | BigNumber": typed2.referToSelf((self2) => (x, n) => {
return deepMap(x, (i) => self2(i, n), true);
}),
"number | Complex | Fraction | BigNumber, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(y), x, self2, true).valueOf();
}),
"number | Complex | Fraction | BigNumber, Matrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0))
return zeros2(y.size(), y.storage());
if (y.storage() === "dense") {
return matAlgo14xDs(y, x, self2, true);
}
return matAlgo12xSfs(y, x, self2, true);
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/floor.js
var name44 = "floor";
var dependencies45 = ["typed", "config", "round", "matrix", "equalScalar", "zeros", "DenseMatrix"];
var createFloorNumber = /* @__PURE__ */ factory(name44, ["typed", "config", "round"], (_ref) => {
var {
typed: typed2,
config: config2,
round: round2
} = _ref;
return typed2(name44, {
number: function number(x) {
if (nearlyEqual(x, round2(x), config2.epsilon)) {
return round2(x);
} else {
return Math.floor(x);
}
},
"number, number": function numberNumber(x, n) {
if (nearlyEqual(x, round2(x, n), config2.epsilon)) {
return round2(x, n);
} else {
var [number, exponent] = "".concat(x, "e").split("e");
var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
[number, exponent] = "".concat(result, "e").split("e");
return Number("".concat(number, "e").concat(Number(exponent) - n));
}
}
});
});
var createFloor = /* @__PURE__ */ factory(name44, dependencies45, (_ref2) => {
var {
typed: typed2,
config: config2,
round: round2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix
} = _ref2;
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var floorNumber = createFloorNumber({
typed: typed2,
config: config2,
round: round2
});
return typed2("floor", {
number: floorNumber.signatures.number,
"number,number": floorNumber.signatures["number,number"],
Complex: function Complex2(x) {
return x.floor();
},
"Complex, number": function ComplexNumber(x, n) {
return x.floor(n);
},
"Complex, BigNumber": function ComplexBigNumber(x, n) {
return x.floor(n.toNumber());
},
BigNumber: function BigNumber(x) {
if (nearlyEqual2(x, round2(x), config2.epsilon)) {
return round2(x);
} else {
return x.floor();
}
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, n) {
if (nearlyEqual2(x, round2(x, n), config2.epsilon)) {
return round2(x, n);
} else {
return x.toDecimalPlaces(n.toNumber(), decimal_default.ROUND_FLOOR);
}
},
Fraction: function Fraction2(x) {
return x.floor();
},
"Fraction, number": function FractionNumber(x, n) {
return x.floor(n);
},
"Fraction, BigNumber": function FractionBigNumber(x, n) {
return x.floor(n.toNumber());
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => {
return deepMap(x, self2, true);
}),
"Array, number | BigNumber": typed2.referToSelf((self2) => (x, n) => {
return deepMap(x, (i) => self2(i, n), true);
}),
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(x, y, self2, false);
}),
"number | Complex | Fraction | BigNumber, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(y), x, self2, true).valueOf();
}),
"number | Complex | Fraction | BigNumber, Matrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0))
return zeros2(y.size(), y.storage());
if (y.storage() === "dense") {
return matAlgo14xDs(y, x, self2, true);
}
return matAlgo12xSfs(y, x, self2, true);
})
});
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo02xDS0.js
var name45 = "matAlgo02xDS0";
var dependencies46 = ["typed", "equalScalar"];
var createMatAlgo02xDS0 = /* @__PURE__ */ factory(name45, dependencies46, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo02xDS0(denseMatrix, sparseMatrix, callback, inverse) {
var adata = denseMatrix._data;
var asize = denseMatrix._size;
var adt = denseMatrix._datatype;
var bvalues = sparseMatrix._values;
var bindex = sparseMatrix._index;
var bptr = sparseMatrix._ptr;
var bsize = sparseMatrix._size;
var bdt = sparseMatrix._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
if (!bvalues) {
throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = [];
var cindex = [];
var cptr = [];
for (var j = 0; j < columns; j++) {
cptr[j] = cindex.length;
for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
var i = bindex[k];
var cij = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);
if (!eq(cij, zero)) {
cindex.push(i);
cvalues.push(cij);
}
}
}
cptr[columns] = cindex.length;
return sparseMatrix.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo03xDSf.js
var name46 = "matAlgo03xDSf";
var dependencies47 = ["typed"];
var createMatAlgo03xDSf = /* @__PURE__ */ factory(name46, dependencies47, (_ref) => {
var {
typed: typed2
} = _ref;
return function matAlgo03xDSf(denseMatrix, sparseMatrix, callback, inverse) {
var adata = denseMatrix._data;
var asize = denseMatrix._size;
var adt = denseMatrix._datatype;
var bvalues = sparseMatrix._values;
var bindex = sparseMatrix._index;
var bptr = sparseMatrix._ptr;
var bsize = sparseMatrix._size;
var bdt = sparseMatrix._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
if (!bvalues) {
throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cdata = [];
for (var z = 0; z < rows; z++) {
cdata[z] = [];
}
var x = [];
var w = [];
for (var j = 0; j < columns; j++) {
var mark = j + 1;
for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
var i = bindex[k];
x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);
w[i] = mark;
}
for (var y = 0; y < rows; y++) {
if (w[y] === mark) {
cdata[y][j] = x[y];
} else {
cdata[y][j] = inverse ? cf(zero, adata[y][j]) : cf(adata[y][j], zero);
}
}
}
return denseMatrix.createDenseMatrix({
data: cdata,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo05xSfSf.js
var name47 = "matAlgo05xSfSf";
var dependencies48 = ["typed", "equalScalar"];
var createMatAlgo05xSfSf = /* @__PURE__ */ factory(name47, dependencies48, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo05xSfSf(a, b, callback) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = avalues && bvalues ? [] : void 0;
var cindex = [];
var cptr = [];
var xa = cvalues ? [] : void 0;
var xb = cvalues ? [] : void 0;
var wa = [];
var wb = [];
var i, j, k, k1;
for (j = 0; j < columns; j++) {
cptr[j] = cindex.length;
var mark = j + 1;
for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) {
i = aindex[k];
cindex.push(i);
wa[i] = mark;
if (xa) {
xa[i] = avalues[k];
}
}
for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) {
i = bindex[k];
if (wa[i] !== mark) {
cindex.push(i);
}
wb[i] = mark;
if (xb) {
xb[i] = bvalues[k];
}
}
if (cvalues) {
k = cptr[j];
while (k < cindex.length) {
i = cindex[k];
var wai = wa[i];
var wbi = wb[i];
if (wai === mark || wbi === mark) {
var va = wai === mark ? xa[i] : zero;
var vb = wbi === mark ? xb[i] : zero;
var vc = cf(va, vb);
if (!eq(vc, zero)) {
cvalues.push(vc);
k++;
} else {
cindex.splice(k, 1);
}
}
}
}
}
cptr[columns] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo13xDD.js
var name48 = "matAlgo13xDD";
var dependencies49 = ["typed"];
var createMatAlgo13xDD = /* @__PURE__ */ factory(name48, dependencies49, (_ref) => {
var {
typed: typed2
} = _ref;
return function matAlgo13xDD(a, b, callback) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var bdata = b._data;
var bsize = b._size;
var bdt = b._datatype;
var csize = [];
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
for (var s = 0; s < asize.length; s++) {
if (asize[s] !== bsize[s]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
csize[s] = asize[s];
}
var dt;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
cf = typed2.find(callback, [dt, dt]);
}
var cdata = csize.length > 0 ? _iterate(cf, 0, csize, csize[0], adata, bdata) : [];
return a.createDenseMatrix({
data: cdata,
size: csize,
datatype: dt
});
};
function _iterate(f, level, s, n, av, bv) {
var cv = [];
if (level === s.length - 1) {
for (var i = 0; i < n; i++) {
cv[i] = f(av[i], bv[i]);
}
} else {
for (var j = 0; j < n; j++) {
cv[j] = _iterate(f, level + 1, s, s[level + 1], av[j], bv[j]);
}
}
return cv;
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/broadcast.js
var name49 = "broadcast";
var dependancies = ["concat"];
var createBroadcast = /* @__PURE__ */ factory(name49, dependancies, (_ref) => {
var {
concat: concat2
} = _ref;
return function(A, B) {
var N = Math.max(A._size.length, B._size.length);
if (A._size.length === B._size.length) {
if (A._size.every((dim2, i) => dim2 === B._size[i])) {
return [A, B];
}
}
var sizeA = _padLeft(A._size, N, 0);
var sizeB = _padLeft(B._size, N, 0);
var sizeMax = [];
for (var dim = 0; dim < N; dim++) {
sizeMax[dim] = Math.max(sizeA[dim], sizeB[dim]);
}
checkBroadcastingRules(sizeA, sizeMax);
checkBroadcastingRules(sizeB, sizeMax);
var AA = A.clone();
var BB = B.clone();
if (AA._size.length < N) {
AA.reshape(_padLeft(AA._size, N, 1));
} else if (BB._size.length < N) {
BB.reshape(_padLeft(BB._size, N, 1));
}
for (var _dim = 0; _dim < N; _dim++) {
if (AA._size[_dim] < sizeMax[_dim]) {
AA = _stretch(AA, sizeMax[_dim], _dim);
}
if (BB._size[_dim] < sizeMax[_dim]) {
BB = _stretch(BB, sizeMax[_dim], _dim);
}
}
return [AA, BB];
};
function _padLeft(shape, N, filler) {
return [...Array(N - shape.length).fill(filler), ...shape];
}
function _stretch(arrayToStretch, sizeToStretch, dimToStretch) {
return concat2(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js
var name50 = "matrixAlgorithmSuite";
var dependencies50 = ["typed", "matrix", "concat"];
var createMatrixAlgorithmSuite = /* @__PURE__ */ factory(name50, dependencies50, (_ref) => {
var {
typed: typed2,
matrix,
concat: concat2
} = _ref;
var matAlgo13xDD = createMatAlgo13xDD({
typed: typed2
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var broadcast = createBroadcast({
concat: concat2
});
return function matrixAlgorithmSuite(options) {
var elop = options.elop;
var SD = options.SD || options.DS;
var matrixSignatures;
if (elop) {
matrixSignatures = {
"DenseMatrix, DenseMatrix": (x, y) => matAlgo13xDD(...broadcast(x, y), elop),
"Array, Array": (x, y) => matAlgo13xDD(...broadcast(matrix(x), matrix(y)), elop).valueOf(),
"Array, DenseMatrix": (x, y) => matAlgo13xDD(...broadcast(matrix(x), y), elop),
"DenseMatrix, Array": (x, y) => matAlgo13xDD(...broadcast(x, matrix(y)), elop)
};
if (options.SS) {
matrixSignatures["SparseMatrix, SparseMatrix"] = (x, y) => options.SS(...broadcast(x, y), elop, false);
}
if (options.DS) {
matrixSignatures["DenseMatrix, SparseMatrix"] = (x, y) => options.DS(...broadcast(x, y), elop, false);
matrixSignatures["Array, SparseMatrix"] = (x, y) => options.DS(...broadcast(matrix(x), y), elop, false);
}
if (SD) {
matrixSignatures["SparseMatrix, DenseMatrix"] = (x, y) => SD(...broadcast(y, x), elop, true);
matrixSignatures["SparseMatrix, Array"] = (x, y) => SD(...broadcast(matrix(y), x), elop, true);
}
} else {
matrixSignatures = {
"DenseMatrix, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
return matAlgo13xDD(...broadcast(x, y), self2);
}),
"Array, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo13xDD(...broadcast(matrix(x), matrix(y)), self2).valueOf();
}),
"Array, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
return matAlgo13xDD(...broadcast(matrix(x), y), self2);
}),
"DenseMatrix, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo13xDD(...broadcast(x, matrix(y)), self2);
})
};
if (options.SS) {
matrixSignatures["SparseMatrix, SparseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return options.SS(...broadcast(x, y), self2, false);
});
}
if (options.DS) {
matrixSignatures["DenseMatrix, SparseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return options.DS(...broadcast(x, y), self2, false);
});
matrixSignatures["Array, SparseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return options.DS(...broadcast(matrix(x), y), self2, false);
});
}
if (SD) {
matrixSignatures["SparseMatrix, DenseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return SD(...broadcast(y, x), self2, true);
});
matrixSignatures["SparseMatrix, Array"] = typed2.referToSelf((self2) => (x, y) => {
return SD(...broadcast(matrix(y), x), self2, true);
});
}
}
var scalar = options.scalar || "any";
var Ds = options.Ds || options.Ss;
if (Ds) {
if (elop) {
matrixSignatures["DenseMatrix," + scalar] = (x, y) => matAlgo14xDs(x, y, elop, false);
matrixSignatures[scalar + ", DenseMatrix"] = (x, y) => matAlgo14xDs(y, x, elop, true);
matrixSignatures["Array," + scalar] = (x, y) => matAlgo14xDs(matrix(x), y, elop, false).valueOf();
matrixSignatures[scalar + ", Array"] = (x, y) => matAlgo14xDs(matrix(y), x, elop, true).valueOf();
} else {
matrixSignatures["DenseMatrix," + scalar] = typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(x, y, self2, false);
});
matrixSignatures[scalar + ", DenseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(y, x, self2, true);
});
matrixSignatures["Array," + scalar] = typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(x), y, self2, false).valueOf();
});
matrixSignatures[scalar + ", Array"] = typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(y), x, self2, true).valueOf();
});
}
}
var sS = options.sS !== void 0 ? options.sS : options.Ss;
if (elop) {
if (options.Ss) {
matrixSignatures["SparseMatrix," + scalar] = (x, y) => options.Ss(x, y, elop, false);
}
if (sS) {
matrixSignatures[scalar + ", SparseMatrix"] = (x, y) => sS(y, x, elop, true);
}
} else {
if (options.Ss) {
matrixSignatures["SparseMatrix," + scalar] = typed2.referToSelf((self2) => (x, y) => {
return options.Ss(x, y, self2, false);
});
}
if (sS) {
matrixSignatures[scalar + ", SparseMatrix"] = typed2.referToSelf((self2) => (x, y) => {
return sS(y, x, self2, true);
});
}
}
if (elop && elop.signatures) {
extend(matrixSignatures, elop.signatures);
}
return matrixSignatures;
};
});
// node_modules/mathjs/lib/esm/function/arithmetic/mod.js
var name51 = "mod";
var dependencies51 = ["typed", "config", "round", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat"];
var createMod = /* @__PURE__ */ factory(name51, dependencies51, (_ref) => {
var {
typed: typed2,
config: config2,
round: round2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix,
concat: concat2
} = _ref;
var floor2 = createFloor({
typed: typed2,
config: config2,
round: round2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix
});
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo05xSfSf = createMatAlgo05xSfSf({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name51, {
"number, number": _modNumber,
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
if (y.isNeg()) {
throw new Error("Cannot calculate mod for a negative divisor");
}
return y.isZero() ? x : x.mod(y);
},
"Fraction, Fraction": function FractionFraction(x, y) {
if (y.compare(0) < 0) {
throw new Error("Cannot calculate mod for a negative divisor");
}
return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);
}
}, matrixAlgorithmSuite({
SS: matAlgo05xSfSf,
DS: matAlgo03xDSf,
SD: matAlgo02xDS0,
Ss: matAlgo11xS0s,
sS: matAlgo12xSfs
}));
function _modNumber(x, y) {
return y === 0 ? x : x - y * floor2(x / y);
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo01xDSid.js
var name52 = "matAlgo01xDSid";
var dependencies52 = ["typed"];
var createMatAlgo01xDSid = /* @__PURE__ */ factory(name52, dependencies52, (_ref) => {
var {
typed: typed2
} = _ref;
return function algorithm1(denseMatrix, sparseMatrix, callback, inverse) {
var adata = denseMatrix._data;
var asize = denseMatrix._size;
var adt = denseMatrix._datatype;
var bvalues = sparseMatrix._values;
var bindex = sparseMatrix._index;
var bptr = sparseMatrix._ptr;
var bsize = sparseMatrix._size;
var bdt = sparseMatrix._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
if (!bvalues) {
throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");
}
var rows = asize[0];
var columns = asize[1];
var dt = typeof adt === "string" && adt === bdt ? adt : void 0;
var cf = dt ? typed2.find(callback, [dt, dt]) : callback;
var i, j;
var cdata = [];
for (i = 0; i < rows; i++) {
cdata[i] = [];
}
var x = [];
var w = [];
for (j = 0; j < columns; j++) {
var mark = j + 1;
for (var k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
i = bindex[k];
x[i] = inverse ? cf(bvalues[k], adata[i][j]) : cf(adata[i][j], bvalues[k]);
w[i] = mark;
}
for (i = 0; i < rows; i++) {
if (w[i] === mark) {
cdata[i][j] = x[i];
} else {
cdata[i][j] = adata[i][j];
}
}
}
return denseMatrix.createDenseMatrix({
data: cdata,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo04xSidSid.js
var name53 = "matAlgo04xSidSid";
var dependencies53 = ["typed", "equalScalar"];
var createMatAlgo04xSidSid = /* @__PURE__ */ factory(name53, dependencies53, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo04xSidSid(a, b, callback) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = avalues && bvalues ? [] : void 0;
var cindex = [];
var cptr = [];
var xa = avalues && bvalues ? [] : void 0;
var xb = avalues && bvalues ? [] : void 0;
var wa = [];
var wb = [];
var i, j, k, k0, k1;
for (j = 0; j < columns; j++) {
cptr[j] = cindex.length;
var mark = j + 1;
for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
i = aindex[k];
cindex.push(i);
wa[i] = mark;
if (xa) {
xa[i] = avalues[k];
}
}
for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
i = bindex[k];
if (wa[i] === mark) {
if (xa) {
var v = cf(xa[i], bvalues[k]);
if (!eq(v, zero)) {
xa[i] = v;
} else {
wa[i] = null;
}
}
} else {
cindex.push(i);
wb[i] = mark;
if (xb) {
xb[i] = bvalues[k];
}
}
}
if (xa && xb) {
k = cptr[j];
while (k < cindex.length) {
i = cindex[k];
if (wa[i] === mark) {
cvalues[k] = xa[i];
k++;
} else if (wb[i] === mark) {
cvalues[k] = xb[i];
k++;
} else {
cindex.splice(k, 1);
}
}
}
}
cptr[columns] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo10xSids.js
var name54 = "matAlgo10xSids";
var dependencies54 = ["typed", "DenseMatrix"];
var createMatAlgo10xSids = /* @__PURE__ */ factory(name54, dependencies54, (_ref) => {
var {
typed: typed2,
DenseMatrix
} = _ref;
return function matAlgo10xSids(s, b, callback, inverse) {
var avalues = s._values;
var aindex = s._index;
var aptr = s._ptr;
var asize = s._size;
var adt = s._datatype;
if (!avalues) {
throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var cf = callback;
if (typeof adt === "string") {
dt = adt;
b = typed2.convert(b, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cdata = [];
var x = [];
var w = [];
for (var j = 0; j < columns; j++) {
var mark = j + 1;
for (var k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
var r = aindex[k];
x[r] = avalues[k];
w[r] = mark;
}
for (var i = 0; i < rows; i++) {
if (j === 0) {
cdata[i] = [];
}
if (w[i] === mark) {
cdata[i][j] = inverse ? cf(b, x[i]) : cf(x[i], b);
} else {
cdata[i][j] = b;
}
}
}
return new DenseMatrix({
data: cdata,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/error/ArgumentsError.js
function ArgumentsError(fn, count, min2, max2) {
if (!(this instanceof ArgumentsError)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
this.fn = fn;
this.count = count;
this.min = min2;
this.max = max2;
this.message = "Wrong number of arguments in function " + fn + " (" + count + " provided, " + min2 + (max2 !== void 0 && max2 !== null ? "-" + max2 : "") + " expected)";
this.stack = new Error().stack;
}
ArgumentsError.prototype = new Error();
ArgumentsError.prototype.constructor = Error;
ArgumentsError.prototype.name = "ArgumentsError";
ArgumentsError.prototype.isArgumentsError = true;
// node_modules/mathjs/lib/esm/function/arithmetic/gcd.js
var name55 = "gcd";
var dependencies55 = ["typed", "config", "round", "matrix", "equalScalar", "zeros", "BigNumber", "DenseMatrix", "concat"];
var gcdTypes = "number | BigNumber | Fraction | Matrix | Array";
var gcdManyTypesSignature = "".concat(gcdTypes, ", ").concat(gcdTypes, ", ...").concat(gcdTypes);
function is1d(array) {
return !array.some((element) => Array.isArray(element));
}
var createGcd = /* @__PURE__ */ factory(name55, dependencies55, (_ref) => {
var {
typed: typed2,
matrix,
config: config2,
round: round2,
equalScalar,
zeros: zeros2,
BigNumber,
DenseMatrix,
concat: concat2
} = _ref;
var mod2 = createMod({
typed: typed2,
config: config2,
round: round2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix,
concat: concat2
});
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo04xSidSid = createMatAlgo04xSidSid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name55, {
"number, number": _gcdNumber,
"BigNumber, BigNumber": _gcdBigNumber,
"Fraction, Fraction": (x, y) => x.gcd(y)
}, matrixAlgorithmSuite({
SS: matAlgo04xSidSid,
DS: matAlgo01xDSid,
Ss: matAlgo10xSids
}), {
[gcdManyTypesSignature]: typed2.referToSelf((self2) => (a, b, args) => {
var res = self2(a, b);
for (var i = 0; i < args.length; i++) {
res = self2(res, args[i]);
}
return res;
}),
Array: typed2.referToSelf((self2) => (array) => {
if (array.length === 1 && Array.isArray(array[0]) && is1d(array[0])) {
return self2(...array[0]);
}
if (is1d(array)) {
return self2(...array);
}
throw new ArgumentsError("gcd() supports only 1d matrices!");
}),
Matrix: typed2.referToSelf((self2) => (matrix2) => {
return self2(matrix2.toArray());
})
});
function _gcdNumber(a, b) {
if (!isInteger(a) || !isInteger(b)) {
throw new Error("Parameters in function gcd must be integer numbers");
}
var r;
while (b !== 0) {
r = mod2(a, b);
a = b;
b = r;
}
return a < 0 ? -a : a;
}
function _gcdBigNumber(a, b) {
if (!a.isInt() || !b.isInt()) {
throw new Error("Parameters in function gcd must be integer numbers");
}
var zero = new BigNumber(0);
while (!b.isZero()) {
var r = mod2(a, b);
a = b;
b = r;
}
return a.lt(zero) ? a.neg() : a;
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo06xS0S0.js
var name56 = "matAlgo06xS0S0";
var dependencies56 = ["typed", "equalScalar"];
var createMatAlgo06xS0S0 = /* @__PURE__ */ factory(name56, dependencies56, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo06xS0S0(a, b, callback) {
var avalues = a._values;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = avalues && bvalues ? [] : void 0;
var cindex = [];
var cptr = [];
var x = cvalues ? [] : void 0;
var w = [];
var u = [];
for (var j = 0; j < columns; j++) {
cptr[j] = cindex.length;
var mark = j + 1;
scatter(a, j, w, x, u, mark, cindex, cf);
scatter(b, j, w, x, u, mark, cindex, cf);
if (x) {
var k = cptr[j];
while (k < cindex.length) {
var i = cindex[k];
if (u[i] === mark) {
var v = x[i];
if (!eq(v, zero)) {
cvalues.push(v);
k++;
} else {
cindex.splice(k, 1);
}
} else {
cindex.splice(k, 1);
}
}
} else {
var p = cptr[j];
while (p < cindex.length) {
var r = cindex[p];
if (u[r] !== mark) {
cindex.splice(p, 1);
} else {
p++;
}
}
}
}
cptr[columns] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/function/arithmetic/lcm.js
var name57 = "lcm";
var dependencies57 = ["typed", "matrix", "equalScalar", "concat"];
var createLcm = /* @__PURE__ */ factory(name57, dependencies57, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo06xS0S0 = createMatAlgo06xS0S0({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var lcmTypes = "number | BigNumber | Fraction | Matrix | Array";
var lcmManySignature = {};
lcmManySignature["".concat(lcmTypes, ", ").concat(lcmTypes, ", ...").concat(lcmTypes)] = typed2.referToSelf((self2) => (a, b, args) => {
var res = self2(a, b);
for (var i = 0; i < args.length; i++) {
res = self2(res, args[i]);
}
return res;
});
return typed2(name57, {
"number, number": lcmNumber,
"BigNumber, BigNumber": _lcmBigNumber,
"Fraction, Fraction": (x, y) => x.lcm(y)
}, matrixAlgorithmSuite({
SS: matAlgo06xS0S0,
DS: matAlgo02xDS0,
Ss: matAlgo11xS0s
}), lcmManySignature);
function _lcmBigNumber(a, b) {
if (!a.isInt() || !b.isInt()) {
throw new Error("Parameters in function lcm must be integer numbers");
}
if (a.isZero()) {
return a;
}
if (b.isZero()) {
return b;
}
var prod = a.times(b);
while (!b.isZero()) {
var t = b;
b = a.mod(t);
a = t;
}
return prod.div(a).abs();
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/log10.js
var name58 = "log10";
var dependencies58 = ["typed", "config", "Complex"];
var createLog10 = /* @__PURE__ */ factory(name58, dependencies58, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: _Complex
} = _ref;
return typed2(name58, {
number: function number(x) {
if (x >= 0 || config2.predictable) {
return log10Number(x);
} else {
return new _Complex(x, 0).log().div(Math.LN10);
}
},
Complex: function Complex2(x) {
return new _Complex(x).log().div(Math.LN10);
},
BigNumber: function BigNumber(x) {
if (!x.isNegative() || config2.predictable) {
return x.log();
} else {
return new _Complex(x.toNumber(), 0).log().div(Math.LN10);
}
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/log2.js
var name59 = "log2";
var dependencies59 = ["typed", "config", "Complex"];
var createLog2 = /* @__PURE__ */ factory(name59, dependencies59, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2
} = _ref;
return typed2(name59, {
number: function number(x) {
if (x >= 0 || config2.predictable) {
return log2Number(x);
} else {
return _log2Complex(new Complex2(x, 0));
}
},
Complex: _log2Complex,
BigNumber: function BigNumber(x) {
if (!x.isNegative() || config2.predictable) {
return x.log(2);
} else {
return _log2Complex(new Complex2(x.toNumber(), 0));
}
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
function _log2Complex(x) {
var newX = Math.sqrt(x.re * x.re + x.im * x.im);
return new Complex2(Math.log2 ? Math.log2(newX) : Math.log(newX) / Math.LN2, Math.atan2(x.im, x.re) / Math.LN2);
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/multiplyScalar.js
var name60 = "multiplyScalar";
var dependencies60 = ["typed"];
var createMultiplyScalar = /* @__PURE__ */ factory(name60, dependencies60, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("multiplyScalar", {
"number, number": multiplyNumber,
"Complex, Complex": function ComplexComplex(x, y) {
return x.mul(y);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.times(y);
},
"Fraction, Fraction": function FractionFraction(x, y) {
return x.mul(y);
},
"number | Fraction | BigNumber | Complex, Unit": (x, y) => y.multiply(x),
"Unit, number | Fraction | BigNumber | Complex | Unit": (x, y) => x.multiply(y)
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/multiply.js
var name61 = "multiply";
var dependencies61 = ["typed", "matrix", "addScalar", "multiplyScalar", "equalScalar", "dot"];
var createMultiply = /* @__PURE__ */ factory(name61, dependencies61, (_ref) => {
var {
typed: typed2,
matrix,
addScalar,
multiplyScalar,
equalScalar,
dot
} = _ref;
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
function _validateMatrixDimensions(size1, size2) {
switch (size1.length) {
case 1:
switch (size2.length) {
case 1:
if (size1[0] !== size2[0]) {
throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length");
}
break;
case 2:
if (size1[0] !== size2[0]) {
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:
switch (size2.length) {
case 1:
if (size1[1] !== size2[0]) {
throw new RangeError("Dimension mismatch in multiplication. Matrix columns (" + size1[1] + ") must match Vector length (" + size2[0] + ")");
}
break;
case 2:
if (size1[1] !== size2[0]) {
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)");
}
}
function _multiplyVectorVector(a, b, n) {
if (n === 0) {
throw new Error("Cannot multiply two empty vectors");
}
return dot(a, b);
}
function _multiplyVectorMatrix(a, b) {
if (b.storage() !== "dense") {
throw new Error("Support for SparseMatrix not implemented");
}
return _multiplyVectorDenseMatrix(a, b);
}
function _multiplyVectorDenseMatrix(a, b) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var bdata = b._data;
var bsize = b._size;
var bdt = b._datatype;
var alength = asize[0];
var bcolumns = bsize[1];
var dt;
var af = addScalar;
var mf = multiplyScalar;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
}
var c = [];
for (var j = 0; j < bcolumns; j++) {
var sum2 = mf(adata[0], bdata[0][j]);
for (var i = 1; i < alength; i++) {
sum2 = af(sum2, mf(adata[i], bdata[i][j]));
}
c[j] = sum2;
}
return a.createDenseMatrix({
data: c,
size: [bcolumns],
datatype: dt
});
}
var _multiplyMatrixVector = typed2("_multiplyMatrixVector", {
"DenseMatrix, any": _multiplyDenseMatrixVector,
"SparseMatrix, any": _multiplySparseMatrixVector
});
var _multiplyMatrixMatrix = typed2("_multiplyMatrixMatrix", {
"DenseMatrix, DenseMatrix": _multiplyDenseMatrixDenseMatrix,
"DenseMatrix, SparseMatrix": _multiplyDenseMatrixSparseMatrix,
"SparseMatrix, DenseMatrix": _multiplySparseMatrixDenseMatrix,
"SparseMatrix, SparseMatrix": _multiplySparseMatrixSparseMatrix
});
function _multiplyDenseMatrixVector(a, b) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var bdata = b._data;
var bdt = b._datatype;
var arows = asize[0];
var acolumns = asize[1];
var dt;
var af = addScalar;
var mf = multiplyScalar;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
}
var c = [];
for (var i = 0; i < arows; i++) {
var row = adata[i];
var sum2 = mf(row[0], bdata[0]);
for (var j = 1; j < acolumns; j++) {
sum2 = af(sum2, mf(row[j], bdata[j]));
}
c[i] = sum2;
}
return a.createDenseMatrix({
data: c,
size: [arows],
datatype: dt
});
}
function _multiplyDenseMatrixDenseMatrix(a, b) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var bdata = b._data;
var bsize = b._size;
var bdt = b._datatype;
var arows = asize[0];
var acolumns = asize[1];
var bcolumns = bsize[1];
var dt;
var af = addScalar;
var mf = multiplyScalar;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
}
var c = [];
for (var i = 0; i < arows; i++) {
var row = adata[i];
c[i] = [];
for (var j = 0; j < bcolumns; j++) {
var sum2 = mf(row[0], bdata[0][j]);
for (var x = 1; x < acolumns; x++) {
sum2 = af(sum2, mf(row[x], bdata[x][j]));
}
c[i][j] = sum2;
}
}
return a.createDenseMatrix({
data: c,
size: [arows, bcolumns],
datatype: dt
});
}
function _multiplyDenseMatrixSparseMatrix(a, b) {
var adata = a._data;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bsize = b._size;
var bdt = b._datatype;
if (!bvalues) {
throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");
}
var arows = asize[0];
var bcolumns = bsize[1];
var dt;
var af = addScalar;
var mf = multiplyScalar;
var eq = equalScalar;
var zero = 0;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
}
var cvalues = [];
var cindex = [];
var cptr = [];
var c = b.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [arows, bcolumns],
datatype: dt
});
for (var jb = 0; jb < bcolumns; jb++) {
cptr[jb] = cindex.length;
var kb0 = bptr[jb];
var kb1 = bptr[jb + 1];
if (kb1 > kb0) {
var last = 0;
for (var i = 0; i < arows; i++) {
var mark = i + 1;
var cij = void 0;
for (var kb = kb0; kb < kb1; kb++) {
var ib = bindex[kb];
if (last !== mark) {
cij = mf(adata[i][ib], bvalues[kb]);
last = mark;
} else {
cij = af(cij, mf(adata[i][ib], bvalues[kb]));
}
}
if (last === mark && !eq(cij, zero)) {
cindex.push(i);
cvalues.push(cij);
}
}
}
}
cptr[bcolumns] = cindex.length;
return c;
}
function _multiplySparseMatrixVector(a, b) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var adt = a._datatype;
if (!avalues) {
throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");
}
var bdata = b._data;
var bdt = b._datatype;
var arows = a._size[0];
var brows = b._size[0];
var cvalues = [];
var cindex = [];
var cptr = [];
var dt;
var af = addScalar;
var mf = multiplyScalar;
var eq = equalScalar;
var zero = 0;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
}
var x = [];
var w = [];
cptr[0] = 0;
for (var ib = 0; ib < brows; ib++) {
var vbi = bdata[ib];
if (!eq(vbi, zero)) {
for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {
var ia = aindex[ka];
if (!w[ia]) {
w[ia] = true;
cindex.push(ia);
x[ia] = mf(vbi, avalues[ka]);
} else {
x[ia] = af(x[ia], mf(vbi, avalues[ka]));
}
}
}
}
for (var p1 = cindex.length, p = 0; p < p1; p++) {
var ic = cindex[p];
cvalues[p] = x[ic];
}
cptr[1] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [arows, 1],
datatype: dt
});
}
function _multiplySparseMatrixDenseMatrix(a, b) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var adt = a._datatype;
if (!avalues) {
throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");
}
var bdata = b._data;
var bdt = b._datatype;
var arows = a._size[0];
var brows = b._size[0];
var bcolumns = b._size[1];
var dt;
var af = addScalar;
var mf = multiplyScalar;
var eq = equalScalar;
var zero = 0;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
}
var cvalues = [];
var cindex = [];
var cptr = [];
var c = a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [arows, bcolumns],
datatype: dt
});
var x = [];
var w = [];
for (var jb = 0; jb < bcolumns; jb++) {
cptr[jb] = cindex.length;
var mark = jb + 1;
for (var ib = 0; ib < brows; ib++) {
var vbij = bdata[ib][jb];
if (!eq(vbij, zero)) {
for (var ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {
var ia = aindex[ka];
if (w[ia] !== mark) {
w[ia] = mark;
cindex.push(ia);
x[ia] = mf(vbij, avalues[ka]);
} else {
x[ia] = af(x[ia], mf(vbij, avalues[ka]));
}
}
}
}
for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {
var ic = cindex[p];
cvalues[p] = x[ic];
}
}
cptr[bcolumns] = cindex.length;
return c;
}
function _multiplySparseMatrixSparseMatrix(a, b) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bdt = b._datatype;
var arows = a._size[0];
var bcolumns = b._size[1];
var values2 = avalues && bvalues;
var dt;
var af = addScalar;
var mf = multiplyScalar;
if (adt && bdt && adt === bdt && typeof adt === "string") {
dt = adt;
af = typed2.find(addScalar, [dt, dt]);
mf = typed2.find(multiplyScalar, [dt, dt]);
}
var cvalues = values2 ? [] : void 0;
var cindex = [];
var cptr = [];
var c = a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [arows, bcolumns],
datatype: dt
});
var x = values2 ? [] : void 0;
var w = [];
var ka, ka0, ka1, kb, kb0, kb1, ia, ib;
for (var jb = 0; jb < bcolumns; jb++) {
cptr[jb] = cindex.length;
var mark = jb + 1;
for (kb0 = bptr[jb], kb1 = bptr[jb + 1], kb = kb0; kb < kb1; kb++) {
ib = bindex[kb];
if (values2) {
for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {
ia = aindex[ka];
if (w[ia] !== mark) {
w[ia] = mark;
cindex.push(ia);
x[ia] = mf(bvalues[kb], avalues[ka]);
} else {
x[ia] = af(x[ia], mf(bvalues[kb], avalues[ka]));
}
}
} else {
for (ka0 = aptr[ib], ka1 = aptr[ib + 1], ka = ka0; ka < ka1; ka++) {
ia = aindex[ka];
if (w[ia] !== mark) {
w[ia] = mark;
cindex.push(ia);
}
}
}
}
if (values2) {
for (var p0 = cptr[jb], p1 = cindex.length, p = p0; p < p1; p++) {
var ic = cindex[p];
cvalues[p] = x[ic];
}
}
}
cptr[bcolumns] = cindex.length;
return c;
}
return typed2(name61, multiplyScalar, {
// we extend the signatures of multiplyScalar with signatures dealing with matrices
"Array, Array": typed2.referTo("Matrix, Matrix", (selfMM) => (x, y) => {
_validateMatrixDimensions(arraySize(x), arraySize(y));
var m = selfMM(matrix(x), matrix(y));
return isMatrix(m) ? m.valueOf() : m;
}),
"Matrix, Matrix": function MatrixMatrix(x, y) {
var xsize = x.size();
var ysize = y.size();
_validateMatrixDimensions(xsize, ysize);
if (xsize.length === 1) {
if (ysize.length === 1) {
return _multiplyVectorVector(x, y, xsize[0]);
}
return _multiplyVectorMatrix(x, y);
}
if (ysize.length === 1) {
return _multiplyMatrixVector(x, y);
}
return _multiplyMatrixMatrix(x, y);
},
"Matrix, Array": typed2.referTo("Matrix,Matrix", (selfMM) => (x, y) => selfMM(x, matrix(y))),
"Array, Matrix": typed2.referToSelf((self2) => (x, y) => {
return self2(matrix(x, y.storage()), y);
}),
"SparseMatrix, any": function SparseMatrixAny(x, y) {
return matAlgo11xS0s(x, y, multiplyScalar, false);
},
"DenseMatrix, any": function DenseMatrixAny(x, y) {
return matAlgo14xDs(x, y, multiplyScalar, false);
},
"any, SparseMatrix": function anySparseMatrix(x, y) {
return matAlgo11xS0s(y, x, multiplyScalar, true);
},
"any, DenseMatrix": function anyDenseMatrix(x, y) {
return matAlgo14xDs(y, x, multiplyScalar, true);
},
"Array, any": function ArrayAny(x, y) {
return matAlgo14xDs(matrix(x), y, multiplyScalar, false).valueOf();
},
"any, Array": function anyArray(x, y) {
return matAlgo14xDs(matrix(y), x, multiplyScalar, true).valueOf();
},
"any, any": multiplyScalar,
"any, any, ...any": typed2.referToSelf((self2) => (x, y, rest) => {
var result = self2(x, y);
for (var i = 0; i < rest.length; i++) {
result = self2(result, rest[i]);
}
return result;
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/nthRoot.js
var name62 = "nthRoot";
var dependencies62 = ["typed", "matrix", "equalScalar", "BigNumber", "concat"];
var createNthRoot = /* @__PURE__ */ factory(name62, dependencies62, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
BigNumber: _BigNumber,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo06xS0S0 = createMatAlgo06xS0S0({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
function complexErr() {
throw new Error("Complex number not supported in function nthRoot. Use nthRoots instead.");
}
return typed2(name62, {
number: nthRootNumber,
"number, number": nthRootNumber,
BigNumber: (x) => _bigNthRoot(x, new _BigNumber(2)),
"BigNumber, BigNumber": _bigNthRoot,
Complex: complexErr,
"Complex, number": complexErr,
Array: typed2.referTo("DenseMatrix,number", (selfDn) => (x) => selfDn(matrix(x), 2).valueOf()),
DenseMatrix: typed2.referTo("DenseMatrix,number", (selfDn) => (x) => selfDn(x, 2)),
SparseMatrix: typed2.referTo("SparseMatrix,number", (selfSn) => (x) => selfSn(x, 2)),
"SparseMatrix, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (y.density() === 1) {
return matAlgo06xS0S0(x, y, self2);
} else {
throw new Error("Root must be non-zero");
}
}),
"DenseMatrix, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (y.density() === 1) {
return matAlgo01xDSid(x, y, self2, false);
} else {
throw new Error("Root must be non-zero");
}
}),
"Array, SparseMatrix": typed2.referTo("DenseMatrix,SparseMatrix", (selfDS) => (x, y) => selfDS(matrix(x), y)),
"number | BigNumber, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (y.density() === 1) {
return matAlgo11xS0s(y, x, self2, true);
} else {
throw new Error("Root must be non-zero");
}
})
}, matrixAlgorithmSuite({
scalar: "number | BigNumber",
SD: matAlgo02xDS0,
Ss: matAlgo11xS0s,
sS: false
}));
function _bigNthRoot(a, root) {
var precision = _BigNumber.precision;
var Big = _BigNumber.clone({
precision: precision + 2
});
var zero = new _BigNumber(0);
var one = new Big(1);
var inv = root.isNegative();
if (inv) {
root = root.neg();
}
if (root.isZero()) {
throw new Error("Root must be non-zero");
}
if (a.isNegative() && !root.abs().mod(2).equals(1)) {
throw new Error("Root must be odd when a is negative.");
}
if (a.isZero()) {
return inv ? new Big(Infinity) : 0;
}
if (!a.isFinite()) {
return inv ? zero : a;
}
var x = a.abs().pow(one.div(root));
x = a.isNeg() ? x.neg() : x;
return new _BigNumber((inv ? one.div(x) : x).toPrecision(precision));
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/sign.js
var name63 = "sign";
var dependencies63 = ["typed", "BigNumber", "Fraction", "complex"];
var createSign = /* @__PURE__ */ factory(name63, dependencies63, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber,
complex,
Fraction: _Fraction
} = _ref;
return typed2(name63, {
number: signNumber,
Complex: function Complex2(x) {
return x.im === 0 ? complex(signNumber(x.re)) : x.sign();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(x.cmp(0));
},
Fraction: function Fraction2(x) {
return new _Fraction(x.s, 1);
},
// deep map collection, skip zeros since sign(0) = 0
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2, true)),
Unit: typed2.referToSelf((self2) => (x) => {
if (!x._isDerived() && x.units[0].unit.offset !== 0) {
throw new TypeError("sign is ambiguous for units with offset");
}
return typed2.find(self2, x.valueType())(x.value);
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/sqrt.js
var name64 = "sqrt";
var dependencies64 = ["config", "typed", "Complex"];
var createSqrt = /* @__PURE__ */ factory(name64, dependencies64, (_ref) => {
var {
config: config2,
typed: typed2,
Complex: Complex2
} = _ref;
return typed2("sqrt", {
number: _sqrtNumber,
Complex: function Complex3(x) {
return x.sqrt();
},
BigNumber: function BigNumber(x) {
if (!x.isNegative() || config2.predictable) {
return x.sqrt();
} else {
return _sqrtNumber(x.toNumber());
}
},
Unit: function Unit(x) {
return x.pow(0.5);
}
});
function _sqrtNumber(x) {
if (isNaN(x)) {
return NaN;
} else if (x >= 0 || config2.predictable) {
return Math.sqrt(x);
} else {
return new Complex2(x, 0).sqrt();
}
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/square.js
var name65 = "square";
var dependencies65 = ["typed"];
var createSquare = /* @__PURE__ */ factory(name65, dependencies65, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name65, {
number: squareNumber,
Complex: function Complex2(x) {
return x.mul(x);
},
BigNumber: function BigNumber(x) {
return x.times(x);
},
Fraction: function Fraction2(x) {
return x.mul(x);
},
Unit: function Unit(x) {
return x.pow(2);
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/subtract.js
var name66 = "subtract";
var dependencies66 = ["typed", "matrix", "equalScalar", "addScalar", "unaryMinus", "DenseMatrix", "concat"];
var createSubtract = /* @__PURE__ */ factory(name66, dependencies66, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
addScalar,
unaryMinus,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo05xSfSf = createMatAlgo05xSfSf({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name66, {
"number, number": (x, y) => x - y,
"Complex, Complex": (x, y) => x.sub(y),
"BigNumber, BigNumber": (x, y) => x.minus(y),
"Fraction, Fraction": (x, y) => x.sub(y),
"Unit, Unit": typed2.referToSelf((self2) => (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 = typed2.find(self2, [res.valueType(), y.valueType()])(res.value, y.value);
res.fixPrefix = false;
return res;
})
}, matrixAlgorithmSuite({
SS: matAlgo05xSfSf,
DS: matAlgo01xDSid,
SD: matAlgo03xDSf,
Ss: matAlgo12xSfs,
sS: matAlgo10xSids
}));
});
// node_modules/mathjs/lib/esm/function/arithmetic/xgcd.js
var name67 = "xgcd";
var dependencies67 = ["typed", "config", "matrix", "BigNumber"];
var createXgcd = /* @__PURE__ */ factory(name67, dependencies67, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
BigNumber
} = _ref;
return typed2(name67, {
"number, number": function numberNumber(a, b) {
var res = xgcdNumber(a, b);
return config2.matrix === "Array" ? res : matrix(res);
},
"BigNumber, BigNumber": _xgcdBigNumber
// TODO: implement support for Fraction
});
function _xgcdBigNumber(a, b) {
var t;
var q;
var r;
var zero = new BigNumber(0);
var one = new BigNumber(1);
var x = zero;
var lastx = one;
var y = one;
var lasty = zero;
if (!a.isInt() || !b.isInt()) {
throw new Error("Parameters in function xgcd must be integer numbers");
}
while (!b.isZero()) {
q = a.div(b).floor();
r = a.mod(b);
t = x;
x = lastx.minus(q.times(x));
lastx = t;
t = y;
y = lasty.minus(q.times(y));
lasty = t;
a = b;
b = r;
}
var res;
if (a.lt(zero)) {
res = [a.neg(), lastx.neg(), lasty.neg()];
} else {
res = [a, !a.isZero() ? lastx : 0, lasty];
}
return config2.matrix === "Array" ? res : matrix(res);
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/invmod.js
var name68 = "invmod";
var dependencies68 = ["typed", "config", "BigNumber", "xgcd", "equal", "smaller", "mod", "add", "isInteger"];
var createInvmod = /* @__PURE__ */ factory(name68, dependencies68, (_ref) => {
var {
typed: typed2,
config: config2,
BigNumber,
xgcd,
equal,
smaller,
mod: mod2,
add: add2,
isInteger: isInteger2
} = _ref;
return typed2(name68, {
"number, number": invmod,
"BigNumber, BigNumber": invmod
});
function invmod(a, b) {
if (!isInteger2(a) || !isInteger2(b))
throw new Error("Parameters in function invmod must be integer numbers");
a = mod2(a, b);
if (equal(b, 0))
throw new Error("Divisor must be non zero");
var res = xgcd(a, b);
res = res.valueOf();
var [gcd, inv] = res;
if (!equal(gcd, BigNumber(1)))
return NaN;
inv = mod2(inv, b);
if (smaller(inv, BigNumber(0)))
inv = add2(inv, b);
return inv;
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js
var name69 = "matAlgo09xS0Sf";
var dependencies69 = ["typed", "equalScalar"];
var createMatAlgo09xS0Sf = /* @__PURE__ */ factory(name69, dependencies69, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo09xS0Sf(a, b, callback) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = avalues && bvalues ? [] : void 0;
var cindex = [];
var cptr = [];
var x = cvalues ? [] : void 0;
var w = [];
var i, j, k, k0, k1;
for (j = 0; j < columns; j++) {
cptr[j] = cindex.length;
var mark = j + 1;
if (x) {
for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
i = bindex[k];
w[i] = mark;
x[i] = bvalues[k];
}
}
for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
i = aindex[k];
if (x) {
var vb = w[i] === mark ? x[i] : zero;
var vc = cf(avalues[k], vb);
if (!eq(vc, zero)) {
cindex.push(i);
cvalues.push(vc);
}
} else {
cindex.push(i);
}
}
}
cptr[columns] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/function/arithmetic/dotMultiply.js
var name70 = "dotMultiply";
var dependencies70 = ["typed", "matrix", "equalScalar", "multiplyScalar", "concat"];
var createDotMultiply = /* @__PURE__ */ factory(name70, dependencies70, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
multiplyScalar,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo09xS0Sf = createMatAlgo09xS0Sf({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name70, matrixAlgorithmSuite({
elop: multiplyScalar,
SS: matAlgo09xS0Sf,
DS: matAlgo02xDS0,
Ss: matAlgo11xS0s
}));
});
// node_modules/mathjs/lib/esm/utils/bignumber/bitwise.js
function bitAndBigNumber(x, y) {
if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
throw new Error("Integers expected in function bitAnd");
}
var BigNumber = x.constructor;
if (x.isNaN() || y.isNaN()) {
return new BigNumber(NaN);
}
if (x.isZero() || y.eq(-1) || x.eq(y)) {
return x;
}
if (y.isZero() || x.eq(-1)) {
return y;
}
if (!x.isFinite() || !y.isFinite()) {
if (!x.isFinite() && !y.isFinite()) {
if (x.isNegative() === y.isNegative()) {
return x;
}
return new BigNumber(0);
}
if (!x.isFinite()) {
if (y.isNegative()) {
return x;
}
if (x.isNegative()) {
return new BigNumber(0);
}
return y;
}
if (!y.isFinite()) {
if (x.isNegative()) {
return y;
}
if (y.isNegative()) {
return new BigNumber(0);
}
return x;
}
}
return bitwise(x, y, function(a, b) {
return a & b;
});
}
function bitNotBigNumber(x) {
if (x.isFinite() && !x.isInteger()) {
throw new Error("Integer expected in function bitNot");
}
var BigNumber = x.constructor;
var prevPrec = BigNumber.precision;
BigNumber.config({
precision: 1e9
});
var result = x.plus(new BigNumber(1));
result.s = -result.s || null;
BigNumber.config({
precision: prevPrec
});
return result;
}
function bitOrBigNumber(x, y) {
if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
throw new Error("Integers expected in function bitOr");
}
var BigNumber = x.constructor;
if (x.isNaN() || y.isNaN()) {
return new BigNumber(NaN);
}
var negOne = new BigNumber(-1);
if (x.isZero() || y.eq(negOne) || x.eq(y)) {
return y;
}
if (y.isZero() || x.eq(negOne)) {
return x;
}
if (!x.isFinite() || !y.isFinite()) {
if (!x.isFinite() && !x.isNegative() && y.isNegative() || x.isNegative() && !y.isNegative() && !y.isFinite()) {
return negOne;
}
if (x.isNegative() && y.isNegative()) {
return x.isFinite() ? x : y;
}
return x.isFinite() ? y : x;
}
return bitwise(x, y, function(a, b) {
return a | b;
});
}
function bitwise(x, y, func) {
var BigNumber = x.constructor;
var xBits, yBits;
var xSign = +(x.s < 0);
var ySign = +(y.s < 0);
if (xSign) {
xBits = decCoefficientToBinaryString(bitNotBigNumber(x));
for (var i = 0; i < xBits.length; ++i) {
xBits[i] ^= 1;
}
} else {
xBits = decCoefficientToBinaryString(x);
}
if (ySign) {
yBits = decCoefficientToBinaryString(bitNotBigNumber(y));
for (var _i = 0; _i < yBits.length; ++_i) {
yBits[_i] ^= 1;
}
} else {
yBits = decCoefficientToBinaryString(y);
}
var minBits, maxBits, minSign;
if (xBits.length <= yBits.length) {
minBits = xBits;
maxBits = yBits;
minSign = xSign;
} else {
minBits = yBits;
maxBits = xBits;
minSign = ySign;
}
var shortLen = minBits.length;
var longLen = maxBits.length;
var expFuncVal = func(xSign, ySign) ^ 1;
var outVal = new BigNumber(expFuncVal ^ 1);
var twoPower = new BigNumber(1);
var two = new BigNumber(2);
var prevPrec = BigNumber.precision;
BigNumber.config({
precision: 1e9
});
while (shortLen > 0) {
if (func(minBits[--shortLen], maxBits[--longLen]) === expFuncVal) {
outVal = outVal.plus(twoPower);
}
twoPower = twoPower.times(two);
}
while (longLen > 0) {
if (func(minSign, maxBits[--longLen]) === expFuncVal) {
outVal = outVal.plus(twoPower);
}
twoPower = twoPower.times(two);
}
BigNumber.config({
precision: prevPrec
});
if (expFuncVal === 0) {
outVal.s = -outVal.s;
}
return outVal;
}
function decCoefficientToBinaryString(x) {
var a = x.d;
var r = a[0] + "";
for (var i = 1; i < a.length; ++i) {
var s = a[i] + "";
for (var z = 7 - s.length; z--; ) {
s = "0" + s;
}
r += s;
}
var j = r.length;
while (r.charAt(j) === "0") {
j--;
}
var xe = x.e;
var str = r.slice(0, j + 1 || 1);
var strL = str.length;
if (xe > 0) {
if (++xe > strL) {
xe -= strL;
while (xe--) {
str += "0";
}
} else if (xe < strL) {
str = str.slice(0, xe) + "." + str.slice(xe);
}
}
var arr = [0];
for (var _i2 = 0; _i2 < str.length; ) {
var arrL = arr.length;
while (arrL--) {
arr[arrL] *= 10;
}
arr[0] += parseInt(str.charAt(_i2++));
for (var _j = 0; _j < arr.length; ++_j) {
if (arr[_j] > 1) {
if (arr[_j + 1] === null || arr[_j + 1] === void 0) {
arr[_j + 1] = 0;
}
arr[_j + 1] += arr[_j] >> 1;
arr[_j] &= 1;
}
}
}
return arr.reverse();
}
function bitXor(x, y) {
if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
throw new Error("Integers expected in function bitXor");
}
var BigNumber = x.constructor;
if (x.isNaN() || y.isNaN()) {
return new BigNumber(NaN);
}
if (x.isZero()) {
return y;
}
if (y.isZero()) {
return x;
}
if (x.eq(y)) {
return new BigNumber(0);
}
var negOne = new BigNumber(-1);
if (x.eq(negOne)) {
return bitNotBigNumber(y);
}
if (y.eq(negOne)) {
return bitNotBigNumber(x);
}
if (!x.isFinite() || !y.isFinite()) {
if (!x.isFinite() && !y.isFinite()) {
return negOne;
}
return new BigNumber(x.isNegative() === y.isNegative() ? Infinity : -Infinity);
}
return bitwise(x, y, function(a, b) {
return a ^ b;
});
}
function leftShiftBigNumber(x, y) {
if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
throw new Error("Integers expected in function leftShift");
}
var BigNumber = x.constructor;
if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {
return new BigNumber(NaN);
}
if (x.isZero() || y.isZero()) {
return x;
}
if (!x.isFinite() && !y.isFinite()) {
return new BigNumber(NaN);
}
if (y.lt(55)) {
return x.times(Math.pow(2, y.toNumber()) + "");
}
return x.times(new BigNumber(2).pow(y));
}
function rightArithShiftBigNumber(x, y) {
if (x.isFinite() && !x.isInteger() || y.isFinite() && !y.isInteger()) {
throw new Error("Integers expected in function rightArithShift");
}
var BigNumber = x.constructor;
if (x.isNaN() || y.isNaN() || y.isNegative() && !y.isZero()) {
return new BigNumber(NaN);
}
if (x.isZero() || y.isZero()) {
return x;
}
if (!y.isFinite()) {
if (x.isNegative()) {
return new BigNumber(-1);
}
if (!x.isFinite()) {
return new BigNumber(NaN);
}
return new BigNumber(0);
}
if (y.lt(55)) {
return x.div(Math.pow(2, y.toNumber()) + "").floor();
}
return x.div(new BigNumber(2).pow(y)).floor();
}
// node_modules/mathjs/lib/esm/function/bitwise/bitAnd.js
var name71 = "bitAnd";
var dependencies71 = ["typed", "matrix", "equalScalar", "concat"];
var createBitAnd = /* @__PURE__ */ factory(name71, dependencies71, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo06xS0S0 = createMatAlgo06xS0S0({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name71, {
"number, number": bitAndNumber,
"BigNumber, BigNumber": bitAndBigNumber
}, matrixAlgorithmSuite({
SS: matAlgo06xS0S0,
DS: matAlgo02xDS0,
Ss: matAlgo11xS0s
}));
});
// node_modules/mathjs/lib/esm/function/bitwise/bitNot.js
var name72 = "bitNot";
var dependencies72 = ["typed"];
var createBitNot = /* @__PURE__ */ factory(name72, dependencies72, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name72, {
number: bitNotNumber,
BigNumber: bitNotBigNumber,
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/bitwise/bitOr.js
var name73 = "bitOr";
var dependencies73 = ["typed", "matrix", "equalScalar", "DenseMatrix", "concat"];
var createBitOr = /* @__PURE__ */ factory(name73, dependencies73, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo04xSidSid = createMatAlgo04xSidSid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name73, {
"number, number": bitOrNumber,
"BigNumber, BigNumber": bitOrBigNumber
}, matrixAlgorithmSuite({
SS: matAlgo04xSidSid,
DS: matAlgo01xDSid,
Ss: matAlgo10xSids
}));
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo07xSSf.js
var name74 = "matAlgo07xSSf";
var dependencies74 = ["typed", "DenseMatrix"];
var createMatAlgo07xSSf = /* @__PURE__ */ factory(name74, dependencies74, (_ref) => {
var {
typed: typed2,
DenseMatrix
} = _ref;
return function matAlgo07xSSf(a, b, callback) {
var asize = a._size;
var adt = a._datatype;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var i, j;
var cdata = [];
for (i = 0; i < rows; i++) {
cdata[i] = [];
}
var xa = [];
var xb = [];
var wa = [];
var wb = [];
for (j = 0; j < columns; j++) {
var mark = j + 1;
_scatter(a, j, wa, xa, mark);
_scatter(b, j, wb, xb, mark);
for (i = 0; i < rows; i++) {
var va = wa[i] === mark ? xa[i] : zero;
var vb = wb[i] === mark ? xb[i] : zero;
cdata[i][j] = cf(va, vb);
}
}
return new DenseMatrix({
data: cdata,
size: [rows, columns],
datatype: dt
});
};
function _scatter(m, j, w, x, mark) {
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
for (var k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) {
var i = index[k];
w[i] = mark;
x[i] = values2[k];
}
}
});
// node_modules/mathjs/lib/esm/function/bitwise/bitXor.js
var name75 = "bitXor";
var dependencies75 = ["typed", "matrix", "DenseMatrix", "concat"];
var createBitXor = /* @__PURE__ */ factory(name75, dependencies75, (_ref) => {
var {
typed: typed2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name75, {
"number, number": bitXorNumber,
"BigNumber, BigNumber": bitXor
}, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/complex/arg.js
var name76 = "arg";
var dependencies76 = ["typed"];
var createArg = /* @__PURE__ */ factory(name76, dependencies76, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name76, {
number: function number(x) {
return Math.atan2(0, x);
},
BigNumber: function BigNumber(x) {
return x.constructor.atan2(0, x);
},
Complex: function Complex2(x) {
return x.arg();
},
// TODO: implement BigNumber support for function arg
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/complex/conj.js
var name77 = "conj";
var dependencies77 = ["typed"];
var createConj = /* @__PURE__ */ factory(name77, dependencies77, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name77, {
"number | BigNumber | Fraction": (x) => x,
Complex: (x) => x.conjugate(),
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/complex/im.js
var name78 = "im";
var dependencies78 = ["typed"];
var createIm = /* @__PURE__ */ factory(name78, dependencies78, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name78, {
number: () => 0,
"BigNumber | Fraction": (x) => x.mul(0),
Complex: (x) => x.im,
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/complex/re.js
var name79 = "re";
var dependencies79 = ["typed"];
var createRe = /* @__PURE__ */ factory(name79, dependencies79, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name79, {
"number | BigNumber | Fraction": (x) => x,
Complex: (x) => x.re,
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/logical/not.js
var name80 = "not";
var dependencies80 = ["typed"];
var createNot = /* @__PURE__ */ factory(name80, dependencies80, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name80, {
"null | undefined": () => true,
number: notNumber,
Complex: function Complex2(x) {
return x.re === 0 && x.im === 0;
},
BigNumber: function BigNumber(x) {
return x.isZero() || x.isNaN();
},
Unit: typed2.referToSelf((self2) => (x) => typed2.find(self2, x.valueType())(x.value)),
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/logical/or.js
var name81 = "or";
var dependencies81 = ["typed", "matrix", "equalScalar", "DenseMatrix", "concat"];
var createOr = /* @__PURE__ */ factory(name81, dependencies81, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo05xSfSf = createMatAlgo05xSfSf({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name81, {
"number, number": orNumber,
"Complex, Complex": function ComplexComplex(x, y) {
return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();
},
"Unit, Unit": typed2.referToSelf((self2) => (x, y) => self2(x.value || 0, y.value || 0))
}, matrixAlgorithmSuite({
SS: matAlgo05xSfSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/logical/xor.js
var name82 = "xor";
var dependencies82 = ["typed", "matrix", "DenseMatrix", "concat"];
var createXor = /* @__PURE__ */ factory(name82, dependencies82, (_ref) => {
var {
typed: typed2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name82, {
"number, number": xorNumber,
"Complex, Complex": function ComplexComplex(x, y) {
return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());
},
"Unit, Unit": typed2.referToSelf((self2) => (x, y) => self2(x.value || 0, y.value || 0))
}, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/matrix/concat.js
var name83 = "concat";
var dependencies83 = ["typed", "matrix", "isInteger"];
var createConcat = /* @__PURE__ */ factory(name83, dependencies83, (_ref) => {
var {
typed: typed2,
matrix,
isInteger: isInteger2
} = _ref;
return typed2(name83, {
// TODO: change signature to '...Array | Matrix, dim?' when supported
"...Array | Matrix | number | BigNumber": function ArrayMatrixNumberBigNumber(args) {
var i;
var len = args.length;
var dim = -1;
var prevDim;
var asMatrix = false;
var matrices = [];
for (i = 0; i < len; i++) {
var arg = args[i];
if (isMatrix(arg)) {
asMatrix = true;
}
if (isNumber(arg) || isBigNumber(arg)) {
if (i !== len - 1) {
throw new Error("Dimension must be specified as last argument");
}
prevDim = dim;
dim = arg.valueOf();
if (!isInteger2(dim)) {
throw new TypeError("Integer number expected for dimension");
}
if (dim < 0 || i > 0 && dim > prevDim) {
throw new IndexError(dim, prevDim + 1);
}
} else {
var m = clone(arg).valueOf();
var size = arraySize(m);
matrices[i] = m;
prevDim = dim;
dim = size.length - 1;
if (i > 0 && dim !== prevDim) {
throw new DimensionError(prevDim + 1, dim + 1);
}
}
}
if (matrices.length === 0) {
throw new SyntaxError("At least one matrix expected");
}
var res = matrices.shift();
while (matrices.length) {
res = concat(res, matrices.shift(), dim);
}
return asMatrix ? matrix(res) : res;
},
"...string": function string(args) {
return args.join("");
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/column.js
var name84 = "column";
var dependencies84 = ["typed", "Index", "matrix", "range"];
var createColumn = /* @__PURE__ */ factory(name84, dependencies84, (_ref) => {
var {
typed: typed2,
Index,
matrix,
range
} = _ref;
return typed2(name84, {
"Matrix, number": _column,
"Array, number": function ArrayNumber(value, column) {
return _column(matrix(clone(value)), column).valueOf();
}
});
function _column(value, column) {
if (value.size().length !== 2) {
throw new Error("Only two dimensional matrix is supported");
}
validateIndex(column, value.size()[1]);
var rowRange = range(0, value.size()[0]);
var index = new Index(rowRange, column);
var result = value.subset(index);
return isMatrix(result) ? result : matrix([[result]]);
}
});
// node_modules/mathjs/lib/esm/function/matrix/count.js
var name85 = "count";
var dependencies85 = ["typed", "size", "prod"];
var createCount = /* @__PURE__ */ factory(name85, dependencies85, (_ref) => {
var {
typed: typed2,
size,
prod
} = _ref;
return typed2(name85, {
string: function string(x) {
return x.length;
},
"Matrix | Array": function MatrixArray(x) {
return prod(size(x));
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/cross.js
var name86 = "cross";
var dependencies86 = ["typed", "matrix", "subtract", "multiply"];
var createCross = /* @__PURE__ */ factory(name86, dependencies86, (_ref) => {
var {
typed: typed2,
matrix,
subtract,
multiply
} = _ref;
return typed2(name86, {
"Matrix, Matrix": function MatrixMatrix(x, y) {
return matrix(_cross(x.toArray(), y.toArray()));
},
"Matrix, Array": function MatrixArray(x, y) {
return matrix(_cross(x.toArray(), y));
},
"Array, Matrix": function ArrayMatrix(x, y) {
return matrix(_cross(x, y.toArray()));
},
"Array, Array": _cross
});
function _cross(x, y) {
var highestDimension = Math.max(arraySize(x).length, arraySize(y).length);
x = squeeze(x);
y = squeeze(y);
var xSize = arraySize(x);
var ySize = arraySize(y);
if (xSize.length !== 1 || ySize.length !== 1 || xSize[0] !== 3 || ySize[0] !== 3) {
throw new RangeError("Vectors with length 3 expected (Size A = [" + xSize.join(", ") + "], B = [" + ySize.join(", ") + "])");
}
var product3 = [subtract(multiply(x[1], y[2]), multiply(x[2], y[1])), subtract(multiply(x[2], y[0]), multiply(x[0], y[2])), subtract(multiply(x[0], y[1]), multiply(x[1], y[0]))];
if (highestDimension > 1) {
return [product3];
} else {
return product3;
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/diag.js
var name87 = "diag";
var dependencies87 = ["typed", "matrix", "DenseMatrix", "SparseMatrix"];
var createDiag = /* @__PURE__ */ factory(name87, dependencies87, (_ref) => {
var {
typed: typed2,
matrix,
DenseMatrix,
SparseMatrix
} = _ref;
return typed2(name87, {
// FIXME: simplify this huge amount of signatures as soon as typed-function supports optional arguments
Array: function Array2(x) {
return _diag(x, 0, arraySize(x), null);
},
"Array, number": function ArrayNumber(x, k) {
return _diag(x, k, arraySize(x), null);
},
"Array, BigNumber": function ArrayBigNumber(x, k) {
return _diag(x, k.toNumber(), arraySize(x), null);
},
"Array, string": function ArrayString(x, format4) {
return _diag(x, 0, arraySize(x), format4);
},
"Array, number, string": function ArrayNumberString(x, k, format4) {
return _diag(x, k, arraySize(x), format4);
},
"Array, BigNumber, string": function ArrayBigNumberString(x, k, format4) {
return _diag(x, k.toNumber(), arraySize(x), format4);
},
Matrix: function Matrix(x) {
return _diag(x, 0, x.size(), x.storage());
},
"Matrix, number": function MatrixNumber(x, k) {
return _diag(x, k, x.size(), x.storage());
},
"Matrix, BigNumber": function MatrixBigNumber(x, k) {
return _diag(x, k.toNumber(), x.size(), x.storage());
},
"Matrix, string": function MatrixString(x, format4) {
return _diag(x, 0, x.size(), format4);
},
"Matrix, number, string": function MatrixNumberString(x, k, format4) {
return _diag(x, k, x.size(), format4);
},
"Matrix, BigNumber, string": function MatrixBigNumberString(x, k, format4) {
return _diag(x, k.toNumber(), x.size(), format4);
}
});
function _diag(x, k, size, format4) {
if (!isInteger(k)) {
throw new TypeError("Second parameter in function diag must be an integer");
}
var kSuper = k > 0 ? k : 0;
var kSub = k < 0 ? -k : 0;
switch (size.length) {
case 1:
return _createDiagonalMatrix(x, k, format4, size[0], kSub, kSuper);
case 2:
return _getDiagonal(x, k, format4, size, kSub, kSuper);
}
throw new RangeError("Matrix for function diag must be 2 dimensional");
}
function _createDiagonalMatrix(x, k, format4, l, kSub, kSuper) {
var ms = [l + kSub, l + kSuper];
if (format4 && format4 !== "sparse" && format4 !== "dense") {
throw new TypeError("Unknown matrix type ".concat(format4, '"'));
}
var m = format4 === "sparse" ? SparseMatrix.diagonal(ms, x, k) : DenseMatrix.diagonal(ms, x, k);
return format4 !== null ? m : m.valueOf();
}
function _getDiagonal(x, k, format4, s, kSub, kSuper) {
if (isMatrix(x)) {
var dm = x.diagonal(k);
if (format4 !== null) {
if (format4 !== dm.storage()) {
return matrix(dm, format4);
}
return dm;
}
return dm.valueOf();
}
var n = Math.min(s[0] - kSub, s[1] - kSuper);
var vector = [];
for (var i = 0; i < n; i++) {
vector[i] = x[i + kSub][i + kSuper];
}
return format4 !== null ? matrix(vector) : vector;
}
});
// node_modules/mathjs/lib/esm/utils/applyCallback.js
var import_typed_function2 = __toESM(require_typed_function(), 1);
function applyCallback(callback, value, index, array, mappingFnName) {
if (import_typed_function2.default.isTypedFunction(callback)) {
var args3 = [value, index, array];
var signature3 = import_typed_function2.default.resolve(callback, args3);
if (signature3) {
return tryWithArgs(signature3.implementation, args3);
}
var args2 = [value, index];
var signature2 = import_typed_function2.default.resolve(callback, args2);
if (signature2) {
return tryWithArgs(signature2.implementation, args2);
}
var args1 = [value];
var signature1 = import_typed_function2.default.resolve(callback, args1);
if (signature1) {
return tryWithArgs(signature1.implementation, args1);
}
return tryWithArgs(callback, args3);
} else {
return callback(value, index, array);
}
function tryWithArgs(signature, args) {
try {
return signature.apply(signature, args);
} catch (err) {
var _err$data;
if (err instanceof TypeError && ((_err$data = err.data) === null || _err$data === void 0 ? void 0 : _err$data.category) === "wrongType") {
var argsDesc = [];
argsDesc.push("value: ".concat(typeOf(value)));
if (args.length >= 2) {
argsDesc.push("index: ".concat(typeOf(index)));
}
if (args.length >= 3) {
argsDesc.push("array: ".concat(typeOf(array)));
}
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "".concat(callback.name, "(").concat(argsDesc.join(", "), ") at index ").concat(JSON.stringify(index)));
} else {
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "to function ".concat(callback.name, ": ").concat(err.message));
}
}
}
}
// node_modules/mathjs/lib/esm/function/matrix/filter.js
var name88 = "filter";
var dependencies88 = ["typed"];
var createFilter = /* @__PURE__ */ factory(name88, dependencies88, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("filter", {
"Array, function": _filterCallback,
"Matrix, function": function MatrixFunction(x, test) {
return x.create(_filterCallback(x.toArray(), test));
},
"Array, RegExp": filterRegExp,
"Matrix, RegExp": function MatrixRegExp(x, test) {
return x.create(filterRegExp(x.toArray(), test));
}
});
});
function _filterCallback(x, callback) {
return filter(x, function(value, index, array) {
return applyCallback(callback, value, [index], array, "filter");
});
}
// node_modules/mathjs/lib/esm/function/matrix/flatten.js
var name89 = "flatten";
var dependencies89 = ["typed", "matrix"];
var createFlatten = /* @__PURE__ */ factory(name89, dependencies89, (_ref) => {
var {
typed: typed2,
matrix
} = _ref;
return typed2(name89, {
Array: function Array2(x) {
return flatten(x);
},
Matrix: function Matrix(x) {
var flat = flatten(x.toArray());
return matrix(flat);
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/forEach.js
var name90 = "forEach";
var dependencies90 = ["typed"];
var createForEach = /* @__PURE__ */ factory(name90, dependencies90, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name90, {
"Array, function": _forEach,
"Matrix, function": function MatrixFunction(x, callback) {
x.forEach(callback);
}
});
});
function _forEach(array, callback) {
var recurse = function recurse2(value, index) {
if (Array.isArray(value)) {
forEach(value, function(child, i) {
recurse2(child, index.concat(i));
});
} else {
return applyCallback(callback, value, index, array, "forEach");
}
};
recurse(array, []);
}
// node_modules/mathjs/lib/esm/function/matrix/getMatrixDataType.js
var name91 = "getMatrixDataType";
var dependencies91 = ["typed"];
var createGetMatrixDataType = /* @__PURE__ */ factory(name91, dependencies91, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name91, {
Array: function Array2(x) {
return getArrayDataType(x, typeOf);
},
Matrix: function Matrix(x) {
return x.getDataType();
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/identity.js
var name92 = "identity";
var dependencies92 = ["typed", "config", "matrix", "BigNumber", "DenseMatrix", "SparseMatrix"];
var createIdentity = /* @__PURE__ */ factory(name92, dependencies92, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
BigNumber,
DenseMatrix,
SparseMatrix
} = _ref;
return typed2(name92, {
"": function _() {
return config2.matrix === "Matrix" ? matrix([]) : [];
},
string: function string(format4) {
return matrix(format4);
},
"number | BigNumber": function numberBigNumber(rows) {
return _identity(rows, rows, config2.matrix === "Matrix" ? "dense" : void 0);
},
"number | BigNumber, string": function numberBigNumberString(rows, format4) {
return _identity(rows, rows, format4);
},
"number | BigNumber, number | BigNumber": function numberBigNumberNumberBigNumber(rows, cols) {
return _identity(rows, cols, config2.matrix === "Matrix" ? "dense" : void 0);
},
"number | BigNumber, number | BigNumber, string": function numberBigNumberNumberBigNumberString(rows, cols, format4) {
return _identity(rows, cols, format4);
},
Array: function Array2(size) {
return _identityVector(size);
},
"Array, string": function ArrayString(size, format4) {
return _identityVector(size, format4);
},
Matrix: function Matrix(size) {
return _identityVector(size.valueOf(), size.storage());
},
"Matrix, string": function MatrixString(size, format4) {
return _identityVector(size.valueOf(), format4);
}
});
function _identityVector(size, format4) {
switch (size.length) {
case 0:
return format4 ? matrix(format4) : [];
case 1:
return _identity(size[0], size[0], format4);
case 2:
return _identity(size[0], size[1], format4);
default:
throw new Error("Vector containing two values expected");
}
}
function _identity(rows, cols, format4) {
var Big = isBigNumber(rows) || isBigNumber(cols) ? BigNumber : null;
if (isBigNumber(rows))
rows = rows.toNumber();
if (isBigNumber(cols))
cols = cols.toNumber();
if (!isInteger(rows) || rows < 1) {
throw new Error("Parameters in function identity must be positive integers");
}
if (!isInteger(cols) || cols < 1) {
throw new Error("Parameters in function identity must be positive integers");
}
var one = Big ? new BigNumber(1) : 1;
var defaultValue = Big ? new Big(0) : 0;
var size = [rows, cols];
if (format4) {
if (format4 === "sparse") {
return SparseMatrix.diagonal(size, one, 0, defaultValue);
}
if (format4 === "dense") {
return DenseMatrix.diagonal(size, one, 0, defaultValue);
}
throw new TypeError('Unknown matrix type "'.concat(format4, '"'));
}
var res = resize([], size, defaultValue);
var minimum = rows < cols ? rows : cols;
for (var d = 0; d < minimum; d++) {
res[d][d] = one;
}
return res;
}
});
// node_modules/mathjs/lib/esm/function/matrix/kron.js
var name93 = "kron";
var dependencies93 = ["typed", "matrix", "multiplyScalar"];
var createKron = /* @__PURE__ */ factory(name93, dependencies93, (_ref) => {
var {
typed: typed2,
matrix,
multiplyScalar
} = _ref;
return typed2(name93, {
"Matrix, Matrix": function MatrixMatrix(x, y) {
return matrix(_kron(x.toArray(), y.toArray()));
},
"Matrix, Array": function MatrixArray(x, y) {
return matrix(_kron(x.toArray(), y));
},
"Array, Matrix": function ArrayMatrix(x, y) {
return matrix(_kron(x, y.toArray()));
},
"Array, Array": _kron
});
function _kron(a, b) {
if (arraySize(a).length === 1) {
a = [a];
}
if (arraySize(b).length === 1) {
b = [b];
}
if (arraySize(a).length > 2 || arraySize(b).length > 2) {
throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = " + JSON.stringify(a.length) + ", y = " + JSON.stringify(b.length) + ")");
}
var t = [];
var r = [];
return a.map(function(a2) {
return b.map(function(b2) {
r = [];
t.push(r);
return a2.map(function(y) {
return b2.map(function(x) {
return r.push(multiplyScalar(y, x));
});
});
});
}) && t;
}
});
// node_modules/mathjs/lib/esm/function/matrix/map.js
var name94 = "map";
var dependencies94 = ["typed"];
var createMap2 = /* @__PURE__ */ factory(name94, dependencies94, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name94, {
"Array, function": _map,
"Matrix, function": function MatrixFunction(x, callback) {
return x.map(callback);
}
});
});
function _map(array, callback) {
var recurse = function recurse2(value, index) {
if (Array.isArray(value)) {
return value.map(function(child, i) {
return recurse2(child, index.concat(i));
});
} else {
return applyCallback(callback, value, index, array, "map");
}
};
return recurse(array, []);
}
// node_modules/mathjs/lib/esm/function/matrix/diff.js
var name95 = "diff";
var dependencies95 = ["typed", "matrix", "subtract", "number"];
var createDiff = /* @__PURE__ */ factory(name95, dependencies95, (_ref) => {
var {
typed: typed2,
matrix,
subtract,
number
} = _ref;
return typed2(name95, {
"Array | Matrix": function ArrayMatrix(arr) {
if (isMatrix(arr)) {
return matrix(_diff(arr.toArray()));
} else {
return _diff(arr);
}
},
"Array | Matrix, number": function ArrayMatrixNumber(arr, dim) {
if (!isInteger(dim))
throw new RangeError("Dimension must be a whole number");
if (isMatrix(arr)) {
return matrix(_recursive(arr.toArray(), dim));
} else {
return _recursive(arr, dim);
}
},
"Array, BigNumber": typed2.referTo("Array,number", (selfAn) => (arr, dim) => selfAn(arr, number(dim))),
"Matrix, BigNumber": typed2.referTo("Matrix,number", (selfMn) => (arr, dim) => selfMn(arr, number(dim)))
});
function _recursive(arr, dim) {
if (isMatrix(arr)) {
arr = arr.toArray();
}
if (!Array.isArray(arr)) {
throw RangeError("Array/Matrix does not have that many dimensions");
}
if (dim > 0) {
var result = [];
arr.forEach((element) => {
result.push(_recursive(element, dim - 1));
});
return result;
} else if (dim === 0) {
return _diff(arr);
} else {
throw RangeError("Cannot have negative dimension");
}
}
function _diff(arr) {
var result = [];
var size = arr.length;
for (var i = 1; i < size; i++) {
result.push(_ElementDiff(arr[i - 1], arr[i]));
}
return result;
}
function _ElementDiff(obj1, obj2) {
if (isMatrix(obj1))
obj1 = obj1.toArray();
if (isMatrix(obj2))
obj2 = obj2.toArray();
var obj1IsArray = Array.isArray(obj1);
var obj2IsArray = Array.isArray(obj2);
if (obj1IsArray && obj2IsArray) {
return _ArrayDiff(obj1, obj2);
}
if (!obj1IsArray && !obj2IsArray) {
return subtract(obj2, obj1);
}
throw TypeError("Cannot calculate difference between 1 array and 1 non-array");
}
function _ArrayDiff(arr1, arr2) {
if (arr1.length !== arr2.length) {
throw RangeError("Not all sub-arrays have the same length");
}
var result = [];
var size = arr1.length;
for (var i = 0; i < size; i++) {
result.push(_ElementDiff(arr1[i], arr2[i]));
}
return result;
}
});
// node_modules/mathjs/lib/esm/function/matrix/ones.js
var name96 = "ones";
var dependencies96 = ["typed", "config", "matrix", "BigNumber"];
var createOnes = /* @__PURE__ */ factory(name96, dependencies96, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
BigNumber
} = _ref;
return typed2("ones", {
"": function _() {
return config2.matrix === "Array" ? _ones([]) : _ones([], "default");
},
// math.ones(m, n, p, ..., format)
// TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this
"...number | BigNumber | string": function numberBigNumberString(size) {
var last = size[size.length - 1];
if (typeof last === "string") {
var format4 = size.pop();
return _ones(size, format4);
} else if (config2.matrix === "Array") {
return _ones(size);
} else {
return _ones(size, "default");
}
},
Array: _ones,
Matrix: function Matrix(size) {
var format4 = size.storage();
return _ones(size.valueOf(), format4);
},
"Array | Matrix, string": function ArrayMatrixString(size, format4) {
return _ones(size.valueOf(), format4);
}
});
function _ones(size, format4) {
var hasBigNumbers = _normalize(size);
var defaultValue = hasBigNumbers ? new BigNumber(1) : 1;
_validate2(size);
if (format4) {
var m = matrix(format4);
if (size.length > 0) {
return m.resize(size, defaultValue);
}
return m;
} else {
var arr = [];
if (size.length > 0) {
return resize(arr, size, defaultValue);
}
return arr;
}
}
function _normalize(size) {
var hasBigNumbers = false;
size.forEach(function(value, index, arr) {
if (isBigNumber(value)) {
hasBigNumbers = true;
arr[index] = value.toNumber();
}
});
return hasBigNumbers;
}
function _validate2(size) {
size.forEach(function(value) {
if (typeof value !== "number" || !isInteger(value) || value < 0) {
throw new Error("Parameters in function ones must be positive integers");
}
});
}
});
// node_modules/mathjs/lib/esm/utils/noop.js
function noBignumber() {
throw new Error('No "bignumber" implementation available');
}
function noFraction() {
throw new Error('No "fraction" implementation available');
}
function noMatrix() {
throw new Error('No "matrix" implementation available');
}
// node_modules/mathjs/lib/esm/function/matrix/range.js
var name97 = "range";
var dependencies97 = ["typed", "config", "?matrix", "?bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive"];
var createRange = /* @__PURE__ */ factory(name97, dependencies97, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
bignumber,
smaller,
smallerEq,
larger,
largerEq,
add: add2,
isPositive
} = _ref;
return typed2(name97, {
// TODO: simplify signatures when typed-function supports default values and optional arguments
// TODO: a number or boolean should not be converted to string here
string: _strRange,
"string, boolean": _strRange,
"number, number": function numberNumber(start, end) {
return _out(_range(start, end, 1, false));
},
"number, number, number": function numberNumberNumber(start, end, step) {
return _out(_range(start, end, step, false));
},
"number, number, boolean": function numberNumberBoolean(start, end, includeEnd) {
return _out(_range(start, end, 1, includeEnd));
},
"number, number, number, boolean": function numberNumberNumberBoolean(start, end, step, includeEnd) {
return _out(_range(start, end, step, includeEnd));
},
"BigNumber, BigNumber": function BigNumberBigNumber(start, end) {
var BigNumber = start.constructor;
return _out(_range(start, end, new BigNumber(1), false));
},
"BigNumber, BigNumber, BigNumber": function BigNumberBigNumberBigNumber(start, end, step) {
return _out(_range(start, end, step, false));
},
"BigNumber, BigNumber, boolean": function BigNumberBigNumberBoolean(start, end, includeEnd) {
var BigNumber = start.constructor;
return _out(_range(start, end, new BigNumber(1), includeEnd));
},
"BigNumber, BigNumber, BigNumber, boolean": function BigNumberBigNumberBigNumberBoolean(start, end, step, includeEnd) {
return _out(_range(start, end, step, includeEnd));
},
"Unit, Unit, Unit": function UnitUnitUnit(start, end, step) {
return _out(_range(start, end, step, false));
},
"Unit, Unit, Unit, boolean": function UnitUnitUnitBoolean(start, end, step, includeEnd) {
return _out(_range(start, end, step, includeEnd));
}
});
function _out(arr) {
if (config2.matrix === "Matrix") {
return matrix ? matrix(arr) : noMatrix();
}
return arr;
}
function _strRange(str, includeEnd) {
var r = _parse(str);
if (!r) {
throw new SyntaxError('String "' + str + '" is no valid range');
}
if (config2.number === "BigNumber") {
if (bignumber === void 0) {
noBignumber();
}
return _out(_range(bignumber(r.start), bignumber(r.end), bignumber(r.step)), includeEnd);
} else {
return _out(_range(r.start, r.end, r.step, includeEnd));
}
}
function _range(start, end, step, includeEnd) {
var array = [];
var ongoing = isPositive(step) ? includeEnd ? smallerEq : smaller : includeEnd ? largerEq : larger;
var x = start;
while (ongoing(x, end)) {
array.push(x);
x = add2(x, step);
}
return array;
}
function _parse(str) {
var args = str.split(":");
var nums = args.map(function(arg) {
return Number(arg);
});
var invalid = nums.some(function(num) {
return isNaN(num);
});
if (invalid) {
return null;
}
switch (nums.length) {
case 2:
return {
start: nums[0],
end: nums[1],
step: 1
};
case 3:
return {
start: nums[0],
end: nums[2],
step: nums[1]
};
default:
return null;
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/reshape.js
var name98 = "reshape";
var dependencies98 = ["typed", "isInteger", "matrix"];
var createReshape = /* @__PURE__ */ factory(name98, dependencies98, (_ref) => {
var {
typed: typed2,
isInteger: isInteger2
} = _ref;
return typed2(name98, {
"Matrix, Array": function MatrixArray(x, sizes) {
return x.reshape(sizes, true);
},
"Array, Array": function ArrayArray(x, sizes) {
sizes.forEach(function(size) {
if (!isInteger2(size)) {
throw new TypeError("Invalid size for dimension: " + size);
}
});
return reshape(x, sizes);
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/resize.js
var name99 = "resize";
var dependencies99 = ["config", "matrix"];
var createResize = /* @__PURE__ */ factory(name99, dependencies99, (_ref) => {
var {
config: config2,
matrix
} = _ref;
return function resize2(x, size, defaultValue) {
if (arguments.length !== 2 && arguments.length !== 3) {
throw new ArgumentsError("resize", arguments.length, 2, 3);
}
if (isMatrix(size)) {
size = size.valueOf();
}
if (isBigNumber(size[0])) {
size = size.map(function(value) {
return !isBigNumber(value) ? value : value.toNumber();
});
}
if (isMatrix(x)) {
return x.resize(size, defaultValue, true);
}
if (typeof x === "string") {
return _resizeString(x, size, defaultValue);
}
var asMatrix = Array.isArray(x) ? false : config2.matrix !== "Array";
if (size.length === 0) {
while (Array.isArray(x)) {
x = x[0];
}
return clone(x);
} else {
if (!Array.isArray(x)) {
x = [x];
}
x = clone(x);
var res = resize(x, size, defaultValue);
return asMatrix ? matrix(res) : res;
}
};
function _resizeString(str, size, defaultChar) {
if (defaultChar !== void 0) {
if (typeof defaultChar !== "string" || defaultChar.length !== 1) {
throw new TypeError("Single character expected as defaultValue");
}
} else {
defaultChar = " ";
}
if (size.length !== 1) {
throw new DimensionError(size.length, 1);
}
var len = size[0];
if (typeof len !== "number" || !isInteger(len)) {
throw new TypeError("Invalid size, must contain positive integers (size: " + format3(size) + ")");
}
if (str.length > len) {
return str.substring(0, len);
} else if (str.length < len) {
var res = str;
for (var i = 0, ii = len - str.length; i < ii; i++) {
res += defaultChar;
}
return res;
} else {
return str;
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/rotate.js
var name100 = "rotate";
var dependencies100 = ["typed", "multiply", "rotationMatrix"];
var createRotate = /* @__PURE__ */ factory(name100, dependencies100, (_ref) => {
var {
typed: typed2,
multiply,
rotationMatrix
} = _ref;
return typed2(name100, {
"Array , number | BigNumber | Complex | Unit": function ArrayNumberBigNumberComplexUnit(w, theta) {
_validateSize(w, 2);
var matrixRes = multiply(rotationMatrix(theta), w);
return matrixRes.toArray();
},
"Matrix , number | BigNumber | Complex | Unit": function MatrixNumberBigNumberComplexUnit(w, theta) {
_validateSize(w, 2);
return multiply(rotationMatrix(theta), w);
},
"Array, number | BigNumber | Complex | Unit, Array | Matrix": function ArrayNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
_validateSize(w, 3);
var matrixRes = multiply(rotationMatrix(theta, v), w);
return matrixRes;
},
"Matrix, number | BigNumber | Complex | Unit, Array | Matrix": function MatrixNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
_validateSize(w, 3);
return multiply(rotationMatrix(theta, v), w);
}
});
function _validateSize(v, expectedSize) {
var actualSize = Array.isArray(v) ? arraySize(v) : v.size();
if (actualSize.length > 2) {
throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
}
if (actualSize.length === 2 && actualSize[1] !== 1) {
throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
}
if (actualSize[0] !== expectedSize) {
throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/rotationMatrix.js
var name101 = "rotationMatrix";
var dependencies101 = ["typed", "config", "multiplyScalar", "addScalar", "unaryMinus", "norm", "matrix", "BigNumber", "DenseMatrix", "SparseMatrix", "cos", "sin"];
var createRotationMatrix = /* @__PURE__ */ factory(name101, dependencies101, (_ref) => {
var {
typed: typed2,
config: config2,
multiplyScalar,
addScalar,
unaryMinus,
norm,
BigNumber,
matrix,
DenseMatrix,
SparseMatrix,
cos: cos2,
sin: sin2
} = _ref;
return typed2(name101, {
"": function _() {
return config2.matrix === "Matrix" ? matrix([]) : [];
},
string: function string(format4) {
return matrix(format4);
},
"number | BigNumber | Complex | Unit": function numberBigNumberComplexUnit(theta) {
return _rotationMatrix2x2(theta, config2.matrix === "Matrix" ? "dense" : void 0);
},
"number | BigNumber | Complex | Unit, string": function numberBigNumberComplexUnitString(theta, format4) {
return _rotationMatrix2x2(theta, format4);
},
"number | BigNumber | Complex | Unit, Array": function numberBigNumberComplexUnitArray(theta, v) {
var matrixV = matrix(v);
_validateVector(matrixV);
return _rotationMatrix3x3(theta, matrixV, void 0);
},
"number | BigNumber | Complex | Unit, Matrix": function numberBigNumberComplexUnitMatrix(theta, v) {
_validateVector(v);
var storageType = v.storage() || (config2.matrix === "Matrix" ? "dense" : void 0);
return _rotationMatrix3x3(theta, v, storageType);
},
"number | BigNumber | Complex | Unit, Array, string": function numberBigNumberComplexUnitArrayString(theta, v, format4) {
var matrixV = matrix(v);
_validateVector(matrixV);
return _rotationMatrix3x3(theta, matrixV, format4);
},
"number | BigNumber | Complex | Unit, Matrix, string": function numberBigNumberComplexUnitMatrixString(theta, v, format4) {
_validateVector(v);
return _rotationMatrix3x3(theta, v, format4);
}
});
function _rotationMatrix2x2(theta, format4) {
var Big = isBigNumber(theta);
var minusOne = Big ? new BigNumber(-1) : -1;
var cosTheta = cos2(theta);
var sinTheta = sin2(theta);
var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];
return _convertToFormat(data, format4);
}
function _validateVector(v) {
var size = v.size();
if (size.length < 1 || size[0] !== 3) {
throw new RangeError("Vector must be of dimensions 1x3");
}
}
function _mul(array) {
return array.reduce((p, curr) => multiplyScalar(p, curr));
}
function _convertToFormat(data, format4) {
if (format4) {
if (format4 === "sparse") {
return new SparseMatrix(data);
}
if (format4 === "dense") {
return new DenseMatrix(data);
}
throw new TypeError('Unknown matrix type "'.concat(format4, '"'));
}
return data;
}
function _rotationMatrix3x3(theta, v, format4) {
var normV = norm(v);
if (normV === 0) {
throw new RangeError("Rotation around zero vector");
}
var Big = isBigNumber(theta) ? BigNumber : null;
var one = Big ? new Big(1) : 1;
var minusOne = Big ? new Big(-1) : -1;
var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;
var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;
var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;
var c = cos2(theta);
var oneMinusC = addScalar(one, unaryMinus(c));
var s = sin2(theta);
var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));
var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));
var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));
var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));
var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));
var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));
var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));
var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));
var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));
var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];
return _convertToFormat(data, format4);
}
});
// node_modules/mathjs/lib/esm/function/matrix/row.js
var name102 = "row";
var dependencies102 = ["typed", "Index", "matrix", "range"];
var createRow = /* @__PURE__ */ factory(name102, dependencies102, (_ref) => {
var {
typed: typed2,
Index,
matrix,
range
} = _ref;
return typed2(name102, {
"Matrix, number": _row,
"Array, number": function ArrayNumber(value, row) {
return _row(matrix(clone(value)), row).valueOf();
}
});
function _row(value, row) {
if (value.size().length !== 2) {
throw new Error("Only two dimensional matrix is supported");
}
validateIndex(row, value.size()[0]);
var columnRange = range(0, value.size()[1]);
var index = new Index(row, columnRange);
var result = value.subset(index);
return isMatrix(result) ? result : matrix([[result]]);
}
});
// node_modules/mathjs/lib/esm/function/matrix/size.js
var name103 = "size";
var dependencies103 = ["typed", "config", "?matrix"];
var createSize = /* @__PURE__ */ factory(name103, dependencies103, (_ref) => {
var {
typed: typed2,
config: config2,
matrix
} = _ref;
return typed2(name103, {
Matrix: function Matrix(x) {
return x.create(x.size());
},
Array: arraySize,
string: function string(x) {
return config2.matrix === "Array" ? [x.length] : matrix([x.length]);
},
"number | Complex | BigNumber | Unit | boolean | null": function numberComplexBigNumberUnitBooleanNull(x) {
return config2.matrix === "Array" ? [] : matrix ? matrix([]) : noMatrix();
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/squeeze.js
var name104 = "squeeze";
var dependencies104 = ["typed", "matrix"];
var createSqueeze = /* @__PURE__ */ factory(name104, dependencies104, (_ref) => {
var {
typed: typed2,
matrix
} = _ref;
return typed2(name104, {
Array: function Array2(x) {
return squeeze(clone(x));
},
Matrix: function Matrix(x) {
var res = squeeze(x.toArray());
return Array.isArray(res) ? matrix(res) : res;
},
any: function any(x) {
return clone(x);
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/subset.js
var name105 = "subset";
var dependencies105 = ["typed", "matrix", "zeros", "add"];
var createSubset = /* @__PURE__ */ factory(name105, dependencies105, (_ref) => {
var {
typed: typed2,
matrix,
zeros: zeros2,
add: add2
} = _ref;
return typed2(name105, {
// get subset
"Matrix, Index": function MatrixIndex(value, index) {
if (isEmptyIndex(index)) {
return matrix();
}
validateIndexSourceSize(value, index);
return value.subset(index);
},
"Array, Index": typed2.referTo("Matrix, Index", function(subsetRef) {
return function(value, index) {
var subsetResult = subsetRef(matrix(value), index);
return index.isScalar() ? subsetResult : subsetResult.valueOf();
};
}),
"Object, Index": _getObjectProperty,
"string, Index": _getSubstring,
// set subset
"Matrix, Index, any, any": function MatrixIndexAnyAny(value, index, replacement, defaultValue) {
if (isEmptyIndex(index)) {
return value;
}
validateIndexSourceSize(value, index);
return value.clone().subset(index, _broadcastReplacement(replacement, index), defaultValue);
},
"Array, Index, any, any": typed2.referTo("Matrix, Index, any, any", function(subsetRef) {
return function(value, index, replacement, defaultValue) {
var subsetResult = subsetRef(matrix(value), index, replacement, defaultValue);
return subsetResult.isMatrix ? subsetResult.valueOf() : subsetResult;
};
}),
"Array, Index, any": typed2.referTo("Matrix, Index, any, any", function(subsetRef) {
return function(value, index, replacement) {
return subsetRef(matrix(value), index, replacement, void 0).valueOf();
};
}),
"Matrix, Index, any": typed2.referTo("Matrix, Index, any, any", function(subsetRef) {
return function(value, index, replacement) {
return subsetRef(value, index, replacement, void 0);
};
}),
"string, Index, string": _setSubstring,
"string, Index, string, string": _setSubstring,
"Object, Index, any": _setObjectProperty
});
function _broadcastReplacement(replacement, index) {
if (typeof replacement === "string") {
throw new Error("can't boradcast a string");
}
if (index._isScalar) {
return replacement;
}
var indexSize = index.size();
if (indexSize.every((d) => d > 0)) {
try {
return add2(replacement, zeros2(indexSize));
} catch (error) {
return replacement;
}
} else {
return replacement;
}
}
});
function _getSubstring(str, index) {
if (!isIndex(index)) {
throw new TypeError("Index expected");
}
if (isEmptyIndex(index)) {
return "";
}
validateIndexSourceSize(Array.from(str), index);
if (index.size().length !== 1) {
throw new DimensionError(index.size().length, 1);
}
var strLen = str.length;
validateIndex(index.min()[0], strLen);
validateIndex(index.max()[0], strLen);
var range = index.dimension(0);
var substr = "";
range.forEach(function(v) {
substr += str.charAt(v);
});
return substr;
}
function _setSubstring(str, index, replacement, defaultValue) {
if (!index || index.isIndex !== true) {
throw new TypeError("Index expected");
}
if (isEmptyIndex(index)) {
return str;
}
validateIndexSourceSize(Array.from(str), index);
if (index.size().length !== 1) {
throw new DimensionError(index.size().length, 1);
}
if (defaultValue !== void 0) {
if (typeof defaultValue !== "string" || defaultValue.length !== 1) {
throw new TypeError("Single character expected as defaultValue");
}
} else {
defaultValue = " ";
}
var range = index.dimension(0);
var len = range.size()[0];
if (len !== replacement.length) {
throw new DimensionError(range.size()[0], replacement.length);
}
var strLen = str.length;
validateIndex(index.min()[0]);
validateIndex(index.max()[0]);
var chars = [];
for (var i = 0; i < strLen; i++) {
chars[i] = str.charAt(i);
}
range.forEach(function(v, i2) {
chars[v] = replacement.charAt(i2[0]);
});
if (chars.length > strLen) {
for (var _i = strLen - 1, _len = chars.length; _i < _len; _i++) {
if (!chars[_i]) {
chars[_i] = defaultValue;
}
}
}
return chars.join("");
}
function _getObjectProperty(object, index) {
if (isEmptyIndex(index)) {
return void 0;
}
if (index.size().length !== 1) {
throw new DimensionError(index.size(), 1);
}
var key = index.dimension(0);
if (typeof key !== "string") {
throw new TypeError("String expected as index to retrieve an object property");
}
return getSafeProperty(object, key);
}
function _setObjectProperty(object, index, replacement) {
if (isEmptyIndex(index)) {
return object;
}
if (index.size().length !== 1) {
throw new DimensionError(index.size(), 1);
}
var key = index.dimension(0);
if (typeof key !== "string") {
throw new TypeError("String expected as index to retrieve an object property");
}
var updated = clone(object);
setSafeProperty(updated, key, replacement);
return updated;
}
// node_modules/mathjs/lib/esm/function/matrix/transpose.js
var name106 = "transpose";
var dependencies106 = ["typed", "matrix"];
var createTranspose = /* @__PURE__ */ factory(name106, dependencies106, (_ref) => {
var {
typed: typed2,
matrix
} = _ref;
return typed2(name106, {
Array: (x) => transposeMatrix(matrix(x)).valueOf(),
Matrix: transposeMatrix,
any: clone
// scalars
});
function transposeMatrix(x) {
var size = x.size();
var c;
switch (size.length) {
case 1:
c = x.clone();
break;
case 2:
{
var rows = size[0];
var columns = size[1];
if (columns === 0) {
throw new RangeError("Cannot transpose a 2D matrix with no columns (size: " + format3(size) + ")");
}
switch (x.storage()) {
case "dense":
c = _denseTranspose(x, rows, columns);
break;
case "sparse":
c = _sparseTranspose(x, rows, columns);
break;
}
}
break;
default:
throw new RangeError("Matrix must be a vector or two dimensional (size: " + format3(size) + ")");
}
return c;
}
function _denseTranspose(m, rows, columns) {
var data = m._data;
var transposed = [];
var transposedRow;
for (var j = 0; j < columns; j++) {
transposedRow = transposed[j] = [];
for (var i = 0; i < rows; i++) {
transposedRow[i] = clone(data[i][j]);
}
}
return m.createDenseMatrix({
data: transposed,
size: [columns, rows],
datatype: m._datatype
});
}
function _sparseTranspose(m, rows, columns) {
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
var cvalues = values2 ? [] : void 0;
var cindex = [];
var cptr = [];
var w = [];
for (var x = 0; x < rows; x++) {
w[x] = 0;
}
var p, l, j;
for (p = 0, l = index.length; p < l; p++) {
w[index[p]]++;
}
var sum2 = 0;
for (var i = 0; i < rows; i++) {
cptr.push(sum2);
sum2 += w[i];
w[i] = cptr[i];
}
cptr.push(sum2);
for (j = 0; j < columns; j++) {
for (var k0 = ptr[j], k1 = ptr[j + 1], k = k0; k < k1; k++) {
var q = w[index[k]]++;
cindex[q] = j;
if (values2) {
cvalues[q] = clone(values2[k]);
}
}
}
return m.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [columns, rows],
datatype: m._datatype
});
}
});
// node_modules/mathjs/lib/esm/function/matrix/ctranspose.js
var name107 = "ctranspose";
var dependencies107 = ["typed", "transpose", "conj"];
var createCtranspose = /* @__PURE__ */ factory(name107, dependencies107, (_ref) => {
var {
typed: typed2,
transpose,
conj
} = _ref;
return typed2(name107, {
any: function any(x) {
return conj(transpose(x));
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/zeros.js
var name108 = "zeros";
var dependencies108 = ["typed", "config", "matrix", "BigNumber"];
var createZeros = /* @__PURE__ */ factory(name108, dependencies108, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
BigNumber
} = _ref;
return typed2(name108, {
"": function _() {
return config2.matrix === "Array" ? _zeros([]) : _zeros([], "default");
},
// math.zeros(m, n, p, ..., format)
// TODO: more accurate signature '...number | BigNumber, string' as soon as typed-function supports this
"...number | BigNumber | string": function numberBigNumberString(size) {
var last = size[size.length - 1];
if (typeof last === "string") {
var format4 = size.pop();
return _zeros(size, format4);
} else if (config2.matrix === "Array") {
return _zeros(size);
} else {
return _zeros(size, "default");
}
},
Array: _zeros,
Matrix: function Matrix(size) {
var format4 = size.storage();
return _zeros(size.valueOf(), format4);
},
"Array | Matrix, string": function ArrayMatrixString(size, format4) {
return _zeros(size.valueOf(), format4);
}
});
function _zeros(size, format4) {
var hasBigNumbers = _normalize(size);
var defaultValue = hasBigNumbers ? new BigNumber(0) : 0;
_validate2(size);
if (format4) {
var m = matrix(format4);
if (size.length > 0) {
return m.resize(size, defaultValue);
}
return m;
} else {
var arr = [];
if (size.length > 0) {
return resize(arr, size, defaultValue);
}
return arr;
}
}
function _normalize(size) {
var hasBigNumbers = false;
size.forEach(function(value, index, arr) {
if (isBigNumber(value)) {
hasBigNumbers = true;
arr[index] = value.toNumber();
}
});
return hasBigNumbers;
}
function _validate2(size) {
size.forEach(function(value) {
if (typeof value !== "number" || !isInteger(value) || value < 0) {
throw new Error("Parameters in function zeros must be positive integers");
}
});
}
});
// node_modules/mathjs/lib/esm/function/matrix/fft.js
var name109 = "fft";
var dependencies109 = ["typed", "matrix", "addScalar", "multiplyScalar", "divideScalar", "exp", "tau", "i", "dotDivide", "conj", "pow", "ceil", "log2"];
var createFft = /* @__PURE__ */ factory(name109, dependencies109, (_ref) => {
var {
typed: typed2,
matrix,
addScalar,
multiplyScalar,
divideScalar,
exp: exp2,
tau: tau2,
i: I,
dotDivide,
conj,
pow: pow2,
ceil: ceil2,
log2: log24
} = _ref;
return typed2(name109, {
Array: _ndFft,
Matrix: function Matrix(matrix2) {
return matrix2.create(_ndFft(matrix2.toArray()));
}
});
function _ndFft(arr) {
var size = arraySize(arr);
if (size.length === 1)
return _fft(arr, size[0]);
return _1dFft(arr.map((slice) => _ndFft(slice, size.slice(1))), 0);
}
function _1dFft(arr, dim) {
var size = arraySize(arr);
if (dim !== 0)
return new Array(size[0]).fill(0).map((_, i) => _1dFft(arr[i], dim - 1));
if (size.length === 1)
return _fft(arr);
function _transpose(arr2) {
var size2 = arraySize(arr2);
return new Array(size2[1]).fill(0).map((_, j) => new Array(size2[0]).fill(0).map((_2, i) => arr2[i][j]));
}
return _transpose(_1dFft(_transpose(arr), 1));
}
function _czt(arr) {
var n = arr.length;
var w = exp2(divideScalar(multiplyScalar(-1, multiplyScalar(I, tau2)), n));
var chirp = [];
for (var i = 1 - n; i < n; i++) {
chirp.push(pow2(w, divideScalar(pow2(i, 2), 2)));
}
var N2 = pow2(2, ceil2(log24(n + n - 1)));
var xp = [...new Array(n).fill(0).map((_, i2) => multiplyScalar(arr[i2], chirp[n - 1 + i2])), ...new Array(N2 - n).fill(0)];
var ichirp = [...new Array(n + n - 1).fill(0).map((_, i2) => divideScalar(1, chirp[i2])), ...new Array(N2 - (n + n - 1)).fill(0)];
var fftXp = _fft(xp);
var fftIchirp = _fft(ichirp);
var fftProduct = new Array(N2).fill(0).map((_, i2) => multiplyScalar(fftXp[i2], fftIchirp[i2]));
var ifftProduct = dotDivide(conj(_ndFft(conj(fftProduct))), N2);
var ret = [];
for (var _i = n - 1; _i < n + n - 1; _i++) {
ret.push(multiplyScalar(ifftProduct[_i], chirp[_i]));
}
return ret;
}
function _fft(arr) {
var len = arr.length;
if (len === 1)
return [arr[0]];
if (len % 2 === 0) {
var ret = [..._fft(arr.filter((_, i) => i % 2 === 0), len / 2), ..._fft(arr.filter((_, i) => i % 2 === 1), len / 2)];
for (var k = 0; k < len / 2; k++) {
var p = ret[k];
var q = multiplyScalar(ret[k + len / 2], exp2(multiplyScalar(multiplyScalar(tau2, I), divideScalar(-k, len))));
ret[k] = addScalar(p, q);
ret[k + len / 2] = addScalar(p, multiplyScalar(-1, q));
}
return ret;
} else {
return _czt(arr);
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/ifft.js
var name110 = "ifft";
var dependencies110 = ["typed", "fft", "dotDivide", "conj"];
var createIfft = /* @__PURE__ */ factory(name110, dependencies110, (_ref) => {
var {
typed: typed2,
fft,
dotDivide,
conj
} = _ref;
return typed2(name110, {
"Array | Matrix": function ArrayMatrix(arr) {
var size = isMatrix(arr) ? arr.size() : arraySize(arr);
return dotDivide(conj(fft(conj(arr))), size.reduce((acc, curr) => acc * curr, 1));
}
});
});
// node_modules/@babel/runtime/helpers/esm/typeof.js
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
return typeof o2;
} : function(o2) {
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
}, _typeof(o);
}
// node_modules/@babel/runtime/helpers/esm/toPrimitive.js
function _toPrimitive(input, hint) {
if (_typeof(input) !== "object" || input === null)
return input;
var prim = input[Symbol.toPrimitive];
if (prim !== void 0) {
var res = prim.call(input, hint || "default");
if (_typeof(res) !== "object")
return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (hint === "string" ? String : Number)(input);
}
// node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
function _toPropertyKey(arg) {
var key = _toPrimitive(arg, "string");
return _typeof(key) === "symbol" ? key : String(key);
}
// node_modules/@babel/runtime/helpers/esm/defineProperty.js
function _defineProperty(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
// node_modules/mathjs/lib/esm/function/numeric/solveODE.js
function ownKeys(e2, r) {
var t = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r && (o = o.filter(function(r2) {
return Object.getOwnPropertyDescriptor(e2, r2).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread(e2) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
_defineProperty(e2, r2, t[r2]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
Object.defineProperty(e2, r2, Object.getOwnPropertyDescriptor(t, r2));
});
}
return e2;
}
var name111 = "solveODE";
var dependencies111 = ["typed", "add", "subtract", "multiply", "divide", "max", "map", "abs", "isPositive", "isNegative", "larger", "smaller", "matrix", "bignumber", "unaryMinus"];
var createSolveODE = /* @__PURE__ */ factory(name111, dependencies111, (_ref) => {
var {
typed: typed2,
add: add2,
subtract,
multiply,
divide: divide2,
max: max2,
map: map2,
abs: abs2,
isPositive,
isNegative,
larger,
smaller,
matrix,
bignumber,
unaryMinus
} = _ref;
function _rk(butcherTableau) {
return function(f, tspan, y0, options) {
var wrongTSpan = !(tspan.length === 2 && (tspan.every(isNumOrBig) || tspan.every(isUnit)));
if (wrongTSpan) {
throw new Error('"tspan" must be an Array of two numeric values or two units [tStart, tEnd]');
}
var t0 = tspan[0];
var tf = tspan[1];
var isForwards = larger(tf, t0);
var firstStep = options.firstStep;
if (firstStep !== void 0 && !isPositive(firstStep)) {
throw new Error('"firstStep" must be positive');
}
var maxStep = options.maxStep;
if (maxStep !== void 0 && !isPositive(maxStep)) {
throw new Error('"maxStep" must be positive');
}
var minStep = options.minStep;
if (minStep && isNegative(minStep)) {
throw new Error('"minStep" must be positive or zero');
}
var timeVars = [t0, tf, firstStep, minStep, maxStep].filter((x) => x !== void 0);
if (!(timeVars.every(isNumOrBig) || timeVars.every(isUnit))) {
throw new Error('Inconsistent type of "t" dependant variables');
}
var steps = 1;
var tol = options.tol ? options.tol : 1e-4;
var minDelta = options.minDelta ? options.minDelta : 0.2;
var maxDelta = options.maxDelta ? options.maxDelta : 5;
var maxIter = options.maxIter ? options.maxIter : 1e4;
var hasBigNumbers = [t0, tf, ...y0, maxStep, minStep].some(isBigNumber);
var [a, c, b, bp] = hasBigNumbers ? [bignumber(butcherTableau.a), bignumber(butcherTableau.c), bignumber(butcherTableau.b), bignumber(butcherTableau.bp)] : [butcherTableau.a, butcherTableau.c, butcherTableau.b, butcherTableau.bp];
var h = firstStep ? isForwards ? firstStep : unaryMinus(firstStep) : divide2(subtract(tf, t0), steps);
var t = [t0];
var y = [y0];
var deltaB = subtract(b, bp);
var n = 0;
var iter = 0;
var ongoing = _createOngoing(isForwards);
var trimStep = _createTrimStep(isForwards);
while (ongoing(t[n], tf)) {
var k = [];
h = trimStep(t[n], tf, h);
k.push(f(t[n], y[n]));
for (var i = 1; i < c.length; ++i) {
k.push(f(add2(t[n], multiply(c[i], h)), add2(y[n], multiply(h, a[i], k))));
}
var TE = max2(abs2(map2(multiply(deltaB, k), (X) => isUnit(X) ? X.value : X)));
if (TE < tol && tol / TE > 1 / 4) {
t.push(add2(t[n], h));
y.push(add2(y[n], multiply(h, b, k)));
n++;
}
var delta = 0.84 * (tol / TE) ** (1 / 5);
if (smaller(delta, minDelta)) {
delta = minDelta;
} else if (larger(delta, maxDelta)) {
delta = maxDelta;
}
delta = hasBigNumbers ? bignumber(delta) : delta;
h = multiply(h, delta);
if (maxStep && larger(abs2(h), maxStep)) {
h = isForwards ? maxStep : unaryMinus(maxStep);
} else if (minStep && smaller(abs2(h), minStep)) {
h = isForwards ? minStep : unaryMinus(minStep);
}
iter++;
if (iter > maxIter) {
throw new Error("Maximum number of iterations reached, try changing options");
}
}
return {
t,
y
};
};
}
function _rk23(f, tspan, y0, options) {
var a = [[], [1 / 2], [0, 3 / 4], [2 / 9, 1 / 3, 4 / 9]];
var c = [null, 1 / 2, 3 / 4, 1];
var b = [2 / 9, 1 / 3, 4 / 9, 0];
var bp = [7 / 24, 1 / 4, 1 / 3, 1 / 8];
var butcherTableau = {
a,
c,
b,
bp
};
return _rk(butcherTableau)(f, tspan, y0, options);
}
function _rk45(f, tspan, y0, options) {
var a = [[], [1 / 5], [3 / 40, 9 / 40], [44 / 45, -56 / 15, 32 / 9], [19372 / 6561, -25360 / 2187, 64448 / 6561, -212 / 729], [9017 / 3168, -355 / 33, 46732 / 5247, 49 / 176, -5103 / 18656], [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84]];
var c = [null, 1 / 5, 3 / 10, 4 / 5, 8 / 9, 1, 1];
var b = [35 / 384, 0, 500 / 1113, 125 / 192, -2187 / 6784, 11 / 84, 0];
var bp = [5179 / 57600, 0, 7571 / 16695, 393 / 640, -92097 / 339200, 187 / 2100, 1 / 40];
var butcherTableau = {
a,
c,
b,
bp
};
return _rk(butcherTableau)(f, tspan, y0, options);
}
function _solveODE(f, tspan, y0, opt) {
var method = opt.method ? opt.method : "RK45";
var methods = {
RK23: _rk23,
RK45: _rk45
};
if (method.toUpperCase() in methods) {
var methodOptions = _objectSpread({}, opt);
delete methodOptions.method;
return methods[method.toUpperCase()](f, tspan, y0, methodOptions);
} else {
var methodsWithQuotes = Object.keys(methods).map((x) => '"'.concat(x, '"'));
var availableMethodsString = "".concat(methodsWithQuotes.slice(0, -1).join(", "), " and ").concat(methodsWithQuotes.slice(-1));
throw new Error('Unavailable method "'.concat(method, '". Available methods are ').concat(availableMethodsString));
}
}
function _createOngoing(isForwards) {
return isForwards ? smaller : larger;
}
function _createTrimStep(isForwards) {
var outOfBounds = isForwards ? larger : smaller;
return function(t, tf, h) {
var next = add2(t, h);
return outOfBounds(next, tf) ? subtract(tf, t) : h;
};
}
function isNumOrBig(x) {
return isBigNumber(x) || isNumber(x);
}
function _matrixSolveODE(f, T, y0, options) {
var sol = _solveODE(f, T.toArray(), y0.toArray(), options);
return {
t: matrix(sol.t),
y: matrix(sol.y)
};
}
return typed2("solveODE", {
"function, Array, Array, Object": _solveODE,
"function, Matrix, Matrix, Object": _matrixSolveODE,
"function, Array, Array": (f, T, y0) => _solveODE(f, T, y0, {}),
"function, Matrix, Matrix": (f, T, y0) => _matrixSolveODE(f, T, y0, {}),
"function, Array, number | BigNumber | Unit": (f, T, y0) => {
var sol = _solveODE(f, T, [y0], {});
return {
t: sol.t,
y: sol.y.map((Y) => Y[0])
};
},
"function, Matrix, number | BigNumber | Unit": (f, T, y0) => {
var sol = _solveODE(f, T.toArray(), [y0], {});
return {
t: matrix(sol.t),
y: matrix(sol.y.map((Y) => Y[0]))
};
},
"function, Array, number | BigNumber | Unit, Object": (f, T, y0, options) => {
var sol = _solveODE(f, T, [y0], options);
return {
t: sol.t,
y: sol.y.map((Y) => Y[0])
};
},
"function, Matrix, number | BigNumber | Unit, Object": (f, T, y0, options) => {
var sol = _solveODE(f, T.toArray(), [y0], options);
return {
t: matrix(sol.t),
y: matrix(sol.y.map((Y) => Y[0]))
};
}
});
});
// node_modules/mathjs/lib/esm/function/special/erf.js
var name112 = "erf";
var dependencies112 = ["typed"];
var createErf = /* @__PURE__ */ factory(name112, dependencies112, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("name", {
number: function number(x) {
var y = Math.abs(x);
if (y >= MAX_NUM) {
return sign(x);
}
if (y <= THRESH) {
return sign(x) * erf1(y);
}
if (y <= 4) {
return sign(x) * (1 - erfc2(y));
}
return sign(x) * (1 - erfc3(y));
},
"Array | Matrix": typed2.referToSelf((self2) => (n) => deepMap(n, self2))
// TODO: For complex numbers, use the approximation for the Faddeeva function
// from "More Efficient Computation of the Complex Error Function" (AMS)
});
function erf1(y) {
var ysq = y * y;
var xnum = P2[0][4] * ysq;
var xden = ysq;
var i;
for (i = 0; i < 3; i += 1) {
xnum = (xnum + P2[0][i]) * ysq;
xden = (xden + Q[0][i]) * ysq;
}
return y * (xnum + P2[0][3]) / (xden + Q[0][3]);
}
function erfc2(y) {
var xnum = P2[1][8] * y;
var xden = y;
var i;
for (i = 0; i < 7; i += 1) {
xnum = (xnum + P2[1][i]) * y;
xden = (xden + Q[1][i]) * y;
}
var result = (xnum + P2[1][7]) / (xden + Q[1][7]);
var ysq = parseInt(y * 16) / 16;
var del = (y - ysq) * (y + ysq);
return Math.exp(-ysq * ysq) * Math.exp(-del) * result;
}
function erfc3(y) {
var ysq = 1 / (y * y);
var xnum = P2[2][5] * ysq;
var xden = ysq;
var i;
for (i = 0; i < 4; i += 1) {
xnum = (xnum + P2[2][i]) * ysq;
xden = (xden + Q[2][i]) * ysq;
}
var result = ysq * (xnum + P2[2][4]) / (xden + Q[2][4]);
result = (SQRPI - result) / y;
ysq = parseInt(y * 16) / 16;
var del = (y - ysq) * (y + ysq);
return Math.exp(-ysq * ysq) * Math.exp(-del) * result;
}
});
var THRESH = 0.46875;
var SQRPI = 0.5641895835477563;
var P2 = [[3.1611237438705655, 113.86415415105016, 377.485237685302, 3209.3775891384694, 0.18577770618460315], [0.5641884969886701, 8.883149794388377, 66.11919063714163, 298.6351381974001, 881.952221241769, 1712.0476126340707, 2051.0783778260716, 1230.3393547979972, 21531153547440383e-24], [0.30532663496123236, 0.36034489994980445, 0.12578172611122926, 0.016083785148742275, 6587491615298378e-19, 0.016315387137302097]];
var Q = [[23.601290952344122, 244.02463793444417, 1282.6165260773723, 2844.236833439171], [15.744926110709835, 117.6939508913125, 537.1811018620099, 1621.3895745666903, 3290.7992357334597, 4362.619090143247, 3439.3676741437216, 1230.3393548037495], [2.568520192289822, 1.8729528499234604, 0.5279051029514285, 0.06051834131244132, 0.0023352049762686918]];
var MAX_NUM = Math.pow(2, 53);
// node_modules/mathjs/lib/esm/function/special/zeta.js
var name113 = "zeta";
var dependencies113 = ["typed", "config", "multiply", "pow", "divide", "factorial", "equal", "smallerEq", "isNegative", "gamma", "sin", "subtract", "add", "?Complex", "?BigNumber", "pi"];
var createZeta = /* @__PURE__ */ factory(name113, dependencies113, (_ref) => {
var {
typed: typed2,
config: config2,
multiply,
pow: pow2,
divide: divide2,
factorial,
equal,
smallerEq,
isNegative,
gamma,
sin: sin2,
subtract,
add: add2,
Complex: Complex2,
BigNumber: _BigNumber,
pi: pi2
} = _ref;
return typed2(name113, {
number: (s) => zetaNumeric(s, (value) => value, () => 20),
BigNumber: (s) => zetaNumeric(s, (value) => new _BigNumber(value), () => {
return Math.abs(Math.log10(config2.epsilon));
}),
Complex: zetaComplex
});
function zetaNumeric(s, createValue, determineDigits) {
if (equal(s, 0)) {
return createValue(-0.5);
}
if (equal(s, 1)) {
return createValue(NaN);
}
if (!isFinite(s)) {
return isNegative(s) ? createValue(NaN) : createValue(1);
}
return zeta(s, createValue, determineDigits, (s2) => s2);
}
function zetaComplex(s) {
if (s.re === 0 && s.im === 0) {
return new Complex2(-0.5);
}
if (s.re === 1) {
return new Complex2(NaN, NaN);
}
if (s.re === Infinity && s.im === 0) {
return new Complex2(1);
}
if (s.im === Infinity || s.re === -Infinity) {
return new Complex2(NaN, NaN);
}
return zeta(s, (value) => value, (s2) => Math.round(1.3 * 15 + 0.9 * Math.abs(s2.im)), (s2) => s2.re);
}
function zeta(s, createValue, determineDigits, getRe) {
var n = determineDigits(s);
if (getRe(s) > -(n - 1) / 2) {
return f(s, createValue(n), createValue);
} else {
var c = multiply(pow2(2, s), pow2(createValue(pi2), subtract(s, 1)));
c = multiply(c, sin2(multiply(divide2(createValue(pi2), 2), s)));
c = multiply(c, gamma(subtract(1, s)));
return multiply(c, zeta(subtract(1, s), createValue, determineDigits, getRe));
}
}
function d(k, n) {
var S = k;
for (var j = k; smallerEq(j, n); j = add2(j, 1)) {
var factor = divide2(multiply(factorial(add2(n, subtract(j, 1))), pow2(4, j)), multiply(factorial(subtract(n, j)), factorial(multiply(2, j))));
S = add2(S, factor);
}
return multiply(n, S);
}
function f(s, n, createValue) {
var c = divide2(1, multiply(d(createValue(0), n), subtract(1, pow2(2, subtract(1, s)))));
var S = createValue(0);
for (var k = createValue(1); smallerEq(k, n); k = add2(k, 1)) {
S = add2(S, divide2(multiply((-1) ** (k - 1), d(k, n)), pow2(k, s)));
}
return multiply(c, S);
}
});
// node_modules/mathjs/lib/esm/function/statistics/mode.js
var name114 = "mode";
var dependencies114 = ["typed", "isNaN", "isNumeric"];
var createMode = /* @__PURE__ */ factory(name114, dependencies114, (_ref) => {
var {
typed: typed2,
isNaN: isNaN2,
isNumeric
} = _ref;
return typed2(name114, {
"Array | Matrix": _mode,
"...": function _(args) {
return _mode(args);
}
});
function _mode(values2) {
values2 = flatten(values2.valueOf());
var num = values2.length;
if (num === 0) {
throw new Error("Cannot calculate mode of an empty array");
}
var count = {};
var mode = [];
var max2 = 0;
for (var i = 0; i < values2.length; i++) {
var value = values2[i];
if (isNumeric(value) && isNaN2(value)) {
throw new Error("Cannot calculate mode of an array containing NaN values");
}
if (!(value in count)) {
count[value] = 0;
}
count[value]++;
if (count[value] === max2) {
mode.push(value);
} else if (count[value] > max2) {
max2 = count[value];
mode = [value];
}
}
return mode;
}
});
// node_modules/mathjs/lib/esm/function/statistics/utils/improveErrorMessage.js
function improveErrorMessage(err, fnName, value) {
var details;
if (String(err).indexOf("Unexpected type") !== -1) {
details = arguments.length > 2 ? " (type: " + typeOf(value) + ", value: " + JSON.stringify(value) + ")" : " (type: " + err.data.actual + ")";
return new TypeError("Cannot calculate " + fnName + ", unexpected type of argument" + details);
}
if (String(err).indexOf("complex numbers") !== -1) {
details = arguments.length > 2 ? " (type: " + typeOf(value) + ", value: " + JSON.stringify(value) + ")" : "";
return new TypeError("Cannot calculate " + fnName + ", no ordering relation is defined for complex numbers" + details);
}
return err;
}
// node_modules/mathjs/lib/esm/function/statistics/prod.js
var name115 = "prod";
var dependencies115 = ["typed", "config", "multiplyScalar", "numeric"];
var createProd = /* @__PURE__ */ factory(name115, dependencies115, (_ref) => {
var {
typed: typed2,
config: config2,
multiplyScalar,
numeric: numeric2
} = _ref;
return typed2(name115, {
// prod([a, b, c, d, ...])
"Array | Matrix": _prod,
// prod([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": function ArrayMatrixNumberBigNumber(array, dim) {
throw new Error("prod(A, dim) is not yet supported");
},
// prod(a, b, c, d, ...)
"...": function _(args) {
return _prod(args);
}
});
function _prod(array) {
var prod;
deepForEach(array, function(value) {
try {
prod = prod === void 0 ? value : multiplyScalar(prod, value);
} catch (err) {
throw improveErrorMessage(err, "prod", value);
}
});
if (typeof prod === "string") {
prod = numeric2(prod, config2.number);
}
if (prod === void 0) {
throw new Error("Cannot calculate prod of an empty array");
}
return prod;
}
});
// node_modules/mathjs/lib/esm/function/string/format.js
var name116 = "format";
var dependencies116 = ["typed"];
var createFormat = /* @__PURE__ */ factory(name116, dependencies116, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name116, {
any: format3,
"any, Object | function | number": format3
});
});
// node_modules/mathjs/lib/esm/function/string/bin.js
var name117 = "bin";
var dependencies117 = ["typed", "format"];
var createBin = factory(name117, dependencies117, (_ref) => {
var {
typed: typed2,
format: format4
} = _ref;
return typed2(name117, {
"number | BigNumber": function numberBigNumber(n) {
return format4(n, {
notation: "bin"
});
},
"number | BigNumber, number": function numberBigNumberNumber(n, wordSize) {
return format4(n, {
notation: "bin",
wordSize
});
}
});
});
// node_modules/mathjs/lib/esm/function/string/oct.js
var name118 = "oct";
var dependencies118 = ["typed", "format"];
var createOct = factory(name118, dependencies118, (_ref) => {
var {
typed: typed2,
format: format4
} = _ref;
return typed2(name118, {
"number | BigNumber": function numberBigNumber(n) {
return format4(n, {
notation: "oct"
});
},
"number | BigNumber, number": function numberBigNumberNumber(n, wordSize) {
return format4(n, {
notation: "oct",
wordSize
});
}
});
});
// node_modules/mathjs/lib/esm/function/string/hex.js
var name119 = "hex";
var dependencies119 = ["typed", "format"];
var createHex = factory(name119, dependencies119, (_ref) => {
var {
typed: typed2,
format: format4
} = _ref;
return typed2(name119, {
"number | BigNumber": function numberBigNumber(n) {
return format4(n, {
notation: "hex"
});
},
"number | BigNumber, number": function numberBigNumberNumber(n, wordSize) {
return format4(n, {
notation: "hex",
wordSize
});
}
});
});
// node_modules/mathjs/lib/esm/utils/print.js
var printTemplate = /\$([\w.]+)/g;
// node_modules/mathjs/lib/esm/function/string/print.js
var name120 = "print";
var dependencies120 = ["typed"];
var createPrint = /* @__PURE__ */ factory(name120, dependencies120, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name120, {
// note: Matrix will be converted automatically to an Array
"string, Object | Array": _print,
"string, Object | Array, number | Object": _print
});
});
function _print(template, values2, options) {
return template.replace(printTemplate, function(original, key) {
var keys = key.split(".");
var value = values2[keys.shift()];
if (value !== void 0 && value.isMatrix) {
value = value.toArray();
}
while (keys.length && value !== void 0) {
var k = keys.shift();
value = k ? value[k] : value + ".";
}
if (value !== void 0) {
if (!isString(value)) {
return format3(value, options);
} else {
return value;
}
}
return original;
});
}
// node_modules/mathjs/lib/esm/function/unit/to.js
var name121 = "to";
var dependencies121 = ["typed", "matrix", "concat"];
var createTo = /* @__PURE__ */ factory(name121, dependencies121, (_ref) => {
var {
typed: typed2,
matrix,
concat: concat2
} = _ref;
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name121, {
"Unit, Unit | string": (x, unit) => x.to(unit)
}, matrixAlgorithmSuite({
Ds: true
}));
});
// node_modules/mathjs/lib/esm/function/utils/isPrime.js
var name122 = "isPrime";
var dependencies122 = ["typed"];
var createIsPrime = /* @__PURE__ */ factory(name122, dependencies122, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name122, {
number: function number(x) {
if (x * 0 !== 0) {
return false;
}
if (x <= 3) {
return x > 1;
}
if (x % 2 === 0 || x % 3 === 0) {
return false;
}
for (var i = 5; i * i <= x; i += 6) {
if (x % i === 0 || x % (i + 2) === 0) {
return false;
}
}
return true;
},
BigNumber: function BigNumber(n) {
if (n.toNumber() * 0 !== 0) {
return false;
}
if (n.lte(3))
return n.gt(1);
if (n.mod(2).eq(0) || n.mod(3).eq(0))
return false;
if (n.lt(Math.pow(2, 32))) {
var x = n.toNumber();
for (var i = 5; i * i <= x; i += 6) {
if (x % i === 0 || x % (i + 2) === 0) {
return false;
}
}
return true;
}
function modPow(base, exponent, modulus) {
var accumulator = 1;
while (!exponent.eq(0)) {
if (exponent.mod(2).eq(0)) {
exponent = exponent.div(2);
base = base.mul(base).mod(modulus);
} else {
exponent = exponent.sub(1);
accumulator = base.mul(accumulator).mod(modulus);
}
}
return accumulator;
}
var Decimal2 = n.constructor.clone({
precision: n.toFixed(0).length * 2
});
n = new Decimal2(n);
var r = 0;
var d = n.sub(1);
while (d.mod(2).eq(0)) {
d = d.div(2);
r += 1;
}
var bases = null;
if (n.lt("3317044064679887385961981")) {
bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41].filter((x2) => x2 < n);
} else {
var max2 = Math.min(n.toNumber() - 2, Math.floor(2 * Math.pow(n.toFixed(0).length * Math.log(10), 2)));
bases = [];
for (var _i = 2; _i <= max2; _i += 1) {
bases.push(max2);
}
}
for (var _i2 = 0; _i2 < bases.length; _i2 += 1) {
var a = bases[_i2];
var adn = modPow(n.sub(n).add(a), d, n);
if (!adn.eq(1)) {
for (var _i3 = 0, _x = adn; !_x.eq(n.sub(1)); _i3 += 1, _x = _x.mul(_x).mod(n)) {
if (_i3 === r - 1) {
return false;
}
}
}
}
return true;
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/function/utils/numeric.js
var name123 = "numeric";
var dependencies123 = ["number", "?bignumber", "?fraction"];
var createNumeric = /* @__PURE__ */ factory(name123, dependencies123, (_ref) => {
var {
number: _number,
bignumber,
fraction
} = _ref;
var validInputTypes = {
string: true,
number: true,
BigNumber: true,
Fraction: true
};
var validOutputTypes = {
number: (x) => _number(x),
BigNumber: bignumber ? (x) => bignumber(x) : noBignumber,
Fraction: fraction ? (x) => fraction(x) : noFraction
};
return function numeric2(value) {
var outputType = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "number";
var check = arguments.length > 2 ? arguments[2] : void 0;
if (check !== void 0) {
throw new SyntaxError("numeric() takes one or two arguments");
}
var inputType = typeOf(value);
if (!(inputType in validInputTypes)) {
throw new TypeError("Cannot convert " + value + ' of type "' + inputType + '"; valid input types are ' + Object.keys(validInputTypes).join(", "));
}
if (!(outputType in validOutputTypes)) {
throw new TypeError("Cannot convert " + value + ' to type "' + outputType + '"; valid output types are ' + Object.keys(validOutputTypes).join(", "));
}
if (outputType === inputType) {
return value;
} else {
return validOutputTypes[outputType](value);
}
};
});
// node_modules/mathjs/lib/esm/function/arithmetic/divideScalar.js
var name124 = "divideScalar";
var dependencies124 = ["typed", "numeric"];
var createDivideScalar = /* @__PURE__ */ factory(name124, dependencies124, (_ref) => {
var {
typed: typed2,
numeric: numeric2
} = _ref;
return typed2(name124, {
"number, number": function numberNumber(x, y) {
return x / y;
},
"Complex, Complex": function ComplexComplex(x, y) {
return x.div(y);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.div(y);
},
"Fraction, Fraction": function FractionFraction(x, y) {
return x.div(y);
},
"Unit, number | Complex | Fraction | BigNumber | Unit": (x, y) => x.divide(y),
"number | Fraction | Complex | BigNumber, Unit": (x, y) => y.divideInto(x)
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/pow.js
var name125 = "pow";
var dependencies125 = ["typed", "config", "identity", "multiply", "matrix", "inv", "fraction", "number", "Complex"];
var createPow = /* @__PURE__ */ factory(name125, dependencies125, (_ref) => {
var {
typed: typed2,
config: config2,
identity,
multiply,
matrix,
inv,
number,
fraction,
Complex: Complex2
} = _ref;
return typed2(name125, {
"number, number": _pow,
"Complex, Complex": function ComplexComplex(x, y) {
return x.pow(y);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
if (y.isInteger() || x >= 0 || config2.predictable) {
return x.pow(y);
} else {
return new Complex2(x.toNumber(), 0).pow(y.toNumber(), 0);
}
},
"Fraction, Fraction": function FractionFraction(x, y) {
var result = x.pow(y);
if (result != null) {
return result;
}
if (config2.predictable) {
throw new Error("Result of pow is non-rational and cannot be expressed as a fraction");
} else {
return _pow(x.valueOf(), y.valueOf());
}
},
"Array, number": _powArray,
"Array, BigNumber": function ArrayBigNumber(x, y) {
return _powArray(x, y.toNumber());
},
"Matrix, number": _powMatrix,
"Matrix, BigNumber": function MatrixBigNumber(x, y) {
return _powMatrix(x, y.toNumber());
},
"Unit, number | BigNumber": function UnitNumberBigNumber(x, y) {
return x.pow(y);
}
});
function _pow(x, y) {
if (config2.predictable && !isInteger(y) && x < 0) {
try {
var yFrac = fraction(y);
var yNum = number(yFrac);
if (y === yNum || Math.abs((y - yNum) / y) < 1e-14) {
if (yFrac.d % 2 === 1) {
return (yFrac.n % 2 === 0 ? 1 : -1) * Math.pow(-x, y);
}
}
} catch (ex) {
}
}
if (config2.predictable && (x < -1 && y === Infinity || x > -1 && x < 0 && y === -Infinity)) {
return NaN;
}
if (isInteger(y) || x >= 0 || config2.predictable) {
return powNumber(x, y);
} else {
if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {
return 0;
}
return new Complex2(x, 0).pow(y, 0);
}
}
function _powArray(x, y) {
if (!isInteger(y)) {
throw new TypeError("For A^b, b must be an integer (value is " + y + ")");
}
var s = arraySize(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] + ")");
}
if (y < 0) {
try {
return _powArray(inv(x), -y);
} catch (error) {
if (error.message === "Cannot calculate inverse, determinant is zero") {
throw new TypeError("For A^b, when A is not invertible, b must be a positive integer (value is " + y + ")");
}
throw error;
}
}
var res = identity(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;
}
function _powMatrix(x, y) {
return matrix(_powArray(x.valueOf(), y));
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/round.js
var NO_INT = "Number of decimals in function round must be an integer";
var name126 = "round";
var dependencies126 = ["typed", "matrix", "equalScalar", "zeros", "BigNumber", "DenseMatrix"];
var createRound = /* @__PURE__ */ factory(name126, dependencies126, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
zeros: zeros2,
BigNumber,
DenseMatrix
} = _ref;
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
return typed2(name126, {
number: roundNumber,
"number, number": roundNumber,
"number, BigNumber": function numberBigNumber(x, n) {
if (!n.isInteger()) {
throw new TypeError(NO_INT);
}
return new BigNumber(x).toDecimalPlaces(n.toNumber());
},
Complex: function Complex2(x) {
return x.round();
},
"Complex, number": function ComplexNumber(x, n) {
if (n % 1) {
throw new TypeError(NO_INT);
}
return x.round(n);
},
"Complex, BigNumber": function ComplexBigNumber(x, n) {
if (!n.isInteger()) {
throw new TypeError(NO_INT);
}
var _n = n.toNumber();
return x.round(_n);
},
BigNumber: function BigNumber2(x) {
return x.toDecimalPlaces(0);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, n) {
if (!n.isInteger()) {
throw new TypeError(NO_INT);
}
return x.toDecimalPlaces(n.toNumber());
},
Fraction: function Fraction2(x) {
return x.round();
},
"Fraction, number": function FractionNumber(x, n) {
if (n % 1) {
throw new TypeError(NO_INT);
}
return x.round(n);
},
"Fraction, BigNumber": function FractionBigNumber(x, n) {
if (!n.isInteger()) {
throw new TypeError(NO_INT);
}
return x.round(n.toNumber());
},
// deep map collection, skip zeros since round(0) = 0
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2, true)),
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(x, y, self2, false);
}),
"Array, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(x), y, self2, false).valueOf();
}),
"number | Complex | BigNumber | Fraction, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo12xSfs(y, x, self2, true);
}),
"number | Complex | BigNumber | Fraction, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo14xDs(y, x, self2, true);
}),
"number | Complex | BigNumber | Fraction, Array": typed2.referToSelf((self2) => (x, y) => {
return matAlgo14xDs(matrix(y), x, self2, true).valueOf();
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/log.js
var name127 = "log";
var dependencies127 = ["config", "typed", "divideScalar", "Complex"];
var createLog = /* @__PURE__ */ factory(name127, dependencies127, (_ref) => {
var {
typed: typed2,
config: config2,
divideScalar,
Complex: Complex2
} = _ref;
return typed2(name127, {
number: function number(x) {
if (x >= 0 || config2.predictable) {
return logNumber(x);
} else {
return new Complex2(x, 0).log();
}
},
Complex: function Complex3(x) {
return x.log();
},
BigNumber: function BigNumber(x) {
if (!x.isNegative() || config2.predictable) {
return x.ln();
} else {
return new Complex2(x.toNumber(), 0).log();
}
},
"any, any": typed2.referToSelf((self2) => (x, base) => {
return divideScalar(self2(x), self2(base));
})
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/log1p.js
var name128 = "log1p";
var dependencies128 = ["typed", "config", "divideScalar", "log", "Complex"];
var createLog1p = /* @__PURE__ */ factory(name128, dependencies128, (_ref) => {
var {
typed: typed2,
config: config2,
divideScalar,
log: log3,
Complex: Complex2
} = _ref;
return typed2(name128, {
number: function number(x) {
if (x >= -1 || config2.predictable) {
return log1p(x);
} else {
return _log1pComplex(new Complex2(x, 0));
}
},
Complex: _log1pComplex,
BigNumber: function BigNumber(x) {
var y = x.plus(1);
if (!y.isNegative() || config2.predictable) {
return y.ln();
} else {
return _log1pComplex(new Complex2(x.toNumber(), 0));
}
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2)),
"any, any": typed2.referToSelf((self2) => (x, base) => {
return divideScalar(self2(x), log3(base));
})
});
function _log1pComplex(x) {
var xRe1p = x.re + 1;
return new Complex2(Math.log(Math.sqrt(xRe1p * xRe1p + x.im * x.im)), Math.atan2(x.im, xRe1p));
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/nthRoots.js
var name129 = "nthRoots";
var dependencies129 = ["config", "typed", "divideScalar", "Complex"];
var createNthRoots = /* @__PURE__ */ factory(name129, dependencies129, (_ref) => {
var {
typed: typed2,
config: config2,
divideScalar,
Complex: Complex2
} = _ref;
var _calculateExactResult = [function realPos(val) {
return new Complex2(val, 0);
}, function imagPos(val) {
return new Complex2(0, val);
}, function realNeg(val) {
return new Complex2(-val, 0);
}, function imagNeg(val) {
return new Complex2(0, -val);
}];
function _nthComplexRoots(a, root) {
if (root < 0)
throw new Error("Root must be greater than zero");
if (root === 0)
throw new Error("Root must be non-zero");
if (root % 1 !== 0)
throw new Error("Root must be an integer");
if (a === 0 || a.abs() === 0)
return [new Complex2(0, 0)];
var aIsNumeric = typeof a === "number";
var offset;
if (aIsNumeric || a.re === 0 || a.im === 0) {
if (aIsNumeric) {
offset = 2 * +(a < 0);
} else if (a.im === 0) {
offset = 2 * +(a.re < 0);
} else {
offset = 2 * +(a.im < 0) + 1;
}
}
var arg = a.arg();
var abs2 = a.abs();
var roots = [];
var r = Math.pow(abs2, 1 / root);
for (var k = 0; k < root; k++) {
var halfPiFactor = (offset + 4 * k) / root;
if (halfPiFactor === Math.round(halfPiFactor)) {
roots.push(_calculateExactResult[halfPiFactor % 4](r));
continue;
}
roots.push(new Complex2({
r,
phi: (arg + 2 * Math.PI * k) / root
}));
}
return roots;
}
return typed2(name129, {
Complex: function Complex3(x) {
return _nthComplexRoots(x, 2);
},
"Complex, number": _nthComplexRoots
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/dotPow.js
var name130 = "dotPow";
var dependencies130 = ["typed", "equalScalar", "matrix", "pow", "DenseMatrix", "concat"];
var createDotPow = /* @__PURE__ */ factory(name130, dependencies130, (_ref) => {
var {
typed: typed2,
equalScalar,
matrix,
pow: pow2,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var powScalarSignatures = {};
for (var signature in pow2.signatures) {
if (Object.prototype.hasOwnProperty.call(pow2.signatures, signature)) {
if (!signature.includes("Matrix") && !signature.includes("Array")) {
powScalarSignatures[signature] = pow2.signatures[signature];
}
}
}
var powScalar = typed2(powScalarSignatures);
return typed2(name130, matrixAlgorithmSuite({
elop: powScalar,
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo11xS0s,
sS: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/arithmetic/dotDivide.js
var name131 = "dotDivide";
var dependencies131 = ["typed", "matrix", "equalScalar", "divideScalar", "DenseMatrix", "concat"];
var createDotDivide = /* @__PURE__ */ factory(name131, dependencies131, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
divideScalar,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name131, matrixAlgorithmSuite({
elop: divideScalar,
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
SD: matAlgo02xDS0,
Ss: matAlgo11xS0s,
sS: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/algebra/solver/utils/solveValidation.js
function createSolveValidation(_ref) {
var {
DenseMatrix
} = _ref;
return function solveValidation(m, b, copy) {
var mSize = m.size();
if (mSize.length !== 2) {
throw new RangeError("Matrix must be two dimensional (size: " + format3(mSize) + ")");
}
var rows = mSize[0];
var columns = mSize[1];
if (rows !== columns) {
throw new RangeError("Matrix must be square (size: " + format3(mSize) + ")");
}
var data = [];
if (isMatrix(b)) {
var bSize = b.size();
var bdata = b._data;
if (bSize.length === 1) {
if (bSize[0] !== rows) {
throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");
}
for (var i = 0; i < rows; i++) {
data[i] = [bdata[i]];
}
return new DenseMatrix({
data,
size: [rows, 1],
datatype: b._datatype
});
}
if (bSize.length === 2) {
if (bSize[0] !== rows || bSize[1] !== 1) {
throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");
}
if (isDenseMatrix(b)) {
if (copy) {
data = [];
for (var _i = 0; _i < rows; _i++) {
data[_i] = [bdata[_i][0]];
}
return new DenseMatrix({
data,
size: [rows, 1],
datatype: b._datatype
});
}
return b;
}
if (isSparseMatrix(b)) {
for (var _i2 = 0; _i2 < rows; _i2++) {
data[_i2] = [0];
}
var values2 = b._values;
var index = b._index;
var ptr = b._ptr;
for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {
var _i3 = index[k];
data[_i3][0] = values2[k];
}
return new DenseMatrix({
data,
size: [rows, 1],
datatype: b._datatype
});
}
}
throw new RangeError("Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.");
}
if (isArray(b)) {
var bsize = arraySize(b);
if (bsize.length === 1) {
if (bsize[0] !== rows) {
throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");
}
for (var _i4 = 0; _i4 < rows; _i4++) {
data[_i4] = [b[_i4]];
}
return new DenseMatrix({
data,
size: [rows, 1]
});
}
if (bsize.length === 2) {
if (bsize[0] !== rows || bsize[1] !== 1) {
throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");
}
for (var _i5 = 0; _i5 < rows; _i5++) {
data[_i5] = [b[_i5][0]];
}
return new DenseMatrix({
data,
size: [rows, 1]
});
}
throw new RangeError("Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.");
}
};
}
// node_modules/mathjs/lib/esm/function/algebra/solver/lsolve.js
var name132 = "lsolve";
var dependencies132 = ["typed", "matrix", "divideScalar", "multiplyScalar", "subtract", "equalScalar", "DenseMatrix"];
var createLsolve = /* @__PURE__ */ factory(name132, dependencies132, (_ref) => {
var {
typed: typed2,
matrix,
divideScalar,
multiplyScalar,
subtract,
equalScalar,
DenseMatrix
} = _ref;
var solveValidation = createSolveValidation({
DenseMatrix
});
return typed2(name132, {
"SparseMatrix, Array | Matrix": function SparseMatrixArrayMatrix(m, b) {
return _sparseForwardSubstitution(m, b);
},
"DenseMatrix, Array | Matrix": function DenseMatrixArrayMatrix(m, b) {
return _denseForwardSubstitution(m, b);
},
"Array, Array | Matrix": function ArrayArrayMatrix(a, b) {
var m = matrix(a);
var r = _denseForwardSubstitution(m, b);
return r.valueOf();
}
});
function _denseForwardSubstitution(m, b) {
b = solveValidation(m, b, true);
var bdata = b._data;
var rows = m._size[0];
var columns = m._size[1];
var x = [];
var mdata = m._data;
for (var j = 0; j < columns; j++) {
var bj = bdata[j][0] || 0;
var xj = void 0;
if (!equalScalar(bj, 0)) {
var vjj = mdata[j][j];
if (equalScalar(vjj, 0)) {
throw new Error("Linear system cannot be solved since matrix is singular");
}
xj = divideScalar(bj, vjj);
for (var i = j + 1; i < rows; i++) {
bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
}
} else {
xj = 0;
}
x[j] = [xj];
}
return new DenseMatrix({
data: x,
size: [rows, 1]
});
}
function _sparseForwardSubstitution(m, b) {
b = solveValidation(m, b, true);
var bdata = b._data;
var rows = m._size[0];
var columns = m._size[1];
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
var x = [];
for (var j = 0; j < columns; j++) {
var bj = bdata[j][0] || 0;
if (!equalScalar(bj, 0)) {
var vjj = 0;
var jValues = [];
var jIndices = [];
var firstIndex = ptr[j];
var lastIndex = ptr[j + 1];
for (var k = firstIndex; k < lastIndex; k++) {
var i = index[k];
if (i === j) {
vjj = values2[k];
} else if (i > j) {
jValues.push(values2[k]);
jIndices.push(i);
}
}
if (equalScalar(vjj, 0)) {
throw new Error("Linear system cannot be solved since matrix is singular");
}
var xj = divideScalar(bj, vjj);
for (var _k = 0, l = jIndices.length; _k < l; _k++) {
var _i = jIndices[_k];
bdata[_i] = [subtract(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];
}
x[j] = [xj];
} else {
x[j] = [0];
}
}
return new DenseMatrix({
data: x,
size: [rows, 1]
});
}
});
// node_modules/mathjs/lib/esm/function/algebra/solver/usolve.js
var name133 = "usolve";
var dependencies133 = ["typed", "matrix", "divideScalar", "multiplyScalar", "subtract", "equalScalar", "DenseMatrix"];
var createUsolve = /* @__PURE__ */ factory(name133, dependencies133, (_ref) => {
var {
typed: typed2,
matrix,
divideScalar,
multiplyScalar,
subtract,
equalScalar,
DenseMatrix
} = _ref;
var solveValidation = createSolveValidation({
DenseMatrix
});
return typed2(name133, {
"SparseMatrix, Array | Matrix": function SparseMatrixArrayMatrix(m, b) {
return _sparseBackwardSubstitution(m, b);
},
"DenseMatrix, Array | Matrix": function DenseMatrixArrayMatrix(m, b) {
return _denseBackwardSubstitution(m, b);
},
"Array, Array | Matrix": function ArrayArrayMatrix(a, b) {
var m = matrix(a);
var r = _denseBackwardSubstitution(m, b);
return r.valueOf();
}
});
function _denseBackwardSubstitution(m, b) {
b = solveValidation(m, b, true);
var bdata = b._data;
var rows = m._size[0];
var columns = m._size[1];
var x = [];
var mdata = m._data;
for (var j = columns - 1; j >= 0; j--) {
var bj = bdata[j][0] || 0;
var xj = void 0;
if (!equalScalar(bj, 0)) {
var vjj = mdata[j][j];
if (equalScalar(vjj, 0)) {
throw new Error("Linear system cannot be solved since matrix is singular");
}
xj = divideScalar(bj, vjj);
for (var i = j - 1; i >= 0; i--) {
bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
}
} else {
xj = 0;
}
x[j] = [xj];
}
return new DenseMatrix({
data: x,
size: [rows, 1]
});
}
function _sparseBackwardSubstitution(m, b) {
b = solveValidation(m, b, true);
var bdata = b._data;
var rows = m._size[0];
var columns = m._size[1];
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
var x = [];
for (var j = columns - 1; j >= 0; j--) {
var bj = bdata[j][0] || 0;
if (!equalScalar(bj, 0)) {
var vjj = 0;
var jValues = [];
var jIndices = [];
var firstIndex = ptr[j];
var lastIndex = ptr[j + 1];
for (var k = lastIndex - 1; k >= firstIndex; k--) {
var i = index[k];
if (i === j) {
vjj = values2[k];
} else if (i < j) {
jValues.push(values2[k]);
jIndices.push(i);
}
}
if (equalScalar(vjj, 0)) {
throw new Error("Linear system cannot be solved since matrix is singular");
}
var xj = divideScalar(bj, vjj);
for (var _k = 0, _lastIndex = jIndices.length; _k < _lastIndex; _k++) {
var _i = jIndices[_k];
bdata[_i] = [subtract(bdata[_i][0], multiplyScalar(xj, jValues[_k]))];
}
x[j] = [xj];
} else {
x[j] = [0];
}
}
return new DenseMatrix({
data: x,
size: [rows, 1]
});
}
});
// node_modules/mathjs/lib/esm/function/algebra/solver/lsolveAll.js
var name134 = "lsolveAll";
var dependencies134 = ["typed", "matrix", "divideScalar", "multiplyScalar", "subtract", "equalScalar", "DenseMatrix"];
var createLsolveAll = /* @__PURE__ */ factory(name134, dependencies134, (_ref) => {
var {
typed: typed2,
matrix,
divideScalar,
multiplyScalar,
subtract,
equalScalar,
DenseMatrix
} = _ref;
var solveValidation = createSolveValidation({
DenseMatrix
});
return typed2(name134, {
"SparseMatrix, Array | Matrix": function SparseMatrixArrayMatrix(m, b) {
return _sparseForwardSubstitution(m, b);
},
"DenseMatrix, Array | Matrix": function DenseMatrixArrayMatrix(m, b) {
return _denseForwardSubstitution(m, b);
},
"Array, Array | Matrix": function ArrayArrayMatrix(a, b) {
var m = matrix(a);
var R = _denseForwardSubstitution(m, b);
return R.map((r) => r.valueOf());
}
});
function _denseForwardSubstitution(m, b_) {
var B = [solveValidation(m, b_, true)._data.map((e2) => e2[0])];
var M = m._data;
var rows = m._size[0];
var columns = m._size[1];
for (var i = 0; i < columns; i++) {
var L = B.length;
for (var k = 0; k < L; k++) {
var b = B[k];
if (!equalScalar(M[i][i], 0)) {
b[i] = divideScalar(b[i], M[i][i]);
for (var j = i + 1; j < columns; j++) {
b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));
}
} else if (!equalScalar(b[i], 0)) {
if (k === 0) {
return [];
} else {
B.splice(k, 1);
k -= 1;
L -= 1;
}
} else if (k === 0) {
var bNew = [...b];
bNew[i] = 1;
for (var _j = i + 1; _j < columns; _j++) {
bNew[_j] = subtract(bNew[_j], M[_j][i]);
}
B.push(bNew);
}
}
}
return B.map((x) => new DenseMatrix({
data: x.map((e2) => [e2]),
size: [rows, 1]
}));
}
function _sparseForwardSubstitution(m, b_) {
var B = [solveValidation(m, b_, true)._data.map((e2) => e2[0])];
var rows = m._size[0];
var columns = m._size[1];
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
for (var i = 0; i < columns; i++) {
var L = B.length;
for (var k = 0; k < L; k++) {
var b = B[k];
var iValues = [];
var iIndices = [];
var firstIndex = ptr[i];
var lastIndex = ptr[i + 1];
var Mii = 0;
for (var j = firstIndex; j < lastIndex; j++) {
var J = index[j];
if (J === i) {
Mii = values2[j];
} else if (J > i) {
iValues.push(values2[j]);
iIndices.push(J);
}
}
if (!equalScalar(Mii, 0)) {
b[i] = divideScalar(b[i], Mii);
for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {
var _J = iIndices[_j2];
b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));
}
} else if (!equalScalar(b[i], 0)) {
if (k === 0) {
return [];
} else {
B.splice(k, 1);
k -= 1;
L -= 1;
}
} else if (k === 0) {
var bNew = [...b];
bNew[i] = 1;
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
var _J2 = iIndices[_j3];
bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);
}
B.push(bNew);
}
}
}
return B.map((x) => new DenseMatrix({
data: x.map((e2) => [e2]),
size: [rows, 1]
}));
}
});
// node_modules/mathjs/lib/esm/function/algebra/solver/usolveAll.js
var name135 = "usolveAll";
var dependencies135 = ["typed", "matrix", "divideScalar", "multiplyScalar", "subtract", "equalScalar", "DenseMatrix"];
var createUsolveAll = /* @__PURE__ */ factory(name135, dependencies135, (_ref) => {
var {
typed: typed2,
matrix,
divideScalar,
multiplyScalar,
subtract,
equalScalar,
DenseMatrix
} = _ref;
var solveValidation = createSolveValidation({
DenseMatrix
});
return typed2(name135, {
"SparseMatrix, Array | Matrix": function SparseMatrixArrayMatrix(m, b) {
return _sparseBackwardSubstitution(m, b);
},
"DenseMatrix, Array | Matrix": function DenseMatrixArrayMatrix(m, b) {
return _denseBackwardSubstitution(m, b);
},
"Array, Array | Matrix": function ArrayArrayMatrix(a, b) {
var m = matrix(a);
var R = _denseBackwardSubstitution(m, b);
return R.map((r) => r.valueOf());
}
});
function _denseBackwardSubstitution(m, b_) {
var B = [solveValidation(m, b_, true)._data.map((e2) => e2[0])];
var M = m._data;
var rows = m._size[0];
var columns = m._size[1];
for (var i = columns - 1; i >= 0; i--) {
var L = B.length;
for (var k = 0; k < L; k++) {
var b = B[k];
if (!equalScalar(M[i][i], 0)) {
b[i] = divideScalar(b[i], M[i][i]);
for (var j = i - 1; j >= 0; j--) {
b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));
}
} else if (!equalScalar(b[i], 0)) {
if (k === 0) {
return [];
} else {
B.splice(k, 1);
k -= 1;
L -= 1;
}
} else if (k === 0) {
var bNew = [...b];
bNew[i] = 1;
for (var _j = i - 1; _j >= 0; _j--) {
bNew[_j] = subtract(bNew[_j], M[_j][i]);
}
B.push(bNew);
}
}
}
return B.map((x) => new DenseMatrix({
data: x.map((e2) => [e2]),
size: [rows, 1]
}));
}
function _sparseBackwardSubstitution(m, b_) {
var B = [solveValidation(m, b_, true)._data.map((e2) => e2[0])];
var rows = m._size[0];
var columns = m._size[1];
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
for (var i = columns - 1; i >= 0; i--) {
var L = B.length;
for (var k = 0; k < L; k++) {
var b = B[k];
var iValues = [];
var iIndices = [];
var firstIndex = ptr[i];
var lastIndex = ptr[i + 1];
var Mii = 0;
for (var j = lastIndex - 1; j >= firstIndex; j--) {
var J = index[j];
if (J === i) {
Mii = values2[j];
} else if (J < i) {
iValues.push(values2[j]);
iIndices.push(J);
}
}
if (!equalScalar(Mii, 0)) {
b[i] = divideScalar(b[i], Mii);
for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {
var _J = iIndices[_j2];
b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));
}
} else if (!equalScalar(b[i], 0)) {
if (k === 0) {
return [];
} else {
B.splice(k, 1);
k -= 1;
L -= 1;
}
} else if (k === 0) {
var bNew = [...b];
bNew[i] = 1;
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
var _J2 = iIndices[_j3];
bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);
}
B.push(bNew);
}
}
}
return B.map((x) => new DenseMatrix({
data: x.map((e2) => [e2]),
size: [rows, 1]
}));
}
});
// node_modules/mathjs/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js
var name136 = "matAlgo08xS0Sid";
var dependencies136 = ["typed", "equalScalar"];
var createMatAlgo08xS0Sid = /* @__PURE__ */ factory(name136, dependencies136, (_ref) => {
var {
typed: typed2,
equalScalar
} = _ref;
return function matAlgo08xS0Sid(a, b, callback) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var adt = a._datatype;
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var bsize = b._size;
var bdt = b._datatype;
if (asize.length !== bsize.length) {
throw new DimensionError(asize.length, bsize.length);
}
if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
throw new RangeError("Dimension mismatch. Matrix A (" + asize + ") must match Matrix B (" + bsize + ")");
}
if (!avalues || !bvalues) {
throw new Error("Cannot perform operation on Pattern Sparse Matrices");
}
var rows = asize[0];
var columns = asize[1];
var dt;
var eq = equalScalar;
var zero = 0;
var cf = callback;
if (typeof adt === "string" && adt === bdt) {
dt = adt;
eq = typed2.find(equalScalar, [dt, dt]);
zero = typed2.convert(0, dt);
cf = typed2.find(callback, [dt, dt]);
}
var cvalues = [];
var cindex = [];
var cptr = [];
var x = [];
var w = [];
var k, k0, k1, i;
for (var j = 0; j < columns; j++) {
cptr[j] = cindex.length;
var mark = j + 1;
for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) {
i = aindex[k];
w[i] = mark;
x[i] = avalues[k];
cindex.push(i);
}
for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) {
i = bindex[k];
if (w[i] === mark) {
x[i] = cf(x[i], bvalues[k]);
}
}
k = cptr[j];
while (k < cindex.length) {
i = cindex[k];
var v = x[i];
if (!eq(v, zero)) {
cvalues.push(v);
k++;
} else {
cindex.splice(k, 1);
}
}
}
cptr[columns] = cindex.length;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [rows, columns],
datatype: dt
});
};
});
// node_modules/mathjs/lib/esm/function/bitwise/useMatrixForArrayScalar.js
var createUseMatrixForArrayScalar = /* @__PURE__ */ factory("useMatrixForArrayScalar", ["typed", "matrix"], (_ref) => {
var {
typed: typed2,
matrix
} = _ref;
return {
"Array, number": typed2.referTo("DenseMatrix, number", (selfDn) => (x, y) => selfDn(matrix(x), y).valueOf()),
"Array, BigNumber": typed2.referTo("DenseMatrix, BigNumber", (selfDB) => (x, y) => selfDB(matrix(x), y).valueOf()),
"number, Array": typed2.referTo("number, DenseMatrix", (selfnD) => (x, y) => selfnD(x, matrix(y)).valueOf()),
"BigNumber, Array": typed2.referTo("BigNumber, DenseMatrix", (selfBD) => (x, y) => selfBD(x, matrix(y)).valueOf())
};
});
// node_modules/mathjs/lib/esm/function/bitwise/leftShift.js
var name137 = "leftShift";
var dependencies137 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat"];
var createLeftShift = /* @__PURE__ */ factory(name137, dependencies137, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo08xS0Sid = createMatAlgo08xS0Sid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var useMatrixForArrayScalar = createUseMatrixForArrayScalar({
typed: typed2,
matrix
});
return typed2(name137, {
"number, number": leftShiftNumber,
"BigNumber, BigNumber": leftShiftBigNumber,
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo14xDs(x, y, self2, false);
}),
"number | BigNumber, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo10xSids(y, x, self2, true);
}),
"number | BigNumber, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo14xDs(y, x, self2, true);
})
}, useMatrixForArrayScalar, matrixAlgorithmSuite({
SS: matAlgo08xS0Sid,
DS: matAlgo01xDSid,
SD: matAlgo02xDS0
}));
});
// node_modules/mathjs/lib/esm/function/bitwise/rightArithShift.js
var name138 = "rightArithShift";
var dependencies138 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat"];
var createRightArithShift = /* @__PURE__ */ factory(name138, dependencies138, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo08xS0Sid = createMatAlgo08xS0Sid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var useMatrixForArrayScalar = createUseMatrixForArrayScalar({
typed: typed2,
matrix
});
return typed2(name138, {
"number, number": rightArithShiftNumber,
"BigNumber, BigNumber": rightArithShiftBigNumber,
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo14xDs(x, y, self2, false);
}),
"number | BigNumber, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo10xSids(y, x, self2, true);
}),
"number | BigNumber, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo14xDs(y, x, self2, true);
})
}, useMatrixForArrayScalar, matrixAlgorithmSuite({
SS: matAlgo08xS0Sid,
DS: matAlgo01xDSid,
SD: matAlgo02xDS0
}));
});
// node_modules/mathjs/lib/esm/function/bitwise/rightLogShift.js
var name139 = "rightLogShift";
var dependencies139 = ["typed", "matrix", "equalScalar", "zeros", "DenseMatrix", "concat"];
var createRightLogShift = /* @__PURE__ */ factory(name139, dependencies139, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
zeros: zeros2,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo08xS0Sid = createMatAlgo08xS0Sid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var useMatrixForArrayScalar = createUseMatrixForArrayScalar({
typed: typed2,
matrix
});
return typed2(name139, {
"number, number": rightLogShiftNumber,
// 'BigNumber, BigNumber': ..., // TODO: implement BigNumber support for rightLogShift
"SparseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, number | BigNumber": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(y, 0)) {
return x.clone();
}
return matAlgo14xDs(x, y, self2, false);
}),
"number | BigNumber, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo10xSids(y, x, self2, true);
}),
"number | BigNumber, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (equalScalar(x, 0)) {
return zeros2(y.size(), y.storage());
}
return matAlgo14xDs(y, x, self2, true);
})
}, useMatrixForArrayScalar, matrixAlgorithmSuite({
SS: matAlgo08xS0Sid,
DS: matAlgo01xDSid,
SD: matAlgo02xDS0
}));
});
// node_modules/mathjs/lib/esm/function/logical/and.js
var name140 = "and";
var dependencies140 = ["typed", "matrix", "equalScalar", "zeros", "not", "concat"];
var createAnd = /* @__PURE__ */ factory(name140, dependencies140, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
zeros: zeros2,
not,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo06xS0S0 = createMatAlgo06xS0S0({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name140, {
"number, number": andNumber,
"Complex, Complex": function ComplexComplex(x, y) {
return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();
},
"Unit, Unit": typed2.referToSelf((self2) => (x, y) => self2(x.value || 0, y.value || 0)),
"SparseMatrix, any": typed2.referToSelf((self2) => (x, y) => {
if (not(y)) {
return zeros2(x.size(), x.storage());
}
return matAlgo11xS0s(x, y, self2, false);
}),
"DenseMatrix, any": typed2.referToSelf((self2) => (x, y) => {
if (not(y)) {
return zeros2(x.size(), x.storage());
}
return matAlgo14xDs(x, y, self2, false);
}),
"any, SparseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (not(x)) {
return zeros2(x.size(), x.storage());
}
return matAlgo11xS0s(y, x, self2, true);
}),
"any, DenseMatrix": typed2.referToSelf((self2) => (x, y) => {
if (not(x)) {
return zeros2(x.size(), x.storage());
}
return matAlgo14xDs(y, x, self2, true);
}),
"Array, any": typed2.referToSelf((self2) => (x, y) => {
return self2(matrix(x), y).valueOf();
}),
"any, Array": typed2.referToSelf((self2) => (x, y) => {
return self2(x, matrix(y)).valueOf();
})
}, matrixAlgorithmSuite({
SS: matAlgo06xS0S0,
DS: matAlgo02xDS0
}));
});
// node_modules/mathjs/lib/esm/function/relational/compare.js
var name141 = "compare";
var dependencies141 = ["typed", "config", "matrix", "equalScalar", "BigNumber", "Fraction", "DenseMatrix", "concat"];
var createCompare = /* @__PURE__ */ factory(name141, dependencies141, (_ref) => {
var {
typed: typed2,
config: config2,
equalScalar,
matrix,
BigNumber,
Fraction: Fraction2,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo05xSfSf = createMatAlgo05xSfSf({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name141, createCompareNumber({
typed: typed2,
config: config2
}), {
"boolean, boolean": function booleanBoolean(x, y) {
return x === y ? 0 : x > y ? 1 : -1;
},
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return nearlyEqual2(x, y, config2.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));
},
"Fraction, Fraction": function FractionFraction(x, y) {
return new Fraction2(x.compare(y));
},
"Complex, Complex": function ComplexComplex() {
throw new TypeError("No ordering relation is defined for complex numbers");
}
}, compareUnits, matrixAlgorithmSuite({
SS: matAlgo05xSfSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createCompareNumber = /* @__PURE__ */ factory(name141, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name141, {
"number, number": function numberNumber(x, y) {
return nearlyEqual(x, y, config2.epsilon) ? 0 : x > y ? 1 : -1;
}
});
});
// node_modules/mathjs/lib/esm/function/relational/compareNatural.js
var import_javascript_natural_sort = __toESM(require_naturalSort(), 1);
var name142 = "compareNatural";
var dependencies142 = ["typed", "compare"];
var createCompareNatural = /* @__PURE__ */ factory(name142, dependencies142, (_ref) => {
var {
typed: typed2,
compare
} = _ref;
var compareBooleans = compare.signatures["boolean,boolean"];
return typed2(name142, {
"any, any": _compareNatural
});
function _compareNatural(x, y) {
var typeX = typeOf(x);
var typeY = typeOf(y);
var c;
if ((typeX === "number" || typeX === "BigNumber" || typeX === "Fraction") && (typeY === "number" || typeY === "BigNumber" || typeY === "Fraction")) {
c = compare(x, y);
if (c.toString() !== "0") {
return c > 0 ? 1 : -1;
} else {
return (0, import_javascript_natural_sort.default)(typeX, typeY);
}
}
var matTypes = ["Array", "DenseMatrix", "SparseMatrix"];
if (matTypes.includes(typeX) || matTypes.includes(typeY)) {
c = compareMatricesAndArrays(_compareNatural, x, y);
if (c !== 0) {
return c;
} else {
return (0, import_javascript_natural_sort.default)(typeX, typeY);
}
}
if (typeX !== typeY) {
return (0, import_javascript_natural_sort.default)(typeX, typeY);
}
if (typeX === "Complex") {
return compareComplexNumbers(x, y);
}
if (typeX === "Unit") {
if (x.equalBase(y)) {
return _compareNatural(x.value, y.value);
}
return compareArrays(_compareNatural, x.formatUnits(), y.formatUnits());
}
if (typeX === "boolean") {
return compareBooleans(x, y);
}
if (typeX === "string") {
return (0, import_javascript_natural_sort.default)(x, y);
}
if (typeX === "Object") {
return compareObjects(_compareNatural, x, y);
}
if (typeX === "null") {
return 0;
}
if (typeX === "undefined") {
return 0;
}
throw new TypeError('Unsupported type of value "' + typeX + '"');
}
function compareMatricesAndArrays(compareNatural, x, y) {
if (isSparseMatrix(x) && isSparseMatrix(y)) {
return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);
}
if (isSparseMatrix(x)) {
return compareMatricesAndArrays(compareNatural, x.toArray(), y);
}
if (isSparseMatrix(y)) {
return compareMatricesAndArrays(compareNatural, x, y.toArray());
}
if (isDenseMatrix(x)) {
return compareMatricesAndArrays(compareNatural, x.toJSON().data, y);
}
if (isDenseMatrix(y)) {
return compareMatricesAndArrays(compareNatural, x, y.toJSON().data);
}
if (!Array.isArray(x)) {
return compareMatricesAndArrays(compareNatural, [x], y);
}
if (!Array.isArray(y)) {
return compareMatricesAndArrays(compareNatural, x, [y]);
}
return compareArrays(compareNatural, x, y);
}
function compareArrays(compareNatural, x, y) {
for (var i = 0, ii = Math.min(x.length, y.length); i < ii; i++) {
var v = compareNatural(x[i], y[i]);
if (v !== 0) {
return v;
}
}
if (x.length > y.length) {
return 1;
}
if (x.length < y.length) {
return -1;
}
return 0;
}
function compareObjects(compareNatural, x, y) {
var keysX = Object.keys(x);
var keysY = Object.keys(y);
keysX.sort(import_javascript_natural_sort.default);
keysY.sort(import_javascript_natural_sort.default);
var c = compareArrays(compareNatural, keysX, keysY);
if (c !== 0) {
return c;
}
for (var i = 0; i < keysX.length; i++) {
var v = compareNatural(x[keysX[i]], y[keysY[i]]);
if (v !== 0) {
return v;
}
}
return 0;
}
});
function compareComplexNumbers(x, y) {
if (x.re > y.re) {
return 1;
}
if (x.re < y.re) {
return -1;
}
if (x.im > y.im) {
return 1;
}
if (x.im < y.im) {
return -1;
}
return 0;
}
// node_modules/mathjs/lib/esm/function/relational/compareText.js
var name143 = "compareText";
var dependencies143 = ["typed", "matrix", "concat"];
compareText.signature = "any, any";
var createCompareText = /* @__PURE__ */ factory(name143, dependencies143, (_ref) => {
var {
typed: typed2,
matrix,
concat: concat2
} = _ref;
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name143, compareText, matrixAlgorithmSuite({
elop: compareText,
Ds: true
}));
});
// node_modules/mathjs/lib/esm/function/relational/equal.js
var name144 = "equal";
var dependencies144 = ["typed", "matrix", "equalScalar", "DenseMatrix", "concat"];
var createEqual = /* @__PURE__ */ factory(name144, dependencies144, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name144, createEqualNumber({
typed: typed2,
equalScalar
}), matrixAlgorithmSuite({
elop: equalScalar,
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createEqualNumber = factory(name144, ["typed", "equalScalar"], (_ref2) => {
var {
typed: typed2,
equalScalar
} = _ref2;
return typed2(name144, {
"any, any": function anyAny(x, y) {
if (x === null) {
return y === null;
}
if (y === null) {
return x === null;
}
if (x === void 0) {
return y === void 0;
}
if (y === void 0) {
return x === void 0;
}
return equalScalar(x, y);
}
});
});
// node_modules/mathjs/lib/esm/function/relational/equalText.js
var name145 = "equalText";
var dependencies145 = ["typed", "compareText", "isZero"];
var createEqualText = /* @__PURE__ */ factory(name145, dependencies145, (_ref) => {
var {
typed: typed2,
compareText: compareText2,
isZero
} = _ref;
return typed2(name145, {
"any, any": function anyAny(x, y) {
return isZero(compareText2(x, y));
}
});
});
// node_modules/mathjs/lib/esm/function/relational/smaller.js
var name146 = "smaller";
var dependencies146 = ["typed", "config", "matrix", "DenseMatrix", "concat"];
var createSmaller = /* @__PURE__ */ factory(name146, dependencies146, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name146, createSmallerNumber({
typed: typed2,
config: config2
}), {
"boolean, boolean": (x, y) => x < y,
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.lt(y) && !nearlyEqual2(x, y, config2.epsilon);
},
"Fraction, Fraction": (x, y) => x.compare(y) === -1,
"Complex, Complex": function ComplexComplex(x, y) {
throw new TypeError("No ordering relation is defined for complex numbers");
}
}, compareUnits, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createSmallerNumber = /* @__PURE__ */ factory(name146, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name146, {
"number, number": function numberNumber(x, y) {
return x < y && !nearlyEqual(x, y, config2.epsilon);
}
});
});
// node_modules/mathjs/lib/esm/function/relational/smallerEq.js
var name147 = "smallerEq";
var dependencies147 = ["typed", "config", "matrix", "DenseMatrix", "concat"];
var createSmallerEq = /* @__PURE__ */ factory(name147, dependencies147, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name147, createSmallerEqNumber({
typed: typed2,
config: config2
}), {
"boolean, boolean": (x, y) => x <= y,
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.lte(y) || nearlyEqual2(x, y, config2.epsilon);
},
"Fraction, Fraction": (x, y) => x.compare(y) !== 1,
"Complex, Complex": function ComplexComplex() {
throw new TypeError("No ordering relation is defined for complex numbers");
}
}, compareUnits, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createSmallerEqNumber = /* @__PURE__ */ factory(name147, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name147, {
"number, number": function numberNumber(x, y) {
return x <= y || nearlyEqual(x, y, config2.epsilon);
}
});
});
// node_modules/mathjs/lib/esm/function/relational/larger.js
var name148 = "larger";
var dependencies148 = ["typed", "config", "matrix", "DenseMatrix", "concat"];
var createLarger = /* @__PURE__ */ factory(name148, dependencies148, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name148, createLargerNumber({
typed: typed2,
config: config2
}), {
"boolean, boolean": (x, y) => x > y,
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.gt(y) && !nearlyEqual2(x, y, config2.epsilon);
},
"Fraction, Fraction": (x, y) => x.compare(y) === 1,
"Complex, Complex": function ComplexComplex() {
throw new TypeError("No ordering relation is defined for complex numbers");
}
}, compareUnits, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createLargerNumber = /* @__PURE__ */ factory(name148, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name148, {
"number, number": function numberNumber(x, y) {
return x > y && !nearlyEqual(x, y, config2.epsilon);
}
});
});
// node_modules/mathjs/lib/esm/function/relational/largerEq.js
var name149 = "largerEq";
var dependencies149 = ["typed", "config", "matrix", "DenseMatrix", "concat"];
var createLargerEq = /* @__PURE__ */ factory(name149, dependencies149, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
var compareUnits = createCompareUnits({
typed: typed2
});
return typed2(name149, createLargerEqNumber({
typed: typed2,
config: config2
}), {
"boolean, boolean": (x, y) => x >= y,
"BigNumber, BigNumber": function BigNumberBigNumber(x, y) {
return x.gte(y) || nearlyEqual2(x, y, config2.epsilon);
},
"Fraction, Fraction": (x, y) => x.compare(y) !== -1,
"Complex, Complex": function ComplexComplex() {
throw new TypeError("No ordering relation is defined for complex numbers");
}
}, compareUnits, matrixAlgorithmSuite({
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
});
var createLargerEqNumber = /* @__PURE__ */ factory(name149, ["typed", "config"], (_ref2) => {
var {
typed: typed2,
config: config2
} = _ref2;
return typed2(name149, {
"number, number": function numberNumber(x, y) {
return x >= y || nearlyEqual(x, y, config2.epsilon);
}
});
});
// node_modules/mathjs/lib/esm/function/relational/deepEqual.js
var name150 = "deepEqual";
var dependencies150 = ["typed", "equal"];
var createDeepEqual = /* @__PURE__ */ factory(name150, dependencies150, (_ref) => {
var {
typed: typed2,
equal
} = _ref;
return typed2(name150, {
"any, any": function anyAny(x, y) {
return _deepEqual(x.valueOf(), y.valueOf());
}
});
function _deepEqual(x, y) {
if (Array.isArray(x)) {
if (Array.isArray(y)) {
var len = x.length;
if (len !== y.length) {
return false;
}
for (var i = 0; i < len; i++) {
if (!_deepEqual(x[i], y[i])) {
return false;
}
}
return true;
} else {
return false;
}
} else {
if (Array.isArray(y)) {
return false;
} else {
return equal(x, y);
}
}
}
});
// node_modules/mathjs/lib/esm/function/relational/unequal.js
var name151 = "unequal";
var dependencies151 = ["typed", "config", "equalScalar", "matrix", "DenseMatrix", "concat"];
var createUnequal = /* @__PURE__ */ factory(name151, dependencies151, (_ref) => {
var {
typed: typed2,
config: config2,
equalScalar,
matrix,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo07xSSf = createMatAlgo07xSSf({
typed: typed2,
DenseMatrix
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name151, createUnequalNumber({
typed: typed2,
equalScalar
}), matrixAlgorithmSuite({
elop: _unequal,
SS: matAlgo07xSSf,
DS: matAlgo03xDSf,
Ss: matAlgo12xSfs
}));
function _unequal(x, y) {
return !equalScalar(x, y);
}
});
var createUnequalNumber = factory(name151, ["typed", "equalScalar"], (_ref2) => {
var {
typed: typed2,
equalScalar
} = _ref2;
return typed2(name151, {
"any, any": function anyAny(x, y) {
if (x === null) {
return y !== null;
}
if (y === null) {
return x !== null;
}
if (x === void 0) {
return y !== void 0;
}
if (y === void 0) {
return x !== void 0;
}
return !equalScalar(x, y);
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/partitionSelect.js
var name152 = "partitionSelect";
var dependencies152 = ["typed", "isNumeric", "isNaN", "compare"];
var createPartitionSelect = /* @__PURE__ */ factory(name152, dependencies152, (_ref) => {
var {
typed: typed2,
isNumeric,
isNaN: isNaN2,
compare
} = _ref;
var asc = compare;
var desc = (a, b) => -compare(a, b);
return typed2(name152, {
"Array | Matrix, number": function ArrayMatrixNumber(x, k) {
return _partitionSelect(x, k, asc);
},
"Array | Matrix, number, string": function ArrayMatrixNumberString(x, k, compare2) {
if (compare2 === "asc") {
return _partitionSelect(x, k, asc);
} else if (compare2 === "desc") {
return _partitionSelect(x, k, desc);
} else {
throw new Error('Compare string must be "asc" or "desc"');
}
},
"Array | Matrix, number, function": _partitionSelect
});
function _partitionSelect(x, k, compare2) {
if (!isInteger(k) || k < 0) {
throw new Error("k must be a non-negative integer");
}
if (isMatrix(x)) {
var size = x.size();
if (size.length > 1) {
throw new Error("Only one dimensional matrices supported");
}
return quickSelect(x.valueOf(), k, compare2);
}
if (Array.isArray(x)) {
return quickSelect(x, k, compare2);
}
}
function quickSelect(arr, k, compare2) {
if (k >= arr.length) {
throw new Error("k out of bounds");
}
for (var i = 0; i < arr.length; i++) {
if (isNumeric(arr[i]) && isNaN2(arr[i])) {
return arr[i];
}
}
var from = 0;
var to = arr.length - 1;
while (from < to) {
var r = from;
var w = to;
var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from];
while (r < w) {
if (compare2(arr[r], pivot) >= 0) {
var tmp = arr[w];
arr[w] = arr[r];
arr[r] = tmp;
--w;
} else {
++r;
}
}
if (compare2(arr[r], pivot) > 0) {
--r;
}
if (k <= r) {
to = r;
} else {
from = r + 1;
}
}
return arr[k];
}
});
// node_modules/mathjs/lib/esm/function/matrix/sort.js
var name153 = "sort";
var dependencies153 = ["typed", "matrix", "compare", "compareNatural"];
var createSort = /* @__PURE__ */ factory(name153, dependencies153, (_ref) => {
var {
typed: typed2,
matrix,
compare,
compareNatural
} = _ref;
var compareAsc = compare;
var compareDesc = (a, b) => -compare(a, b);
return typed2(name153, {
Array: function Array2(x) {
_arrayIsVector(x);
return x.sort(compareAsc);
},
Matrix: function Matrix(x) {
_matrixIsVector(x);
return matrix(x.toArray().sort(compareAsc), x.storage());
},
"Array, function": function ArrayFunction(x, _comparator2) {
_arrayIsVector(x);
return x.sort(_comparator2);
},
"Matrix, function": function MatrixFunction(x, _comparator2) {
_matrixIsVector(x);
return matrix(x.toArray().sort(_comparator2), x.storage());
},
"Array, string": function ArrayString(x, order) {
_arrayIsVector(x);
return x.sort(_comparator(order));
},
"Matrix, string": function MatrixString(x, order) {
_matrixIsVector(x);
return matrix(x.toArray().sort(_comparator(order)), x.storage());
}
});
function _comparator(order) {
if (order === "asc") {
return compareAsc;
} else if (order === "desc") {
return compareDesc;
} else if (order === "natural") {
return compareNatural;
} else {
throw new Error('String "asc", "desc", or "natural" expected');
}
}
function _arrayIsVector(array) {
if (arraySize(array).length !== 1) {
throw new Error("One dimensional array expected");
}
}
function _matrixIsVector(matrix2) {
if (matrix2.size().length !== 1) {
throw new Error("One dimensional matrix expected");
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/max.js
var name154 = "max";
var dependencies154 = ["typed", "config", "numeric", "larger"];
var createMax = /* @__PURE__ */ factory(name154, dependencies154, (_ref) => {
var {
typed: typed2,
config: config2,
numeric: numeric2,
larger
} = _ref;
return typed2(name154, {
// max([a, b, c, d, ...])
"Array | Matrix": _max,
// max([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": function ArrayMatrixNumberBigNumber(array, dim) {
return reduce(array, dim.valueOf(), _largest);
},
// max(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("Scalar values expected in function max");
}
return _max(args);
}
});
function _largest(x, y) {
try {
return larger(x, y) ? x : y;
} catch (err) {
throw improveErrorMessage(err, "max", y);
}
}
function _max(array) {
var res;
deepForEach(array, function(value) {
try {
if (isNaN(value) && typeof value === "number") {
res = NaN;
} else if (res === void 0 || larger(value, res)) {
res = value;
}
} catch (err) {
throw improveErrorMessage(err, "max", value);
}
});
if (res === void 0) {
throw new Error("Cannot calculate max of an empty array");
}
if (typeof res === "string") {
res = numeric2(res, config2.number);
}
return res;
}
});
// node_modules/mathjs/lib/esm/function/statistics/min.js
var name155 = "min";
var dependencies155 = ["typed", "config", "numeric", "smaller"];
var createMin = /* @__PURE__ */ factory(name155, dependencies155, (_ref) => {
var {
typed: typed2,
config: config2,
numeric: numeric2,
smaller
} = _ref;
return typed2(name155, {
// min([a, b, c, d, ...])
"Array | Matrix": _min,
// min([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": function ArrayMatrixNumberBigNumber(array, dim) {
return reduce(array, dim.valueOf(), _smallest);
},
// min(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("Scalar values expected in function min");
}
return _min(args);
}
});
function _smallest(x, y) {
try {
return smaller(x, y) ? x : y;
} catch (err) {
throw improveErrorMessage(err, "min", y);
}
}
function _min(array) {
var min2;
deepForEach(array, function(value) {
try {
if (isNaN(value) && typeof value === "number") {
min2 = NaN;
} else if (min2 === void 0 || smaller(value, min2)) {
min2 = value;
}
} catch (err) {
throw improveErrorMessage(err, "min", value);
}
});
if (min2 === void 0) {
throw new Error("Cannot calculate min of an empty array");
}
if (typeof min2 === "string") {
min2 = numeric2(min2, config2.number);
}
return min2;
}
});
// node_modules/mathjs/lib/esm/type/matrix/ImmutableDenseMatrix.js
var name156 = "ImmutableDenseMatrix";
var dependencies156 = ["smaller", "DenseMatrix"];
var createImmutableDenseMatrixClass = /* @__PURE__ */ factory(name156, dependencies156, (_ref) => {
var {
smaller,
DenseMatrix
} = _ref;
function ImmutableDenseMatrix(data, datatype) {
if (!(this instanceof ImmutableDenseMatrix)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
if (datatype && !isString(datatype)) {
throw new Error("Invalid datatype: " + datatype);
}
if (isMatrix(data) || isArray(data)) {
var matrix = new DenseMatrix(data, datatype);
this._data = matrix._data;
this._size = matrix._size;
this._datatype = matrix._datatype;
this._min = null;
this._max = null;
} else if (data && isArray(data.data) && isArray(data.size)) {
this._data = data.data;
this._size = data.size;
this._datatype = data.datatype;
this._min = typeof data.min !== "undefined" ? data.min : null;
this._max = typeof data.max !== "undefined" ? data.max : null;
} else if (data) {
throw new TypeError("Unsupported type of data (" + typeOf(data) + ")");
} else {
this._data = [];
this._size = [0];
this._datatype = datatype;
this._min = null;
this._max = null;
}
}
ImmutableDenseMatrix.prototype = new DenseMatrix();
ImmutableDenseMatrix.prototype.type = "ImmutableDenseMatrix";
ImmutableDenseMatrix.prototype.isImmutableDenseMatrix = true;
ImmutableDenseMatrix.prototype.subset = function(index) {
switch (arguments.length) {
case 1: {
var m = DenseMatrix.prototype.subset.call(this, index);
if (isMatrix(m)) {
return new ImmutableDenseMatrix({
data: m._data,
size: m._size,
datatype: m._datatype
});
}
return m;
}
case 2:
case 3:
throw new Error("Cannot invoke set subset on an Immutable Matrix instance");
default:
throw new SyntaxError("Wrong number of arguments");
}
};
ImmutableDenseMatrix.prototype.set = function() {
throw new Error("Cannot invoke set on an Immutable Matrix instance");
};
ImmutableDenseMatrix.prototype.resize = function() {
throw new Error("Cannot invoke resize on an Immutable Matrix instance");
};
ImmutableDenseMatrix.prototype.reshape = function() {
throw new Error("Cannot invoke reshape on an Immutable Matrix instance");
};
ImmutableDenseMatrix.prototype.clone = function() {
return new ImmutableDenseMatrix({
data: clone(this._data),
size: clone(this._size),
datatype: this._datatype
});
};
ImmutableDenseMatrix.prototype.toJSON = function() {
return {
mathjs: "ImmutableDenseMatrix",
data: this._data,
size: this._size,
datatype: this._datatype
};
};
ImmutableDenseMatrix.fromJSON = function(json) {
return new ImmutableDenseMatrix(json);
};
ImmutableDenseMatrix.prototype.swapRows = function() {
throw new Error("Cannot invoke swapRows on an Immutable Matrix instance");
};
ImmutableDenseMatrix.prototype.min = function() {
if (this._min === null) {
var m = null;
this.forEach(function(v) {
if (m === null || smaller(v, m)) {
m = v;
}
});
this._min = m !== null ? m : void 0;
}
return this._min;
};
ImmutableDenseMatrix.prototype.max = function() {
if (this._max === null) {
var m = null;
this.forEach(function(v) {
if (m === null || smaller(m, v)) {
m = v;
}
});
this._max = m !== null ? m : void 0;
}
return this._max;
};
return ImmutableDenseMatrix;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/matrix/MatrixIndex.js
var name157 = "Index";
var dependencies157 = ["ImmutableDenseMatrix", "getMatrixDataType"];
var createIndexClass = /* @__PURE__ */ factory(name157, dependencies157, (_ref) => {
var {
ImmutableDenseMatrix,
getMatrixDataType
} = _ref;
function Index(ranges) {
if (!(this instanceof Index)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
this._dimensions = [];
this._sourceSize = [];
this._isScalar = true;
for (var i = 0, ii = arguments.length; i < ii; i++) {
var arg = arguments[i];
var argIsArray = isArray(arg);
var argIsMatrix = isMatrix(arg);
var sourceSize = null;
if (isRange(arg)) {
this._dimensions.push(arg);
this._isScalar = false;
} else if (argIsArray || argIsMatrix) {
var m = void 0;
if (getMatrixDataType(arg) === "boolean") {
if (argIsArray)
m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg).valueOf());
if (argIsMatrix)
m = _createImmutableMatrix(_booleansArrayToNumbersForIndex(arg._data).valueOf());
sourceSize = arg.valueOf().length;
} else {
m = _createImmutableMatrix(arg.valueOf());
}
this._dimensions.push(m);
var size = m.size();
if (size.length !== 1 || size[0] !== 1 || sourceSize !== null) {
this._isScalar = false;
}
} else if (typeof arg === "number") {
this._dimensions.push(_createImmutableMatrix([arg]));
} else if (typeof arg === "string") {
this._dimensions.push(arg);
} else {
throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");
}
this._sourceSize.push(sourceSize);
}
}
Index.prototype.type = "Index";
Index.prototype.isIndex = true;
function _createImmutableMatrix(arg) {
for (var i = 0, l = arg.length; i < l; i++) {
if (typeof arg[i] !== "number" || !isInteger(arg[i])) {
throw new TypeError("Index parameters must be positive integer numbers");
}
}
return new ImmutableDenseMatrix(arg);
}
Index.prototype.clone = function() {
var index = new Index();
index._dimensions = clone(this._dimensions);
index._isScalar = this._isScalar;
index._sourceSize = this._sourceSize;
return index;
};
Index.create = function(ranges) {
var index = new Index();
Index.apply(index, ranges);
return index;
};
Index.prototype.size = function() {
var size = [];
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
var d = this._dimensions[i];
size[i] = typeof d === "string" ? 1 : d.size()[0];
}
return size;
};
Index.prototype.max = function() {
var values2 = [];
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
var range = this._dimensions[i];
values2[i] = typeof range === "string" ? range : range.max();
}
return values2;
};
Index.prototype.min = function() {
var values2 = [];
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
var range = this._dimensions[i];
values2[i] = typeof range === "string" ? range : range.min();
}
return values2;
};
Index.prototype.forEach = function(callback) {
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
callback(this._dimensions[i], i, this);
}
};
Index.prototype.dimension = function(dim) {
return this._dimensions[dim] || null;
};
Index.prototype.isObjectProperty = function() {
return this._dimensions.length === 1 && typeof this._dimensions[0] === "string";
};
Index.prototype.getObjectProperty = function() {
return this.isObjectProperty() ? this._dimensions[0] : null;
};
Index.prototype.isScalar = function() {
return this._isScalar;
};
Index.prototype.toArray = function() {
var array = [];
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
var dimension = this._dimensions[i];
array.push(typeof dimension === "string" ? dimension : dimension.toArray());
}
return array;
};
Index.prototype.valueOf = Index.prototype.toArray;
Index.prototype.toString = function() {
var strings = [];
for (var i = 0, ii = this._dimensions.length; i < ii; i++) {
var dimension = this._dimensions[i];
if (typeof dimension === "string") {
strings.push(JSON.stringify(dimension));
} else {
strings.push(dimension.toString());
}
}
return "[" + strings.join(", ") + "]";
};
Index.prototype.toJSON = function() {
return {
mathjs: "Index",
dimensions: this._dimensions
};
};
Index.fromJSON = function(json) {
return Index.create(json.dimensions);
};
return Index;
}, {
isClass: true
});
function _booleansArrayToNumbersForIndex(booleanArrayIndex) {
var indexOfNumbers = [];
booleanArrayIndex.forEach((bool, idx) => {
if (bool) {
indexOfNumbers.push(idx);
}
});
return indexOfNumbers;
}
// node_modules/mathjs/lib/esm/type/matrix/FibonacciHeap.js
var name158 = "FibonacciHeap";
var dependencies158 = ["smaller", "larger"];
var createFibonacciHeapClass = /* @__PURE__ */ factory(name158, dependencies158, (_ref) => {
var {
smaller,
larger
} = _ref;
var oneOverLogPhi = 1 / Math.log((1 + Math.sqrt(5)) / 2);
function FibonacciHeap() {
if (!(this instanceof FibonacciHeap)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
this._minimum = null;
this._size = 0;
}
FibonacciHeap.prototype.type = "FibonacciHeap";
FibonacciHeap.prototype.isFibonacciHeap = true;
FibonacciHeap.prototype.insert = function(key, value) {
var node = {
key,
value,
degree: 0
};
if (this._minimum) {
var minimum = this._minimum;
node.left = minimum;
node.right = minimum.right;
minimum.right = node;
node.right.left = node;
if (smaller(key, minimum.key)) {
this._minimum = node;
}
} else {
node.left = node;
node.right = node;
this._minimum = node;
}
this._size++;
return node;
};
FibonacciHeap.prototype.size = function() {
return this._size;
};
FibonacciHeap.prototype.clear = function() {
this._minimum = null;
this._size = 0;
};
FibonacciHeap.prototype.isEmpty = function() {
return this._size === 0;
};
FibonacciHeap.prototype.extractMinimum = function() {
var node = this._minimum;
if (node === null) {
return node;
}
var minimum = this._minimum;
var numberOfChildren = node.degree;
var x = node.child;
while (numberOfChildren > 0) {
var tempRight = x.right;
x.left.right = x.right;
x.right.left = x.left;
x.left = minimum;
x.right = minimum.right;
minimum.right = x;
x.right.left = x;
x.parent = null;
x = tempRight;
numberOfChildren--;
}
node.left.right = node.right;
node.right.left = node.left;
if (node === node.right) {
minimum = null;
} else {
minimum = node.right;
minimum = _findMinimumNode(minimum, this._size);
}
this._size--;
this._minimum = minimum;
return node;
};
FibonacciHeap.prototype.remove = function(node) {
this._minimum = _decreaseKey(this._minimum, node, -1);
this.extractMinimum();
};
function _decreaseKey(minimum, node, key) {
node.key = key;
var parent = node.parent;
if (parent && smaller(node.key, parent.key)) {
_cut(minimum, node, parent);
_cascadingCut(minimum, parent);
}
if (smaller(node.key, minimum.key)) {
minimum = node;
}
return minimum;
}
function _cut(minimum, node, parent) {
node.left.right = node.right;
node.right.left = node.left;
parent.degree--;
if (parent.child === node) {
parent.child = node.right;
}
if (parent.degree === 0) {
parent.child = null;
}
node.left = minimum;
node.right = minimum.right;
minimum.right = node;
node.right.left = node;
node.parent = null;
node.mark = false;
}
function _cascadingCut(minimum, node) {
var parent = node.parent;
if (!parent) {
return;
}
if (!node.mark) {
node.mark = true;
} else {
_cut(minimum, node, parent);
_cascadingCut(parent);
}
}
var _linkNodes = function _linkNodes2(node, parent) {
node.left.right = node.right;
node.right.left = node.left;
node.parent = parent;
if (!parent.child) {
parent.child = node;
node.right = node;
node.left = node;
} else {
node.left = parent.child;
node.right = parent.child.right;
parent.child.right = node;
node.right.left = node;
}
parent.degree++;
node.mark = false;
};
function _findMinimumNode(minimum, size) {
var arraySize2 = Math.floor(Math.log(size) * oneOverLogPhi) + 1;
var array = new Array(arraySize2);
var numRoots = 0;
var x = minimum;
if (x) {
numRoots++;
x = x.right;
while (x !== minimum) {
numRoots++;
x = x.right;
}
}
var y;
while (numRoots > 0) {
var d = x.degree;
var next = x.right;
while (true) {
y = array[d];
if (!y) {
break;
}
if (larger(x.key, y.key)) {
var temp = y;
y = x;
x = temp;
}
_linkNodes(y, x);
array[d] = null;
d++;
}
array[d] = x;
x = next;
numRoots--;
}
minimum = null;
for (var i = 0; i < arraySize2; i++) {
y = array[i];
if (!y) {
continue;
}
if (minimum) {
y.left.right = y.right;
y.right.left = y.left;
y.left = minimum;
y.right = minimum.right;
minimum.right = y;
y.right.left = y;
if (smaller(y.key, minimum.key)) {
minimum = y;
}
} else {
minimum = y;
}
}
return minimum;
}
return FibonacciHeap;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/matrix/Spa.js
var name159 = "Spa";
var dependencies159 = ["addScalar", "equalScalar", "FibonacciHeap"];
var createSpaClass = /* @__PURE__ */ factory(name159, dependencies159, (_ref) => {
var {
addScalar,
equalScalar,
FibonacciHeap
} = _ref;
function Spa() {
if (!(this instanceof Spa)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
this._values = [];
this._heap = new FibonacciHeap();
}
Spa.prototype.type = "Spa";
Spa.prototype.isSpa = true;
Spa.prototype.set = function(i, v) {
if (!this._values[i]) {
var node = this._heap.insert(i, v);
this._values[i] = node;
} else {
this._values[i].value = v;
}
};
Spa.prototype.get = function(i) {
var node = this._values[i];
if (node) {
return node.value;
}
return 0;
};
Spa.prototype.accumulate = function(i, v) {
var node = this._values[i];
if (!node) {
node = this._heap.insert(i, v);
this._values[i] = node;
} else {
node.value = addScalar(node.value, v);
}
};
Spa.prototype.forEach = function(from, to, callback) {
var heap = this._heap;
var values2 = this._values;
var nodes = [];
var node = heap.extractMinimum();
if (node) {
nodes.push(node);
}
while (node && node.key <= to) {
if (node.key >= from) {
if (!equalScalar(node.value, 0)) {
callback(node.key, node.value, this);
}
}
node = heap.extractMinimum();
if (node) {
nodes.push(node);
}
}
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
node = heap.insert(n.key, n.value);
values2[node.key] = node;
}
};
Spa.prototype.swap = function(i, j) {
var nodei = this._values[i];
var nodej = this._values[j];
if (!nodei && nodej) {
nodei = this._heap.insert(i, nodej.value);
this._heap.remove(nodej);
this._values[i] = nodei;
this._values[j] = void 0;
} else if (nodei && !nodej) {
nodej = this._heap.insert(j, nodei.value);
this._heap.remove(nodei);
this._values[j] = nodej;
this._values[i] = void 0;
} else if (nodei && nodej) {
var v = nodei.value;
nodei.value = nodej.value;
nodej.value = v;
}
};
return Spa;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/utils/bignumber/constants.js
var createBigNumberE = memoize(function(BigNumber) {
return new BigNumber(1).exp();
}, {
hasher
});
var createBigNumberPhi = memoize(function(BigNumber) {
return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);
}, {
hasher
});
var createBigNumberPi = memoize(function(BigNumber) {
return BigNumber.acos(-1);
}, {
hasher
});
var createBigNumberTau = memoize(function(BigNumber) {
return createBigNumberPi(BigNumber).times(2);
}, {
hasher
});
function hasher(args) {
return args[0].precision;
}
// node_modules/mathjs/lib/esm/type/unit/Unit.js
function ownKeys2(e2, r) {
var t = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r && (o = o.filter(function(r2) {
return Object.getOwnPropertyDescriptor(e2, r2).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2(e2) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys2(Object(t), true).forEach(function(r2) {
_defineProperty(e2, r2, t[r2]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t)) : ownKeys2(Object(t)).forEach(function(r2) {
Object.defineProperty(e2, r2, Object.getOwnPropertyDescriptor(t, r2));
});
}
return e2;
}
var name160 = "Unit";
var dependencies160 = ["?on", "config", "addScalar", "subtract", "multiplyScalar", "divideScalar", "pow", "abs", "fix", "round", "equal", "isNumeric", "format", "number", "Complex", "BigNumber", "Fraction"];
var createUnitClass = /* @__PURE__ */ factory(name160, dependencies160, (_ref) => {
var {
on,
config: config2,
addScalar,
subtract,
multiplyScalar,
divideScalar,
pow: pow2,
abs: abs2,
fix,
round: round2,
equal,
isNumeric,
format: format4,
number: _number,
Complex: Complex2,
BigNumber: _BigNumber,
Fraction: _Fraction
} = _ref;
var toNumber = _number;
function Unit(value, valuelessUnit) {
if (!(this instanceof Unit)) {
throw new Error("Constructor must be called with the new operator");
}
if (!(value === null || value === void 0 || isNumeric(value) || isComplex(value))) {
throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined");
}
this.fixPrefix = false;
this.skipAutomaticSimplification = true;
if (valuelessUnit === void 0) {
this.units = [];
this.dimensions = BASE_DIMENSIONS.map((x) => 0);
} else if (typeof valuelessUnit === "string") {
var u = Unit.parse(valuelessUnit);
this.units = u.units;
this.dimensions = u.dimensions;
} else if (isUnit(valuelessUnit) && valuelessUnit.value === null) {
this.fixPrefix = valuelessUnit.fixPrefix;
this.skipAutomaticSimplification = valuelessUnit.skipAutomaticSimplification;
this.dimensions = valuelessUnit.dimensions.slice(0);
this.units = valuelessUnit.units.map((u2) => _extends({}, u2));
} else {
throw new TypeError("Second parameter in Unit constructor must be a string or valueless Unit");
}
this.value = this._normalize(value);
}
Object.defineProperty(Unit, "name", {
value: "Unit"
});
Unit.prototype.constructor = Unit;
Unit.prototype.type = "Unit";
Unit.prototype.isUnit = true;
var text, index, c;
function skipWhitespace() {
while (c === " " || c === " ") {
next();
}
}
function isDigitDot(c2) {
return c2 >= "0" && c2 <= "9" || c2 === ".";
}
function isDigit(c2) {
return c2 >= "0" && c2 <= "9";
}
function next() {
index++;
c = text.charAt(index);
}
function revert(oldIndex) {
index = oldIndex;
c = text.charAt(index);
}
function parseNumber() {
var number = "";
var oldIndex = index;
if (c === "+") {
next();
} else if (c === "-") {
number += c;
next();
}
if (!isDigitDot(c)) {
revert(oldIndex);
return null;
}
if (c === ".") {
number += c;
next();
if (!isDigit(c)) {
revert(oldIndex);
return null;
}
} else {
while (isDigit(c)) {
number += c;
next();
}
if (c === ".") {
number += c;
next();
}
}
while (isDigit(c)) {
number += c;
next();
}
if (c === "E" || c === "e") {
var tentativeNumber = "";
var tentativeIndex = index;
tentativeNumber += c;
next();
if (c === "+" || c === "-") {
tentativeNumber += c;
next();
}
if (!isDigit(c)) {
revert(tentativeIndex);
return number;
}
number = number + tentativeNumber;
while (isDigit(c)) {
number += c;
next();
}
}
return number;
}
function parseUnit() {
var unitName = "";
while (isDigit(c) || Unit.isValidAlpha(c)) {
unitName += c;
next();
}
var firstC = unitName.charAt(0);
if (Unit.isValidAlpha(firstC)) {
return unitName;
} else {
return null;
}
}
function parseCharacter(toFind) {
if (c === toFind) {
next();
return toFind;
} else {
return null;
}
}
Unit.parse = function(str, options) {
options = options || {};
text = str;
index = -1;
c = "";
if (typeof text !== "string") {
throw new TypeError("Invalid argument in Unit.parse, string expected");
}
var unit2 = new Unit();
unit2.units = [];
var powerMultiplierCurrent = 1;
var expectingUnit = false;
next();
skipWhitespace();
var valueStr = parseNumber();
var value = null;
if (valueStr) {
if (config2.number === "BigNumber") {
value = new _BigNumber(valueStr);
} else if (config2.number === "Fraction") {
try {
value = new _Fraction(valueStr);
} catch (err) {
value = parseFloat(valueStr);
}
} else {
value = parseFloat(valueStr);
}
skipWhitespace();
if (parseCharacter("*")) {
powerMultiplierCurrent = 1;
expectingUnit = true;
} else if (parseCharacter("/")) {
powerMultiplierCurrent = -1;
expectingUnit = true;
}
}
var powerMultiplierStack = [];
var powerMultiplierStackProduct = 1;
while (true) {
skipWhitespace();
while (c === "(") {
powerMultiplierStack.push(powerMultiplierCurrent);
powerMultiplierStackProduct *= powerMultiplierCurrent;
powerMultiplierCurrent = 1;
next();
skipWhitespace();
}
var uStr = void 0;
if (c) {
var oldC = c;
uStr = parseUnit();
if (uStr === null) {
throw new SyntaxError('Unexpected "' + oldC + '" in "' + text + '" at index ' + index.toString());
}
} else {
break;
}
var res = _findUnit(uStr);
if (res === null) {
throw new SyntaxError('Unit "' + uStr + '" not found.');
}
var power = powerMultiplierCurrent * powerMultiplierStackProduct;
skipWhitespace();
if (parseCharacter("^")) {
skipWhitespace();
var p = parseNumber();
if (p === null) {
throw new SyntaxError('In "' + str + '", "^" must be followed by a floating-point number');
}
power *= p;
}
unit2.units.push({
unit: res.unit,
prefix: res.prefix,
power
});
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
unit2.dimensions[i] += (res.unit.dimensions[i] || 0) * power;
}
skipWhitespace();
while (c === ")") {
if (powerMultiplierStack.length === 0) {
throw new SyntaxError('Unmatched ")" in "' + text + '" at index ' + index.toString());
}
powerMultiplierStackProduct /= powerMultiplierStack.pop();
next();
skipWhitespace();
}
expectingUnit = false;
if (parseCharacter("*")) {
powerMultiplierCurrent = 1;
expectingUnit = true;
} else if (parseCharacter("/")) {
powerMultiplierCurrent = -1;
expectingUnit = true;
} else {
powerMultiplierCurrent = 1;
}
if (res.unit.base) {
var baseDim = res.unit.base.key;
UNIT_SYSTEMS.auto[baseDim] = {
unit: res.unit,
prefix: res.prefix
};
}
}
skipWhitespace();
if (c) {
throw new SyntaxError('Could not parse: "' + str + '"');
}
if (expectingUnit) {
throw new SyntaxError('Trailing characters: "' + str + '"');
}
if (powerMultiplierStack.length !== 0) {
throw new SyntaxError('Unmatched "(" in "' + text + '"');
}
if (unit2.units.length === 0 && !options.allowNoUnits) {
throw new SyntaxError('"' + str + '" contains no units');
}
unit2.value = value !== void 0 ? unit2._normalize(value) : null;
return unit2;
};
Unit.prototype.clone = function() {
var unit2 = new Unit();
unit2.fixPrefix = this.fixPrefix;
unit2.skipAutomaticSimplification = this.skipAutomaticSimplification;
unit2.value = clone(this.value);
unit2.dimensions = this.dimensions.slice(0);
unit2.units = [];
for (var i = 0; i < this.units.length; i++) {
unit2.units[i] = {};
for (var p in this.units[i]) {
if (hasOwnProperty(this.units[i], p)) {
unit2.units[i][p] = this.units[i][p];
}
}
}
return unit2;
};
Unit.prototype.valueType = function() {
return typeOf(this.value);
};
Unit.prototype._isDerived = function() {
if (this.units.length === 0) {
return false;
}
return this.units.length > 1 || Math.abs(this.units[0].power - 1) > 1e-15;
};
Unit.prototype._normalize = function(value) {
if (value === null || value === void 0 || this.units.length === 0) {
return value;
}
var res = value;
var convert = Unit._getNumberConverter(typeOf(value));
for (var i = 0; i < this.units.length; i++) {
var unitValue = convert(this.units[i].unit.value);
var unitPrefixValue = convert(this.units[i].prefix.value);
var unitPower = convert(this.units[i].power);
res = multiplyScalar(res, pow2(multiplyScalar(unitValue, unitPrefixValue), unitPower));
}
return res;
};
Unit.prototype._denormalize = function(value, prefixValue) {
if (value === null || value === void 0 || this.units.length === 0) {
return value;
}
var res = value;
var convert = Unit._getNumberConverter(typeOf(value));
for (var i = 0; i < this.units.length; i++) {
var unitValue = convert(this.units[i].unit.value);
var unitPrefixValue = convert(this.units[i].prefix.value);
var unitPower = convert(this.units[i].power);
res = divideScalar(res, pow2(multiplyScalar(unitValue, unitPrefixValue), unitPower));
}
return res;
};
var _findUnit = memoize((str) => {
if (hasOwnProperty(UNITS, str)) {
var unit2 = UNITS[str];
var prefix = unit2.prefixes[""];
return {
unit: unit2,
prefix
};
}
for (var _name in UNITS) {
if (hasOwnProperty(UNITS, _name)) {
if (endsWith(str, _name)) {
var _unit = UNITS[_name];
var prefixLen = str.length - _name.length;
var prefixName = str.substring(0, prefixLen);
var _prefix = hasOwnProperty(_unit.prefixes, prefixName) ? _unit.prefixes[prefixName] : void 0;
if (_prefix !== void 0) {
return {
unit: _unit,
prefix: _prefix
};
}
}
}
}
return null;
}, {
hasher: (args) => args[0],
limit: 100
});
Unit.isValuelessUnit = function(name309) {
return _findUnit(name309) !== null;
};
Unit.prototype.hasBase = function(base) {
if (typeof base === "string") {
base = BASE_UNITS[base];
}
if (!base) {
return false;
}
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
if (Math.abs((this.dimensions[i] || 0) - (base.dimensions[i] || 0)) > 1e-12) {
return false;
}
}
return true;
};
Unit.prototype.equalBase = function(other) {
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
if (Math.abs((this.dimensions[i] || 0) - (other.dimensions[i] || 0)) > 1e-12) {
return false;
}
}
return true;
};
Unit.prototype.equals = function(other) {
return this.equalBase(other) && equal(this.value, other.value);
};
Unit.prototype.multiply = function(_other) {
var res = this.clone();
var other = isUnit(_other) ? _other : new Unit(_other);
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
res.dimensions[i] = (this.dimensions[i] || 0) + (other.dimensions[i] || 0);
}
for (var _i = 0; _i < other.units.length; _i++) {
var inverted = _objectSpread2({}, other.units[_i]);
res.units.push(inverted);
}
if (this.value !== null || other.value !== null) {
var valThis = this.value === null ? this._normalize(1) : this.value;
var valOther = other.value === null ? other._normalize(1) : other.value;
res.value = multiplyScalar(valThis, valOther);
} else {
res.value = null;
}
if (isUnit(_other)) {
res.skipAutomaticSimplification = false;
}
return getNumericIfUnitless(res);
};
Unit.prototype.divideInto = function(numerator) {
return new Unit(numerator).divide(this);
};
Unit.prototype.divide = function(_other) {
var res = this.clone();
var other = isUnit(_other) ? _other : new Unit(_other);
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
res.dimensions[i] = (this.dimensions[i] || 0) - (other.dimensions[i] || 0);
}
for (var _i2 = 0; _i2 < other.units.length; _i2++) {
var inverted = _objectSpread2(_objectSpread2({}, other.units[_i2]), {}, {
power: -other.units[_i2].power
});
res.units.push(inverted);
}
if (this.value !== null || other.value !== null) {
var valThis = this.value === null ? this._normalize(1) : this.value;
var valOther = other.value === null ? other._normalize(1) : other.value;
res.value = divideScalar(valThis, valOther);
} else {
res.value = null;
}
if (isUnit(_other)) {
res.skipAutomaticSimplification = false;
}
return getNumericIfUnitless(res);
};
Unit.prototype.pow = function(p) {
var res = this.clone();
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
res.dimensions[i] = (this.dimensions[i] || 0) * p;
}
for (var _i3 = 0; _i3 < res.units.length; _i3++) {
res.units[_i3].power *= p;
}
if (res.value !== null) {
res.value = pow2(res.value, p);
} else {
res.value = null;
}
res.skipAutomaticSimplification = false;
return getNumericIfUnitless(res);
};
function getNumericIfUnitless(unit2) {
if (unit2.equalBase(BASE_UNITS.NONE) && unit2.value !== null && !config2.predictable) {
return unit2.value;
} else {
return unit2;
}
}
Unit.prototype.abs = function() {
var ret = this.clone();
if (ret.value !== null) {
if (ret._isDerived() || ret.units[0].unit.offset === 0) {
ret.value = abs2(ret.value);
} else {
var convert = ret._numberConverter();
var unitValue = convert(ret.units[0].unit.value);
var nominalOffset = convert(ret.units[0].unit.offset);
var unitOffset = multiplyScalar(unitValue, nominalOffset);
ret.value = subtract(abs2(addScalar(ret.value, unitOffset)), unitOffset);
}
}
for (var i in ret.units) {
if (ret.units[i].unit.name === "VA" || ret.units[i].unit.name === "VAR") {
ret.units[i].unit = UNITS.W;
}
}
return ret;
};
Unit.prototype.to = function(valuelessUnit) {
var value = this.value === null ? this._normalize(1) : this.value;
var other;
if (typeof valuelessUnit === "string") {
other = Unit.parse(valuelessUnit);
} else if (isUnit(valuelessUnit)) {
other = valuelessUnit.clone();
} else {
throw new Error("String or Unit expected as parameter");
}
if (!this.equalBase(other)) {
throw new Error("Units do not match ('".concat(other.toString(), "' != '").concat(this.toString(), "')"));
}
if (other.value !== null) {
throw new Error("Cannot convert to a unit with a value");
}
if (this.value === null || this._isDerived() || this.units[0].unit.offset === other.units[0].unit.offset) {
other.value = clone(value);
} else {
var convert = Unit._getNumberConverter(typeOf(value));
var thisUnitValue = this.units[0].unit.value;
var thisNominalOffset = this.units[0].unit.offset;
var thisUnitOffset = multiplyScalar(thisUnitValue, thisNominalOffset);
var otherUnitValue = other.units[0].unit.value;
var otherNominalOffset = other.units[0].unit.offset;
var otherUnitOffset = multiplyScalar(otherUnitValue, otherNominalOffset);
other.value = addScalar(value, convert(subtract(thisUnitOffset, otherUnitOffset)));
}
other.fixPrefix = true;
other.skipAutomaticSimplification = true;
return other;
};
Unit.prototype.toNumber = function(valuelessUnit) {
return toNumber(this.toNumeric(valuelessUnit));
};
Unit.prototype.toNumeric = function(valuelessUnit) {
var other;
if (valuelessUnit) {
other = this.to(valuelessUnit);
} else {
other = this.clone();
}
if (other._isDerived() || other.units.length === 0) {
return other._denormalize(other.value);
} else {
return other._denormalize(other.value, other.units[0].prefix.value);
}
};
Unit.prototype.toString = function() {
return this.format();
};
Unit.prototype.toJSON = function() {
return {
mathjs: "Unit",
value: this._denormalize(this.value),
unit: this.formatUnits(),
fixPrefix: this.fixPrefix
};
};
Unit.fromJSON = function(json) {
var unit2 = new Unit(json.value, json.unit);
unit2.fixPrefix = json.fixPrefix || false;
return unit2;
};
Unit.prototype.valueOf = Unit.prototype.toString;
Unit.prototype.simplify = function() {
var ret = this.clone();
var proposedUnitList = [];
var matchingBase;
for (var key2 in currentUnitSystem) {
if (hasOwnProperty(currentUnitSystem, key2)) {
if (ret.hasBase(BASE_UNITS[key2])) {
matchingBase = key2;
break;
}
}
}
if (matchingBase === "NONE") {
ret.units = [];
} else {
var matchingUnit;
if (matchingBase) {
if (hasOwnProperty(currentUnitSystem, matchingBase)) {
matchingUnit = currentUnitSystem[matchingBase];
}
}
if (matchingUnit) {
ret.units = [{
unit: matchingUnit.unit,
prefix: matchingUnit.prefix,
power: 1
}];
} else {
var missingBaseDim = false;
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
var baseDim = BASE_DIMENSIONS[i];
if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {
if (hasOwnProperty(currentUnitSystem, baseDim)) {
proposedUnitList.push({
unit: currentUnitSystem[baseDim].unit,
prefix: currentUnitSystem[baseDim].prefix,
power: ret.dimensions[i] || 0
});
} else {
missingBaseDim = true;
}
}
}
if (proposedUnitList.length < ret.units.length && !missingBaseDim) {
ret.units = proposedUnitList;
}
}
}
return ret;
};
Unit.prototype.toSI = function() {
var ret = this.clone();
var proposedUnitList = [];
for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
var baseDim = BASE_DIMENSIONS[i];
if (Math.abs(ret.dimensions[i] || 0) > 1e-12) {
if (hasOwnProperty(UNIT_SYSTEMS.si, baseDim)) {
proposedUnitList.push({
unit: UNIT_SYSTEMS.si[baseDim].unit,
prefix: UNIT_SYSTEMS.si[baseDim].prefix,
power: ret.dimensions[i] || 0
});
} else {
throw new Error("Cannot express custom unit " + baseDim + " in SI units");
}
}
}
ret.units = proposedUnitList;
ret.fixPrefix = true;
ret.skipAutomaticSimplification = true;
return ret;
};
Unit.prototype.formatUnits = function() {
var strNum = "";
var strDen = "";
var nNum = 0;
var nDen = 0;
for (var i = 0; i < this.units.length; i++) {
if (this.units[i].power > 0) {
nNum++;
strNum += " " + this.units[i].prefix.name + this.units[i].unit.name;
if (Math.abs(this.units[i].power - 1) > 1e-15) {
strNum += "^" + this.units[i].power;
}
} else if (this.units[i].power < 0) {
nDen++;
}
}
if (nDen > 0) {
for (var _i4 = 0; _i4 < this.units.length; _i4++) {
if (this.units[_i4].power < 0) {
if (nNum > 0) {
strDen += " " + this.units[_i4].prefix.name + this.units[_i4].unit.name;
if (Math.abs(this.units[_i4].power + 1) > 1e-15) {
strDen += "^" + -this.units[_i4].power;
}
} else {
strDen += " " + this.units[_i4].prefix.name + this.units[_i4].unit.name;
strDen += "^" + this.units[_i4].power;
}
}
}
}
strNum = strNum.substr(1);
strDen = strDen.substr(1);
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;
};
Unit.prototype.format = function(options) {
var simp = this.skipAutomaticSimplification || this.value === null ? this.clone() : this.simplify();
var isImaginary = false;
if (typeof simp.value !== "undefined" && simp.value !== null && isComplex(simp.value)) {
isImaginary = Math.abs(simp.value.re) < 1e-14;
}
for (var i in simp.units) {
if (hasOwnProperty(simp.units, i)) {
if (simp.units[i].unit) {
if (simp.units[i].unit.name === "VA" && isImaginary) {
simp.units[i].unit = UNITS.VAR;
} else if (simp.units[i].unit.name === "VAR" && !isImaginary) {
simp.units[i].unit = UNITS.VA;
}
}
}
}
if (simp.units.length === 1 && !simp.fixPrefix) {
if (Math.abs(simp.units[0].power - Math.round(simp.units[0].power)) < 1e-14) {
simp.units[0].prefix = simp._bestPrefix();
}
}
var value = simp._denormalize(simp.value);
var str = simp.value !== null ? format4(value, options || {}) : "";
var unitStr = simp.formatUnits();
if (simp.value && isComplex(simp.value)) {
str = "(" + str + ")";
}
if (unitStr.length > 0 && str.length > 0) {
str += " ";
}
str += unitStr;
return str;
};
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!");
}
var absValue = this.value !== null ? abs2(this.value) : 0;
var absUnitValue = abs2(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.log(absValue / Math.pow(bestPrefix.value * absUnitValue, power)) / Math.LN10 - 1.2;
if (bestDiff > -2.200001 && bestDiff < 1.800001)
return bestPrefix;
bestDiff = Math.abs(bestDiff);
var prefixes = this.units[0].unit.prefixes;
for (var p in prefixes) {
if (hasOwnProperty(prefixes, 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) {
bestPrefix = prefix;
bestDiff = diff;
}
}
}
}
return bestPrefix;
};
Unit.prototype.splitUnit = function(parts) {
var x = this.clone();
var ret = [];
for (var i = 0; i < parts.length; i++) {
x = x.to(parts[i]);
if (i === parts.length - 1)
break;
var xNumeric = x.toNumeric();
var xRounded = round2(xNumeric);
var xFixed = void 0;
var isNearlyEqual = equal(xRounded, xNumeric);
if (isNearlyEqual) {
xFixed = xRounded;
} else {
xFixed = fix(x.toNumeric());
}
var y = new Unit(xFixed, parts[i].toString());
ret.push(y);
x = subtract(x, y);
}
var testSum = 0;
for (var _i5 = 0; _i5 < ret.length; _i5++) {
testSum = addScalar(testSum, ret[_i5].value);
}
if (equal(testSum, this.value)) {
x.value = 0;
}
ret.push(x);
return ret;
};
var PREFIXES = {
NONE: {
"": {
name: "",
value: 1,
scientific: true
}
},
SHORT: {
"": {
name: "",
value: 1,
scientific: true
},
da: {
name: "da",
value: 10,
scientific: false
},
h: {
name: "h",
value: 100,
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: 0.1,
scientific: false
},
c: {
name: "c",
value: 0.01,
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: 10,
scientific: false
},
hecto: {
name: "hecto",
value: 100,
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: 0.1,
scientific: false
},
centi: {
name: "centi",
value: 0.01,
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: 100,
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: 0.01,
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_SI: {
"": {
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
}
},
BINARY_SHORT_IEC: {
"": {
name: "",
value: 1,
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_SI: {
"": {
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
}
},
BINARY_LONG_IEC: {
"": {
name: "",
value: 1,
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
}
}
};
PREFIXES.SHORTLONG = _extends({}, PREFIXES.SHORT, PREFIXES.LONG);
PREFIXES.BINARY_SHORT = _extends({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);
PREFIXES.BINARY_LONG = _extends({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);
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) {
if (hasOwnProperty(BASE_UNITS, key)) {
BASE_UNITS[key].key = key;
}
}
var BASE_UNIT_NONE = {};
var UNIT_NONE = {
name: "",
base: BASE_UNIT_NONE,
value: 1,
offset: 0,
dimensions: BASE_DIMENSIONS.map((x) => 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.0292,
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.02921,
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: 254e-7,
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: 64516e-8,
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: 2589988110336e-6,
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: 64516e-14,
offset: 0
},
// 6.4516 * 10^-10 m2
acre: {
name: "acre",
base: BASE_UNITS.SURFACE,
prefixes: PREFIXES.NONE,
value: 4046.86,
offset: 0
},
// 4046.86 m2
hectare: {
name: "hectare",
base: BASE_UNITS.SURFACE,
prefixes: PREFIXES.NONE,
value: 1e4,
offset: 0
},
// 10000 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: 1e-3,
offset: 0
},
// litre
l: {
name: "l",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.SHORT,
value: 1e-3,
offset: 0
},
// litre
litre: {
name: "litre",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.LONG,
value: 1e-3,
offset: 0
},
cuin: {
name: "cuin",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 16387064e-12,
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: 5e-6,
offset: 0
},
// 5 mL
tablespoon: {
name: "tablespoon",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 15e-6,
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: 6161152e-14,
offset: 0
},
// 0.06161152 mL
fluiddram: {
name: "fluiddram",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 36966911e-13,
offset: 0
},
// 3.696691 mL
fluidounce: {
name: "fluidounce",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 2957353e-11,
offset: 0
},
// 29.57353 mL
gill: {
name: "gill",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 1182941e-10,
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: 2365882e-10,
offset: 0
},
// 236.5882 mL
pint: {
name: "pint",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 4731765e-10,
offset: 0
},
// 473.1765 mL
quart: {
name: "quart",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 9463529e-10,
offset: 0
},
// 946.3529 mL
gallon: {
name: "gallon",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 3785412e-9,
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.238481,
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: 36966911e-13,
offset: 0
},
// 3.696691 mL
floz: {
name: "floz",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 2957353e-11,
offset: 0
},
// 29.57353 mL
gi: {
name: "gi",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 1182941e-10,
offset: 0
},
// 118.2941 mL
cp: {
name: "cp",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 2365882e-10,
offset: 0
},
// 236.5882 mL
pt: {
name: "pt",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 4731765e-10,
offset: 0
},
// 473.1765 mL
qt: {
name: "qt",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 9463529e-10,
offset: 0
},
// 946.3529 mL
gal: {
name: "gal",
base: BASE_UNITS.VOLUME,
prefixes: PREFIXES.NONE,
value: 3785412e-9,
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: 1e-3,
offset: 0
},
gram: {
name: "gram",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.LONG,
value: 1e-3,
offset: 0
},
ton: {
name: "ton",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.SHORT,
value: 907.18474,
offset: 0
},
t: {
name: "t",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.SHORT,
value: 1e3,
offset: 0
},
tonne: {
name: "tonne",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.LONG,
value: 1e3,
offset: 0
},
grain: {
name: "grain",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 6479891e-11,
offset: 0
},
dram: {
name: "dram",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.0017718451953125,
offset: 0
},
ounce: {
name: "ounce",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.028349523125,
offset: 0
},
poundmass: {
name: "poundmass",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.45359237,
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: 0.115,
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: 6479891e-11,
offset: 0
},
dr: {
name: "dr",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.0017718451953125,
offset: 0
},
oz: {
name: "oz",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.028349523125,
offset: 0
},
lbm: {
name: "lbm",
base: BASE_UNITS.MASS,
prefixes: PREFIXES.NONE,
value: 0.45359237,
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: "decade",
base: BASE_UNITS.TIME,
prefixes: PREFIXES.NONE,
value: 315576e3,
// Julian decade
offset: 0
},
century: {
name: "century",
base: BASE_UNITS.TIME,
prefixes: PREFIXES.NONE,
value: 315576e4,
// Julian century
offset: 0
},
millennium: {
name: "millennium",
base: BASE_UNITS.TIME,
prefixes: PREFIXES.NONE,
value: 315576e5,
// 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.SHORT,
value: 1,
offset: 0
},
radian: {
name: "radian",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.LONG,
value: 1,
offset: 0
},
// deg = rad / (2*pi) * 360 = rad / 0.017453292519943295769236907684888
deg: {
name: "deg",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.SHORT,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
degree: {
name: "degree",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.LONG,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
// grad = rad / (2*pi) * 400 = rad / 0.015707963267948966192313216916399
grad: {
name: "grad",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.SHORT,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
gradian: {
name: "gradian",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.LONG,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
// cycle = rad / (2*pi) = rad / 6.2831853071795864769252867665793
cycle: {
name: "cycle",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.NONE,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
// arcsec = rad / (3600 * (360 / 2 * pi)) = rad / 0.0000048481368110953599358991410235795
arcsec: {
name: "arcsec",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.NONE,
value: null,
// will be filled in by calculateAngleValues()
offset: 0
},
// arcmin = rad / (60 * (360 / 2 * pi)) = rad / 0.00029088820866572159615394846141477
arcmin: {
name: "arcmin",
base: BASE_UNITS.ANGLE,
prefixes: PREFIXES.NONE,
value: null,
// will be filled in by calculateAngleValues()
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) * (5 / 9)
// K(R) = °R * (5 / 9)
K: {
name: "K",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.SHORT,
value: 1,
offset: 0
},
degC: {
name: "degC",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.SHORT,
value: 1,
offset: 273.15
},
degF: {
name: "degF",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.SHORT,
value: new _Fraction(5, 9),
offset: 459.67
},
degR: {
name: "degR",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.SHORT,
value: new _Fraction(5, 9),
offset: 0
},
kelvin: {
name: "kelvin",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.LONG,
value: 1,
offset: 0
},
celsius: {
name: "celsius",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.LONG,
value: 1,
offset: 273.15
},
fahrenheit: {
name: "fahrenheit",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.LONG,
value: new _Fraction(5, 9),
offset: 459.67
},
rankine: {
name: "rankine",
base: BASE_UNITS.TEMPERATURE,
prefixes: PREFIXES.LONG,
value: new _Fraction(5, 9),
offset: 0
},
// amount of substance
mol: {
name: "mol",
base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,
prefixes: PREFIXES.SHORT,
value: 1,
offset: 0
},
mole: {
name: "mole",
base: BASE_UNITS.AMOUNT_OF_SUBSTANCE,
prefixes: PREFIXES.LONG,
value: 1,
offset: 0
},
// luminous intensity
cd: {
name: "cd",
base: BASE_UNITS.LUMINOUS_INTENSITY,
prefixes: PREFIXES.SHORT,
value: 1,
offset: 0
},
candela: {
name: "candela",
base: BASE_UNITS.LUMINOUS_INTENSITY,
prefixes: PREFIXES.LONG,
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: 1e-5,
offset: 0
},
dyne: {
name: "dyne",
base: BASE_UNITS.FORCE,
prefixes: PREFIXES.LONG,
value: 1e-5,
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
},
kip: {
name: "kip",
base: BASE_UNITS.FORCE,
prefixes: PREFIXES.LONG,
value: 4448.2216,
offset: 0
},
kilogramforce: {
name: "kilogramforce",
base: BASE_UNITS.FORCE,
prefixes: PREFIXES.NONE,
value: 9.80665,
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.LONG,
value: 1,
offset: 0
},
erg: {
name: "erg",
base: BASE_UNITS.ENERGY,
prefixes: PREFIXES.SHORTLONG,
// Both kiloerg and kerg are acceptable
value: 1e-7,
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: 1602176565e-28,
offset: 0
},
electronvolt: {
name: "electronvolt",
base: BASE_UNITS.ENERGY,
prefixes: PREFIXES.LONG,
value: 1602176565e-28,
offset: 0
},
// Power
W: {
name: "W",
base: BASE_UNITS.POWER,
prefixes: PREFIXES.SHORT,
value: 1,
offset: 0
},
watt: {
name: "watt",
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: Complex2.I,
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
},
bar: {
name: "bar",
base: BASE_UNITS.PRESSURE,
prefixes: PREFIXES.SHORTLONG,
value: 1e5,
offset: 0
},
torr: {
name: "torr",
base: BASE_UNITS.PRESSURE,
prefixes: PREFIXES.NONE,
value: 133.322,
offset: 0
},
mmHg: {
name: "mmHg",
base: BASE_UNITS.PRESSURE,
prefixes: PREFIXES.NONE,
value: 133.322,
offset: 0
},
mmH2O: {
name: "mmH2O",
base: BASE_UNITS.PRESSURE,
prefixes: PREFIXES.NONE,
value: 9.80665,
offset: 0
},
cmH2O: {
name: "cmH2O",
base: BASE_UNITS.PRESSURE,
prefixes: PREFIXES.NONE,
value: 98.0665,
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
}
};
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",
kips: "kip",
kgf: "kilogramforce",
acres: "acre",
hectares: "hectare",
sqfeet: "sqft",
sqyard: "sqyd",
sqmile: "sqmi",
sqmiles: "sqmi",
mmhg: "mmHg",
mmh2o: "mmH2O",
cmh2o: "cmH2O",
seconds: "second",
secs: "second",
minutes: "minute",
mins: "minute",
hours: "hour",
hr: "hour",
hrs: "hour",
days: "day",
weeks: "week",
months: "month",
years: "year",
decades: "decade",
centuries: "century",
millennia: "millennium",
hertz: "hertz",
radians: "radian",
degrees: "degree",
gradians: "gradian",
cycles: "cycle",
arcsecond: "arcsec",
arcseconds: "arcsec",
arcminute: "arcmin",
arcminutes: "arcmin",
BTUs: "BTU",
watts: "watt",
joules: "joule",
amperes: "ampere",
amps: "ampere",
amp: "ampere",
coulombs: "coulomb",
volts: "volt",
ohms: "ohm",
farads: "farad",
webers: "weber",
teslas: "tesla",
electronvolts: "electronvolt",
moles: "mole",
bit: "bits",
byte: "bytes"
};
function calculateAngleValues(config3) {
if (config3.number === "BigNumber") {
var pi2 = createBigNumberPi(_BigNumber);
UNITS.rad.value = new _BigNumber(1);
UNITS.deg.value = pi2.div(180);
UNITS.grad.value = pi2.div(200);
UNITS.cycle.value = pi2.times(2);
UNITS.arcsec.value = pi2.div(648e3);
UNITS.arcmin.value = pi2.div(10800);
} else {
UNITS.rad.value = 1;
UNITS.deg.value = Math.PI / 180;
UNITS.grad.value = Math.PI / 200;
UNITS.cycle.value = Math.PI * 2;
UNITS.arcsec.value = Math.PI / 648e3;
UNITS.arcmin.value = Math.PI / 10800;
}
UNITS.radian.value = UNITS.rad.value;
UNITS.degree.value = UNITS.deg.value;
UNITS.gradian.value = UNITS.grad.value;
}
calculateAngleValues(config2);
if (on) {
on("config", function(curr, prev) {
if (curr.number !== prev.number) {
calculateAngleValues(curr);
}
});
}
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.bits,
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[""]
}
}
};
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[""]
};
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[""]
};
UNIT_SYSTEMS.auto = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));
var currentUnitSystem = UNIT_SYSTEMS.auto;
Unit.setUnitSystem = function(name309) {
if (hasOwnProperty(UNIT_SYSTEMS, name309)) {
currentUnitSystem = UNIT_SYSTEMS[name309];
} else {
throw new Error("Unit system " + name309 + " does not exist. Choices are: " + Object.keys(UNIT_SYSTEMS).join(", "));
}
};
Unit.getUnitSystem = function() {
for (var _key in UNIT_SYSTEMS) {
if (hasOwnProperty(UNIT_SYSTEMS, _key)) {
if (UNIT_SYSTEMS[_key] === currentUnitSystem) {
return _key;
}
}
}
};
Unit.typeConverters = {
BigNumber: function BigNumber(x) {
if (x !== null && x !== void 0 && x.isFraction)
return new _BigNumber(x.n).div(x.d).times(x.s);
return new _BigNumber(x + "");
},
Fraction: function Fraction2(x) {
return new _Fraction(x);
},
Complex: function Complex3(x) {
return x;
},
number: function number(x) {
if (x !== null && x !== void 0 && x.isFraction)
return _number(x);
return x;
}
};
Unit.prototype._numberConverter = function() {
var convert = Unit.typeConverters[this.valueType()];
if (convert) {
return convert;
}
throw new TypeError('Unsupported Unit value type "' + this.valueType() + '"');
};
Unit._getNumberConverter = function(type) {
if (!Unit.typeConverters[type]) {
throw new TypeError('Unsupported type "' + type + '"');
}
return Unit.typeConverters[type];
};
for (var _key2 in UNITS) {
if (hasOwnProperty(UNITS, _key2)) {
var unit = UNITS[_key2];
unit.dimensions = unit.base.dimensions;
}
}
for (var _name2 in ALIASES) {
if (hasOwnProperty(ALIASES, _name2)) {
var _unit2 = UNITS[ALIASES[_name2]];
var alias = {};
for (var _key3 in _unit2) {
if (hasOwnProperty(_unit2, _key3)) {
alias[_key3] = _unit2[_key3];
}
}
alias.name = _name2;
UNITS[_name2] = alias;
}
}
Unit.isValidAlpha = function isValidAlpha(c2) {
return /^[a-zA-Z]$/.test(c2);
};
function assertUnitNameIsValid(name309) {
for (var i = 0; i < name309.length; i++) {
c = name309.charAt(i);
if (i === 0 && !Unit.isValidAlpha(c)) {
throw new Error('Invalid unit name (must begin with alpha character): "' + name309 + '"');
}
if (i > 0 && !(Unit.isValidAlpha(c) || isDigit(c))) {
throw new Error('Invalid unit name (only alphanumeric characters are allowed): "' + name309 + '"');
}
}
}
Unit.createUnit = function(obj, options) {
if (typeof obj !== "object") {
throw new TypeError("createUnit expects first parameter to be of type 'Object'");
}
if (options && options.override) {
for (var _key4 in obj) {
if (hasOwnProperty(obj, _key4)) {
Unit.deleteUnit(_key4);
}
if (obj[_key4].aliases) {
for (var i = 0; i < obj[_key4].aliases.length; i++) {
Unit.deleteUnit(obj[_key4].aliases[i]);
}
}
}
}
var lastUnit;
for (var _key5 in obj) {
if (hasOwnProperty(obj, _key5)) {
lastUnit = Unit.createUnitSingle(_key5, obj[_key5]);
}
}
return lastUnit;
};
Unit.createUnitSingle = function(name309, obj) {
if (typeof obj === "undefined" || obj === null) {
obj = {};
}
if (typeof name309 !== "string") {
throw new TypeError("createUnitSingle expects first parameter to be of type 'string'");
}
if (hasOwnProperty(UNITS, name309)) {
throw new Error('Cannot create unit "' + name309 + '": a unit with that name already exists');
}
assertUnitNameIsValid(name309);
var defUnit = null;
var aliases = [];
var offset = 0;
var definition;
var prefixes;
var baseName;
if (obj && obj.type === "Unit") {
defUnit = obj.clone();
} else if (typeof obj === "string") {
if (obj !== "") {
definition = obj;
}
} else if (typeof obj === "object") {
definition = obj.definition;
prefixes = obj.prefixes;
offset = obj.offset;
baseName = obj.baseName;
if (obj.aliases) {
aliases = obj.aliases.valueOf();
}
} else {
throw new TypeError('Cannot create unit "' + name309 + '" from "' + obj.toString() + '": expecting "string" or "Unit" or "Object"');
}
if (aliases) {
for (var i = 0; i < aliases.length; i++) {
if (hasOwnProperty(UNITS, aliases[i])) {
throw new Error('Cannot create alias "' + aliases[i] + '": a unit with that name already exists');
}
}
}
if (definition && typeof definition === "string" && !defUnit) {
try {
defUnit = Unit.parse(definition, {
allowNoUnits: true
});
} catch (ex) {
ex.message = 'Could not create unit "' + name309 + '" from "' + definition + '": ' + ex.message;
throw ex;
}
} else if (definition && definition.type === "Unit") {
defUnit = definition.clone();
}
aliases = aliases || [];
offset = offset || 0;
if (prefixes && prefixes.toUpperCase) {
prefixes = PREFIXES[prefixes.toUpperCase()] || PREFIXES.NONE;
} else {
prefixes = PREFIXES.NONE;
}
var newUnit = {};
if (!defUnit) {
baseName = baseName || name309 + "_STUFF";
if (BASE_DIMENSIONS.indexOf(baseName) >= 0) {
throw new Error('Cannot create new base unit "' + name309 + '": a base unit with that name already exists (and cannot be overridden)');
}
BASE_DIMENSIONS.push(baseName);
for (var b in BASE_UNITS) {
if (hasOwnProperty(BASE_UNITS, b)) {
BASE_UNITS[b].dimensions[BASE_DIMENSIONS.length - 1] = 0;
}
}
var newBaseUnit = {
dimensions: []
};
for (var _i6 = 0; _i6 < BASE_DIMENSIONS.length; _i6++) {
newBaseUnit.dimensions[_i6] = 0;
}
newBaseUnit.dimensions[BASE_DIMENSIONS.length - 1] = 1;
newBaseUnit.key = baseName;
BASE_UNITS[baseName] = newBaseUnit;
newUnit = {
name: name309,
value: 1,
dimensions: BASE_UNITS[baseName].dimensions.slice(0),
prefixes,
offset,
base: BASE_UNITS[baseName]
};
currentUnitSystem[baseName] = {
unit: newUnit,
prefix: PREFIXES.NONE[""]
};
} else {
newUnit = {
name: name309,
value: defUnit.value,
dimensions: defUnit.dimensions.slice(0),
prefixes,
offset
};
var anyMatch = false;
for (var _i7 in BASE_UNITS) {
if (hasOwnProperty(BASE_UNITS, _i7)) {
var match = true;
for (var j = 0; j < BASE_DIMENSIONS.length; j++) {
if (Math.abs((newUnit.dimensions[j] || 0) - (BASE_UNITS[_i7].dimensions[j] || 0)) > 1e-12) {
match = false;
break;
}
}
if (match) {
anyMatch = true;
newUnit.base = BASE_UNITS[_i7];
break;
}
}
}
if (!anyMatch) {
baseName = baseName || name309 + "_STUFF";
var _newBaseUnit = {
dimensions: defUnit.dimensions.slice(0)
};
_newBaseUnit.key = baseName;
BASE_UNITS[baseName] = _newBaseUnit;
currentUnitSystem[baseName] = {
unit: newUnit,
prefix: PREFIXES.NONE[""]
};
newUnit.base = BASE_UNITS[baseName];
}
}
Unit.UNITS[name309] = newUnit;
for (var _i8 = 0; _i8 < aliases.length; _i8++) {
var aliasName = aliases[_i8];
var _alias = {};
for (var _key6 in newUnit) {
if (hasOwnProperty(newUnit, _key6)) {
_alias[_key6] = newUnit[_key6];
}
}
_alias.name = aliasName;
Unit.UNITS[aliasName] = _alias;
}
delete _findUnit.cache;
return new Unit(null, name309);
};
Unit.deleteUnit = function(name309) {
delete Unit.UNITS[name309];
};
Unit.PREFIXES = PREFIXES;
Unit.BASE_DIMENSIONS = BASE_DIMENSIONS;
Unit.BASE_UNITS = BASE_UNITS;
Unit.UNIT_SYSTEMS = UNIT_SYSTEMS;
Unit.UNITS = UNITS;
return Unit;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/unit/function/unit.js
var name161 = "unit";
var dependencies161 = ["typed", "Unit"];
var createUnitFunction = /* @__PURE__ */ factory(name161, dependencies161, (_ref) => {
var {
typed: typed2,
Unit
} = _ref;
return typed2(name161, {
Unit: function Unit2(x) {
return x.clone();
},
string: function string(x) {
if (Unit.isValuelessUnit(x)) {
return new Unit(null, x);
}
return Unit.parse(x, {
allowNoUnits: true
});
},
"number | BigNumber | Fraction | Complex, string | Unit": function numberBigNumberFractionComplexStringUnit(value, unit) {
return new Unit(value, unit);
},
"number | BigNumber | Fraction": function numberBigNumberFraction(value) {
return new Unit(value);
},
"Array | Matrix": typed2.referToSelf((self2) => (x) => deepMap(x, self2))
});
});
// node_modules/mathjs/lib/esm/type/matrix/function/sparse.js
var name162 = "sparse";
var dependencies162 = ["typed", "SparseMatrix"];
var createSparse = /* @__PURE__ */ factory(name162, dependencies162, (_ref) => {
var {
typed: typed2,
SparseMatrix
} = _ref;
return typed2(name162, {
"": function _() {
return new SparseMatrix([]);
},
string: function string(datatype) {
return new SparseMatrix([], datatype);
},
"Array | Matrix": function ArrayMatrix(data) {
return new SparseMatrix(data);
},
"Array | Matrix, string": function ArrayMatrixString(data, datatype) {
return new SparseMatrix(data, datatype);
}
});
});
// node_modules/mathjs/lib/esm/type/unit/function/createUnit.js
var name163 = "createUnit";
var dependencies163 = ["typed", "Unit"];
var createCreateUnit = /* @__PURE__ */ factory(name163, dependencies163, (_ref) => {
var {
typed: typed2,
Unit
} = _ref;
return typed2(name163, {
// General function signature. First parameter is an object where each property is the definition of a new unit. The object keys are the unit names and the values are the definitions. The values can be objects, strings, or Units. If a property is an empty object or an empty string, a new base unit is created. The second parameter is the options.
"Object, Object": function ObjectObject(obj, options) {
return Unit.createUnit(obj, options);
},
// Same as above but without the options.
Object: function Object2(obj) {
return Unit.createUnit(obj, {});
},
// Shortcut method for creating one unit.
"string, Unit | string | Object, Object": function stringUnitStringObjectObject(name309, def, options) {
var obj = {};
obj[name309] = def;
return Unit.createUnit(obj, options);
},
// Same as above but without the options.
"string, Unit | string | Object": function stringUnitStringObject(name309, def) {
var obj = {};
obj[name309] = def;
return Unit.createUnit(obj, {});
},
// Without a definition, creates a base unit.
string: function string(name309) {
var obj = {};
obj[name309] = {};
return Unit.createUnit(obj, {});
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acos.js
var name164 = "acos";
var dependencies164 = ["typed", "config", "Complex"];
var createAcos = /* @__PURE__ */ factory(name164, dependencies164, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2
} = _ref;
return typed2(name164, {
number: function number(x) {
if (x >= -1 && x <= 1 || config2.predictable) {
return Math.acos(x);
} else {
return new Complex2(x, 0).acos();
}
},
Complex: function Complex3(x) {
return x.acos();
},
BigNumber: function BigNumber(x) {
return x.acos();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acosh.js
var name165 = "acosh";
var dependencies165 = ["typed", "config", "Complex"];
var createAcosh = /* @__PURE__ */ factory(name165, dependencies165, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2
} = _ref;
return typed2(name165, {
number: function number(x) {
if (x >= 1 || config2.predictable) {
return acoshNumber(x);
}
if (x <= -1) {
return new Complex2(Math.log(Math.sqrt(x * x - 1) - x), Math.PI);
}
return new Complex2(x, 0).acosh();
},
Complex: function Complex3(x) {
return x.acosh();
},
BigNumber: function BigNumber(x) {
return x.acosh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acot.js
var name166 = "acot";
var dependencies166 = ["typed", "BigNumber"];
var createAcot = /* @__PURE__ */ factory(name166, dependencies166, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
return typed2(name166, {
number: acotNumber,
Complex: function Complex2(x) {
return x.acot();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).atan();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acoth.js
var name167 = "acoth";
var dependencies167 = ["typed", "config", "Complex", "BigNumber"];
var createAcoth = /* @__PURE__ */ factory(name167, dependencies167, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2,
BigNumber: _BigNumber
} = _ref;
return typed2(name167, {
number: function number(x) {
if (x >= 1 || x <= -1 || config2.predictable) {
return acothNumber(x);
}
return new Complex2(x, 0).acoth();
},
Complex: function Complex3(x) {
return x.acoth();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).atanh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acsc.js
var name168 = "acsc";
var dependencies168 = ["typed", "config", "Complex", "BigNumber"];
var createAcsc = /* @__PURE__ */ factory(name168, dependencies168, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2,
BigNumber: _BigNumber
} = _ref;
return typed2(name168, {
number: function number(x) {
if (x <= -1 || x >= 1 || config2.predictable) {
return acscNumber(x);
}
return new Complex2(x, 0).acsc();
},
Complex: function Complex3(x) {
return x.acsc();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).asin();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/acsch.js
var name169 = "acsch";
var dependencies169 = ["typed", "BigNumber"];
var createAcsch = /* @__PURE__ */ factory(name169, dependencies169, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
return typed2(name169, {
number: acschNumber,
Complex: function Complex2(x) {
return x.acsch();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).asinh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/asec.js
var name170 = "asec";
var dependencies170 = ["typed", "config", "Complex", "BigNumber"];
var createAsec = /* @__PURE__ */ factory(name170, dependencies170, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2,
BigNumber: _BigNumber
} = _ref;
return typed2(name170, {
number: function number(x) {
if (x <= -1 || x >= 1 || config2.predictable) {
return asecNumber(x);
}
return new Complex2(x, 0).asec();
},
Complex: function Complex3(x) {
return x.asec();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).acos();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/asech.js
var name171 = "asech";
var dependencies171 = ["typed", "config", "Complex", "BigNumber"];
var createAsech = /* @__PURE__ */ factory(name171, dependencies171, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2,
BigNumber: _BigNumber
} = _ref;
return typed2(name171, {
number: function number(x) {
if (x <= 1 && x >= -1 || config2.predictable) {
var xInv = 1 / x;
if (xInv > 0 || config2.predictable) {
return asechNumber(x);
}
var ret = Math.sqrt(xInv * xInv - 1);
return new Complex2(Math.log(ret - xInv), Math.PI);
}
return new Complex2(x, 0).asech();
},
Complex: function Complex3(x) {
return x.asech();
},
BigNumber: function BigNumber(x) {
return new _BigNumber(1).div(x).acosh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/asin.js
var name172 = "asin";
var dependencies172 = ["typed", "config", "Complex"];
var createAsin = /* @__PURE__ */ factory(name172, dependencies172, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2
} = _ref;
return typed2(name172, {
number: function number(x) {
if (x >= -1 && x <= 1 || config2.predictable) {
return Math.asin(x);
} else {
return new Complex2(x, 0).asin();
}
},
Complex: function Complex3(x) {
return x.asin();
},
BigNumber: function BigNumber(x) {
return x.asin();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/asinh.js
var name173 = "asinh";
var dependencies173 = ["typed"];
var createAsinh = /* @__PURE__ */ factory(name173, dependencies173, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("asinh", {
number: asinhNumber,
Complex: function Complex2(x) {
return x.asinh();
},
BigNumber: function BigNumber(x) {
return x.asinh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/atan.js
var name174 = "atan";
var dependencies174 = ["typed"];
var createAtan = /* @__PURE__ */ factory(name174, dependencies174, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("atan", {
number: function number(x) {
return Math.atan(x);
},
Complex: function Complex2(x) {
return x.atan();
},
BigNumber: function BigNumber(x) {
return x.atan();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/atan2.js
var name175 = "atan2";
var dependencies175 = ["typed", "matrix", "equalScalar", "BigNumber", "DenseMatrix", "concat"];
var createAtan2 = /* @__PURE__ */ factory(name175, dependencies175, (_ref) => {
var {
typed: typed2,
matrix,
equalScalar,
BigNumber,
DenseMatrix,
concat: concat2
} = _ref;
var matAlgo02xDS0 = createMatAlgo02xDS0({
typed: typed2,
equalScalar
});
var matAlgo03xDSf = createMatAlgo03xDSf({
typed: typed2
});
var matAlgo09xS0Sf = createMatAlgo09xS0Sf({
typed: typed2,
equalScalar
});
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo12xSfs = createMatAlgo12xSfs({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name175, {
"number, number": Math.atan2,
// Complex numbers doesn't seem to have a reasonable implementation of
// atan2(). Even Matlab removed the support, after they only calculated
// the atan only on base of the real part of the numbers and ignored
// the imaginary.
"BigNumber, BigNumber": (y, x) => BigNumber.atan2(y, x)
}, matrixAlgorithmSuite({
scalar: "number | BigNumber",
SS: matAlgo09xS0Sf,
DS: matAlgo03xDSf,
SD: matAlgo02xDS0,
Ss: matAlgo11xS0s,
sS: matAlgo12xSfs
}));
});
// node_modules/mathjs/lib/esm/function/trigonometry/atanh.js
var name176 = "atanh";
var dependencies176 = ["typed", "config", "Complex"];
var createAtanh = /* @__PURE__ */ factory(name176, dependencies176, (_ref) => {
var {
typed: typed2,
config: config2,
Complex: Complex2
} = _ref;
return typed2(name176, {
number: function number(x) {
if (x <= 1 && x >= -1 || config2.predictable) {
return atanhNumber(x);
}
return new Complex2(x, 0).atanh();
},
Complex: function Complex3(x) {
return x.atanh();
},
BigNumber: function BigNumber(x) {
return x.atanh();
}
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/trigUnit.js
var createTrigUnit = /* @__PURE__ */ factory("trigUnit", ["typed"], (_ref) => {
var {
typed: typed2
} = _ref;
return {
Unit: typed2.referToSelf((self2) => (x) => {
if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
throw new TypeError("Unit in function cot is no angle");
}
return typed2.find(self2, x.valueType())(x.value);
})
};
});
// node_modules/mathjs/lib/esm/function/trigonometry/cos.js
var name177 = "cos";
var dependencies177 = ["typed"];
var createCos = /* @__PURE__ */ factory(name177, dependencies177, (_ref) => {
var {
typed: typed2
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name177, {
number: Math.cos,
"Complex | BigNumber": (x) => x.cos()
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/cosh.js
var name178 = "cosh";
var dependencies178 = ["typed"];
var createCosh = /* @__PURE__ */ factory(name178, dependencies178, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name178, {
number: cosh,
"Complex | BigNumber": (x) => x.cosh()
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/cot.js
var name179 = "cot";
var dependencies179 = ["typed", "BigNumber"];
var createCot = /* @__PURE__ */ factory(name179, dependencies179, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name179, {
number: cotNumber,
Complex: (x) => x.cot(),
BigNumber: (x) => new _BigNumber(1).div(x.tan())
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/coth.js
var name180 = "coth";
var dependencies180 = ["typed", "BigNumber"];
var createCoth = /* @__PURE__ */ factory(name180, dependencies180, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
return typed2(name180, {
number: cothNumber,
Complex: (x) => x.coth(),
BigNumber: (x) => new _BigNumber(1).div(x.tanh())
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/csc.js
var name181 = "csc";
var dependencies181 = ["typed", "BigNumber"];
var createCsc = /* @__PURE__ */ factory(name181, dependencies181, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name181, {
number: cscNumber,
Complex: (x) => x.csc(),
BigNumber: (x) => new _BigNumber(1).div(x.sin())
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/csch.js
var name182 = "csch";
var dependencies182 = ["typed", "BigNumber"];
var createCsch = /* @__PURE__ */ factory(name182, dependencies182, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
return typed2(name182, {
number: cschNumber,
Complex: (x) => x.csch(),
BigNumber: (x) => new _BigNumber(1).div(x.sinh())
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/sec.js
var name183 = "sec";
var dependencies183 = ["typed", "BigNumber"];
var createSec = /* @__PURE__ */ factory(name183, dependencies183, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name183, {
number: secNumber,
Complex: (x) => x.sec(),
BigNumber: (x) => new _BigNumber(1).div(x.cos())
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/sech.js
var name184 = "sech";
var dependencies184 = ["typed", "BigNumber"];
var createSech = /* @__PURE__ */ factory(name184, dependencies184, (_ref) => {
var {
typed: typed2,
BigNumber: _BigNumber
} = _ref;
return typed2(name184, {
number: sechNumber,
Complex: (x) => x.sech(),
BigNumber: (x) => new _BigNumber(1).div(x.cosh())
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/sin.js
var name185 = "sin";
var dependencies185 = ["typed"];
var createSin = /* @__PURE__ */ factory(name185, dependencies185, (_ref) => {
var {
typed: typed2
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name185, {
number: Math.sin,
"Complex | BigNumber": (x) => x.sin()
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/sinh.js
var name186 = "sinh";
var dependencies186 = ["typed"];
var createSinh = /* @__PURE__ */ factory(name186, dependencies186, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name186, {
number: sinhNumber,
"Complex | BigNumber": (x) => x.sinh()
});
});
// node_modules/mathjs/lib/esm/function/trigonometry/tan.js
var name187 = "tan";
var dependencies187 = ["typed"];
var createTan = /* @__PURE__ */ factory(name187, dependencies187, (_ref) => {
var {
typed: typed2
} = _ref;
var trigUnit = createTrigUnit({
typed: typed2
});
return typed2(name187, {
number: Math.tan,
"Complex | BigNumber": (x) => x.tan()
}, trigUnit);
});
// node_modules/mathjs/lib/esm/function/trigonometry/tanh.js
var name188 = "tanh";
var dependencies188 = ["typed"];
var createTanh = /* @__PURE__ */ factory(name188, dependencies188, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2("tanh", {
number: tanh,
"Complex | BigNumber": (x) => x.tanh()
});
});
// node_modules/mathjs/lib/esm/function/set/setCartesian.js
var name189 = "setCartesian";
var dependencies189 = ["typed", "size", "subset", "compareNatural", "Index", "DenseMatrix"];
var createSetCartesian = /* @__PURE__ */ factory(name189, dependencies189, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index,
DenseMatrix
} = _ref;
return typed2(name189, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
var result = [];
if (subset(size(a1), new Index(0)) !== 0 && subset(size(a2), new Index(0)) !== 0) {
var b1 = flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural);
var b2 = flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural);
result = [];
for (var i = 0; i < b1.length; i++) {
for (var j = 0; j < b2.length; j++) {
result.push([b1[i], b2[j]]);
}
}
}
if (Array.isArray(a1) && Array.isArray(a2)) {
return result;
}
return new DenseMatrix(result);
}
});
});
// node_modules/mathjs/lib/esm/function/set/setDifference.js
var name190 = "setDifference";
var dependencies190 = ["typed", "size", "subset", "compareNatural", "Index", "DenseMatrix"];
var createSetDifference = /* @__PURE__ */ factory(name190, dependencies190, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index,
DenseMatrix
} = _ref;
return typed2(name190, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
var result;
if (subset(size(a1), new Index(0)) === 0) {
result = [];
} else if (subset(size(a2), new Index(0)) === 0) {
return flatten(a1.toArray());
} else {
var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));
var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));
result = [];
var inb2;
for (var i = 0; i < b1.length; i++) {
inb2 = false;
for (var j = 0; j < b2.length; j++) {
if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {
inb2 = true;
break;
}
}
if (!inb2) {
result.push(b1[i]);
}
}
}
if (Array.isArray(a1) && Array.isArray(a2)) {
return generalize(result);
}
return new DenseMatrix(generalize(result));
}
});
});
// node_modules/mathjs/lib/esm/function/set/setDistinct.js
var name191 = "setDistinct";
var dependencies191 = ["typed", "size", "subset", "compareNatural", "Index", "DenseMatrix"];
var createSetDistinct = /* @__PURE__ */ factory(name191, dependencies191, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index,
DenseMatrix
} = _ref;
return typed2(name191, {
"Array | Matrix": function ArrayMatrix(a) {
var result;
if (subset(size(a), new Index(0)) === 0) {
result = [];
} else {
var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);
result = [];
result.push(b[0]);
for (var i = 1; i < b.length; i++) {
if (compareNatural(b[i], b[i - 1]) !== 0) {
result.push(b[i]);
}
}
}
if (Array.isArray(a)) {
return result;
}
return new DenseMatrix(result);
}
});
});
// node_modules/mathjs/lib/esm/function/set/setIntersect.js
var name192 = "setIntersect";
var dependencies192 = ["typed", "size", "subset", "compareNatural", "Index", "DenseMatrix"];
var createSetIntersect = /* @__PURE__ */ factory(name192, dependencies192, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index,
DenseMatrix
} = _ref;
return typed2(name192, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
var result;
if (subset(size(a1), new Index(0)) === 0 || subset(size(a2), new Index(0)) === 0) {
result = [];
} else {
var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));
var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));
result = [];
for (var i = 0; i < b1.length; i++) {
for (var j = 0; j < b2.length; j++) {
if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {
result.push(b1[i]);
break;
}
}
}
}
if (Array.isArray(a1) && Array.isArray(a2)) {
return generalize(result);
}
return new DenseMatrix(generalize(result));
}
});
});
// node_modules/mathjs/lib/esm/function/set/setIsSubset.js
var name193 = "setIsSubset";
var dependencies193 = ["typed", "size", "subset", "compareNatural", "Index"];
var createSetIsSubset = /* @__PURE__ */ factory(name193, dependencies193, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index
} = _ref;
return typed2(name193, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
if (subset(size(a1), new Index(0)) === 0) {
return true;
} else if (subset(size(a2), new Index(0)) === 0) {
return false;
}
var b1 = identify(flatten(Array.isArray(a1) ? a1 : a1.toArray()).sort(compareNatural));
var b2 = identify(flatten(Array.isArray(a2) ? a2 : a2.toArray()).sort(compareNatural));
var inb2;
for (var i = 0; i < b1.length; i++) {
inb2 = false;
for (var j = 0; j < b2.length; j++) {
if (compareNatural(b1[i].value, b2[j].value) === 0 && b1[i].identifier === b2[j].identifier) {
inb2 = true;
break;
}
}
if (inb2 === false) {
return false;
}
}
return true;
}
});
});
// node_modules/mathjs/lib/esm/function/set/setMultiplicity.js
var name194 = "setMultiplicity";
var dependencies194 = ["typed", "size", "subset", "compareNatural", "Index"];
var createSetMultiplicity = /* @__PURE__ */ factory(name194, dependencies194, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index
} = _ref;
return typed2(name194, {
"number | BigNumber | Fraction | Complex, Array | Matrix": function numberBigNumberFractionComplexArrayMatrix(e2, a) {
if (subset(size(a), new Index(0)) === 0) {
return 0;
}
var b = flatten(Array.isArray(a) ? a : a.toArray());
var count = 0;
for (var i = 0; i < b.length; i++) {
if (compareNatural(b[i], e2) === 0) {
count++;
}
}
return count;
}
});
});
// node_modules/mathjs/lib/esm/function/set/setPowerset.js
var name195 = "setPowerset";
var dependencies195 = ["typed", "size", "subset", "compareNatural", "Index"];
var createSetPowerset = /* @__PURE__ */ factory(name195, dependencies195, (_ref) => {
var {
typed: typed2,
size,
subset,
compareNatural,
Index
} = _ref;
return typed2(name195, {
"Array | Matrix": function ArrayMatrix(a) {
if (subset(size(a), new Index(0)) === 0) {
return [];
}
var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);
var result = [];
var number = 0;
while (number.toString(2).length <= b.length) {
result.push(_subset(b, number.toString(2).split("").reverse()));
number++;
}
return _sort(result);
}
});
function _subset(array, bitarray) {
var result = [];
for (var i = 0; i < bitarray.length; i++) {
if (bitarray[i] === "1") {
result.push(array[i]);
}
}
return result;
}
function _sort(array) {
var temp = [];
for (var i = array.length - 1; i > 0; i--) {
for (var j = 0; j < i; j++) {
if (array[j].length > array[j + 1].length) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
});
// node_modules/mathjs/lib/esm/function/set/setSize.js
var name196 = "setSize";
var dependencies196 = ["typed", "compareNatural"];
var createSetSize = /* @__PURE__ */ factory(name196, dependencies196, (_ref) => {
var {
typed: typed2,
compareNatural
} = _ref;
return typed2(name196, {
"Array | Matrix": function ArrayMatrix(a) {
return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;
},
"Array | Matrix, boolean": function ArrayMatrixBoolean(a, unique) {
if (unique === false || a.length === 0) {
return Array.isArray(a) ? flatten(a).length : flatten(a.toArray()).length;
} else {
var b = flatten(Array.isArray(a) ? a : a.toArray()).sort(compareNatural);
var count = 1;
for (var i = 1; i < b.length; i++) {
if (compareNatural(b[i], b[i - 1]) !== 0) {
count++;
}
}
return count;
}
}
});
});
// node_modules/mathjs/lib/esm/function/set/setSymDifference.js
var name197 = "setSymDifference";
var dependencies197 = ["typed", "size", "concat", "subset", "setDifference", "Index"];
var createSetSymDifference = /* @__PURE__ */ factory(name197, dependencies197, (_ref) => {
var {
typed: typed2,
size,
concat: concat2,
subset,
setDifference,
Index
} = _ref;
return typed2(name197, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
if (subset(size(a1), new Index(0)) === 0) {
return flatten(a2);
} else if (subset(size(a2), new Index(0)) === 0) {
return flatten(a1);
}
var b1 = flatten(a1);
var b2 = flatten(a2);
return concat2(setDifference(b1, b2), setDifference(b2, b1));
}
});
});
// node_modules/mathjs/lib/esm/function/set/setUnion.js
var name198 = "setUnion";
var dependencies198 = ["typed", "size", "concat", "subset", "setIntersect", "setSymDifference", "Index"];
var createSetUnion = /* @__PURE__ */ factory(name198, dependencies198, (_ref) => {
var {
typed: typed2,
size,
concat: concat2,
subset,
setIntersect,
setSymDifference,
Index
} = _ref;
return typed2(name198, {
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(a1, a2) {
if (subset(size(a1), new Index(0)) === 0) {
return flatten(a2);
} else if (subset(size(a2), new Index(0)) === 0) {
return flatten(a1);
}
var b1 = flatten(a1);
var b2 = flatten(a2);
return concat2(setSymDifference(b1, b2), setIntersect(b1, b2));
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/add.js
var name199 = "add";
var dependencies199 = ["typed", "matrix", "addScalar", "equalScalar", "DenseMatrix", "SparseMatrix", "concat"];
var createAdd = /* @__PURE__ */ factory(name199, dependencies199, (_ref) => {
var {
typed: typed2,
matrix,
addScalar,
equalScalar,
DenseMatrix,
SparseMatrix,
concat: concat2
} = _ref;
var matAlgo01xDSid = createMatAlgo01xDSid({
typed: typed2
});
var matAlgo04xSidSid = createMatAlgo04xSidSid({
typed: typed2,
equalScalar
});
var matAlgo10xSids = createMatAlgo10xSids({
typed: typed2,
DenseMatrix
});
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
typed: typed2,
matrix,
concat: concat2
});
return typed2(name199, {
"any, any": addScalar,
"any, any, ...any": typed2.referToSelf((self2) => (x, y, rest) => {
var result = self2(x, y);
for (var i = 0; i < rest.length; i++) {
result = self2(result, rest[i]);
}
return result;
})
}, matrixAlgorithmSuite({
elop: addScalar,
DS: matAlgo01xDSid,
SS: matAlgo04xSidSid,
Ss: matAlgo10xSids
}));
});
// node_modules/mathjs/lib/esm/function/arithmetic/hypot.js
var name200 = "hypot";
var dependencies200 = ["typed", "abs", "addScalar", "divideScalar", "multiplyScalar", "sqrt", "smaller", "isPositive"];
var createHypot = /* @__PURE__ */ factory(name200, dependencies200, (_ref) => {
var {
typed: typed2,
abs: abs2,
addScalar,
divideScalar,
multiplyScalar,
sqrt: sqrt2,
smaller,
isPositive
} = _ref;
return typed2(name200, {
"... number | BigNumber": _hypot,
Array: _hypot,
Matrix: (M) => _hypot(flatten(M.toArray()))
});
function _hypot(args) {
var result = 0;
var largest = 0;
for (var i = 0; i < args.length; i++) {
if (isComplex(args[i])) {
throw new TypeError("Unexpected type of argument to hypot");
}
var value = abs2(args[i]);
if (smaller(largest, value)) {
result = multiplyScalar(result, multiplyScalar(divideScalar(largest, value), divideScalar(largest, value)));
result = addScalar(result, 1);
largest = value;
} else {
result = addScalar(result, isPositive(value) ? multiplyScalar(divideScalar(value, largest), divideScalar(value, largest)) : value);
}
}
return multiplyScalar(largest, sqrt2(result));
}
});
// node_modules/mathjs/lib/esm/function/arithmetic/norm.js
var name201 = "norm";
var dependencies201 = ["typed", "abs", "add", "pow", "conj", "sqrt", "multiply", "equalScalar", "larger", "smaller", "matrix", "ctranspose", "eigs"];
var createNorm = /* @__PURE__ */ factory(name201, dependencies201, (_ref) => {
var {
typed: typed2,
abs: abs2,
add: add2,
pow: pow2,
conj,
sqrt: sqrt2,
multiply,
equalScalar,
larger,
smaller,
matrix,
ctranspose,
eigs
} = _ref;
return typed2(name201, {
number: Math.abs,
Complex: function Complex2(x) {
return x.abs();
},
BigNumber: function BigNumber(x) {
return x.abs();
},
boolean: function boolean(x) {
return Math.abs(x);
},
Array: function Array2(x) {
return _norm(matrix(x), 2);
},
Matrix: function Matrix(x) {
return _norm(x, 2);
},
"Array, number | BigNumber | string": function ArrayNumberBigNumberString(x, p) {
return _norm(matrix(x), p);
},
"Matrix, number | BigNumber | string": function MatrixNumberBigNumberString(x, p) {
return _norm(x, p);
}
});
function _vectorNormPlusInfinity(x) {
var pinf = 0;
x.forEach(function(value) {
var v = abs2(value);
if (larger(v, pinf)) {
pinf = v;
}
}, true);
return pinf;
}
function _vectorNormMinusInfinity(x) {
var ninf;
x.forEach(function(value) {
var v = abs2(value);
if (!ninf || smaller(v, ninf)) {
ninf = v;
}
}, true);
return ninf || 0;
}
function _vectorNorm(x, p) {
if (p === Number.POSITIVE_INFINITY || p === "inf") {
return _vectorNormPlusInfinity(x);
}
if (p === Number.NEGATIVE_INFINITY || p === "-inf") {
return _vectorNormMinusInfinity(x);
}
if (p === "fro") {
return _norm(x, 2);
}
if (typeof p === "number" && !isNaN(p)) {
if (!equalScalar(p, 0)) {
var n = 0;
x.forEach(function(value) {
n = add2(pow2(abs2(value), p), n);
}, true);
return pow2(n, 1 / p);
}
return Number.POSITIVE_INFINITY;
}
throw new Error("Unsupported parameter value");
}
function _matrixNormFrobenius(x) {
var fro = 0;
x.forEach(function(value, index) {
fro = add2(fro, multiply(value, conj(value)));
});
return abs2(sqrt2(fro));
}
function _matrixNormOne(x) {
var c = [];
var maxc = 0;
x.forEach(function(value, index) {
var j = index[1];
var cj = add2(c[j] || 0, abs2(value));
if (larger(cj, maxc)) {
maxc = cj;
}
c[j] = cj;
}, true);
return maxc;
}
function _matrixNormTwo(x) {
var sizeX = x.size();
if (sizeX[0] !== sizeX[1]) {
throw new RangeError("Invalid matrix dimensions");
}
var tx = ctranspose(x);
var squaredX = multiply(tx, x);
var eigenVals = eigs(squaredX).values.toArray();
var rho = eigenVals[eigenVals.length - 1];
return abs2(sqrt2(rho));
}
function _matrixNormInfinity(x) {
var r = [];
var maxr = 0;
x.forEach(function(value, index) {
var i = index[0];
var ri = add2(r[i] || 0, abs2(value));
if (larger(ri, maxr)) {
maxr = ri;
}
r[i] = ri;
}, true);
return maxr;
}
function _matrixNorm(x, p) {
if (p === 1) {
return _matrixNormOne(x);
}
if (p === Number.POSITIVE_INFINITY || p === "inf") {
return _matrixNormInfinity(x);
}
if (p === "fro") {
return _matrixNormFrobenius(x);
}
if (p === 2) {
return _matrixNormTwo(x);
}
throw new Error("Unsupported parameter value " + p);
}
function _norm(x, p) {
var sizeX = x.size();
if (sizeX.length === 1) {
return _vectorNorm(x, p);
}
if (sizeX.length === 2) {
if (sizeX[0] && sizeX[1]) {
return _matrixNorm(x, p);
} else {
throw new RangeError("Invalid matrix dimensions");
}
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/dot.js
var name202 = "dot";
var dependencies202 = ["typed", "addScalar", "multiplyScalar", "conj", "size"];
var createDot = /* @__PURE__ */ factory(name202, dependencies202, (_ref) => {
var {
typed: typed2,
addScalar,
multiplyScalar,
conj,
size
} = _ref;
return typed2(name202, {
"Array | DenseMatrix, Array | DenseMatrix": _denseDot,
"SparseMatrix, SparseMatrix": _sparseDot
});
function _validateDim(x, y) {
var xSize = _size(x);
var ySize = _size(y);
var xLen, yLen;
if (xSize.length === 1) {
xLen = xSize[0];
} else if (xSize.length === 2 && xSize[1] === 1) {
xLen = xSize[0];
} else {
throw new RangeError("Expected a column vector, instead got a matrix of size (" + xSize.join(", ") + ")");
}
if (ySize.length === 1) {
yLen = ySize[0];
} else if (ySize.length === 2 && ySize[1] === 1) {
yLen = ySize[0];
} else {
throw new RangeError("Expected a column vector, instead got a matrix of size (" + ySize.join(", ") + ")");
}
if (xLen !== yLen)
throw new RangeError("Vectors must have equal length (" + xLen + " != " + yLen + ")");
if (xLen === 0)
throw new RangeError("Cannot calculate the dot product of empty vectors");
return xLen;
}
function _denseDot(a, b) {
var N = _validateDim(a, b);
var adata = isMatrix(a) ? a._data : a;
var adt = isMatrix(a) ? a._datatype : void 0;
var bdata = isMatrix(b) ? b._data : b;
var bdt = isMatrix(b) ? b._datatype : void 0;
var aIsColumn = _size(a).length === 2;
var bIsColumn = _size(b).length === 2;
var add2 = addScalar;
var mul2 = multiplyScalar;
if (adt && bdt && adt === bdt && typeof adt === "string") {
var dt = adt;
add2 = typed2.find(addScalar, [dt, dt]);
mul2 = typed2.find(multiplyScalar, [dt, dt]);
}
if (!aIsColumn && !bIsColumn) {
var c = mul2(conj(adata[0]), bdata[0]);
for (var i = 1; i < N; i++) {
c = add2(c, mul2(conj(adata[i]), bdata[i]));
}
return c;
}
if (!aIsColumn && bIsColumn) {
var _c = mul2(conj(adata[0]), bdata[0][0]);
for (var _i = 1; _i < N; _i++) {
_c = add2(_c, mul2(conj(adata[_i]), bdata[_i][0]));
}
return _c;
}
if (aIsColumn && !bIsColumn) {
var _c2 = mul2(conj(adata[0][0]), bdata[0]);
for (var _i2 = 1; _i2 < N; _i2++) {
_c2 = add2(_c2, mul2(conj(adata[_i2][0]), bdata[_i2]));
}
return _c2;
}
if (aIsColumn && bIsColumn) {
var _c3 = mul2(conj(adata[0][0]), bdata[0][0]);
for (var _i3 = 1; _i3 < N; _i3++) {
_c3 = add2(_c3, mul2(conj(adata[_i3][0]), bdata[_i3][0]));
}
return _c3;
}
}
function _sparseDot(x, y) {
_validateDim(x, y);
var xindex = x._index;
var xvalues = x._values;
var yindex = y._index;
var yvalues = y._values;
var c = 0;
var add2 = addScalar;
var mul2 = multiplyScalar;
var i = 0;
var j = 0;
while (i < xindex.length && j < yindex.length) {
var I = xindex[i];
var J = yindex[j];
if (I < J) {
i++;
continue;
}
if (I > J) {
j++;
continue;
}
if (I === J) {
c = add2(c, mul2(xvalues[i], yvalues[j]));
i++;
j++;
}
}
return c;
}
function _size(x) {
return isMatrix(x) ? x.size() : size(x);
}
});
// node_modules/mathjs/lib/esm/function/matrix/trace.js
var name203 = "trace";
var dependencies203 = ["typed", "matrix", "add"];
var createTrace = /* @__PURE__ */ factory(name203, dependencies203, (_ref) => {
var {
typed: typed2,
matrix,
add: add2
} = _ref;
return typed2("trace", {
Array: function _arrayTrace(x) {
return _denseTrace(matrix(x));
},
SparseMatrix: _sparseTrace,
DenseMatrix: _denseTrace,
any: clone
});
function _denseTrace(m) {
var size = m._size;
var data = m._data;
switch (size.length) {
case 1:
if (size[0] === 1) {
return clone(data[0]);
}
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
case 2: {
var rows = size[0];
var cols = size[1];
if (rows === cols) {
var sum2 = 0;
for (var i = 0; i < rows; i++) {
sum2 = add2(sum2, data[i][i]);
}
return sum2;
} else {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
}
default:
throw new RangeError("Matrix must be two dimensional (size: " + format3(size) + ")");
}
}
function _sparseTrace(m) {
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
var size = m._size;
var rows = size[0];
var columns = size[1];
if (rows === columns) {
var sum2 = 0;
if (values2.length > 0) {
for (var j = 0; j < columns; j++) {
var k0 = ptr[j];
var k1 = ptr[j + 1];
for (var k = k0; k < k1; k++) {
var i = index[k];
if (i === j) {
sum2 = add2(sum2, values2[k]);
break;
}
if (i > j) {
break;
}
}
}
}
return sum2;
}
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
});
// node_modules/mathjs/lib/esm/type/matrix/function/index.js
var name204 = "index";
var dependencies204 = ["typed", "Index"];
var createIndex = /* @__PURE__ */ factory(name204, dependencies204, (_ref) => {
var {
typed: typed2,
Index
} = _ref;
return typed2(name204, {
"...number | string | BigNumber | Range | Array | Matrix": function numberStringBigNumberRangeArrayMatrix(args) {
var ranges = args.map(function(arg) {
if (isBigNumber(arg)) {
return arg.toNumber();
} else if (isArray(arg) || isMatrix(arg)) {
return arg.map(function(elem) {
return isBigNumber(elem) ? elem.toNumber() : elem;
});
} else {
return arg;
}
});
var res = new Index();
Index.apply(res, ranges);
return res;
}
});
});
// node_modules/mathjs/lib/esm/expression/keywords.js
var keywords = /* @__PURE__ */ new Set(["end"]);
// node_modules/mathjs/lib/esm/expression/node/Node.js
var name205 = "Node";
var dependencies205 = ["mathWithTransform"];
var createNode = /* @__PURE__ */ factory(name205, dependencies205, (_ref) => {
var {
mathWithTransform
} = _ref;
function _validateScope(scope) {
for (var symbol of [...keywords]) {
if (scope.has(symbol)) {
throw new Error('Scope contains an illegal symbol, "' + symbol + '" is a reserved keyword');
}
}
}
class Node {
get type() {
return "Node";
}
get isNode() {
return true;
}
/**
* Evaluate the node
* @param {Object} [scope] Scope to read/write variables
* @return {*} Returns the result
*/
evaluate(scope) {
return this.compile().evaluate(scope);
}
/**
* Compile the node into an optimized, evauatable JavaScript function
* @return {{evaluate: function([Object])}} object
* Returns an object with a function 'evaluate',
* which can be invoked as expr.evaluate([scope: Object]),
* where scope is an optional object with
* variables.
*/
compile() {
var expr = this._compile(mathWithTransform, {});
var args = {};
var context = null;
function evaluate2(scope) {
var s = createMap(scope);
_validateScope(s);
return expr(s, args, context);
}
return {
evaluate: evaluate2
};
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
throw new Error("Method _compile must be implemented by type " + this.type);
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
throw new Error("Cannot run forEach on a Node interface");
}
/**
* Create a new Node whose children are the results of calling the
* provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {OperatorNode} Returns a transformed copy of the node
*/
map(callback) {
throw new Error("Cannot run map on a Node interface");
}
/**
* Validate whether an object is a Node, for use with map
* @param {Node} node
* @returns {Node} Returns the input if it's a node, else throws an Error
* @protected
*/
_ifNode(node) {
if (!isNode(node)) {
throw new TypeError("Callback function must return a Node");
}
return node;
}
/**
* Recursively traverse all nodes in a node tree. Executes given callback for
* this node and each of its child nodes.
* @param {function(node: Node, path: string, parent: Node)} callback
* A callback called for every node in the node tree.
*/
traverse(callback) {
callback(this, null, null);
function _traverse(node, callback2) {
node.forEach(function(child, path, parent) {
callback2(child, path, parent);
_traverse(child, callback2);
});
}
_traverse(this, callback);
}
/**
* Recursively transform a node tree via a transform function.
*
* For example, to replace all nodes of type SymbolNode having name 'x' with
* a ConstantNode with value 2:
*
* const res = Node.transform(function (node, path, parent) {
* if (node && node.isSymbolNode) && (node.name === 'x')) {
* return new ConstantNode(2)
* }
* else {
* return node
* }
* })
*
* @param {function(node: Node, path: string, parent: Node) : Node} callback
* A mapping function accepting a node, and returning
* a replacement for the node or the original node. The "signature"
* of the callback must be:
* callback(node: Node, index: string, parent: Node) : Node
* @return {Node} Returns the original node or its replacement
*/
transform(callback) {
function _transform(child, path, parent) {
var replacement = callback(child, path, parent);
if (replacement !== child) {
return replacement;
}
return child.map(_transform);
}
return _transform(this, null, null);
}
/**
* Find any node in the node tree matching given filter function. For
* example, to find all nodes of type SymbolNode having name 'x':
*
* const results = Node.filter(function (node) {
* return (node && node.isSymbolNode) && (node.name === 'x')
* })
*
* @param {function(node: Node, path: string, parent: Node) : Node} callback
* A test function returning true when a node matches, and false
* otherwise. Function signature:
* callback(node: Node, index: string, parent: Node) : boolean
* @return {Node[]} nodes
* An array with nodes matching given filter criteria
*/
filter(callback) {
var nodes = [];
this.traverse(function(node, path, parent) {
if (callback(node, path, parent)) {
nodes.push(node);
}
});
return nodes;
}
/**
* Create a shallow clone of this node
* @return {Node}
*/
clone() {
throw new Error("Cannot clone a Node interface");
}
/**
* Create a deep clone of this node
* @return {Node}
*/
cloneDeep() {
return this.map(function(node) {
return node.cloneDeep();
});
}
/**
* Deep compare this node with another node.
* @param {Node} other
* @return {boolean} Returns true when both nodes are of the same type and
* contain the same values (as do their childs)
*/
equals(other) {
return other ? this.type === other.type && deepStrictEqual(this, other) : false;
}
/**
* Get string representation. (wrapper function)
*
* This function can get an object of the following form:
* {
* handler: //This can be a callback function of the form
* // "function callback(node, options)"or
* // a map that maps function names (used in FunctionNodes)
* // to callbacks
* parenthesis: "keep" //the parenthesis option (This is optional)
* }
*
* @param {Object} [options]
* @return {string}
*/
toString(options) {
var customString = this._getCustomString(options);
if (typeof customString !== "undefined") {
return customString;
}
return this._toString(options);
}
/**
* Get a JSON representation of the node
* Both .toJSON() and the static .fromJSON(json) should be implemented by all
* implementations of Node
* @returns {Object}
*/
toJSON() {
throw new Error("Cannot serialize object: toJSON not implemented by " + this.type);
}
/**
* Get HTML representation. (wrapper function)
*
* This function can get an object of the following form:
* {
* handler: //This can be a callback function of the form
* // "function callback(node, options)" or
* // a map that maps function names (used in FunctionNodes)
* // to callbacks
* parenthesis: "keep" //the parenthesis option (This is optional)
* }
*
* @param {Object} [options]
* @return {string}
*/
toHTML(options) {
var customString = this._getCustomString(options);
if (typeof customString !== "undefined") {
return customString;
}
return this.toHTML(options);
}
/**
* Internal function to generate the string output.
* This has to be implemented by every Node
*
* @throws {Error}
*/
_toString() {
throw new Error("_toString not implemented for " + this.type);
}
/**
* Get LaTeX representation. (wrapper function)
*
* This function can get an object of the following form:
* {
* handler: //This can be a callback function of the form
* // "function callback(node, options)"or
* // a map that maps function names (used in FunctionNodes)
* // to callbacks
* parenthesis: "keep" //the parenthesis option (This is optional)
* }
*
* @param {Object} [options]
* @return {string}
*/
toTex(options) {
var customString = this._getCustomString(options);
if (typeof customString !== "undefined") {
return customString;
}
return this._toTex(options);
}
/**
* Internal function to generate the LaTeX output.
* This has to be implemented by every Node
*
* @param {Object} [options]
* @throws {Error}
*/
_toTex(options) {
throw new Error("_toTex not implemented for " + this.type);
}
/**
* Helper used by `to...` functions.
*/
_getCustomString(options) {
if (options && typeof options === "object") {
switch (typeof options.handler) {
case "object":
case "undefined":
return;
case "function":
return options.handler(this, options);
default:
throw new TypeError("Object or function expected as callback");
}
}
}
/**
* Get identifier.
* @return {string}
*/
getIdentifier() {
return this.type;
}
/**
* Get the content of the current Node.
* @return {Node} node
**/
getContent() {
return this;
}
}
return Node;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/transform/utils/errorTransform.js
function errorTransform(err) {
if (err && err.isIndexError) {
return new IndexError(err.index + 1, err.min + 1, err.max !== void 0 ? err.max + 1 : void 0);
}
return err;
}
// node_modules/mathjs/lib/esm/expression/node/utils/access.js
function accessFactory(_ref) {
var {
subset
} = _ref;
return function access(object, index) {
try {
if (Array.isArray(object)) {
return subset(object, index);
} else if (object && typeof object.subset === "function") {
return object.subset(index);
} else if (typeof object === "string") {
return subset(object, index);
} else if (typeof object === "object") {
if (!index.isObjectProperty()) {
throw new TypeError("Cannot apply a numeric index as object property");
}
return getSafeProperty(object, index.getObjectProperty());
} else {
throw new TypeError("Cannot apply index: unsupported type of object");
}
} catch (err) {
throw errorTransform(err);
}
};
}
// node_modules/mathjs/lib/esm/expression/node/AccessorNode.js
var name206 = "AccessorNode";
var dependencies206 = ["subset", "Node"];
var createAccessorNode = /* @__PURE__ */ factory(name206, dependencies206, (_ref) => {
var {
subset,
Node
} = _ref;
var access = accessFactory({
subset
});
function needParenthesis(node) {
return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));
}
class AccessorNode extends Node {
/**
* @constructor AccessorNode
* @extends {Node}
* Access an object property or get a matrix subset
*
* @param {Node} object The object from which to retrieve
* a property or subset.
* @param {IndexNode} index IndexNode containing ranges
*/
constructor(object, index) {
super();
if (!isNode(object)) {
throw new TypeError('Node expected for parameter "object"');
}
if (!isIndexNode(index)) {
throw new TypeError('IndexNode expected for parameter "index"');
}
this.object = object;
this.index = index;
}
// readonly property name
get name() {
if (this.index) {
return this.index.isObjectProperty() ? this.index.getObjectProperty() : "";
} else {
return this.object.name || "";
}
}
get type() {
return name206;
}
get isAccessorNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalObject = this.object._compile(math2, argNames);
var evalIndex = this.index._compile(math2, argNames);
if (this.index.isObjectProperty()) {
var prop = this.index.getObjectProperty();
return function evalAccessorNode(scope, args, context) {
return getSafeProperty(evalObject(scope, args, context), prop);
};
} else {
return function evalAccessorNode(scope, args, context) {
var object = evalObject(scope, args, context);
var index = evalIndex(scope, args, object);
return access(object, index);
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.object, "object", this);
callback(this.index, "index", this);
}
/**
* Create a new AccessorNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {AccessorNode} Returns a transformed copy of the node
*/
map(callback) {
return new AccessorNode(this._ifNode(callback(this.object, "object", this)), this._ifNode(callback(this.index, "index", this)));
}
/**
* Create a clone of this node, a shallow copy
* @return {AccessorNode}
*/
clone() {
return new AccessorNode(this.object, this.index);
}
/**
* Get string representation
* @param {Object} options
* @return {string}
*/
_toString(options) {
var object = this.object.toString(options);
if (needParenthesis(this.object)) {
object = "(" + object + ")";
}
return object + this.index.toString(options);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string}
*/
toHTML(options) {
var object = this.object.toHTML(options);
if (needParenthesis(this.object)) {
object = '(' + object + ')';
}
return object + this.index.toHTML(options);
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string}
*/
_toTex(options) {
var object = this.object.toTex(options);
if (needParenthesis(this.object)) {
object = "\\left(' + object + '\\right)";
}
return object + this.index.toTex(options);
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name206,
object: this.object,
index: this.index
};
}
/**
* Instantiate an AccessorNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "AccessorNode", object: ..., index: ...}`,
* where mathjs is optional
* @returns {AccessorNode}
*/
static fromJSON(json) {
return new AccessorNode(json.object, json.index);
}
}
_defineProperty(AccessorNode, "name", name206);
return AccessorNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/ArrayNode.js
var name207 = "ArrayNode";
var dependencies207 = ["Node"];
var createArrayNode = /* @__PURE__ */ factory(name207, dependencies207, (_ref) => {
var {
Node
} = _ref;
class ArrayNode extends Node {
/**
* @constructor ArrayNode
* @extends {Node}
* Holds an 1-dimensional array with items
* @param {Node[]} [items] 1 dimensional array with items
*/
constructor(items) {
super();
this.items = items || [];
if (!Array.isArray(this.items) || !this.items.every(isNode)) {
throw new TypeError("Array containing Nodes expected");
}
}
get type() {
return name207;
}
get isArrayNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalItems = map(this.items, function(item) {
return item._compile(math2, argNames);
});
var asMatrix = math2.config.matrix !== "Array";
if (asMatrix) {
var matrix = math2.matrix;
return function evalArrayNode(scope, args, context) {
return matrix(map(evalItems, function(evalItem) {
return evalItem(scope, args, context);
}));
};
} else {
return function evalArrayNode(scope, args, context) {
return map(evalItems, function(evalItem) {
return evalItem(scope, args, context);
});
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
for (var i = 0; i < this.items.length; i++) {
var node = this.items[i];
callback(node, "items[" + i + "]", this);
}
}
/**
* Create a new ArrayNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {ArrayNode} Returns a transformed copy of the node
*/
map(callback) {
var items = [];
for (var i = 0; i < this.items.length; i++) {
items[i] = this._ifNode(callback(this.items[i], "items[" + i + "]", this));
}
return new ArrayNode(items);
}
/**
* Create a clone of this node, a shallow copy
* @return {ArrayNode}
*/
clone() {
return new ArrayNode(this.items.slice(0));
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
* @override
*/
_toString(options) {
var items = this.items.map(function(node) {
return node.toString(options);
});
return "[" + items.join(", ") + "]";
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name207,
items: this.items
};
}
/**
* Instantiate an ArrayNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "ArrayNode", items: [...]}`,
* where mathjs is optional
* @returns {ArrayNode}
*/
static fromJSON(json) {
return new ArrayNode(json.items);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
* @override
*/
toHTML(options) {
var items = this.items.map(function(node) {
return node.toHTML(options);
});
return '[' + items.join(',') + ']';
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
function itemsToTex(items, nested) {
var mixedItems = items.some(isArrayNode) && !items.every(isArrayNode);
var itemsFormRow = nested || mixedItems;
var itemSep = itemsFormRow ? "&" : "\\\\";
var itemsTex = items.map(function(node) {
if (node.items) {
return itemsToTex(node.items, !nested);
} else {
return node.toTex(options);
}
}).join(itemSep);
return mixedItems || !itemsFormRow || itemsFormRow && !nested ? "\\begin{bmatrix}" + itemsTex + "\\end{bmatrix}" : itemsTex;
}
return itemsToTex(this.items, false);
}
}
_defineProperty(ArrayNode, "name", name207);
return ArrayNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/utils/assign.js
function assignFactory(_ref) {
var {
subset,
matrix
} = _ref;
return function assign2(object, index, value) {
try {
if (Array.isArray(object)) {
var result = matrix(object).subset(index, value).valueOf();
result.forEach((item, index2) => {
object[index2] = item;
});
return object;
} else if (object && typeof object.subset === "function") {
return object.subset(index, value);
} else if (typeof object === "string") {
return subset(object, index, value);
} else if (typeof object === "object") {
if (!index.isObjectProperty()) {
throw TypeError("Cannot apply a numeric index as object property");
}
setSafeProperty(object, index.getObjectProperty(), value);
return object;
} else {
throw new TypeError("Cannot apply index: unsupported type of object");
}
} catch (err) {
throw errorTransform(err);
}
};
}
// node_modules/mathjs/lib/esm/expression/operators.js
var properties = [{
// assignment
AssignmentNode: {},
FunctionAssignmentNode: {}
}, {
// conditional expression
ConditionalNode: {
latexLeftParens: false,
latexRightParens: false,
latexParens: false
// conditionals don't need parentheses in LaTeX because
// they are 2 dimensional
}
}, {
// logical or
"OperatorNode:or": {
op: "or",
associativity: "left",
associativeWith: []
}
}, {
// logical xor
"OperatorNode:xor": {
op: "xor",
associativity: "left",
associativeWith: []
}
}, {
// logical and
"OperatorNode:and": {
op: "and",
associativity: "left",
associativeWith: []
}
}, {
// bitwise or
"OperatorNode:bitOr": {
op: "|",
associativity: "left",
associativeWith: []
}
}, {
// bitwise xor
"OperatorNode:bitXor": {
op: "^|",
associativity: "left",
associativeWith: []
}
}, {
// bitwise and
"OperatorNode:bitAnd": {
op: "&",
associativity: "left",
associativeWith: []
}
}, {
// relational operators
"OperatorNode:equal": {
op: "==",
associativity: "left",
associativeWith: []
},
"OperatorNode:unequal": {
op: "!=",
associativity: "left",
associativeWith: []
},
"OperatorNode:smaller": {
op: "<",
associativity: "left",
associativeWith: []
},
"OperatorNode:larger": {
op: ">",
associativity: "left",
associativeWith: []
},
"OperatorNode:smallerEq": {
op: "<=",
associativity: "left",
associativeWith: []
},
"OperatorNode:largerEq": {
op: ">=",
associativity: "left",
associativeWith: []
},
RelationalNode: {
associativity: "left",
associativeWith: []
}
}, {
// bitshift operators
"OperatorNode:leftShift": {
op: "<<",
associativity: "left",
associativeWith: []
},
"OperatorNode:rightArithShift": {
op: ">>",
associativity: "left",
associativeWith: []
},
"OperatorNode:rightLogShift": {
op: ">>>",
associativity: "left",
associativeWith: []
}
}, {
// unit conversion
"OperatorNode:to": {
op: "to",
associativity: "left",
associativeWith: []
}
}, {
// range
RangeNode: {}
}, {
// addition, subtraction
"OperatorNode:add": {
op: "+",
associativity: "left",
associativeWith: ["OperatorNode:add", "OperatorNode:subtract"]
},
"OperatorNode:subtract": {
op: "-",
associativity: "left",
associativeWith: []
}
}, {
// multiply, divide, modulus
"OperatorNode:multiply": {
op: "*",
associativity: "left",
associativeWith: ["OperatorNode:multiply", "OperatorNode:divide", "Operator:dotMultiply", "Operator:dotDivide"]
},
"OperatorNode:divide": {
op: "/",
associativity: "left",
associativeWith: [],
latexLeftParens: false,
latexRightParens: false,
latexParens: false
// fractions don't require parentheses because
// they're 2 dimensional, so parens aren't needed
// in LaTeX
},
"OperatorNode:dotMultiply": {
op: ".*",
associativity: "left",
associativeWith: ["OperatorNode:multiply", "OperatorNode:divide", "OperatorNode:dotMultiply", "OperatorNode:doDivide"]
},
"OperatorNode:dotDivide": {
op: "./",
associativity: "left",
associativeWith: []
},
"OperatorNode:mod": {
op: "mod",
associativity: "left",
associativeWith: []
}
}, {
// Repeat multiplication for implicit multiplication
"OperatorNode:multiply": {
associativity: "left",
associativeWith: ["OperatorNode:multiply", "OperatorNode:divide", "Operator:dotMultiply", "Operator:dotDivide"]
}
}, {
// unary prefix operators
"OperatorNode:unaryPlus": {
op: "+",
associativity: "right"
},
"OperatorNode:unaryMinus": {
op: "-",
associativity: "right"
},
"OperatorNode:bitNot": {
op: "~",
associativity: "right"
},
"OperatorNode:not": {
op: "not",
associativity: "right"
}
}, {
// exponentiation
"OperatorNode:pow": {
op: "^",
associativity: "right",
associativeWith: [],
latexRightParens: false
// the exponent doesn't need parentheses in
// LaTeX because it's 2 dimensional
// (it's on top)
},
"OperatorNode:dotPow": {
op: ".^",
associativity: "right",
associativeWith: []
}
}, {
// factorial
"OperatorNode:factorial": {
op: "!",
associativity: "left"
}
}, {
// matrix transpose
"OperatorNode:ctranspose": {
op: "'",
associativity: "left"
}
}];
function unwrapParen(_node, parenthesis) {
if (!parenthesis || parenthesis !== "auto")
return _node;
var node = _node;
while (isParenthesisNode(node))
node = node.content;
return node;
}
function getPrecedence(_node, parenthesis, implicit, parent) {
var node = _node;
if (parenthesis !== "keep") {
node = _node.getContent();
}
var identifier = node.getIdentifier();
var precedence = null;
for (var i = 0; i < properties.length; i++) {
if (identifier in properties[i]) {
precedence = i;
break;
}
}
if (identifier === "OperatorNode:multiply" && node.implicit && implicit !== "show") {
var leftArg = unwrapParen(node.args[0], parenthesis);
if (!(isConstantNode(leftArg) && parent && parent.getIdentifier() === "OperatorNode:divide" && rule2Node(unwrapParen(parent.args[0], parenthesis))) && !(leftArg.getIdentifier() === "OperatorNode:divide" && rule2Node(unwrapParen(leftArg.args[0], parenthesis)) && isConstantNode(unwrapParen(leftArg.args[1])))) {
precedence += 1;
}
}
return precedence;
}
function getAssociativity(_node, parenthesis) {
var node = _node;
if (parenthesis !== "keep") {
node = _node.getContent();
}
var identifier = node.getIdentifier();
var index = getPrecedence(node, parenthesis);
if (index === null) {
return null;
}
var property = properties[index][identifier];
if (hasOwnProperty(property, "associativity")) {
if (property.associativity === "left") {
return "left";
}
if (property.associativity === "right") {
return "right";
}
throw Error("'" + identifier + "' has the invalid associativity '" + property.associativity + "'.");
}
return null;
}
function isAssociativeWith(nodeA, nodeB, parenthesis) {
var a = parenthesis !== "keep" ? nodeA.getContent() : nodeA;
var b = parenthesis !== "keep" ? nodeA.getContent() : nodeB;
var identifierA = a.getIdentifier();
var identifierB = b.getIdentifier();
var index = getPrecedence(a, parenthesis);
if (index === null) {
return null;
}
var property = properties[index][identifierA];
if (hasOwnProperty(property, "associativeWith") && property.associativeWith instanceof Array) {
for (var i = 0; i < property.associativeWith.length; i++) {
if (property.associativeWith[i] === identifierB) {
return true;
}
}
return false;
}
return null;
}
function getOperator(fn) {
var identifier = "OperatorNode:" + fn;
for (var group of properties) {
if (identifier in group) {
return group[identifier].op;
}
}
return null;
}
// node_modules/mathjs/lib/esm/expression/node/AssignmentNode.js
var name208 = "AssignmentNode";
var dependencies208 = [
"subset",
"?matrix",
// FIXME: should not be needed at all, should be handled by subset
"Node"
];
var createAssignmentNode = /* @__PURE__ */ factory(name208, dependencies208, (_ref) => {
var {
subset,
matrix,
Node
} = _ref;
var access = accessFactory({
subset
});
var assign2 = assignFactory({
subset,
matrix
});
function needParenthesis(node, parenthesis, implicit) {
if (!parenthesis) {
parenthesis = "keep";
}
var precedence = getPrecedence(node, parenthesis, implicit);
var exprPrecedence = getPrecedence(node.value, parenthesis, implicit);
return parenthesis === "all" || exprPrecedence !== null && exprPrecedence <= precedence;
}
class AssignmentNode extends Node {
/**
* @constructor AssignmentNode
* @extends {Node}
*
* Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or
* replace a subset of a matrix like `A[2,2]=42`.
*
* Syntax:
*
* new AssignmentNode(symbol, value)
* new AssignmentNode(object, index, value)
*
* Usage:
*
* new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2
* new AssignmentNode(new SymbolNode('a'),
* new IndexNode('b'),
* new ConstantNode(2)) // a.b=2
* new AssignmentNode(new SymbolNode('a'),
* new IndexNode(1, 2),
* new ConstantNode(3)) // a[1,2]=3
*
* @param {SymbolNode | AccessorNode} object
* Object on which to assign a value
* @param {IndexNode} [index=null]
* Index, property name or matrix index. Optional. If not provided
* and `object` is a SymbolNode, the property is assigned to the
* global scope.
* @param {Node} value
* The value to be assigned
*/
constructor(object, index, value) {
super();
this.object = object;
this.index = value ? index : null;
this.value = value || index;
if (!isSymbolNode(object) && !isAccessorNode(object)) {
throw new TypeError('SymbolNode or AccessorNode expected as "object"');
}
if (isSymbolNode(object) && object.name === "end") {
throw new Error('Cannot assign to symbol "end"');
}
if (this.index && !isIndexNode(this.index)) {
throw new TypeError('IndexNode expected as "index"');
}
if (!isNode(this.value)) {
throw new TypeError('Node expected as "value"');
}
}
// class name for typing purposes:
// readonly property name
get name() {
if (this.index) {
return this.index.isObjectProperty() ? this.index.getObjectProperty() : "";
} else {
return this.object.name || "";
}
}
get type() {
return name208;
}
get isAssignmentNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalObject = this.object._compile(math2, argNames);
var evalIndex = this.index ? this.index._compile(math2, argNames) : null;
var evalValue = this.value._compile(math2, argNames);
var name309 = this.object.name;
if (!this.index) {
if (!isSymbolNode(this.object)) {
throw new TypeError("SymbolNode expected as object");
}
return function evalAssignmentNode(scope, args, context) {
var value = evalValue(scope, args, context);
scope.set(name309, value);
return value;
};
} else if (this.index.isObjectProperty()) {
var prop = this.index.getObjectProperty();
return function evalAssignmentNode(scope, args, context) {
var object = evalObject(scope, args, context);
var value = evalValue(scope, args, context);
setSafeProperty(object, prop, value);
return value;
};
} else if (isSymbolNode(this.object)) {
return function evalAssignmentNode(scope, args, context) {
var childObject = evalObject(scope, args, context);
var value = evalValue(scope, args, context);
var index = evalIndex(scope, args, childObject);
scope.set(name309, assign2(childObject, index, value));
return value;
};
} else {
var evalParentObject = this.object.object._compile(math2, argNames);
if (this.object.index.isObjectProperty()) {
var parentProp = this.object.index.getObjectProperty();
return function evalAssignmentNode(scope, args, context) {
var parent = evalParentObject(scope, args, context);
var childObject = getSafeProperty(parent, parentProp);
var index = evalIndex(scope, args, childObject);
var value = evalValue(scope, args, context);
setSafeProperty(parent, parentProp, assign2(childObject, index, value));
return value;
};
} else {
var evalParentIndex = this.object.index._compile(math2, argNames);
return function evalAssignmentNode(scope, args, context) {
var parent = evalParentObject(scope, args, context);
var parentIndex = evalParentIndex(scope, args, parent);
var childObject = access(parent, parentIndex);
var index = evalIndex(scope, args, childObject);
var value = evalValue(scope, args, context);
assign2(parent, parentIndex, assign2(childObject, index, value));
return value;
};
}
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.object, "object", this);
if (this.index) {
callback(this.index, "index", this);
}
callback(this.value, "value", this);
}
/**
* Create a new AssignmentNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {AssignmentNode} Returns a transformed copy of the node
*/
map(callback) {
var object = this._ifNode(callback(this.object, "object", this));
var index = this.index ? this._ifNode(callback(this.index, "index", this)) : null;
var value = this._ifNode(callback(this.value, "value", this));
return new AssignmentNode(object, index, value);
}
/**
* Create a clone of this node, a shallow copy
* @return {AssignmentNode}
*/
clone() {
return new AssignmentNode(this.object, this.index, this.value);
}
/**
* Get string representation
* @param {Object} options
* @return {string}
*/
_toString(options) {
var object = this.object.toString(options);
var index = this.index ? this.index.toString(options) : "";
var value = this.value.toString(options);
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
value = "(" + value + ")";
}
return object + index + " = " + value;
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name208,
object: this.object,
index: this.index,
value: this.value
};
}
/**
* Instantiate an AssignmentNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "AssignmentNode", object: ..., index: ..., value: ...}`,
* where mathjs is optional
* @returns {AssignmentNode}
*/
static fromJSON(json) {
return new AssignmentNode(json.object, json.index, json.value);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string}
*/
toHTML(options) {
var object = this.object.toHTML(options);
var index = this.index ? this.index.toHTML(options) : "";
var value = this.value.toHTML(options);
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
value = '(' + value + ')';
}
return object + index + '=' + value;
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string}
*/
_toTex(options) {
var object = this.object.toTex(options);
var index = this.index ? this.index.toTex(options) : "";
var value = this.value.toTex(options);
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
value = "\\left(".concat(value, "\\right)");
}
return object + index + ":=" + value;
}
}
_defineProperty(AssignmentNode, "name", name208);
return AssignmentNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/BlockNode.js
var name209 = "BlockNode";
var dependencies209 = ["ResultSet", "Node"];
var createBlockNode = /* @__PURE__ */ factory(name209, dependencies209, (_ref) => {
var {
ResultSet,
Node
} = _ref;
class BlockNode extends Node {
/**
* @constructor BlockNode
* @extends {Node}
* Holds a set with blocks
* @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks
* An array with blocks, where a block is constructed as an
* Object with properties block, which is a Node, and visible,
* which is a boolean. The property visible is optional and
* is true by default
*/
constructor(blocks) {
super();
if (!Array.isArray(blocks))
throw new Error("Array expected");
this.blocks = blocks.map(function(block) {
var node = block && block.node;
var visible = block && block.visible !== void 0 ? block.visible : true;
if (!isNode(node))
throw new TypeError('Property "node" must be a Node');
if (typeof visible !== "boolean") {
throw new TypeError('Property "visible" must be a boolean');
}
return {
node,
visible
};
});
}
get type() {
return name209;
}
get isBlockNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalBlocks = map(this.blocks, function(block) {
return {
evaluate: block.node._compile(math2, argNames),
visible: block.visible
};
});
return function evalBlockNodes(scope, args, context) {
var results = [];
forEach(evalBlocks, function evalBlockNode(block) {
var result = block.evaluate(scope, args, context);
if (block.visible) {
results.push(result);
}
});
return new ResultSet(results);
};
}
/**
* Execute a callback for each of the child blocks of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
for (var i = 0; i < this.blocks.length; i++) {
callback(this.blocks[i].node, "blocks[" + i + "].node", this);
}
}
/**
* Create a new BlockNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {BlockNode} Returns a transformed copy of the node
*/
map(callback) {
var blocks = [];
for (var i = 0; i < this.blocks.length; i++) {
var block = this.blocks[i];
var node = this._ifNode(callback(block.node, "blocks[" + i + "].node", this));
blocks[i] = {
node,
visible: block.visible
};
}
return new BlockNode(blocks);
}
/**
* Create a clone of this node, a shallow copy
* @return {BlockNode}
*/
clone() {
var blocks = this.blocks.map(function(block) {
return {
node: block.node,
visible: block.visible
};
});
return new BlockNode(blocks);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
* @override
*/
_toString(options) {
return this.blocks.map(function(param) {
return param.node.toString(options) + (param.visible ? "" : ";");
}).join("\n");
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name209,
blocks: this.blocks
};
}
/**
* Instantiate an BlockNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "BlockNode", blocks: [{node: ..., visible: false}, ...]}`,
* where mathjs is optional
* @returns {BlockNode}
*/
static fromJSON(json) {
return new BlockNode(json.blocks);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
* @override
*/
toHTML(options) {
return this.blocks.map(function(param) {
return param.node.toHTML(options) + (param.visible ? "" : ';');
}).join('
');
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
return this.blocks.map(function(param) {
return param.node.toTex(options) + (param.visible ? "" : ";");
}).join("\\;\\;\n");
}
}
_defineProperty(BlockNode, "name", name209);
return BlockNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/ConditionalNode.js
var name210 = "ConditionalNode";
var dependencies210 = ["Node"];
var createConditionalNode = /* @__PURE__ */ factory(name210, dependencies210, (_ref) => {
var {
Node
} = _ref;
function testCondition(condition) {
if (typeof condition === "number" || typeof condition === "boolean" || typeof condition === "string") {
return !!condition;
}
if (condition) {
if (isBigNumber(condition)) {
return !condition.isZero();
}
if (isComplex(condition)) {
return !!(condition.re || condition.im);
}
if (isUnit(condition)) {
return !!condition.value;
}
}
if (condition === null || condition === void 0) {
return false;
}
throw new TypeError('Unsupported type of condition "' + typeOf(condition) + '"');
}
class ConditionalNode extends Node {
/**
* A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'
*
* @param {Node} condition Condition, must result in a boolean
* @param {Node} trueExpr Expression evaluated when condition is true
* @param {Node} falseExpr Expression evaluated when condition is true
*
* @constructor ConditionalNode
* @extends {Node}
*/
constructor(condition, trueExpr, falseExpr) {
super();
if (!isNode(condition)) {
throw new TypeError("Parameter condition must be a Node");
}
if (!isNode(trueExpr)) {
throw new TypeError("Parameter trueExpr must be a Node");
}
if (!isNode(falseExpr)) {
throw new TypeError("Parameter falseExpr must be a Node");
}
this.condition = condition;
this.trueExpr = trueExpr;
this.falseExpr = falseExpr;
}
get type() {
return name210;
}
get isConditionalNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalCondition = this.condition._compile(math2, argNames);
var evalTrueExpr = this.trueExpr._compile(math2, argNames);
var evalFalseExpr = this.falseExpr._compile(math2, argNames);
return function evalConditionalNode(scope, args, context) {
return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.condition, "condition", this);
callback(this.trueExpr, "trueExpr", this);
callback(this.falseExpr, "falseExpr", this);
}
/**
* Create a new ConditionalNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {ConditionalNode} Returns a transformed copy of the node
*/
map(callback) {
return new ConditionalNode(this._ifNode(callback(this.condition, "condition", this)), this._ifNode(callback(this.trueExpr, "trueExpr", this)), this._ifNode(callback(this.falseExpr, "falseExpr", this)));
}
/**
* Create a clone of this node, a shallow copy
* @return {ConditionalNode}
*/
clone() {
return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var precedence = getPrecedence(this, parenthesis, options && options.implicit);
var condition = this.condition.toString(options);
var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.condition.type === "OperatorNode" || conditionPrecedence !== null && conditionPrecedence <= precedence) {
condition = "(" + condition + ")";
}
var trueExpr = this.trueExpr.toString(options);
var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.trueExpr.type === "OperatorNode" || truePrecedence !== null && truePrecedence <= precedence) {
trueExpr = "(" + trueExpr + ")";
}
var falseExpr = this.falseExpr.toString(options);
var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.falseExpr.type === "OperatorNode" || falsePrecedence !== null && falsePrecedence <= precedence) {
falseExpr = "(" + falseExpr + ")";
}
return condition + " ? " + trueExpr + " : " + falseExpr;
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name210,
condition: this.condition,
trueExpr: this.trueExpr,
falseExpr: this.falseExpr
};
}
/**
* Instantiate an ConditionalNode from its JSON representation
* @param {Object} json
* An object structured like
* ```
* {"mathjs": "ConditionalNode",
* "condition": ...,
* "trueExpr": ...,
* "falseExpr": ...}
* ```
* where mathjs is optional
* @returns {ConditionalNode}
*/
static fromJSON(json) {
return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var precedence = getPrecedence(this, parenthesis, options && options.implicit);
var condition = this.condition.toHTML(options);
var conditionPrecedence = getPrecedence(this.condition, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.condition.type === "OperatorNode" || conditionPrecedence !== null && conditionPrecedence <= precedence) {
condition = '(' + condition + ')';
}
var trueExpr = this.trueExpr.toHTML(options);
var truePrecedence = getPrecedence(this.trueExpr, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.trueExpr.type === "OperatorNode" || truePrecedence !== null && truePrecedence <= precedence) {
trueExpr = '(' + trueExpr + ')';
}
var falseExpr = this.falseExpr.toHTML(options);
var falsePrecedence = getPrecedence(this.falseExpr, parenthesis, options && options.implicit);
if (parenthesis === "all" || this.falseExpr.type === "OperatorNode" || falsePrecedence !== null && falsePrecedence <= precedence) {
falseExpr = '(' + falseExpr + ')';
}
return condition + '?' + trueExpr + ':' + falseExpr;
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
return "\\begin{cases} {" + this.trueExpr.toTex(options) + "}, &\\quad{\\text{if }\\;" + this.condition.toTex(options) + "}\\\\{" + this.falseExpr.toTex(options) + "}, &\\quad{\\text{otherwise}}\\end{cases}";
}
}
_defineProperty(ConditionalNode, "name", name210);
return ConditionalNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/utils/latex.js
var import_escape_latex = __toESM(require_dist(), 1);
var latexSymbols = {
// GREEK LETTERS
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",
// logic
true: "\\mathrm{True}",
false: "\\mathrm{False}",
// other
i: "i",
// TODO use \i ??
inf: "\\infty",
Inf: "\\infty",
infinity: "\\infty",
Infinity: "\\infty",
oo: "\\infty",
lim: "\\lim",
undefined: "\\mathbf{?}"
};
var latexOperators = {
transpose: "^\\top",
ctranspose: "^H",
factorial: "!",
pow: "^",
dotPow: ".^\\wedge",
// TODO find ideal solution
unaryPlus: "+",
unaryMinus: "-",
bitNot: "\\~",
// TODO find ideal solution
not: "\\neg",
multiply: "\\cdot",
divide: "\\frac",
// TODO how to handle that properly?
dotMultiply: ".\\cdot",
// TODO find ideal solution
dotDivide: ".:",
// TODO find ideal solution
mod: "\\mod",
add: "+",
subtract: "-",
to: "\\rightarrow",
leftShift: "<<",
rightArithShift: ">>",
rightLogShift: ">>>",
equal: "=",
unequal: "\\neq",
smaller: "<",
larger: ">",
smallerEq: "\\leq",
largerEq: "\\geq",
bitAnd: "\\&",
bitXor: "\\underline{|}",
bitOr: "|",
and: "\\wedge",
xor: "\\veebar",
or: "\\vee"
};
var latexFunctions = {
// arithmetic
abs: {
1: "\\left|${args[0]}\\right|"
},
add: {
2: "\\left(${args[0]}".concat(latexOperators.add, "${args[1]}\\right)")
},
cbrt: {
1: "\\sqrt[3]{${args[0]}}"
},
ceil: {
1: "\\left\\lceil${args[0]}\\right\\rceil"
},
cube: {
1: "\\left(${args[0]}\\right)^3"
},
divide: {
2: "\\frac{${args[0]}}{${args[1]}}"
},
dotDivide: {
2: "\\left(${args[0]}".concat(latexOperators.dotDivide, "${args[1]}\\right)")
},
dotMultiply: {
2: "\\left(${args[0]}".concat(latexOperators.dotMultiply, "${args[1]}\\right)")
},
dotPow: {
2: "\\left(${args[0]}".concat(latexOperators.dotPow, "${args[1]}\\right)")
},
exp: {
1: "\\exp\\left(${args[0]}\\right)"
},
expm1: "\\left(e".concat(latexOperators.pow, "{${args[0]}}-1\\right)"),
fix: {
1: "\\mathrm{${name}}\\left(${args[0]}\\right)"
},
floor: {
1: "\\left\\lfloor${args[0]}\\right\\rfloor"
},
gcd: "\\gcd\\left(${args}\\right)",
hypot: "\\hypot\\left(${args}\\right)",
log: {
1: "\\ln\\left(${args[0]}\\right)",
2: "\\log_{${args[1]}}\\left(${args[0]}\\right)"
},
log10: {
1: "\\log_{10}\\left(${args[0]}\\right)"
},
log1p: {
1: "\\ln\\left(${args[0]}+1\\right)",
2: "\\log_{${args[1]}}\\left(${args[0]}+1\\right)"
},
log2: "\\log_{2}\\left(${args[0]}\\right)",
mod: {
2: "\\left(${args[0]}".concat(latexOperators.mod, "${args[1]}\\right)")
},
multiply: {
2: "\\left(${args[0]}".concat(latexOperators.multiply, "${args[1]}\\right)")
},
norm: {
1: "\\left\\|${args[0]}\\right\\|",
2: void 0
// use default template
},
nthRoot: {
2: "\\sqrt[${args[1]}]{${args[0]}}"
},
nthRoots: {
2: "\\{y : $y^{args[1]} = {${args[0]}}\\}"
},
pow: {
2: "\\left(${args[0]}\\right)".concat(latexOperators.pow, "{${args[1]}}")
},
round: {
1: "\\left\\lfloor${args[0]}\\right\\rceil",
2: void 0
// use default template
},
sign: {
1: "\\mathrm{${name}}\\left(${args[0]}\\right)"
},
sqrt: {
1: "\\sqrt{${args[0]}}"
},
square: {
1: "\\left(${args[0]}\\right)^2"
},
subtract: {
2: "\\left(${args[0]}".concat(latexOperators.subtract, "${args[1]}\\right)")
},
unaryMinus: {
1: "".concat(latexOperators.unaryMinus, "\\left(${args[0]}\\right)")
},
unaryPlus: {
1: "".concat(latexOperators.unaryPlus, "\\left(${args[0]}\\right)")
},
// bitwise
bitAnd: {
2: "\\left(${args[0]}".concat(latexOperators.bitAnd, "${args[1]}\\right)")
},
bitNot: {
1: latexOperators.bitNot + "\\left(${args[0]}\\right)"
},
bitOr: {
2: "\\left(${args[0]}".concat(latexOperators.bitOr, "${args[1]}\\right)")
},
bitXor: {
2: "\\left(${args[0]}".concat(latexOperators.bitXor, "${args[1]}\\right)")
},
leftShift: {
2: "\\left(${args[0]}".concat(latexOperators.leftShift, "${args[1]}\\right)")
},
rightArithShift: {
2: "\\left(${args[0]}".concat(latexOperators.rightArithShift, "${args[1]}\\right)")
},
rightLogShift: {
2: "\\left(${args[0]}".concat(latexOperators.rightLogShift, "${args[1]}\\right)")
},
// combinatorics
bellNumbers: {
1: "\\mathrm{B}_{${args[0]}}"
},
catalan: {
1: "\\mathrm{C}_{${args[0]}}"
},
stirlingS2: {
2: "\\mathrm{S}\\left(${args}\\right)"
},
// complex
arg: {
1: "\\arg\\left(${args[0]}\\right)"
},
conj: {
1: "\\left(${args[0]}\\right)^*"
},
im: {
1: "\\Im\\left\\lbrace${args[0]}\\right\\rbrace"
},
re: {
1: "\\Re\\left\\lbrace${args[0]}\\right\\rbrace"
},
// logical
and: {
2: "\\left(${args[0]}".concat(latexOperators.and, "${args[1]}\\right)")
},
not: {
1: latexOperators.not + "\\left(${args[0]}\\right)"
},
or: {
2: "\\left(${args[0]}".concat(latexOperators.or, "${args[1]}\\right)")
},
xor: {
2: "\\left(${args[0]}".concat(latexOperators.xor, "${args[1]}\\right)")
},
// matrix
cross: {
2: "\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"
},
ctranspose: {
1: "\\left(${args[0]}\\right)".concat(latexOperators.ctranspose)
},
det: {
1: "\\det\\left(${args[0]}\\right)"
},
dot: {
2: "\\left(${args[0]}\\cdot${args[1]}\\right)"
},
expm: {
1: "\\exp\\left(${args[0]}\\right)"
},
inv: {
1: "\\left(${args[0]}\\right)^{-1}"
},
pinv: {
1: "\\left(${args[0]}\\right)^{+}"
},
sqrtm: {
1: "{${args[0]}}".concat(latexOperators.pow, "{\\frac{1}{2}}")
},
trace: {
1: "\\mathrm{tr}\\left(${args[0]}\\right)"
},
transpose: {
1: "\\left(${args[0]}\\right)".concat(latexOperators.transpose)
},
// probability
combinations: {
2: "\\binom{${args[0]}}{${args[1]}}"
},
combinationsWithRep: {
2: "\\left(\\!\\!{\\binom{${args[0]}}{${args[1]}}}\\!\\!\\right)"
},
factorial: {
1: "\\left(${args[0]}\\right)".concat(latexOperators.factorial)
},
gamma: {
1: "\\Gamma\\left(${args[0]}\\right)"
},
lgamma: {
1: "\\ln\\Gamma\\left(${args[0]}\\right)"
},
// relational
equal: {
2: "\\left(${args[0]}".concat(latexOperators.equal, "${args[1]}\\right)")
},
larger: {
2: "\\left(${args[0]}".concat(latexOperators.larger, "${args[1]}\\right)")
},
largerEq: {
2: "\\left(${args[0]}".concat(latexOperators.largerEq, "${args[1]}\\right)")
},
smaller: {
2: "\\left(${args[0]}".concat(latexOperators.smaller, "${args[1]}\\right)")
},
smallerEq: {
2: "\\left(${args[0]}".concat(latexOperators.smallerEq, "${args[1]}\\right)")
},
unequal: {
2: "\\left(${args[0]}".concat(latexOperators.unequal, "${args[1]}\\right)")
},
// special
erf: {
1: "erf\\left(${args[0]}\\right)"
},
// statistics
max: "\\max\\left(${args}\\right)",
min: "\\min\\left(${args}\\right)",
variance: "\\mathrm{Var}\\left(${args}\\right)",
// trigonometry
acos: {
1: "\\cos^{-1}\\left(${args[0]}\\right)"
},
acosh: {
1: "\\cosh^{-1}\\left(${args[0]}\\right)"
},
acot: {
1: "\\cot^{-1}\\left(${args[0]}\\right)"
},
acoth: {
1: "\\coth^{-1}\\left(${args[0]}\\right)"
},
acsc: {
1: "\\csc^{-1}\\left(${args[0]}\\right)"
},
acsch: {
1: "\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"
},
asec: {
1: "\\sec^{-1}\\left(${args[0]}\\right)"
},
asech: {
1: "\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"
},
asin: {
1: "\\sin^{-1}\\left(${args[0]}\\right)"
},
asinh: {
1: "\\sinh^{-1}\\left(${args[0]}\\right)"
},
atan: {
1: "\\tan^{-1}\\left(${args[0]}\\right)"
},
atan2: {
2: "\\mathrm{atan2}\\left(${args}\\right)"
},
atanh: {
1: "\\tanh^{-1}\\left(${args[0]}\\right)"
},
cos: {
1: "\\cos\\left(${args[0]}\\right)"
},
cosh: {
1: "\\cosh\\left(${args[0]}\\right)"
},
cot: {
1: "\\cot\\left(${args[0]}\\right)"
},
coth: {
1: "\\coth\\left(${args[0]}\\right)"
},
csc: {
1: "\\csc\\left(${args[0]}\\right)"
},
csch: {
1: "\\mathrm{csch}\\left(${args[0]}\\right)"
},
sec: {
1: "\\sec\\left(${args[0]}\\right)"
},
sech: {
1: "\\mathrm{sech}\\left(${args[0]}\\right)"
},
sin: {
1: "\\sin\\left(${args[0]}\\right)"
},
sinh: {
1: "\\sinh\\left(${args[0]}\\right)"
},
tan: {
1: "\\tan\\left(${args[0]}\\right)"
},
tanh: {
1: "\\tanh\\left(${args[0]}\\right)"
},
// unit
to: {
2: "\\left(${args[0]}".concat(latexOperators.to, "${args[1]}\\right)")
},
// utils
numeric: function numeric(node, options) {
return node.args[0].toTex();
},
// type
number: {
0: "0",
1: "\\left(${args[0]}\\right)",
2: "\\left(\\left(${args[0]}\\right)${args[1]}\\right)"
},
string: {
0: '\\mathtt{""}',
1: "\\mathrm{string}\\left(${args[0]}\\right)"
},
bignumber: {
0: "0",
1: "\\left(${args[0]}\\right)"
},
complex: {
0: "0",
1: "\\left(${args[0]}\\right)",
2: "\\left(\\left(${args[0]}\\right)+".concat(latexSymbols.i, "\\cdot\\left(${args[1]}\\right)\\right)")
},
matrix: {
0: "\\begin{bmatrix}\\end{bmatrix}",
1: "\\left(${args[0]}\\right)",
2: "\\left(${args[0]}\\right)"
},
sparse: {
0: "\\begin{bsparse}\\end{bsparse}",
1: "\\left(${args[0]}\\right)"
},
unit: {
1: "\\left(${args[0]}\\right)",
2: "\\left(\\left(${args[0]}\\right)${args[1]}\\right)"
}
};
var defaultTemplate = "\\mathrm{${name}}\\left(${args}\\right)";
var latexUnits = {
deg: "^\\circ"
};
function escapeLatex(string) {
return (0, import_escape_latex.default)(string, {
preserveFormatting: true
});
}
function toSymbol(name309, isUnit2) {
isUnit2 = typeof isUnit2 === "undefined" ? false : isUnit2;
if (isUnit2) {
if (hasOwnProperty(latexUnits, name309)) {
return latexUnits[name309];
}
return "\\mathrm{" + escapeLatex(name309) + "}";
}
if (hasOwnProperty(latexSymbols, name309)) {
return latexSymbols[name309];
}
return escapeLatex(name309);
}
// node_modules/mathjs/lib/esm/expression/node/ConstantNode.js
var name211 = "ConstantNode";
var dependencies211 = ["Node"];
var createConstantNode = /* @__PURE__ */ factory(name211, dependencies211, (_ref) => {
var {
Node
} = _ref;
class ConstantNode extends Node {
/**
* A ConstantNode holds a constant value like a number or string.
*
* Usage:
*
* new ConstantNode(2.3)
* new ConstantNode('hello')
*
* @param {*} value Value can be any type (number, BigNumber, string, ...)
* @constructor ConstantNode
* @extends {Node}
*/
constructor(value) {
super();
this.value = value;
}
get type() {
return name211;
}
get isConstantNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var value = this.value;
return function evalConstantNode() {
return value;
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
}
/**
* Create a new ConstantNode with children produced by the given callback.
* Trivial because there are no children.
* @param {function(child: Node, path: string, parent: Node) : Node} callback
* @returns {ConstantNode} Returns a clone of the node
*/
map(callback) {
return this.clone();
}
/**
* Create a clone of this node, a shallow copy
* @return {ConstantNode}
*/
clone() {
return new ConstantNode(this.value);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
return format3(this.value, options);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var value = this._toString(options);
switch (typeOf(this.value)) {
case "number":
case "BigNumber":
case "Fraction":
return '' + value + "";
case "string":
return '' + value + "";
case "boolean":
return '' + value + "";
case "null":
return '' + value + "";
case "undefined":
return '' + value + "";
default:
return '' + value + "";
}
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name211,
value: this.value
};
}
/**
* Instantiate a ConstantNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "SymbolNode", value: 2.3}`,
* where mathjs is optional
* @returns {ConstantNode}
*/
static fromJSON(json) {
return new ConstantNode(json.value);
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var value = this._toString(options);
switch (typeOf(this.value)) {
case "string":
return "\\mathtt{" + escapeLatex(value) + "}";
case "number":
case "BigNumber":
{
if (!isFinite(this.value)) {
return this.value.valueOf() < 0 ? "-\\infty" : "\\infty";
}
var index = value.toLowerCase().indexOf("e");
if (index !== -1) {
return value.substring(0, index) + "\\cdot10^{" + value.substring(index + 1) + "}";
}
}
return value;
case "Fraction":
return this.value.toLatex();
default:
return value;
}
}
}
_defineProperty(ConstantNode, "name", name211);
return ConstantNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/FunctionAssignmentNode.js
var name212 = "FunctionAssignmentNode";
var dependencies212 = ["typed", "Node"];
var createFunctionAssignmentNode = /* @__PURE__ */ factory(name212, dependencies212, (_ref) => {
var {
typed: typed2,
Node
} = _ref;
function needParenthesis(node, parenthesis, implicit) {
var precedence = getPrecedence(node, parenthesis, implicit);
var exprPrecedence = getPrecedence(node.expr, parenthesis, implicit);
return parenthesis === "all" || exprPrecedence !== null && exprPrecedence <= precedence;
}
class FunctionAssignmentNode extends Node {
/**
* @constructor FunctionAssignmentNode
* @extends {Node}
* Function assignment
*
* @param {string} name Function name
* @param {string[] | Array.<{name: string, type: string}>} params
* Array with function parameter names, or an
* array with objects containing the name
* and type of the parameter
* @param {Node} expr The function expression
*/
constructor(name309, params, expr) {
super();
if (typeof name309 !== "string") {
throw new TypeError('String expected for parameter "name"');
}
if (!Array.isArray(params)) {
throw new TypeError('Array containing strings or objects expected for parameter "params"');
}
if (!isNode(expr)) {
throw new TypeError('Node expected for parameter "expr"');
}
if (keywords.has(name309)) {
throw new Error('Illegal function name, "' + name309 + '" is a reserved keyword');
}
var paramNames = /* @__PURE__ */ new Set();
for (var param of params) {
var _name = typeof param === "string" ? param : param.name;
if (paramNames.has(_name)) {
throw new Error('Duplicate parameter name "'.concat(_name, '"'));
} else {
paramNames.add(_name);
}
}
this.name = name309;
this.params = params.map(function(param2) {
return param2 && param2.name || param2;
});
this.types = params.map(function(param2) {
return param2 && param2.type || "any";
});
this.expr = expr;
}
get type() {
return name212;
}
get isFunctionAssignmentNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var childArgNames = Object.create(argNames);
forEach(this.params, function(param) {
childArgNames[param] = true;
});
var evalExpr = this.expr._compile(math2, childArgNames);
var name309 = this.name;
var params = this.params;
var signature = join(this.types, ",");
var syntax = name309 + "(" + join(this.params, ", ") + ")";
return function evalFunctionAssignmentNode(scope, args, context) {
var signatures = {};
signatures[signature] = function() {
var childArgs = Object.create(args);
for (var i = 0; i < params.length; i++) {
childArgs[params[i]] = arguments[i];
}
return evalExpr(scope, childArgs, context);
};
var fn = typed2(name309, signatures);
fn.syntax = syntax;
scope.set(name309, fn);
return fn;
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.expr, "expr", this);
}
/**
* Create a new FunctionAssignmentNode whose children are the results of
* calling the provided callback function for each child of the original
* node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {FunctionAssignmentNode} Returns a transformed copy of the node
*/
map(callback) {
var expr = this._ifNode(callback(this.expr, "expr", this));
return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);
}
/**
* Create a clone of this node, a shallow copy
* @return {FunctionAssignmentNode}
*/
clone() {
return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);
}
/**
* get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var expr = this.expr.toString(options);
if (needParenthesis(this, parenthesis, options && options.implicit)) {
expr = "(" + expr + ")";
}
return this.name + "(" + this.params.join(", ") + ") = " + expr;
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
var types = this.types;
return {
mathjs: name212,
name: this.name,
params: this.params.map(function(param, index) {
return {
name: param,
type: types[index]
};
}),
expr: this.expr
};
}
/**
* Instantiate an FunctionAssignmentNode from its JSON representation
* @param {Object} json
* An object structured like
* ```
* {"mathjs": "FunctionAssignmentNode",
* name: ..., params: ..., expr: ...}
* ```
* where mathjs is optional
* @returns {FunctionAssignmentNode}
*/
static fromJSON(json) {
return new FunctionAssignmentNode(json.name, json.params, json.expr);
}
/**
* get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var params = [];
for (var i = 0; i < this.params.length; i++) {
params.push('' + escape(this.params[i]) + "");
}
var expr = this.expr.toHTML(options);
if (needParenthesis(this, parenthesis, options && options.implicit)) {
expr = '(' + expr + ')';
}
return '' + escape(this.name) + '(' + params.join(',') + ')=' + expr;
}
/**
* get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var expr = this.expr.toTex(options);
if (needParenthesis(this, parenthesis, options && options.implicit)) {
expr = "\\left(".concat(expr, "\\right)");
}
return "\\mathrm{" + this.name + "}\\left(" + this.params.map(toSymbol).join(",") + "\\right):=" + expr;
}
}
_defineProperty(FunctionAssignmentNode, "name", name212);
return FunctionAssignmentNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/IndexNode.js
var name213 = "IndexNode";
var dependencies213 = ["Node", "size"];
var createIndexNode = /* @__PURE__ */ factory(name213, dependencies213, (_ref) => {
var {
Node,
size
} = _ref;
class IndexNode extends Node {
/**
* @constructor IndexNode
* @extends Node
*
* Describes a subset of a matrix or an object property.
* Cannot be used on its own, needs to be used within an AccessorNode or
* AssignmentNode.
*
* @param {Node[]} dimensions
* @param {boolean} [dotNotation=false]
* Optional property describing whether this index was written using dot
* notation like `a.b`, or using bracket notation like `a["b"]`
* (which is the default). This property is used for string conversion.
*/
constructor(dimensions, dotNotation) {
super();
this.dimensions = dimensions;
this.dotNotation = dotNotation || false;
if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {
throw new TypeError('Array containing Nodes expected for parameter "dimensions"');
}
if (this.dotNotation && !this.isObjectProperty()) {
throw new Error("dotNotation only applicable for object properties");
}
}
get type() {
return name213;
}
get isIndexNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalDimensions = map(this.dimensions, function(dimension, i) {
var needsEnd = dimension.filter((node) => node.isSymbolNode && node.name === "end").length > 0;
if (needsEnd) {
var childArgNames = Object.create(argNames);
childArgNames.end = true;
var _evalDimension = dimension._compile(math2, childArgNames);
return function evalDimension(scope, args, context) {
if (!isMatrix(context) && !isArray(context) && !isString(context)) {
throw new TypeError('Cannot resolve "end": context must be a Matrix, Array, or string but is ' + typeOf(context));
}
var s = size(context).valueOf();
var childArgs = Object.create(args);
childArgs.end = s[i];
return _evalDimension(scope, childArgs, context);
};
} else {
return dimension._compile(math2, argNames);
}
});
var index = getSafeProperty(math2, "index");
return function evalIndexNode(scope, args, context) {
var dimensions = map(evalDimensions, function(evalDimension) {
return evalDimension(scope, args, context);
});
return index(...dimensions);
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
for (var i = 0; i < this.dimensions.length; i++) {
callback(this.dimensions[i], "dimensions[" + i + "]", this);
}
}
/**
* Create a new IndexNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {IndexNode} Returns a transformed copy of the node
*/
map(callback) {
var dimensions = [];
for (var i = 0; i < this.dimensions.length; i++) {
dimensions[i] = this._ifNode(callback(this.dimensions[i], "dimensions[" + i + "]", this));
}
return new IndexNode(dimensions, this.dotNotation);
}
/**
* Create a clone of this node, a shallow copy
* @return {IndexNode}
*/
clone() {
return new IndexNode(this.dimensions.slice(0), this.dotNotation);
}
/**
* Test whether this IndexNode contains a single property name
* @return {boolean}
*/
isObjectProperty() {
return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === "string";
}
/**
* Returns the property name if IndexNode contains a property.
* If not, returns null.
* @return {string | null}
*/
getObjectProperty() {
return this.isObjectProperty() ? this.dimensions[0].value : null;
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
return this.dotNotation ? "." + this.getObjectProperty() : "[" + this.dimensions.join(", ") + "]";
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name213,
dimensions: this.dimensions,
dotNotation: this.dotNotation
};
}
/**
* Instantiate an IndexNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "IndexNode", dimensions: [...], dotNotation: false}`,
* where mathjs is optional
* @returns {IndexNode}
*/
static fromJSON(json) {
return new IndexNode(json.dimensions, json.dotNotation);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var dimensions = [];
for (var i = 0; i < this.dimensions.length; i++) {
dimensions[i] = this.dimensions[i].toHTML();
}
if (this.dotNotation) {
return '.' + escape(this.getObjectProperty()) + "";
} else {
return '[' + dimensions.join(',') + ']';
}
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var dimensions = this.dimensions.map(function(range) {
return range.toTex(options);
});
return this.dotNotation ? "." + this.getObjectProperty() : "_{" + dimensions.join(",") + "}";
}
}
_defineProperty(IndexNode, "name", name213);
return IndexNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/ObjectNode.js
var name214 = "ObjectNode";
var dependencies214 = ["Node"];
var createObjectNode = /* @__PURE__ */ factory(name214, dependencies214, (_ref) => {
var {
Node
} = _ref;
class ObjectNode extends Node {
/**
* @constructor ObjectNode
* @extends {Node}
* Holds an object with keys/values
* @param {Object.} [properties] object with key/value pairs
*/
constructor(properties2) {
super();
this.properties = properties2 || {};
if (properties2) {
if (!(typeof properties2 === "object") || !Object.keys(properties2).every(function(key) {
return isNode(properties2[key]);
})) {
throw new TypeError("Object containing Nodes expected");
}
}
}
get type() {
return name214;
}
get isObjectNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var evalEntries = {};
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
var stringifiedKey = stringify(key);
var parsedKey = JSON.parse(stringifiedKey);
var prop = getSafeProperty(this.properties, key);
evalEntries[parsedKey] = prop._compile(math2, argNames);
}
}
return function evalObjectNode(scope, args, context) {
var obj = {};
for (var _key in evalEntries) {
if (hasOwnProperty(evalEntries, _key)) {
obj[_key] = evalEntries[_key](scope, args, context);
}
}
return obj;
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
callback(this.properties[key], "properties[" + stringify(key) + "]", this);
}
}
}
/**
* Create a new ObjectNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {ObjectNode} Returns a transformed copy of the node
*/
map(callback) {
var properties2 = {};
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
properties2[key] = this._ifNode(callback(this.properties[key], "properties[" + stringify(key) + "]", this));
}
}
return new ObjectNode(properties2);
}
/**
* Create a clone of this node, a shallow copy
* @return {ObjectNode}
*/
clone() {
var properties2 = {};
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
properties2[key] = this.properties[key];
}
}
return new ObjectNode(properties2);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
* @override
*/
_toString(options) {
var entries = [];
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
entries.push(stringify(key) + ": " + this.properties[key].toString(options));
}
}
return "{" + entries.join(", ") + "}";
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name214,
properties: this.properties
};
}
/**
* Instantiate an OperatorNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "ObjectNode", "properties": {...}}`,
* where mathjs is optional
* @returns {ObjectNode}
*/
static fromJSON(json) {
return new ObjectNode(json.properties);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
* @override
*/
toHTML(options) {
var entries = [];
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
entries.push('' + escape(key) + ':' + this.properties[key].toHTML(options));
}
}
return '{' + entries.join(',') + '}';
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var entries = [];
for (var key in this.properties) {
if (hasOwnProperty(this.properties, key)) {
entries.push("\\mathbf{" + key + ":} & " + this.properties[key].toTex(options) + "\\\\");
}
}
var tex = "\\left\\{\\begin{array}{ll}" + entries.join("\n") + "\\end{array}\\right\\}";
return tex;
}
}
_defineProperty(ObjectNode, "name", name214);
return ObjectNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/OperatorNode.js
var name215 = "OperatorNode";
var dependencies215 = ["Node"];
var createOperatorNode = /* @__PURE__ */ factory(name215, dependencies215, (_ref) => {
var {
Node
} = _ref;
function startsWithConstant(expr, parenthesis) {
var curNode = expr;
if (parenthesis === "auto") {
while (isParenthesisNode(curNode))
curNode = curNode.content;
}
if (isConstantNode(curNode))
return true;
if (isOperatorNode(curNode)) {
return startsWithConstant(curNode.args[0], parenthesis);
}
return false;
}
function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {
var precedence = getPrecedence(root, parenthesis, implicit);
var associativity = getAssociativity(root, parenthesis);
if (parenthesis === "all" || args.length > 2 && root.getIdentifier() !== "OperatorNode:add" && root.getIdentifier() !== "OperatorNode:multiply") {
return args.map(function(arg) {
switch (arg.getContent().type) {
case "ArrayNode":
case "ConstantNode":
case "SymbolNode":
case "ParenthesisNode":
return false;
default:
return true;
}
});
}
var result;
switch (args.length) {
case 0:
result = [];
break;
case 1:
{
var operandPrecedence = getPrecedence(args[0], parenthesis, implicit, root);
if (latex && operandPrecedence !== null) {
var operandIdentifier;
var rootIdentifier;
if (parenthesis === "keep") {
operandIdentifier = args[0].getIdentifier();
rootIdentifier = root.getIdentifier();
} else {
operandIdentifier = args[0].getContent().getIdentifier();
rootIdentifier = root.getContent().getIdentifier();
}
if (properties[precedence][rootIdentifier].latexLeftParens === false) {
result = [false];
break;
}
if (properties[operandPrecedence][operandIdentifier].latexParens === false) {
result = [false];
break;
}
}
if (operandPrecedence === null) {
result = [false];
break;
}
if (operandPrecedence <= precedence) {
result = [true];
break;
}
result = [false];
}
break;
case 2:
{
var lhsParens;
var lhsPrecedence = getPrecedence(args[0], parenthesis, implicit, root);
var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);
if (lhsPrecedence === null) {
lhsParens = false;
} else if (lhsPrecedence === precedence && associativity === "right" && !assocWithLhs) {
lhsParens = true;
} else if (lhsPrecedence < precedence) {
lhsParens = true;
} else {
lhsParens = false;
}
var rhsParens;
var rhsPrecedence = getPrecedence(args[1], parenthesis, implicit, root);
var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);
if (rhsPrecedence === null) {
rhsParens = false;
} else if (rhsPrecedence === precedence && associativity === "left" && !assocWithRhs) {
rhsParens = true;
} else if (rhsPrecedence < precedence) {
rhsParens = true;
} else {
rhsParens = false;
}
if (latex) {
var _rootIdentifier;
var lhsIdentifier;
var rhsIdentifier;
if (parenthesis === "keep") {
_rootIdentifier = root.getIdentifier();
lhsIdentifier = root.args[0].getIdentifier();
rhsIdentifier = root.args[1].getIdentifier();
} else {
_rootIdentifier = root.getContent().getIdentifier();
lhsIdentifier = root.args[0].getContent().getIdentifier();
rhsIdentifier = root.args[1].getContent().getIdentifier();
}
if (lhsPrecedence !== null) {
if (properties[precedence][_rootIdentifier].latexLeftParens === false) {
lhsParens = false;
}
if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {
lhsParens = false;
}
}
if (rhsPrecedence !== null) {
if (properties[precedence][_rootIdentifier].latexRightParens === false) {
rhsParens = false;
}
if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {
rhsParens = false;
}
}
}
result = [lhsParens, rhsParens];
}
break;
default:
if (root.getIdentifier() === "OperatorNode:add" || root.getIdentifier() === "OperatorNode:multiply") {
result = args.map(function(arg) {
var argPrecedence = getPrecedence(arg, parenthesis, implicit, root);
var assocWithArg = isAssociativeWith(root, arg, parenthesis);
var argAssociativity = getAssociativity(arg, parenthesis);
if (argPrecedence === null) {
return false;
} else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {
return true;
} else if (argPrecedence < precedence) {
return true;
}
return false;
});
}
break;
}
if (args.length >= 2 && root.getIdentifier() === "OperatorNode:multiply" && root.implicit && parenthesis !== "all" && implicit === "hide") {
for (var i = 1; i < result.length; ++i) {
if (startsWithConstant(args[i], parenthesis) && !result[i - 1] && (parenthesis !== "keep" || !isParenthesisNode(args[i - 1]))) {
result[i] = true;
}
}
}
return result;
}
class OperatorNode extends Node {
/**
* @constructor OperatorNode
* @extends {Node}
* An operator with two arguments, like 2+3
*
* @param {string} op Operator name, for example '+'
* @param {string} fn Function name, for example 'add'
* @param {Node[]} args Operator arguments
* @param {boolean} [implicit] Is this an implicit multiplication?
* @param {boolean} [isPercentage] Is this an percentage Operation?
*/
constructor(op, fn, args, implicit, isPercentage) {
super();
if (typeof op !== "string") {
throw new TypeError('string expected for parameter "op"');
}
if (typeof fn !== "string") {
throw new TypeError('string expected for parameter "fn"');
}
if (!Array.isArray(args) || !args.every(isNode)) {
throw new TypeError('Array containing Nodes expected for parameter "args"');
}
this.implicit = implicit === true;
this.isPercentage = isPercentage === true;
this.op = op;
this.fn = fn;
this.args = args || [];
}
get type() {
return name215;
}
get isOperatorNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
if (typeof this.fn !== "string" || !isSafeMethod(math2, this.fn)) {
if (!math2[this.fn]) {
throw new Error("Function " + this.fn + ' missing in provided namespace "math"');
} else {
throw new Error('No access to function "' + this.fn + '"');
}
}
var fn = getSafeProperty(math2, this.fn);
var evalArgs = map(this.args, function(arg) {
return arg._compile(math2, argNames);
});
if (evalArgs.length === 1) {
var evalArg0 = evalArgs[0];
return function evalOperatorNode(scope, args, context) {
return fn(evalArg0(scope, args, context));
};
} else if (evalArgs.length === 2) {
var _evalArg = evalArgs[0];
var evalArg1 = evalArgs[1];
return function evalOperatorNode(scope, args, context) {
return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));
};
} else {
return function evalOperatorNode(scope, args, context) {
return fn.apply(null, map(evalArgs, function(evalArg) {
return evalArg(scope, args, context);
}));
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
for (var i = 0; i < this.args.length; i++) {
callback(this.args[i], "args[" + i + "]", this);
}
}
/**
* Create a new OperatorNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {OperatorNode} Returns a transformed copy of the node
*/
map(callback) {
var args = [];
for (var i = 0; i < this.args.length; i++) {
args[i] = this._ifNode(callback(this.args[i], "args[" + i + "]", this));
}
return new OperatorNode(this.op, this.fn, args, this.implicit, this.isPercentage);
}
/**
* Create a clone of this node, a shallow copy
* @return {OperatorNode}
*/
clone() {
return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit, this.isPercentage);
}
/**
* Check whether this is an unary OperatorNode:
* has exactly one argument, like `-a`.
* @return {boolean}
* Returns true when an unary operator node, false otherwise.
*/
isUnary() {
return this.args.length === 1;
}
/**
* Check whether this is a binary OperatorNode:
* has exactly two arguments, like `a + b`.
* @return {boolean}
* Returns true when a binary operator node, false otherwise.
*/
isBinary() {
return this.args.length === 2;
}
/**
* Get string representation.
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var implicit = options && options.implicit ? options.implicit : "hide";
var args = this.args;
var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);
if (args.length === 1) {
var assoc = getAssociativity(this, parenthesis);
var operand = args[0].toString(options);
if (parens[0]) {
operand = "(" + operand + ")";
}
var opIsNamed = /[a-zA-Z]+/.test(this.op);
if (assoc === "right") {
return this.op + (opIsNamed ? " " : "") + operand;
} else if (assoc === "left") {
return operand + (opIsNamed ? " " : "") + this.op;
}
return operand + this.op;
} else if (args.length === 2) {
var lhs = args[0].toString(options);
var rhs = args[1].toString(options);
if (parens[0]) {
lhs = "(" + lhs + ")";
}
if (parens[1]) {
rhs = "(" + rhs + ")";
}
if (this.implicit && this.getIdentifier() === "OperatorNode:multiply" && implicit === "hide") {
return lhs + " " + rhs;
}
return lhs + " " + this.op + " " + rhs;
} else if (args.length > 2 && (this.getIdentifier() === "OperatorNode:add" || this.getIdentifier() === "OperatorNode:multiply")) {
var stringifiedArgs = args.map(function(arg, index) {
arg = arg.toString(options);
if (parens[index]) {
arg = "(" + arg + ")";
}
return arg;
});
if (this.implicit && this.getIdentifier() === "OperatorNode:multiply" && implicit === "hide") {
return stringifiedArgs.join(" ");
}
return stringifiedArgs.join(" " + this.op + " ");
} else {
return this.fn + "(" + this.args.join(", ") + ")";
}
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name215,
op: this.op,
fn: this.fn,
args: this.args,
implicit: this.implicit,
isPercentage: this.isPercentage
};
}
/**
* Instantiate an OperatorNode from its JSON representation
* @param {Object} json
* An object structured like
* ```
* {"mathjs": "OperatorNode",
* "op": "+", "fn": "add", "args": [...],
* "implicit": false,
* "isPercentage":false}
* ```
* where mathjs is optional
* @returns {OperatorNode}
*/
static fromJSON(json) {
return new OperatorNode(json.op, json.fn, json.args, json.implicit, json.isPercentage);
}
/**
* Get HTML representation.
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var implicit = options && options.implicit ? options.implicit : "hide";
var args = this.args;
var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);
if (args.length === 1) {
var assoc = getAssociativity(this, parenthesis);
var operand = args[0].toHTML(options);
if (parens[0]) {
operand = '(' + operand + ')';
}
if (assoc === "right") {
return '' + escape(this.op) + "" + operand;
} else {
return operand + '' + escape(this.op) + "";
}
} else if (args.length === 2) {
var lhs = args[0].toHTML(options);
var rhs = args[1].toHTML(options);
if (parens[0]) {
lhs = '(' + lhs + ')';
}
if (parens[1]) {
rhs = '(' + rhs + ')';
}
if (this.implicit && this.getIdentifier() === "OperatorNode:multiply" && implicit === "hide") {
return lhs + '' + rhs;
}
return lhs + '' + escape(this.op) + "" + rhs;
} else {
var stringifiedArgs = args.map(function(arg, index) {
arg = arg.toHTML(options);
if (parens[index]) {
arg = '(' + arg + ')';
}
return arg;
});
if (args.length > 2 && (this.getIdentifier() === "OperatorNode:add" || this.getIdentifier() === "OperatorNode:multiply")) {
if (this.implicit && this.getIdentifier() === "OperatorNode:multiply" && implicit === "hide") {
return stringifiedArgs.join('');
}
return stringifiedArgs.join('' + escape(this.op) + "");
} else {
return '' + escape(this.fn) + '(' + stringifiedArgs.join(',') + ')';
}
}
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var implicit = options && options.implicit ? options.implicit : "hide";
var args = this.args;
var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);
var op = latexOperators[this.fn];
op = typeof op === "undefined" ? this.op : op;
if (args.length === 1) {
var assoc = getAssociativity(this, parenthesis);
var operand = args[0].toTex(options);
if (parens[0]) {
operand = "\\left(".concat(operand, "\\right)");
}
if (assoc === "right") {
return op + operand;
} else if (assoc === "left") {
return operand + op;
}
return operand + op;
} else if (args.length === 2) {
var lhs = args[0];
var lhsTex = lhs.toTex(options);
if (parens[0]) {
lhsTex = "\\left(".concat(lhsTex, "\\right)");
}
var rhs = args[1];
var rhsTex = rhs.toTex(options);
if (parens[1]) {
rhsTex = "\\left(".concat(rhsTex, "\\right)");
}
var lhsIdentifier;
if (parenthesis === "keep") {
lhsIdentifier = lhs.getIdentifier();
} else {
lhsIdentifier = lhs.getContent().getIdentifier();
}
switch (this.getIdentifier()) {
case "OperatorNode:divide":
return op + "{" + lhsTex + "}{" + rhsTex + "}";
case "OperatorNode:pow":
lhsTex = "{" + lhsTex + "}";
rhsTex = "{" + rhsTex + "}";
switch (lhsIdentifier) {
case "ConditionalNode":
case "OperatorNode:divide":
lhsTex = "\\left(".concat(lhsTex, "\\right)");
}
break;
case "OperatorNode:multiply":
if (this.implicit && implicit === "hide") {
return lhsTex + "~" + rhsTex;
}
}
return lhsTex + op + rhsTex;
} else if (args.length > 2 && (this.getIdentifier() === "OperatorNode:add" || this.getIdentifier() === "OperatorNode:multiply")) {
var texifiedArgs = args.map(function(arg, index) {
arg = arg.toTex(options);
if (parens[index]) {
arg = "\\left(".concat(arg, "\\right)");
}
return arg;
});
if (this.getIdentifier() === "OperatorNode:multiply" && this.implicit && implicit === "hide") {
return texifiedArgs.join("~");
}
return texifiedArgs.join(op);
} else {
return "\\mathrm{" + this.fn + "}\\left(" + args.map(function(arg) {
return arg.toTex(options);
}).join(",") + "\\right)";
}
}
/**
* Get identifier.
* @return {string}
*/
getIdentifier() {
return this.type + ":" + this.fn;
}
}
_defineProperty(OperatorNode, "name", name215);
return OperatorNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/ParenthesisNode.js
var name216 = "ParenthesisNode";
var dependencies216 = ["Node"];
var createParenthesisNode = /* @__PURE__ */ factory(name216, dependencies216, (_ref) => {
var {
Node
} = _ref;
class ParenthesisNode extends Node {
/**
* @constructor ParenthesisNode
* @extends {Node}
* A parenthesis node describes manual parenthesis from the user input
* @param {Node} content
* @extends {Node}
*/
constructor(content) {
super();
if (!isNode(content)) {
throw new TypeError('Node expected for parameter "content"');
}
this.content = content;
}
get type() {
return name216;
}
get isParenthesisNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
return this.content._compile(math2, argNames);
}
/**
* Get the content of the current Node.
* @return {Node} content
* @override
**/
getContent() {
return this.content.getContent();
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.content, "content", this);
}
/**
* Create a new ParenthesisNode whose child is the result of calling
* the provided callback function on the child of this node.
* @param {function(child: Node, path: string, parent: Node) : Node} callback
* @returns {ParenthesisNode} Returns a clone of the node
*/
map(callback) {
var content = callback(this.content, "content", this);
return new ParenthesisNode(content);
}
/**
* Create a clone of this node, a shallow copy
* @return {ParenthesisNode}
*/
clone() {
return new ParenthesisNode(this.content);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
* @override
*/
_toString(options) {
if (!options || options && !options.parenthesis || options && options.parenthesis === "keep") {
return "(" + this.content.toString(options) + ")";
}
return this.content.toString(options);
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name216,
content: this.content
};
}
/**
* Instantiate an ParenthesisNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "ParenthesisNode", "content": ...}`,
* where mathjs is optional
* @returns {ParenthesisNode}
*/
static fromJSON(json) {
return new ParenthesisNode(json.content);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
* @override
*/
toHTML(options) {
if (!options || options && !options.parenthesis || options && options.parenthesis === "keep") {
return '(' + this.content.toHTML(options) + ')';
}
return this.content.toHTML(options);
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
* @override
*/
_toTex(options) {
if (!options || options && !options.parenthesis || options && options.parenthesis === "keep") {
return "\\left(".concat(this.content.toTex(options), "\\right)");
}
return this.content.toTex(options);
}
}
_defineProperty(ParenthesisNode, "name", name216);
return ParenthesisNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/RangeNode.js
var name217 = "RangeNode";
var dependencies217 = ["Node"];
var createRangeNode = /* @__PURE__ */ factory(name217, dependencies217, (_ref) => {
var {
Node
} = _ref;
function calculateNecessaryParentheses(node, parenthesis, implicit) {
var precedence = getPrecedence(node, parenthesis, implicit);
var parens = {};
var startPrecedence = getPrecedence(node.start, parenthesis, implicit);
parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === "all";
if (node.step) {
var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);
parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === "all";
}
var endPrecedence = getPrecedence(node.end, parenthesis, implicit);
parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === "all";
return parens;
}
class RangeNode extends Node {
/**
* @constructor RangeNode
* @extends {Node}
* create a range
* @param {Node} start included lower-bound
* @param {Node} end included upper-bound
* @param {Node} [step] optional step
*/
constructor(start, end, step) {
super();
if (!isNode(start))
throw new TypeError("Node expected");
if (!isNode(end))
throw new TypeError("Node expected");
if (step && !isNode(step))
throw new TypeError("Node expected");
if (arguments.length > 3)
throw new Error("Too many arguments");
this.start = start;
this.end = end;
this.step = step || null;
}
get type() {
return name217;
}
get isRangeNode() {
return true;
}
/**
* Check whether the RangeNode needs the `end` symbol to be defined.
* This end is the size of the Matrix in current dimension.
* @return {boolean}
*/
needsEnd() {
var endSymbols = this.filter(function(node) {
return isSymbolNode(node) && node.name === "end";
});
return endSymbols.length > 0;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var range = math2.range;
var evalStart = this.start._compile(math2, argNames);
var evalEnd = this.end._compile(math2, argNames);
if (this.step) {
var evalStep = this.step._compile(math2, argNames);
return function evalRangeNode(scope, args, context) {
return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
};
} else {
return function evalRangeNode(scope, args, context) {
return range(evalStart(scope, args, context), evalEnd(scope, args, context));
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.start, "start", this);
callback(this.end, "end", this);
if (this.step) {
callback(this.step, "step", this);
}
}
/**
* Create a new RangeNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {RangeNode} Returns a transformed copy of the node
*/
map(callback) {
return new RangeNode(this._ifNode(callback(this.start, "start", this)), this._ifNode(callback(this.end, "end", this)), this.step && this._ifNode(callback(this.step, "step", this)));
}
/**
* Create a clone of this node, a shallow copy
* @return {RangeNode}
*/
clone() {
return new RangeNode(this.start, this.end, this.step && this.step);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
var str;
var start = this.start.toString(options);
if (parens.start) {
start = "(" + start + ")";
}
str = start;
if (this.step) {
var step = this.step.toString(options);
if (parens.step) {
step = "(" + step + ")";
}
str += ":" + step;
}
var end = this.end.toString(options);
if (parens.end) {
end = "(" + end + ")";
}
str += ":" + end;
return str;
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name217,
start: this.start,
end: this.end,
step: this.step
};
}
/**
* Instantiate an RangeNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
* where mathjs is optional
* @returns {RangeNode}
*/
static fromJSON(json) {
return new RangeNode(json.start, json.end, json.step);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
var str;
var start = this.start.toHTML(options);
if (parens.start) {
start = '(' + start + ')';
}
str = start;
if (this.step) {
var step = this.step.toHTML(options);
if (parens.step) {
step = '(' + step + ')';
}
str += ':' + step;
}
var end = this.end.toHTML(options);
if (parens.end) {
end = '(' + end + ')';
}
str += ':' + end;
return str;
}
/**
* Get LaTeX representation
* @params {Object} options
* @return {string} str
*/
_toTex(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
var str = this.start.toTex(options);
if (parens.start) {
str = "\\left(".concat(str, "\\right)");
}
if (this.step) {
var step = this.step.toTex(options);
if (parens.step) {
step = "\\left(".concat(step, "\\right)");
}
str += ":" + step;
}
var end = this.end.toTex(options);
if (parens.end) {
end = "\\left(".concat(end, "\\right)");
}
str += ":" + end;
return str;
}
}
_defineProperty(RangeNode, "name", name217);
return RangeNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/RelationalNode.js
var name218 = "RelationalNode";
var dependencies218 = ["Node"];
var createRelationalNode = /* @__PURE__ */ factory(name218, dependencies218, (_ref) => {
var {
Node
} = _ref;
var operatorMap = {
equal: "==",
unequal: "!=",
smaller: "<",
larger: ">",
smallerEq: "<=",
largerEq: ">="
};
class RelationalNode extends Node {
/**
* A node representing a chained conditional expression, such as 'x > y > z'
*
* @param {String[]} conditionals
* An array of conditional operators used to compare the parameters
* @param {Node[]} params
* The parameters that will be compared
*
* @constructor RelationalNode
* @extends {Node}
*/
constructor(conditionals, params) {
super();
if (!Array.isArray(conditionals)) {
throw new TypeError("Parameter conditionals must be an array");
}
if (!Array.isArray(params)) {
throw new TypeError("Parameter params must be an array");
}
if (conditionals.length !== params.length - 1) {
throw new TypeError("Parameter params must contain exactly one more element than parameter conditionals");
}
this.conditionals = conditionals;
this.params = params;
}
get type() {
return name218;
}
get isRelationalNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math2, argNames) {
var self2 = this;
var compiled = this.params.map((p) => p._compile(math2, argNames));
return function evalRelationalNode(scope, args, context) {
var evalLhs;
var evalRhs = compiled[0](scope, args, context);
for (var i = 0; i < self2.conditionals.length; i++) {
evalLhs = evalRhs;
evalRhs = compiled[i + 1](scope, args, context);
var condFn = getSafeProperty(math2, self2.conditionals[i]);
if (!condFn(evalLhs, evalRhs)) {
return false;
}
}
return true;
};
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
this.params.forEach((n, i) => callback(n, "params[" + i + "]", this), this);
}
/**
* Create a new RelationalNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {RelationalNode} Returns a transformed copy of the node
*/
map(callback) {
return new RelationalNode(this.conditionals.slice(), this.params.map((n, i) => this._ifNode(callback(n, "params[" + i + "]", this)), this));
}
/**
* Create a clone of this node, a shallow copy
* @return {RelationalNode}
*/
clone() {
return new RelationalNode(this.conditionals, this.params);
}
/**
* Get string representation.
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var precedence = getPrecedence(this, parenthesis, options && options.implicit);
var paramStrings = this.params.map(function(p, index) {
var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);
return parenthesis === "all" || paramPrecedence !== null && paramPrecedence <= precedence ? "(" + p.toString(options) + ")" : p.toString(options);
});
var ret = paramStrings[0];
for (var i = 0; i < this.conditionals.length; i++) {
ret += " " + operatorMap[this.conditionals[i]];
ret += " " + paramStrings[i + 1];
}
return ret;
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name218,
conditionals: this.conditionals,
params: this.params
};
}
/**
* Instantiate a RelationalNode from its JSON representation
* @param {Object} json
* An object structured like
* `{"mathjs": "RelationalNode", "conditionals": ..., "params": ...}`,
* where mathjs is optional
* @returns {RelationalNode}
*/
static fromJSON(json) {
return new RelationalNode(json.conditionals, json.params);
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var precedence = getPrecedence(this, parenthesis, options && options.implicit);
var paramStrings = this.params.map(function(p, index) {
var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);
return parenthesis === "all" || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toHTML(options) + ')' : p.toHTML(options);
});
var ret = paramStrings[0];
for (var i = 0; i < this.conditionals.length; i++) {
ret += '' + escape(operatorMap[this.conditionals[i]]) + "" + paramStrings[i + 1];
}
return ret;
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var parenthesis = options && options.parenthesis ? options.parenthesis : "keep";
var precedence = getPrecedence(this, parenthesis, options && options.implicit);
var paramStrings = this.params.map(function(p, index) {
var paramPrecedence = getPrecedence(p, parenthesis, options && options.implicit);
return parenthesis === "all" || paramPrecedence !== null && paramPrecedence <= precedence ? "\\left(" + p.toTex(options) + "\right)" : p.toTex(options);
});
var ret = paramStrings[0];
for (var i = 0; i < this.conditionals.length; i++) {
ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];
}
return ret;
}
}
_defineProperty(RelationalNode, "name", name218);
return RelationalNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/node/SymbolNode.js
var name219 = "SymbolNode";
var dependencies219 = ["math", "?Unit", "Node"];
var createSymbolNode = /* @__PURE__ */ factory(name219, dependencies219, (_ref) => {
var {
math: math2,
Unit,
Node
} = _ref;
function isValuelessUnit(name309) {
return Unit ? Unit.isValuelessUnit(name309) : false;
}
class SymbolNode extends Node {
/**
* @constructor SymbolNode
* @extends {Node}
* A symbol node can hold and resolve a symbol
* @param {string} name
* @extends {Node}
*/
constructor(name309) {
super();
if (typeof name309 !== "string") {
throw new TypeError('String expected for parameter "name"');
}
this.name = name309;
}
get type() {
return "SymbolNode";
}
get isSymbolNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math3, argNames) {
var name309 = this.name;
if (argNames[name309] === true) {
return function(scope, args, context) {
return getSafeProperty(args, name309);
};
} else if (name309 in math3) {
return function(scope, args, context) {
return scope.has(name309) ? scope.get(name309) : getSafeProperty(math3, name309);
};
} else {
var isUnit2 = isValuelessUnit(name309);
return function(scope, args, context) {
return scope.has(name309) ? scope.get(name309) : isUnit2 ? new Unit(null, name309) : SymbolNode.onUndefinedSymbol(name309);
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
}
/**
* Create a new SymbolNode with children produced by the given callback.
* Trivial since a SymbolNode has no children
* @param {function(child: Node, path: string, parent: Node) : Node} callback
* @returns {SymbolNode} Returns a clone of the node
*/
map(callback) {
return this.clone();
}
/**
* Throws an error 'Undefined symbol {name}'
* @param {string} name
*/
static onUndefinedSymbol(name309) {
throw new Error("Undefined symbol " + name309);
}
/**
* Create a clone of this node, a shallow copy
* @return {SymbolNode}
*/
clone() {
return new SymbolNode(this.name);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
* @override
*/
_toString(options) {
return this.name;
}
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
* @override
*/
toHTML(options) {
var name309 = escape(this.name);
if (name309 === "true" || name309 === "false") {
return '' + name309 + "";
} else if (name309 === "i") {
return '' + name309 + "";
} else if (name309 === "Infinity") {
return '' + name309 + "";
} else if (name309 === "NaN") {
return '' + name309 + "";
} else if (name309 === "null") {
return '' + name309 + "";
} else if (name309 === "undefined") {
return '' + name309 + "";
}
return '' + name309 + "";
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: "SymbolNode",
name: this.name
};
}
/**
* Instantiate a SymbolNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "SymbolNode", name: "x"}`,
* where mathjs is optional
* @returns {SymbolNode}
*/
static fromJSON(json) {
return new SymbolNode(json.name);
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
* @override
*/
_toTex(options) {
var isUnit2 = false;
if (typeof math2[this.name] === "undefined" && isValuelessUnit(this.name)) {
isUnit2 = true;
}
var symbol = toSymbol(this.name, isUnit2);
if (symbol[0] === "\\") {
return symbol;
}
return " " + symbol;
}
}
return SymbolNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/utils/scope.js
function createSubScope(parentScope) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (typeof parentScope.createSubScope === "function") {
return assign(parentScope.createSubScope(), ...args);
}
return assign(createEmptyMap(), parentScope, ...args);
}
// node_modules/mathjs/lib/esm/expression/node/FunctionNode.js
var name220 = "FunctionNode";
var dependencies220 = ["math", "Node", "SymbolNode"];
var createFunctionNode = /* @__PURE__ */ factory(name220, dependencies220, (_ref) => {
var _class;
var {
math: math2,
Node,
SymbolNode
} = _ref;
var strin = (entity) => format3(entity, {
truncate: 78
});
function expandTemplate(template, node, options) {
var latex = "";
var regex = /\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi;
var inputPos = 0;
var match;
while ((match = regex.exec(template)) !== null) {
latex += template.substring(inputPos, match.index);
inputPos = match.index;
if (match[0] === "$$") {
latex += "$";
inputPos++;
} else {
inputPos += match[0].length;
var property = node[match[1]];
if (!property) {
throw new ReferenceError("Template: Property " + match[1] + " does not exist.");
}
if (match[2] === void 0) {
switch (typeof property) {
case "string":
latex += property;
break;
case "object":
if (isNode(property)) {
latex += property.toTex(options);
} else if (Array.isArray(property)) {
latex += property.map(function(arg, index) {
if (isNode(arg)) {
return arg.toTex(options);
}
throw new TypeError("Template: " + match[1] + "[" + index + "] is not a Node.");
}).join(",");
} else {
throw new TypeError("Template: " + match[1] + " has to be a Node, String or array of Nodes");
}
break;
default:
throw new TypeError("Template: " + match[1] + " has to be a Node, String or array of Nodes");
}
} else {
if (isNode(property[match[2]] && property[match[2]])) {
latex += property[match[2]].toTex(options);
} else {
throw new TypeError("Template: " + match[1] + "[" + match[2] + "] is not a Node.");
}
}
}
}
latex += template.slice(inputPos);
return latex;
}
class FunctionNode extends Node {
/**
* @constructor FunctionNode
* @extends {./Node}
* invoke a list with arguments on a node
* @param {./Node | string} fn
* Item resolving to a function on which to invoke
* the arguments, typically a SymboNode or AccessorNode
* @param {./Node[]} args
*/
constructor(fn, args) {
super();
if (typeof fn === "string") {
fn = new SymbolNode(fn);
}
if (!isNode(fn))
throw new TypeError('Node expected as parameter "fn"');
if (!Array.isArray(args) || !args.every(isNode)) {
throw new TypeError('Array containing Nodes expected for parameter "args"');
}
this.fn = fn;
this.args = args || [];
}
// readonly property name
get name() {
return this.fn.name || "";
}
get type() {
return name220;
}
get isFunctionNode() {
return true;
}
/**
* Compile a node into a JavaScript function.
* This basically pre-calculates as much as possible and only leaves open
* calculations which depend on a dynamic scope with variables.
* @param {Object} math Math.js namespace with functions and constants.
* @param {Object} argNames An object with argument names as key and `true`
* as value. Used in the SymbolNode to optimize
* for arguments from user assigned functions
* (see FunctionAssignmentNode) or special symbols
* like `end` (see IndexNode).
* @return {function} Returns a function which can be called like:
* evalNode(scope: Object, args: Object, context: *)
*/
_compile(math3, argNames) {
var evalArgs = this.args.map((arg) => arg._compile(math3, argNames));
if (isSymbolNode(this.fn)) {
var _name = this.fn.name;
if (!argNames[_name]) {
var fn = _name in math3 ? getSafeProperty(math3, _name) : void 0;
var isRaw = typeof fn === "function" && fn.rawArgs === true;
var resolveFn = (scope) => {
var value;
if (scope.has(_name)) {
value = scope.get(_name);
} else if (_name in math3) {
value = getSafeProperty(math3, _name);
} else {
return FunctionNode.onUndefinedFunction(_name);
}
if (typeof value === "function") {
return value;
}
throw new TypeError("'".concat(_name, "' is not a function; its value is:\n ").concat(strin(value)));
};
if (isRaw) {
var rawArgs = this.args;
return function evalFunctionNode(scope, args, context) {
var fn2 = resolveFn(scope);
return fn2(rawArgs, math3, createSubScope(scope, args), scope);
};
} else {
switch (evalArgs.length) {
case 0:
return function evalFunctionNode(scope, args, context) {
var fn2 = resolveFn(scope);
return fn2();
};
case 1:
return function evalFunctionNode(scope, args, context) {
var fn2 = resolveFn(scope);
var evalArg0 = evalArgs[0];
return fn2(evalArg0(scope, args, context));
};
case 2:
return function evalFunctionNode(scope, args, context) {
var fn2 = resolveFn(scope);
var evalArg0 = evalArgs[0];
var evalArg1 = evalArgs[1];
return fn2(evalArg0(scope, args, context), evalArg1(scope, args, context));
};
default:
return function evalFunctionNode(scope, args, context) {
var fn2 = resolveFn(scope);
var values2 = evalArgs.map((evalArg) => evalArg(scope, args, context));
return fn2(...values2);
};
}
}
} else {
var _rawArgs = this.args;
return function evalFunctionNode(scope, args, context) {
var fn2 = getSafeProperty(args, _name);
if (typeof fn2 !== "function") {
throw new TypeError("Argument '".concat(_name, "' was not a function; received: ").concat(strin(fn2)));
}
if (fn2.rawArgs) {
return fn2(_rawArgs, math3, createSubScope(scope, args), scope);
} else {
var values2 = evalArgs.map((evalArg) => evalArg(scope, args, context));
return fn2.apply(fn2, values2);
}
};
}
} else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {
var evalObject = this.fn.object._compile(math3, argNames);
var prop = this.fn.index.getObjectProperty();
var _rawArgs2 = this.args;
return function evalFunctionNode(scope, args, context) {
var object = evalObject(scope, args, context);
var fn2 = getSafeMethod(object, prop);
if (fn2 !== null && fn2 !== void 0 && fn2.rawArgs) {
return fn2(_rawArgs2, math3, createSubScope(scope, args), scope);
} else {
var values2 = evalArgs.map((evalArg) => evalArg(scope, args, context));
return fn2.apply(object, values2);
}
};
} else {
var fnExpr = this.fn.toString();
var evalFn = this.fn._compile(math3, argNames);
var _rawArgs3 = this.args;
return function evalFunctionNode(scope, args, context) {
var fn2 = evalFn(scope, args, context);
if (typeof fn2 !== "function") {
throw new TypeError("Expression '".concat(fnExpr, "' did not evaluate to a function; value is:") + "\n ".concat(strin(fn2)));
}
if (fn2.rawArgs) {
return fn2(_rawArgs3, math3, createSubScope(scope, args), scope);
} else {
var values2 = evalArgs.map((evalArg) => evalArg(scope, args, context));
return fn2.apply(fn2, values2);
}
};
}
}
/**
* Execute a callback for each of the child nodes of this node
* @param {function(child: Node, path: string, parent: Node)} callback
*/
forEach(callback) {
callback(this.fn, "fn", this);
for (var i = 0; i < this.args.length; i++) {
callback(this.args[i], "args[" + i + "]", this);
}
}
/**
* Create a new FunctionNode whose children are the results of calling
* the provided callback function for each child of the original node.
* @param {function(child: Node, path: string, parent: Node): Node} callback
* @returns {FunctionNode} Returns a transformed copy of the node
*/
map(callback) {
var fn = this._ifNode(callback(this.fn, "fn", this));
var args = [];
for (var i = 0; i < this.args.length; i++) {
args[i] = this._ifNode(callback(this.args[i], "args[" + i + "]", this));
}
return new FunctionNode(fn, args);
}
/**
* Create a clone of this node, a shallow copy
* @return {FunctionNode}
*/
clone() {
return new FunctionNode(this.fn, this.args.slice(0));
}
/**
* Throws an error 'Undefined function {name}'
* @param {string} name
*/
/**
* Get string representation. (wrapper function)
* This overrides parts of Node's toString function.
* If callback is an object containing callbacks, it
* calls the correct callback for the current node,
* otherwise it falls back to calling Node's toString
* function.
*
* @param {Object} options
* @return {string} str
* @override
*/
toString(options) {
var customString;
var name309 = this.fn.toString(options);
if (options && typeof options.handler === "object" && hasOwnProperty(options.handler, name309)) {
customString = options.handler[name309](this, options);
}
if (typeof customString !== "undefined") {
return customString;
}
return super.toString(options);
}
/**
* Get string representation
* @param {Object} options
* @return {string} str
*/
_toString(options) {
var args = this.args.map(function(arg) {
return arg.toString(options);
});
var fn = isFunctionAssignmentNode(this.fn) ? "(" + this.fn.toString(options) + ")" : this.fn.toString(options);
return fn + "(" + args.join(", ") + ")";
}
/**
* Get a JSON representation of the node
* @returns {Object}
*/
toJSON() {
return {
mathjs: name220,
fn: this.fn,
args: this.args
};
}
/**
* Instantiate an AssignmentNode from its JSON representation
* @param {Object} json An object structured like
* `{"mathjs": "FunctionNode", fn: ..., args: ...}`,
* where mathjs is optional
* @returns {FunctionNode}
*/
/**
* Get HTML representation
* @param {Object} options
* @return {string} str
*/
toHTML(options) {
var args = this.args.map(function(arg) {
return arg.toHTML(options);
});
return '' + escape(this.fn) + '(' + args.join(',') + ')';
}
/**
* Get LaTeX representation. (wrapper function)
* This overrides parts of Node's toTex function.
* If callback is an object containing callbacks, it
* calls the correct callback for the current node,
* otherwise it falls back to calling Node's toTex
* function.
*
* @param {Object} options
* @return {string}
*/
toTex(options) {
var customTex;
if (options && typeof options.handler === "object" && hasOwnProperty(options.handler, this.name)) {
customTex = options.handler[this.name](this, options);
}
if (typeof customTex !== "undefined") {
return customTex;
}
return super.toTex(options);
}
/**
* Get LaTeX representation
* @param {Object} options
* @return {string} str
*/
_toTex(options) {
var args = this.args.map(function(arg) {
return arg.toTex(options);
});
var latexConverter;
if (latexFunctions[this.name]) {
latexConverter = latexFunctions[this.name];
}
if (math2[this.name] && (typeof math2[this.name].toTex === "function" || typeof math2[this.name].toTex === "object" || typeof math2[this.name].toTex === "string")) {
latexConverter = math2[this.name].toTex;
}
var customToTex;
switch (typeof latexConverter) {
case "function":
customToTex = latexConverter(this, options);
break;
case "string":
customToTex = expandTemplate(latexConverter, this, options);
break;
case "object":
switch (typeof latexConverter[args.length]) {
case "function":
customToTex = latexConverter[args.length](this, options);
break;
case "string":
customToTex = expandTemplate(latexConverter[args.length], this, options);
break;
}
}
if (typeof customToTex !== "undefined") {
return customToTex;
}
return expandTemplate(defaultTemplate, this, options);
}
/**
* Get identifier.
* @return {string}
*/
getIdentifier() {
return this.type + ":" + this.name;
}
}
_class = FunctionNode;
_defineProperty(FunctionNode, "name", name220);
_defineProperty(FunctionNode, "onUndefinedFunction", function(name309) {
throw new Error("Undefined function " + name309);
});
_defineProperty(FunctionNode, "fromJSON", function(json) {
return new _class(json.fn, json.args);
});
return FunctionNode;
}, {
isClass: true,
isNode: true
});
// node_modules/mathjs/lib/esm/expression/parse.js
var name221 = "parse";
var dependencies221 = ["typed", "numeric", "config", "AccessorNode", "ArrayNode", "AssignmentNode", "BlockNode", "ConditionalNode", "ConstantNode", "FunctionAssignmentNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "RangeNode", "RelationalNode", "SymbolNode"];
var createParse = /* @__PURE__ */ factory(name221, dependencies221, (_ref) => {
var {
typed: typed2,
numeric: numeric2,
config: config2,
AccessorNode,
ArrayNode,
AssignmentNode,
BlockNode,
ConditionalNode,
ConstantNode,
FunctionAssignmentNode,
FunctionNode,
IndexNode,
ObjectNode,
OperatorNode,
ParenthesisNode,
RangeNode,
RelationalNode,
SymbolNode
} = _ref;
var parse = typed2(name221, {
string: function string(expression) {
return parseStart(expression, {});
},
"Array | Matrix": function ArrayMatrix(expressions) {
return parseMultiple(expressions, {});
},
"string, Object": function stringObject(expression, options) {
var extraNodes = options.nodes !== void 0 ? options.nodes : {};
return parseStart(expression, extraNodes);
},
"Array | Matrix, Object": parseMultiple
});
function parseMultiple(expressions) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var extraNodes = options.nodes !== void 0 ? options.nodes : {};
return deepMap(expressions, function(elem) {
if (typeof elem !== "string")
throw new TypeError("String expected");
return parseStart(elem, extraNodes);
});
}
var TOKENTYPE = {
NULL: 0,
DELIMITER: 1,
NUMBER: 2,
SYMBOL: 3,
UNKNOWN: 4
};
var DELIMITERS = {
",": true,
"(": true,
")": true,
"[": true,
"]": true,
"{": true,
"}": true,
'"': true,
"'": true,
";": true,
"+": true,
"-": true,
"*": true,
".*": true,
"/": true,
"./": true,
"%": true,
"^": true,
".^": true,
"~": true,
"!": true,
"&": true,
"|": true,
"^|": true,
"=": true,
":": true,
"?": true,
"==": true,
"!=": true,
"<": true,
">": true,
"<=": true,
">=": true,
"<<": true,
">>": true,
">>>": true
};
var NAMED_DELIMITERS = {
mod: true,
to: true,
in: true,
and: true,
xor: true,
or: true,
not: true
};
var CONSTANTS = {
true: true,
false: false,
null: null,
undefined: void 0
};
var NUMERIC_CONSTANTS = ["NaN", "Infinity"];
function initialState() {
return {
extraNodes: {},
// current extra nodes, must be careful not to mutate
expression: "",
// current expression
comment: "",
// last parsed comment
index: 0,
// current index in expr
token: "",
// current token
tokenType: TOKENTYPE.NULL,
// type of the token
nestingLevel: 0,
// level of nesting inside parameters, used to ignore newline characters
conditionalLevel: null
// when a conditional is being parsed, the level of the conditional is stored here
};
}
function currentString(state, length) {
return state.expression.substr(state.index, length);
}
function currentCharacter(state) {
return currentString(state, 1);
}
function next(state) {
state.index++;
}
function prevCharacter(state) {
return state.expression.charAt(state.index - 1);
}
function nextCharacter(state) {
return state.expression.charAt(state.index + 1);
}
function getToken(state) {
state.tokenType = TOKENTYPE.NULL;
state.token = "";
state.comment = "";
while (true) {
if (currentCharacter(state) === "#") {
while (currentCharacter(state) !== "\n" && currentCharacter(state) !== "") {
state.comment += currentCharacter(state);
next(state);
}
}
if (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {
next(state);
} else {
break;
}
}
if (currentCharacter(state) === "") {
state.tokenType = TOKENTYPE.DELIMITER;
return;
}
if (currentCharacter(state) === "\n" && !state.nestingLevel) {
state.tokenType = TOKENTYPE.DELIMITER;
state.token = currentCharacter(state);
next(state);
return;
}
var c1 = currentCharacter(state);
var c2 = currentString(state, 2);
var c3 = currentString(state, 3);
if (c3.length === 3 && DELIMITERS[c3]) {
state.tokenType = TOKENTYPE.DELIMITER;
state.token = c3;
next(state);
next(state);
next(state);
return;
}
if (c2.length === 2 && DELIMITERS[c2]) {
state.tokenType = TOKENTYPE.DELIMITER;
state.token = c2;
next(state);
next(state);
return;
}
if (DELIMITERS[c1]) {
state.tokenType = TOKENTYPE.DELIMITER;
state.token = c1;
next(state);
return;
}
if (parse.isDigitDot(c1)) {
state.tokenType = TOKENTYPE.NUMBER;
var _c = currentString(state, 2);
if (_c === "0b" || _c === "0o" || _c === "0x") {
state.token += currentCharacter(state);
next(state);
state.token += currentCharacter(state);
next(state);
while (parse.isHexDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
if (currentCharacter(state) === ".") {
state.token += ".";
next(state);
while (parse.isHexDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
} else if (currentCharacter(state) === "i") {
state.token += "i";
next(state);
while (parse.isDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
}
return;
}
if (currentCharacter(state) === ".") {
state.token += currentCharacter(state);
next(state);
if (!parse.isDigit(currentCharacter(state))) {
state.tokenType = TOKENTYPE.DELIMITER;
return;
}
} else {
while (parse.isDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
}
while (parse.isDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
if (currentCharacter(state) === "E" || currentCharacter(state) === "e") {
if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === "-" || nextCharacter(state) === "+") {
state.token += currentCharacter(state);
next(state);
if (currentCharacter(state) === "+" || currentCharacter(state) === "-") {
state.token += currentCharacter(state);
next(state);
}
if (!parse.isDigit(currentCharacter(state))) {
throw createSyntaxError(state, 'Digit expected, got "' + currentCharacter(state) + '"');
}
while (parse.isDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {
throw createSyntaxError(state, 'Digit expected, got "' + currentCharacter(state) + '"');
}
} else if (nextCharacter(state) === ".") {
next(state);
throw createSyntaxError(state, 'Digit expected, got "' + currentCharacter(state) + '"');
}
}
return;
}
if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {
while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {
state.token += currentCharacter(state);
next(state);
}
if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {
state.tokenType = TOKENTYPE.DELIMITER;
} else {
state.tokenType = TOKENTYPE.SYMBOL;
}
return;
}
state.tokenType = TOKENTYPE.UNKNOWN;
while (currentCharacter(state) !== "") {
state.token += currentCharacter(state);
next(state);
}
throw createSyntaxError(state, 'Syntax error in part "' + state.token + '"');
}
function getTokenSkipNewline(state) {
do {
getToken(state);
} while (state.token === "\n");
}
function openParams(state) {
state.nestingLevel++;
}
function closeParams(state) {
state.nestingLevel--;
}
parse.isAlpha = function isAlpha(c, cPrev, cNext) {
return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);
};
parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {
return /^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(c);
};
parse.isValidMathSymbol = function isValidMathSymbol(high, low) {
return /^[\uD835]$/.test(high) && /^[\uDC00-\uDFFF]$/.test(low) && /^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(low);
};
parse.isWhitespace = function isWhitespace(c, nestingLevel) {
return c === " " || c === " " || c === "\n" && nestingLevel > 0;
};
parse.isDecimalMark = function isDecimalMark(c, cNext) {
return c === "." && cNext !== "/" && cNext !== "*" && cNext !== "^";
};
parse.isDigitDot = function isDigitDot(c) {
return c >= "0" && c <= "9" || c === ".";
};
parse.isDigit = function isDigit(c) {
return c >= "0" && c <= "9";
};
parse.isHexDigit = function isHexDigit(c) {
return c >= "0" && c <= "9" || c >= "a" && c <= "f" || c >= "A" && c <= "F";
};
function parseStart(expression, extraNodes) {
var state = initialState();
_extends(state, {
expression,
extraNodes
});
getToken(state);
var node = parseBlock(state);
if (state.token !== "") {
if (state.tokenType === TOKENTYPE.DELIMITER) {
throw createError(state, "Unexpected operator " + state.token);
} else {
throw createSyntaxError(state, 'Unexpected part "' + state.token + '"');
}
}
return node;
}
function parseBlock(state) {
var node;
var blocks = [];
var visible;
if (state.token !== "" && state.token !== "\n" && state.token !== ";") {
node = parseAssignment(state);
if (state.comment) {
node.comment = state.comment;
}
}
while (state.token === "\n" || state.token === ";") {
if (blocks.length === 0 && node) {
visible = state.token !== ";";
blocks.push({
node,
visible
});
}
getToken(state);
if (state.token !== "\n" && state.token !== ";" && state.token !== "") {
node = parseAssignment(state);
if (state.comment) {
node.comment = state.comment;
}
visible = state.token !== ";";
blocks.push({
node,
visible
});
}
}
if (blocks.length > 0) {
return new BlockNode(blocks);
} else {
if (!node) {
node = new ConstantNode(void 0);
if (state.comment) {
node.comment = state.comment;
}
}
return node;
}
}
function parseAssignment(state) {
var name309, args, value, valid;
var node = parseConditional(state);
if (state.token === "=") {
if (isSymbolNode(node)) {
name309 = node.name;
getTokenSkipNewline(state);
value = parseAssignment(state);
return new AssignmentNode(new SymbolNode(name309), value);
} else if (isAccessorNode(node)) {
getTokenSkipNewline(state);
value = parseAssignment(state);
return new AssignmentNode(node.object, node.index, value);
} else if (isFunctionNode(node) && isSymbolNode(node.fn)) {
valid = true;
args = [];
name309 = node.name;
node.args.forEach(function(arg, index) {
if (isSymbolNode(arg)) {
args[index] = arg.name;
} else {
valid = false;
}
});
if (valid) {
getTokenSkipNewline(state);
value = parseAssignment(state);
return new FunctionAssignmentNode(name309, args, value);
}
}
throw createSyntaxError(state, "Invalid left hand side of assignment operator =");
}
return node;
}
function parseConditional(state) {
var node = parseLogicalOr(state);
while (state.token === "?") {
var prev = state.conditionalLevel;
state.conditionalLevel = state.nestingLevel;
getTokenSkipNewline(state);
var condition = node;
var trueExpr = parseAssignment(state);
if (state.token !== ":")
throw createSyntaxError(state, "False part of conditional expression expected");
state.conditionalLevel = null;
getTokenSkipNewline(state);
var falseExpr = parseAssignment(state);
node = new ConditionalNode(condition, trueExpr, falseExpr);
state.conditionalLevel = prev;
}
return node;
}
function parseLogicalOr(state) {
var node = parseLogicalXor(state);
while (state.token === "or") {
getTokenSkipNewline(state);
node = new OperatorNode("or", "or", [node, parseLogicalXor(state)]);
}
return node;
}
function parseLogicalXor(state) {
var node = parseLogicalAnd(state);
while (state.token === "xor") {
getTokenSkipNewline(state);
node = new OperatorNode("xor", "xor", [node, parseLogicalAnd(state)]);
}
return node;
}
function parseLogicalAnd(state) {
var node = parseBitwiseOr(state);
while (state.token === "and") {
getTokenSkipNewline(state);
node = new OperatorNode("and", "and", [node, parseBitwiseOr(state)]);
}
return node;
}
function parseBitwiseOr(state) {
var node = parseBitwiseXor(state);
while (state.token === "|") {
getTokenSkipNewline(state);
node = new OperatorNode("|", "bitOr", [node, parseBitwiseXor(state)]);
}
return node;
}
function parseBitwiseXor(state) {
var node = parseBitwiseAnd(state);
while (state.token === "^|") {
getTokenSkipNewline(state);
node = new OperatorNode("^|", "bitXor", [node, parseBitwiseAnd(state)]);
}
return node;
}
function parseBitwiseAnd(state) {
var node = parseRelational(state);
while (state.token === "&") {
getTokenSkipNewline(state);
node = new OperatorNode("&", "bitAnd", [node, parseRelational(state)]);
}
return node;
}
function parseRelational(state) {
var params = [parseShift(state)];
var conditionals = [];
var operators = {
"==": "equal",
"!=": "unequal",
"<": "smaller",
">": "larger",
"<=": "smallerEq",
">=": "largerEq"
};
while (hasOwnProperty(operators, state.token)) {
var cond = {
name: state.token,
fn: operators[state.token]
};
conditionals.push(cond);
getTokenSkipNewline(state);
params.push(parseShift(state));
}
if (params.length === 1) {
return params[0];
} else if (params.length === 2) {
return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);
} else {
return new RelationalNode(conditionals.map((c) => c.fn), params);
}
}
function parseShift(state) {
var node, name309, fn, params;
node = parseConversion(state);
var operators = {
"<<": "leftShift",
">>": "rightArithShift",
">>>": "rightLogShift"
};
while (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getTokenSkipNewline(state);
params = [node, parseConversion(state)];
node = new OperatorNode(name309, fn, params);
}
return node;
}
function parseConversion(state) {
var node, name309, fn, params;
node = parseRange(state);
var operators = {
to: "to",
in: "to"
// alias of 'to'
};
while (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getTokenSkipNewline(state);
if (name309 === "in" && state.token === "") {
node = new OperatorNode("*", "multiply", [node, new SymbolNode("in")], true);
} else {
params = [node, parseRange(state)];
node = new OperatorNode(name309, fn, params);
}
}
return node;
}
function parseRange(state) {
var node;
var params = [];
if (state.token === ":") {
node = new ConstantNode(1);
} else {
node = parseAddSubtract(state);
}
if (state.token === ":" && state.conditionalLevel !== state.nestingLevel) {
params.push(node);
while (state.token === ":" && params.length < 3) {
getTokenSkipNewline(state);
if (state.token === ")" || state.token === "]" || state.token === "," || state.token === "") {
params.push(new SymbolNode("end"));
} else {
params.push(parseAddSubtract(state));
}
}
if (params.length === 3) {
node = new RangeNode(params[0], params[2], params[1]);
} else {
node = new RangeNode(params[0], params[1]);
}
}
return node;
}
function parseAddSubtract(state) {
var node, name309, fn, params;
node = parseMultiplyDivide(state);
var operators = {
"+": "add",
"-": "subtract"
};
while (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getTokenSkipNewline(state);
var rightNode = parseMultiplyDivide(state);
if (rightNode.isPercentage) {
params = [node, new OperatorNode("*", "multiply", [node, rightNode])];
} else {
params = [node, rightNode];
}
node = new OperatorNode(name309, fn, params);
}
return node;
}
function parseMultiplyDivide(state) {
var node, last, name309, fn;
node = parseImplicitMultiplication(state);
last = node;
var operators = {
"*": "multiply",
".*": "dotMultiply",
"/": "divide",
"./": "dotDivide"
};
while (true) {
if (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getTokenSkipNewline(state);
last = parseImplicitMultiplication(state);
node = new OperatorNode(name309, fn, [node, last]);
} else {
break;
}
}
return node;
}
function parseImplicitMultiplication(state) {
var node, last;
node = parseRule2(state);
last = node;
while (true) {
if (state.tokenType === TOKENTYPE.SYMBOL || state.token === "in" && isConstantNode(node) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === "!") || state.token === "(") {
last = parseRule2(state);
node = new OperatorNode(
"*",
"multiply",
[node, last],
true
/* implicit */
);
} else {
break;
}
}
return node;
}
function parseRule2(state) {
var node = parsePercentage(state);
var last = node;
var tokenStates = [];
while (true) {
if (state.token === "/" && rule2Node(last)) {
tokenStates.push(_extends({}, state));
getTokenSkipNewline(state);
if (state.tokenType === TOKENTYPE.NUMBER) {
tokenStates.push(_extends({}, state));
getTokenSkipNewline(state);
if (state.tokenType === TOKENTYPE.SYMBOL || state.token === "(") {
_extends(state, tokenStates.pop());
tokenStates.pop();
last = parsePercentage(state);
node = new OperatorNode("/", "divide", [node, last]);
} else {
tokenStates.pop();
_extends(state, tokenStates.pop());
break;
}
} else {
_extends(state, tokenStates.pop());
break;
}
} else {
break;
}
}
return node;
}
function parsePercentage(state) {
var node, name309, fn, params;
node = parseUnary(state);
var operators = {
"%": "mod",
mod: "mod"
};
while (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getTokenSkipNewline(state);
if (name309 === "%" && state.tokenType === TOKENTYPE.DELIMITER && state.token !== "(") {
node = new OperatorNode("/", "divide", [node, new ConstantNode(100)], false, true);
} else {
params = [node, parseUnary(state)];
node = new OperatorNode(name309, fn, params);
}
}
return node;
}
function parseUnary(state) {
var name309, params, fn;
var operators = {
"-": "unaryMinus",
"+": "unaryPlus",
"~": "bitNot",
not: "not"
};
if (hasOwnProperty(operators, state.token)) {
fn = operators[state.token];
name309 = state.token;
getTokenSkipNewline(state);
params = [parseUnary(state)];
return new OperatorNode(name309, fn, params);
}
return parsePow(state);
}
function parsePow(state) {
var node, name309, fn, params;
node = parseLeftHandOperators(state);
if (state.token === "^" || state.token === ".^") {
name309 = state.token;
fn = name309 === "^" ? "pow" : "dotPow";
getTokenSkipNewline(state);
params = [node, parseUnary(state)];
node = new OperatorNode(name309, fn, params);
}
return node;
}
function parseLeftHandOperators(state) {
var node, name309, fn, params;
node = parseCustomNodes(state);
var operators = {
"!": "factorial",
"'": "ctranspose"
};
while (hasOwnProperty(operators, state.token)) {
name309 = state.token;
fn = operators[name309];
getToken(state);
params = [node];
node = new OperatorNode(name309, fn, params);
node = parseAccessors(state, node);
}
return node;
}
function parseCustomNodes(state) {
var params = [];
if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {
var CustomNode = state.extraNodes[state.token];
getToken(state);
if (state.token === "(") {
params = [];
openParams(state);
getToken(state);
if (state.token !== ")") {
params.push(parseAssignment(state));
while (state.token === ",") {
getToken(state);
params.push(parseAssignment(state));
}
}
if (state.token !== ")") {
throw createSyntaxError(state, "Parenthesis ) expected");
}
closeParams(state);
getToken(state);
}
return new CustomNode(params);
}
return parseSymbol(state);
}
function parseSymbol(state) {
var node, name309;
if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {
name309 = state.token;
getToken(state);
if (hasOwnProperty(CONSTANTS, name309)) {
node = new ConstantNode(CONSTANTS[name309]);
} else if (NUMERIC_CONSTANTS.indexOf(name309) !== -1) {
node = new ConstantNode(numeric2(name309, "number"));
} else {
node = new SymbolNode(name309);
}
node = parseAccessors(state, node);
return node;
}
return parseDoubleQuotesString(state);
}
function parseAccessors(state, node, types) {
var params;
while ((state.token === "(" || state.token === "[" || state.token === ".") && (!types || types.indexOf(state.token) !== -1)) {
params = [];
if (state.token === "(") {
if (isSymbolNode(node) || isAccessorNode(node)) {
openParams(state);
getToken(state);
if (state.token !== ")") {
params.push(parseAssignment(state));
while (state.token === ",") {
getToken(state);
params.push(parseAssignment(state));
}
}
if (state.token !== ")") {
throw createSyntaxError(state, "Parenthesis ) expected");
}
closeParams(state);
getToken(state);
node = new FunctionNode(node, params);
} else {
return node;
}
} else if (state.token === "[") {
openParams(state);
getToken(state);
if (state.token !== "]") {
params.push(parseAssignment(state));
while (state.token === ",") {
getToken(state);
params.push(parseAssignment(state));
}
}
if (state.token !== "]") {
throw createSyntaxError(state, "Parenthesis ] expected");
}
closeParams(state);
getToken(state);
node = new AccessorNode(node, new IndexNode(params));
} else {
getToken(state);
var isPropertyName = state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS;
if (!isPropertyName) {
throw createSyntaxError(state, "Property name expected after dot");
}
params.push(new ConstantNode(state.token));
getToken(state);
var dotNotation = true;
node = new AccessorNode(node, new IndexNode(params, dotNotation));
}
}
return node;
}
function parseDoubleQuotesString(state) {
var node, str;
if (state.token === '"') {
str = parseDoubleQuotesStringToken(state);
node = new ConstantNode(str);
node = parseAccessors(state, node);
return node;
}
return parseSingleQuotesString(state);
}
function parseDoubleQuotesStringToken(state) {
var str = "";
while (currentCharacter(state) !== "" && currentCharacter(state) !== '"') {
if (currentCharacter(state) === "\\") {
var cNext = nextCharacter(state);
if (cNext !== "'") {
str += currentCharacter(state);
}
next(state);
}
str += currentCharacter(state);
next(state);
}
getToken(state);
if (state.token !== '"') {
throw createSyntaxError(state, 'End of string " expected');
}
getToken(state);
return JSON.parse('"' + str + '"');
}
function parseSingleQuotesString(state) {
var node, str;
if (state.token === "'") {
str = parseSingleQuotesStringToken(state);
node = new ConstantNode(str);
node = parseAccessors(state, node);
return node;
}
return parseMatrix(state);
}
function parseSingleQuotesStringToken(state) {
var str = "";
while (currentCharacter(state) !== "" && currentCharacter(state) !== "'") {
if (currentCharacter(state) === "\\") {
var cNext = nextCharacter(state);
if (cNext !== "'" && cNext !== '"') {
str += currentCharacter(state);
}
next(state);
}
str += currentCharacter(state);
next(state);
}
getToken(state);
if (state.token !== "'") {
throw createSyntaxError(state, "End of string ' expected");
}
getToken(state);
return JSON.parse('"' + str.replace(/"/g, '\\"') + '"');
}
function parseMatrix(state) {
var array, params, rows, cols;
if (state.token === "[") {
openParams(state);
getToken(state);
if (state.token !== "]") {
var row = parseRow(state);
if (state.token === ";") {
rows = 1;
params = [row];
while (state.token === ";") {
getToken(state);
params[rows] = parseRow(state);
rows++;
}
if (state.token !== "]") {
throw createSyntaxError(state, "End of matrix ] expected");
}
closeParams(state);
getToken(state);
cols = params[0].items.length;
for (var r = 1; r < rows; r++) {
if (params[r].items.length !== cols) {
throw createError(state, "Column dimensions mismatch (" + params[r].items.length + " !== " + cols + ")");
}
}
array = new ArrayNode(params);
} else {
if (state.token !== "]") {
throw createSyntaxError(state, "End of matrix ] expected");
}
closeParams(state);
getToken(state);
array = row;
}
} else {
closeParams(state);
getToken(state);
array = new ArrayNode([]);
}
return parseAccessors(state, array);
}
return parseObject(state);
}
function parseRow(state) {
var params = [parseAssignment(state)];
var len = 1;
while (state.token === ",") {
getToken(state);
params[len] = parseAssignment(state);
len++;
}
return new ArrayNode(params);
}
function parseObject(state) {
if (state.token === "{") {
openParams(state);
var key;
var properties2 = {};
do {
getToken(state);
if (state.token !== "}") {
if (state.token === '"') {
key = parseDoubleQuotesStringToken(state);
} else if (state.token === "'") {
key = parseSingleQuotesStringToken(state);
} else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {
key = state.token;
getToken(state);
} else {
throw createSyntaxError(state, "Symbol or string expected as object key");
}
if (state.token !== ":") {
throw createSyntaxError(state, "Colon : expected after object key");
}
getToken(state);
properties2[key] = parseAssignment(state);
}
} while (state.token === ",");
if (state.token !== "}") {
throw createSyntaxError(state, "Comma , or bracket } expected after object value");
}
closeParams(state);
getToken(state);
var node = new ObjectNode(properties2);
node = parseAccessors(state, node);
return node;
}
return parseNumber(state);
}
function parseNumber(state) {
var numberStr;
if (state.tokenType === TOKENTYPE.NUMBER) {
numberStr = state.token;
getToken(state);
return new ConstantNode(numeric2(numberStr, config2.number));
}
return parseParentheses(state);
}
function parseParentheses(state) {
var node;
if (state.token === "(") {
openParams(state);
getToken(state);
node = parseAssignment(state);
if (state.token !== ")") {
throw createSyntaxError(state, "Parenthesis ) expected");
}
closeParams(state);
getToken(state);
node = new ParenthesisNode(node);
node = parseAccessors(state, node);
return node;
}
return parseEnd(state);
}
function parseEnd(state) {
if (state.token === "") {
throw createSyntaxError(state, "Unexpected end of expression");
} else {
throw createSyntaxError(state, "Value expected");
}
}
function col(state) {
return state.index - state.token.length + 1;
}
function createSyntaxError(state, message) {
var c = col(state);
var error = new SyntaxError(message + " (char " + c + ")");
error.char = c;
return error;
}
function createError(state, message) {
var c = col(state);
var error = new SyntaxError(message + " (char " + c + ")");
error.char = c;
return error;
}
typed2.addConversion({
from: "string",
to: "Node",
convert: parse
});
return parse;
});
// node_modules/mathjs/lib/esm/expression/function/compile.js
var name222 = "compile";
var dependencies222 = ["typed", "parse"];
var createCompile = /* @__PURE__ */ factory(name222, dependencies222, (_ref) => {
var {
typed: typed2,
parse
} = _ref;
return typed2(name222, {
string: function string(expr) {
return parse(expr).compile();
},
"Array | Matrix": function ArrayMatrix(expr) {
return deepMap(expr, function(entry) {
return parse(entry).compile();
});
}
});
});
// node_modules/mathjs/lib/esm/expression/function/evaluate.js
var name223 = "evaluate";
var dependencies223 = ["typed", "parse"];
var createEvaluate = /* @__PURE__ */ factory(name223, dependencies223, (_ref) => {
var {
typed: typed2,
parse
} = _ref;
return typed2(name223, {
string: function string(expr) {
var scope = createEmptyMap();
return parse(expr).compile().evaluate(scope);
},
"string, Map | Object": function stringMapObject(expr, scope) {
return parse(expr).compile().evaluate(scope);
},
"Array | Matrix": function ArrayMatrix(expr) {
var scope = createEmptyMap();
return deepMap(expr, function(entry) {
return parse(entry).compile().evaluate(scope);
});
},
"Array | Matrix, Map | Object": function ArrayMatrixMapObject(expr, scope) {
return deepMap(expr, function(entry) {
return parse(entry).compile().evaluate(scope);
});
}
});
});
// node_modules/mathjs/lib/esm/expression/Parser.js
var name224 = "Parser";
var dependencies224 = ["evaluate"];
var createParserClass = /* @__PURE__ */ factory(name224, dependencies224, (_ref) => {
var {
evaluate: evaluate2
} = _ref;
function Parser() {
if (!(this instanceof Parser)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
Object.defineProperty(this, "scope", {
value: createEmptyMap(),
writable: false
});
}
Parser.prototype.type = "Parser";
Parser.prototype.isParser = true;
Parser.prototype.evaluate = function(expr) {
return evaluate2(expr, this.scope);
};
Parser.prototype.get = function(name309) {
if (this.scope.has(name309)) {
return this.scope.get(name309);
}
};
Parser.prototype.getAll = function() {
return toObject(this.scope);
};
Parser.prototype.getAllAsMap = function() {
return this.scope;
};
Parser.prototype.set = function(name309, value) {
this.scope.set(name309, value);
return value;
};
Parser.prototype.remove = function(name309) {
this.scope.delete(name309);
};
Parser.prototype.clear = function() {
this.scope.clear();
};
return Parser;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/expression/function/parser.js
var name225 = "parser";
var dependencies225 = ["typed", "Parser"];
var createParser = /* @__PURE__ */ factory(name225, dependencies225, (_ref) => {
var {
typed: typed2,
Parser
} = _ref;
return typed2(name225, {
"": function _() {
return new Parser();
}
});
});
// node_modules/mathjs/lib/esm/function/algebra/decomposition/lup.js
var name226 = "lup";
var dependencies226 = ["typed", "matrix", "abs", "addScalar", "divideScalar", "multiplyScalar", "subtract", "larger", "equalScalar", "unaryMinus", "DenseMatrix", "SparseMatrix", "Spa"];
var createLup = /* @__PURE__ */ factory(name226, dependencies226, (_ref) => {
var {
typed: typed2,
matrix,
abs: abs2,
addScalar,
divideScalar,
multiplyScalar,
subtract,
larger,
equalScalar,
unaryMinus,
DenseMatrix,
SparseMatrix,
Spa
} = _ref;
return typed2(name226, {
DenseMatrix: function DenseMatrix2(m) {
return _denseLUP(m);
},
SparseMatrix: function SparseMatrix2(m) {
return _sparseLUP(m);
},
Array: function Array2(a) {
var m = matrix(a);
var r = _denseLUP(m);
return {
L: r.L.valueOf(),
U: r.U.valueOf(),
p: r.p
};
}
});
function _denseLUP(m) {
var rows = m._size[0];
var columns = m._size[1];
var n = Math.min(rows, columns);
var data = clone(m._data);
var ldata = [];
var lsize = [rows, n];
var udata = [];
var usize = [n, columns];
var i, j, k;
var p = [];
for (i = 0; i < rows; i++) {
p[i] = i;
}
for (j = 0; j < columns; j++) {
if (j > 0) {
for (i = 0; i < rows; i++) {
var min2 = Math.min(i, j);
var s = 0;
for (k = 0; k < min2; k++) {
s = addScalar(s, multiplyScalar(data[i][k], data[k][j]));
}
data[i][j] = subtract(data[i][j], s);
}
}
var pi2 = j;
var pabsv = 0;
var vjj = 0;
for (i = j; i < rows; i++) {
var v = data[i][j];
var absv = abs2(v);
if (larger(absv, pabsv)) {
pi2 = i;
pabsv = absv;
vjj = v;
}
}
if (j !== pi2) {
p[j] = [p[pi2], p[pi2] = p[j]][0];
DenseMatrix._swapRows(j, pi2, data);
}
if (j < rows) {
for (i = j + 1; i < rows; i++) {
var vij = data[i][j];
if (!equalScalar(vij, 0)) {
data[i][j] = divideScalar(data[i][j], vjj);
}
}
}
}
for (j = 0; j < columns; j++) {
for (i = 0; i < rows; i++) {
if (j === 0) {
if (i < columns) {
udata[i] = [];
}
ldata[i] = [];
}
if (i < j) {
if (i < columns) {
udata[i][j] = data[i][j];
}
if (j < rows) {
ldata[i][j] = 0;
}
continue;
}
if (i === j) {
if (i < columns) {
udata[i][j] = data[i][j];
}
if (j < rows) {
ldata[i][j] = 1;
}
continue;
}
if (i < columns) {
udata[i][j] = 0;
}
if (j < rows) {
ldata[i][j] = data[i][j];
}
}
}
var l = new DenseMatrix({
data: ldata,
size: lsize
});
var u = new DenseMatrix({
data: udata,
size: usize
});
var pv = [];
for (i = 0, n = p.length; i < n; i++) {
pv[p[i]] = i;
}
return {
L: l,
U: u,
p: pv,
toString: function toString() {
return "L: " + this.L.toString() + "\nU: " + this.U.toString() + "\nP: " + this.p;
}
};
}
function _sparseLUP(m) {
var rows = m._size[0];
var columns = m._size[1];
var n = Math.min(rows, columns);
var values2 = m._values;
var index = m._index;
var ptr = m._ptr;
var lvalues = [];
var lindex = [];
var lptr = [];
var lsize = [rows, n];
var uvalues = [];
var uindex = [];
var uptr = [];
var usize = [n, columns];
var i, j, k;
var pvCo = [];
var pvOc = [];
for (i = 0; i < rows; i++) {
pvCo[i] = i;
pvOc[i] = i;
}
var swapIndeces = function swapIndeces2(x, y) {
var kx = pvOc[x];
var ky = pvOc[y];
pvCo[kx] = y;
pvCo[ky] = x;
pvOc[x] = ky;
pvOc[y] = kx;
};
var _loop = function _loop2() {
var spa = new Spa();
if (j < rows) {
lptr.push(lvalues.length);
lvalues.push(1);
lindex.push(j);
}
uptr.push(uvalues.length);
var k0 = ptr[j];
var k1 = ptr[j + 1];
for (k = k0; k < k1; k++) {
i = index[k];
spa.set(pvCo[i], values2[k]);
}
if (j > 0) {
spa.forEach(0, j - 1, function(k2, vkj) {
SparseMatrix._forEachRow(k2, lvalues, lindex, lptr, function(i2, vik) {
if (i2 > k2) {
spa.accumulate(i2, unaryMinus(multiplyScalar(vik, vkj)));
}
});
});
}
var pi2 = j;
var vjj = spa.get(j);
var pabsv = abs2(vjj);
spa.forEach(j + 1, rows - 1, function(x, v) {
var absv = abs2(v);
if (larger(absv, pabsv)) {
pi2 = x;
pabsv = absv;
vjj = v;
}
});
if (j !== pi2) {
SparseMatrix._swapRows(j, pi2, lsize[1], lvalues, lindex, lptr);
SparseMatrix._swapRows(j, pi2, usize[1], uvalues, uindex, uptr);
spa.swap(j, pi2);
swapIndeces(j, pi2);
}
spa.forEach(0, rows - 1, function(x, v) {
if (x <= j) {
uvalues.push(v);
uindex.push(x);
} else {
v = divideScalar(v, vjj);
if (!equalScalar(v, 0)) {
lvalues.push(v);
lindex.push(x);
}
}
});
};
for (j = 0; j < columns; j++) {
_loop();
}
uptr.push(uvalues.length);
lptr.push(lvalues.length);
return {
L: new SparseMatrix({
values: lvalues,
index: lindex,
ptr: lptr,
size: lsize
}),
U: new SparseMatrix({
values: uvalues,
index: uindex,
ptr: uptr,
size: usize
}),
p: pvCo,
toString: function toString() {
return "L: " + this.L.toString() + "\nU: " + this.U.toString() + "\nP: " + this.p;
}
};
}
});
// node_modules/mathjs/lib/esm/function/algebra/decomposition/qr.js
var name227 = "qr";
var dependencies227 = ["typed", "matrix", "zeros", "identity", "isZero", "equal", "sign", "sqrt", "conj", "unaryMinus", "addScalar", "divideScalar", "multiplyScalar", "subtract", "complex"];
var createQr = /* @__PURE__ */ factory(name227, dependencies227, (_ref) => {
var {
typed: typed2,
matrix,
zeros: zeros2,
identity,
isZero,
equal,
sign: sign3,
sqrt: sqrt2,
conj,
unaryMinus,
addScalar,
divideScalar,
multiplyScalar,
subtract,
complex
} = _ref;
return _extends(typed2(name227, {
DenseMatrix: function DenseMatrix(m) {
return _denseQR(m);
},
SparseMatrix: function SparseMatrix(m) {
return _sparseQR(m);
},
Array: function Array2(a) {
var m = matrix(a);
var r = _denseQR(m);
return {
Q: r.Q.valueOf(),
R: r.R.valueOf()
};
}
}), {
_denseQRimpl
});
function _denseQRimpl(m) {
var rows = m._size[0];
var cols = m._size[1];
var Q2 = identity([rows], "dense");
var Qdata = Q2._data;
var R = m.clone();
var Rdata = R._data;
var i, j, k;
var w = zeros2([rows], "");
for (k = 0; k < Math.min(cols, rows); ++k) {
var pivot = Rdata[k][k];
var sgn = unaryMinus(equal(pivot, 0) ? 1 : sign3(pivot));
var conjSgn = conj(sgn);
var alphaSquared = 0;
for (i = k; i < rows; i++) {
alphaSquared = addScalar(alphaSquared, multiplyScalar(Rdata[i][k], conj(Rdata[i][k])));
}
var alpha = multiplyScalar(sgn, sqrt2(alphaSquared));
if (!isZero(alpha)) {
var u1 = subtract(pivot, alpha);
w[k] = 1;
for (i = k + 1; i < rows; i++) {
w[i] = divideScalar(Rdata[i][k], u1);
}
var tau2 = unaryMinus(conj(divideScalar(u1, alpha)));
var s = void 0;
for (j = k; j < cols; j++) {
s = 0;
for (i = k; i < rows; i++) {
s = addScalar(s, multiplyScalar(conj(w[i]), Rdata[i][j]));
}
s = multiplyScalar(s, tau2);
for (i = k; i < rows; i++) {
Rdata[i][j] = multiplyScalar(subtract(Rdata[i][j], multiplyScalar(w[i], s)), conjSgn);
}
}
for (i = 0; i < rows; i++) {
s = 0;
for (j = k; j < rows; j++) {
s = addScalar(s, multiplyScalar(Qdata[i][j], w[j]));
}
s = multiplyScalar(s, tau2);
for (j = k; j < rows; ++j) {
Qdata[i][j] = divideScalar(subtract(Qdata[i][j], multiplyScalar(s, conj(w[j]))), conjSgn);
}
}
}
}
return {
Q: Q2,
R,
toString: function toString() {
return "Q: " + this.Q.toString() + "\nR: " + this.R.toString();
}
};
}
function _denseQR(m) {
var ret = _denseQRimpl(m);
var Rdata = ret.R._data;
if (m._data.length > 0) {
var zero = Rdata[0][0].type === "Complex" ? complex(0) : 0;
for (var i = 0; i < Rdata.length; ++i) {
for (var j = 0; j < i && j < (Rdata[0] || []).length; ++j) {
Rdata[i][j] = zero;
}
}
}
return ret;
}
function _sparseQR(m) {
throw new Error("qr not implemented for sparse matrices yet");
}
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csPermute.js
function csPermute(a, pinv, q, values2) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var adt = a._datatype;
var m = asize[0];
var n = asize[1];
var cvalues = values2 && a._values ? [] : null;
var cindex = [];
var cptr = [];
var nz = 0;
for (var k = 0; k < n; k++) {
cptr[k] = nz;
var j = q ? q[k] : k;
for (var t0 = aptr[j], t1 = aptr[j + 1], t = t0; t < t1; t++) {
var r = pinv ? pinv[aindex[t]] : aindex[t];
cindex[nz] = r;
if (cvalues) {
cvalues[nz] = avalues[t];
}
nz++;
}
}
cptr[n] = nz;
return a.createSparseMatrix({
values: cvalues,
index: cindex,
ptr: cptr,
size: [m, n],
datatype: adt
});
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csTdfs.js
function csTdfs(j, k, w, head, next, post, stack) {
var top = 0;
w[stack] = j;
while (top >= 0) {
var p = w[stack + top];
var i = w[head + p];
if (i === -1) {
top--;
post[k++] = p;
} else {
w[head + p] = w[next + i];
++top;
w[stack + top] = i;
}
}
return k;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csPost.js
function csPost(parent, n) {
if (!parent) {
return null;
}
var k = 0;
var j;
var post = [];
var w = [];
var head = 0;
var next = n;
var stack = 2 * n;
for (j = 0; j < n; j++) {
w[head + j] = -1;
}
for (j = n - 1; j >= 0; j--) {
if (parent[j] === -1) {
continue;
}
w[next + j] = w[head + parent[j]];
w[head + parent[j]] = j;
}
for (j = 0; j < n; j++) {
if (parent[j] !== -1) {
continue;
}
k = csTdfs(j, k, w, head, next, post, stack);
}
return post;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csEtree.js
function csEtree(a, ata) {
if (!a) {
return null;
}
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var m = asize[0];
var n = asize[1];
var parent = [];
var w = [];
var ancestor = 0;
var prev = n;
var i, inext;
if (ata) {
for (i = 0; i < m; i++) {
w[prev + i] = -1;
}
}
for (var k = 0; k < n; k++) {
parent[k] = -1;
w[ancestor + k] = -1;
for (var p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {
var r = aindex[p];
i = ata ? w[prev + r] : r;
for (; i !== -1 && i < k; i = inext) {
inext = w[ancestor + i];
w[ancestor + i] = k;
if (inext === -1) {
parent[i] = k;
}
}
if (ata) {
w[prev + r] = k;
}
}
}
return parent;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csFkeep.js
function csFkeep(a, callback, other) {
var avalues = a._values;
var aindex = a._index;
var aptr = a._ptr;
var asize = a._size;
var n = asize[1];
var nz = 0;
for (var j = 0; j < n; j++) {
var p = aptr[j];
aptr[j] = nz;
for (; p < aptr[j + 1]; p++) {
if (callback(aindex[p], j, avalues ? avalues[p] : 1, other)) {
aindex[nz] = aindex[p];
if (avalues) {
avalues[nz] = avalues[p];
}
nz++;
}
}
}
aptr[n] = nz;
aindex.splice(nz, aindex.length - nz);
if (avalues) {
avalues.splice(nz, avalues.length - nz);
}
return nz;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csFlip.js
function csFlip(i) {
return -i - 2;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csAmd.js
var name228 = "csAmd";
var dependencies228 = ["add", "multiply", "transpose"];
var createCsAmd = /* @__PURE__ */ factory(name228, dependencies228, (_ref) => {
var {
add: add2,
multiply,
transpose
} = _ref;
return function csAmd(order, a) {
if (!a || order <= 0 || order > 3) {
return null;
}
var asize = a._size;
var m = asize[0];
var n = asize[1];
var lemax = 0;
var dense = Math.max(16, 10 * Math.sqrt(n));
dense = Math.min(n - 2, dense);
var cm = _createTargetMatrix(order, a, m, n, dense);
csFkeep(cm, _diag, null);
var cindex = cm._index;
var cptr = cm._ptr;
var cnz = cptr[n];
var P3 = [];
var W = [];
var len = 0;
var nv = n + 1;
var next = 2 * (n + 1);
var head = 3 * (n + 1);
var elen = 4 * (n + 1);
var degree = 5 * (n + 1);
var w = 6 * (n + 1);
var hhead = 7 * (n + 1);
var last = P3;
var mark = _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree);
var nel = _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next);
var mindeg = 0;
var i, j, k, k1, k2, e2, pj, ln2, nvi, pk, eln, p1, p2, pn, h, d;
while (nel < n) {
for (k = -1; mindeg < n && (k = W[head + mindeg]) === -1; mindeg++)
;
if (W[next + k] !== -1) {
last[W[next + k]] = -1;
}
W[head + mindeg] = W[next + k];
var elenk = W[elen + k];
var nvk = W[nv + k];
nel += nvk;
var dk = 0;
W[nv + k] = -nvk;
var p = cptr[k];
var pk1 = elenk === 0 ? p : cnz;
var pk2 = pk1;
for (k1 = 1; k1 <= elenk + 1; k1++) {
if (k1 > elenk) {
e2 = k;
pj = p;
ln2 = W[len + k] - elenk;
} else {
e2 = cindex[p++];
pj = cptr[e2];
ln2 = W[len + e2];
}
for (k2 = 1; k2 <= ln2; k2++) {
i = cindex[pj++];
if ((nvi = W[nv + i]) <= 0) {
continue;
}
dk += nvi;
W[nv + i] = -nvi;
cindex[pk2++] = i;
if (W[next + i] !== -1) {
last[W[next + i]] = last[i];
}
if (last[i] !== -1) {
W[next + last[i]] = W[next + i];
} else {
W[head + W[degree + i]] = W[next + i];
}
}
if (e2 !== k) {
cptr[e2] = csFlip(k);
W[w + e2] = 0;
}
}
if (elenk !== 0) {
cnz = pk2;
}
W[degree + k] = dk;
cptr[k] = pk1;
W[len + k] = pk2 - pk1;
W[elen + k] = -2;
mark = _wclear(mark, lemax, W, w, n);
for (pk = pk1; pk < pk2; pk++) {
i = cindex[pk];
if ((eln = W[elen + i]) <= 0) {
continue;
}
nvi = -W[nv + i];
var wnvi = mark - nvi;
for (p = cptr[i], p1 = cptr[i] + eln - 1; p <= p1; p++) {
e2 = cindex[p];
if (W[w + e2] >= mark) {
W[w + e2] -= nvi;
} else if (W[w + e2] !== 0) {
W[w + e2] = W[degree + e2] + wnvi;
}
}
}
for (pk = pk1; pk < pk2; pk++) {
i = cindex[pk];
p1 = cptr[i];
p2 = p1 + W[elen + i] - 1;
pn = p1;
for (h = 0, d = 0, p = p1; p <= p2; p++) {
e2 = cindex[p];
if (W[w + e2] !== 0) {
var dext = W[w + e2] - mark;
if (dext > 0) {
d += dext;
cindex[pn++] = e2;
h += e2;
} else {
cptr[e2] = csFlip(k);
W[w + e2] = 0;
}
}
}
W[elen + i] = pn - p1 + 1;
var p3 = pn;
var p4 = p1 + W[len + i];
for (p = p2 + 1; p < p4; p++) {
j = cindex[p];
var nvj = W[nv + j];
if (nvj <= 0) {
continue;
}
d += nvj;
cindex[pn++] = j;
h += j;
}
if (d === 0) {
cptr[i] = csFlip(k);
nvi = -W[nv + i];
dk -= nvi;
nvk += nvi;
nel += nvi;
W[nv + i] = 0;
W[elen + i] = -1;
} else {
W[degree + i] = Math.min(W[degree + i], d);
cindex[pn] = cindex[p3];
cindex[p3] = cindex[p1];
cindex[p1] = k;
W[len + i] = pn - p1 + 1;
h = (h < 0 ? -h : h) % n;
W[next + i] = W[hhead + h];
W[hhead + h] = i;
last[i] = h;
}
}
W[degree + k] = dk;
lemax = Math.max(lemax, dk);
mark = _wclear(mark + lemax, lemax, W, w, n);
for (pk = pk1; pk < pk2; pk++) {
i = cindex[pk];
if (W[nv + i] >= 0) {
continue;
}
h = last[i];
i = W[hhead + h];
W[hhead + h] = -1;
for (; i !== -1 && W[next + i] !== -1; i = W[next + i], mark++) {
ln2 = W[len + i];
eln = W[elen + i];
for (p = cptr[i] + 1; p <= cptr[i] + ln2 - 1; p++) {
W[w + cindex[p]] = mark;
}
var jlast = i;
for (j = W[next + i]; j !== -1; ) {
var ok = W[len + j] === ln2 && W[elen + j] === eln;
for (p = cptr[j] + 1; ok && p <= cptr[j] + ln2 - 1; p++) {
if (W[w + cindex[p]] !== mark) {
ok = 0;
}
}
if (ok) {
cptr[j] = csFlip(i);
W[nv + i] += W[nv + j];
W[nv + j] = 0;
W[elen + j] = -1;
j = W[next + j];
W[next + jlast] = j;
} else {
jlast = j;
j = W[next + j];
}
}
}
}
for (p = pk1, pk = pk1; pk < pk2; pk++) {
i = cindex[pk];
if ((nvi = -W[nv + i]) <= 0) {
continue;
}
W[nv + i] = nvi;
d = W[degree + i] + dk - nvi;
d = Math.min(d, n - nel - nvi);
if (W[head + d] !== -1) {
last[W[head + d]] = i;
}
W[next + i] = W[head + d];
last[i] = -1;
W[head + d] = i;
mindeg = Math.min(mindeg, d);
W[degree + i] = d;
cindex[p++] = i;
}
W[nv + k] = nvk;
if ((W[len + k] = p - pk1) === 0) {
cptr[k] = -1;
W[w + k] = 0;
}
if (elenk !== 0) {
cnz = p;
}
}
for (i = 0; i < n; i++) {
cptr[i] = csFlip(cptr[i]);
}
for (j = 0; j <= n; j++) {
W[head + j] = -1;
}
for (j = n; j >= 0; j--) {
if (W[nv + j] > 0) {
continue;
}
W[next + j] = W[head + cptr[j]];
W[head + cptr[j]] = j;
}
for (e2 = n; e2 >= 0; e2--) {
if (W[nv + e2] <= 0) {
continue;
}
if (cptr[e2] !== -1) {
W[next + e2] = W[head + cptr[e2]];
W[head + cptr[e2]] = e2;
}
}
for (k = 0, i = 0; i <= n; i++) {
if (cptr[i] === -1) {
k = csTdfs(i, k, W, head, next, P3, w);
}
}
P3.splice(P3.length - 1, 1);
return P3;
};
function _createTargetMatrix(order, a, m, n, dense) {
var at = transpose(a);
if (order === 1 && n === m) {
return add2(a, at);
}
if (order === 2) {
var tindex = at._index;
var tptr = at._ptr;
var p2 = 0;
for (var j = 0; j < m; j++) {
var p = tptr[j];
tptr[j] = p2;
if (tptr[j + 1] - p > dense) {
continue;
}
for (var p1 = tptr[j + 1]; p < p1; p++) {
tindex[p2++] = tindex[p];
}
}
tptr[m] = p2;
a = transpose(at);
return multiply(at, a);
}
return multiply(at, a);
}
function _initializeQuotientGraph(n, cptr, W, len, head, last, next, hhead, nv, w, elen, degree) {
for (var k = 0; k < n; k++) {
W[len + k] = cptr[k + 1] - cptr[k];
}
W[len + n] = 0;
for (var i = 0; i <= n; i++) {
W[head + i] = -1;
last[i] = -1;
W[next + i] = -1;
W[hhead + i] = -1;
W[nv + i] = 1;
W[w + i] = 1;
W[elen + i] = 0;
W[degree + i] = W[len + i];
}
var mark = _wclear(0, 0, W, w, n);
W[elen + n] = -2;
cptr[n] = -1;
W[w + n] = 0;
return mark;
}
function _initializeDegreeLists(n, cptr, W, degree, elen, w, dense, nv, head, last, next) {
var nel = 0;
for (var i = 0; i < n; i++) {
var d = W[degree + i];
if (d === 0) {
W[elen + i] = -2;
nel++;
cptr[i] = -1;
W[w + i] = 0;
} else if (d > dense) {
W[nv + i] = 0;
W[elen + i] = -1;
nel++;
cptr[i] = csFlip(n);
W[nv + n]++;
} else {
var h = W[head + d];
if (h !== -1) {
last[h] = i;
}
W[next + i] = W[head + d];
W[head + d] = i;
}
}
return nel;
}
function _wclear(mark, lemax, W, w, n) {
if (mark < 2 || mark + lemax < 0) {
for (var k = 0; k < n; k++) {
if (W[w + k] !== 0) {
W[w + k] = 1;
}
}
mark = 2;
}
return mark;
}
function _diag(i, j) {
return i !== j;
}
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csLeaf.js
function csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor) {
var s, sparent;
var jleaf = 0;
var q;
if (i <= j || w[first + j] <= w[maxfirst + i]) {
return -1;
}
w[maxfirst + i] = w[first + j];
var jprev = w[prevleaf + i];
w[prevleaf + i] = j;
if (jprev === -1) {
jleaf = 1;
q = i;
} else {
jleaf = 2;
for (q = jprev; q !== w[ancestor + q]; q = w[ancestor + q])
;
for (s = jprev; s !== q; s = sparent) {
sparent = w[ancestor + s];
w[ancestor + s] = q;
}
}
return {
jleaf,
q
};
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csCounts.js
var name229 = "csCounts";
var dependencies229 = ["transpose"];
var createCsCounts = /* @__PURE__ */ factory(name229, dependencies229, (_ref) => {
var {
transpose
} = _ref;
return function(a, parent, post, ata) {
if (!a || !parent || !post) {
return null;
}
var asize = a._size;
var m = asize[0];
var n = asize[1];
var i, j, k, J, p, p0, p1;
var s = 4 * n + (ata ? n + m + 1 : 0);
var w = [];
var ancestor = 0;
var maxfirst = n;
var prevleaf = 2 * n;
var first = 3 * n;
var head = 4 * n;
var next = 5 * n + 1;
for (k = 0; k < s; k++) {
w[k] = -1;
}
var colcount = [];
var at = transpose(a);
var tindex = at._index;
var tptr = at._ptr;
for (k = 0; k < n; k++) {
j = post[k];
colcount[j] = w[first + j] === -1 ? 1 : 0;
for (; j !== -1 && w[first + j] === -1; j = parent[j]) {
w[first + j] = k;
}
}
if (ata) {
for (k = 0; k < n; k++) {
w[post[k]] = k;
}
for (i = 0; i < m; i++) {
for (k = n, p0 = tptr[i], p1 = tptr[i + 1], p = p0; p < p1; p++) {
k = Math.min(k, w[tindex[p]]);
}
w[next + i] = w[head + k];
w[head + k] = i;
}
}
for (i = 0; i < n; i++) {
w[ancestor + i] = i;
}
for (k = 0; k < n; k++) {
j = post[k];
if (parent[j] !== -1) {
colcount[parent[j]]--;
}
for (J = ata ? w[head + k] : j; J !== -1; J = ata ? w[next + J] : -1) {
for (p = tptr[J]; p < tptr[J + 1]; p++) {
i = tindex[p];
var r = csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor);
if (r.jleaf >= 1) {
colcount[j]++;
}
if (r.jleaf === 2) {
colcount[r.q]--;
}
}
}
if (parent[j] !== -1) {
w[ancestor + j] = parent[j];
}
}
for (j = 0; j < n; j++) {
if (parent[j] !== -1) {
colcount[parent[j]] += colcount[j];
}
}
return colcount;
};
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csSqr.js
var name230 = "csSqr";
var dependencies230 = ["add", "multiply", "transpose"];
var createCsSqr = /* @__PURE__ */ factory(name230, dependencies230, (_ref) => {
var {
add: add2,
multiply,
transpose
} = _ref;
var csAmd = createCsAmd({
add: add2,
multiply,
transpose
});
var csCounts = createCsCounts({
transpose
});
return function csSqr(order, a, qr) {
var aptr = a._ptr;
var asize = a._size;
var n = asize[1];
var k;
var s = {};
s.q = csAmd(order, a);
if (order && !s.q) {
return null;
}
if (qr) {
var c = order ? csPermute(a, null, s.q, 0) : a;
s.parent = csEtree(c, 1);
var post = csPost(s.parent, n);
s.cp = csCounts(c, s.parent, post, 1);
if (c && s.parent && s.cp && _vcount(c, s)) {
for (s.unz = 0, k = 0; k < n; k++) {
s.unz += s.cp[k];
}
}
} else {
s.unz = 4 * aptr[n] + n;
s.lnz = s.unz;
}
return s;
};
function _vcount(a, s) {
var aptr = a._ptr;
var aindex = a._index;
var asize = a._size;
var m = asize[0];
var n = asize[1];
s.pinv = [];
s.leftmost = [];
var parent = s.parent;
var pinv = s.pinv;
var leftmost = s.leftmost;
var w = [];
var next = 0;
var head = m;
var tail = m + n;
var nque = m + 2 * n;
var i, k, p, p0, p1;
for (k = 0; k < n; k++) {
w[head + k] = -1;
w[tail + k] = -1;
w[nque + k] = 0;
}
for (i = 0; i < m; i++) {
leftmost[i] = -1;
}
for (k = n - 1; k >= 0; k--) {
for (p0 = aptr[k], p1 = aptr[k + 1], p = p0; p < p1; p++) {
leftmost[aindex[p]] = k;
}
}
for (i = m - 1; i >= 0; i--) {
pinv[i] = -1;
k = leftmost[i];
if (k === -1) {
continue;
}
if (w[nque + k]++ === 0) {
w[tail + k] = i;
}
w[next + i] = w[head + k];
w[head + k] = i;
}
s.lnz = 0;
s.m2 = m;
for (k = 0; k < n; k++) {
i = w[head + k];
s.lnz++;
if (i < 0) {
i = s.m2++;
}
pinv[i] = k;
if (--nque[k] <= 0) {
continue;
}
s.lnz += w[nque + k];
var pa = parent[k];
if (pa !== -1) {
if (w[nque + pa] === 0) {
w[tail + pa] = w[tail + k];
}
w[next + w[tail + k]] = w[head + pa];
w[head + pa] = w[next + i];
w[nque + pa] += w[nque + k];
}
}
for (i = 0; i < m; i++) {
if (pinv[i] < 0) {
pinv[i] = k++;
}
}
return true;
}
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csMarked.js
function csMarked(w, j) {
return w[j] < 0;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csMark.js
function csMark(w, j) {
w[j] = csFlip(w[j]);
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csUnflip.js
function csUnflip(i) {
return i < 0 ? csFlip(i) : i;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csDfs.js
function csDfs(j, g, top, xi, pinv) {
var index = g._index;
var ptr = g._ptr;
var size = g._size;
var n = size[1];
var i, p, p2;
var head = 0;
xi[0] = j;
while (head >= 0) {
j = xi[head];
var jnew = pinv ? pinv[j] : j;
if (!csMarked(ptr, j)) {
csMark(ptr, j);
xi[n + head] = jnew < 0 ? 0 : csUnflip(ptr[jnew]);
}
var done = 1;
for (p = xi[n + head], p2 = jnew < 0 ? 0 : csUnflip(ptr[jnew + 1]); p < p2; p++) {
i = index[p];
if (csMarked(ptr, i)) {
continue;
}
xi[n + head] = p;
xi[++head] = i;
done = 0;
break;
}
if (done) {
head--;
xi[--top] = j;
}
}
return top;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csReach.js
function csReach(g, b, k, xi, pinv) {
var gptr = g._ptr;
var gsize = g._size;
var bindex = b._index;
var bptr = b._ptr;
var n = gsize[1];
var p, p0, p1;
var top = n;
for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {
var i = bindex[p];
if (!csMarked(gptr, i)) {
top = csDfs(i, g, top, xi, pinv);
}
}
for (p = top; p < n; p++) {
csMark(gptr, xi[p]);
}
return top;
}
// node_modules/mathjs/lib/esm/function/algebra/sparse/csSpsolve.js
var name231 = "csSpsolve";
var dependencies231 = ["divideScalar", "multiply", "subtract"];
var createCsSpsolve = /* @__PURE__ */ factory(name231, dependencies231, (_ref) => {
var {
divideScalar,
multiply,
subtract
} = _ref;
return function csSpsolve(g, b, k, xi, x, pinv, lo) {
var gvalues = g._values;
var gindex = g._index;
var gptr = g._ptr;
var gsize = g._size;
var n = gsize[1];
var bvalues = b._values;
var bindex = b._index;
var bptr = b._ptr;
var p, p0, p1, q;
var top = csReach(g, b, k, xi, pinv);
for (p = top; p < n; p++) {
x[xi[p]] = 0;
}
for (p0 = bptr[k], p1 = bptr[k + 1], p = p0; p < p1; p++) {
x[bindex[p]] = bvalues[p];
}
for (var px = top; px < n; px++) {
var j = xi[px];
var J = pinv ? pinv[j] : j;
if (J < 0) {
continue;
}
p0 = gptr[J];
p1 = gptr[J + 1];
x[j] = divideScalar(x[j], gvalues[lo ? p0 : p1 - 1]);
p = lo ? p0 + 1 : p0;
q = lo ? p1 : p1 - 1;
for (; p < q; p++) {
var i = gindex[p];
x[i] = subtract(x[i], multiply(gvalues[p], x[j]));
}
}
return top;
};
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csLu.js
var name232 = "csLu";
var dependencies232 = ["abs", "divideScalar", "multiply", "subtract", "larger", "largerEq", "SparseMatrix"];
var createCsLu = /* @__PURE__ */ factory(name232, dependencies232, (_ref) => {
var {
abs: abs2,
divideScalar,
multiply,
subtract,
larger,
largerEq,
SparseMatrix
} = _ref;
var csSpsolve = createCsSpsolve({
divideScalar,
multiply,
subtract
});
return function csLu(m, s, tol) {
if (!m) {
return null;
}
var size = m._size;
var n = size[1];
var q;
var lnz = 100;
var unz = 100;
if (s) {
q = s.q;
lnz = s.lnz || lnz;
unz = s.unz || unz;
}
var lvalues = [];
var lindex = [];
var lptr = [];
var L = new SparseMatrix({
values: lvalues,
index: lindex,
ptr: lptr,
size: [n, n]
});
var uvalues = [];
var uindex = [];
var uptr = [];
var U = new SparseMatrix({
values: uvalues,
index: uindex,
ptr: uptr,
size: [n, n]
});
var pinv = [];
var i, p;
var x = [];
var xi = [];
for (i = 0; i < n; i++) {
x[i] = 0;
pinv[i] = -1;
lptr[i + 1] = 0;
}
lnz = 0;
unz = 0;
for (var k = 0; k < n; k++) {
lptr[k] = lnz;
uptr[k] = unz;
var col = q ? q[k] : k;
var top = csSpsolve(L, m, col, xi, x, pinv, 1);
var ipiv = -1;
var a = -1;
for (p = top; p < n; p++) {
i = xi[p];
if (pinv[i] < 0) {
var xabs = abs2(x[i]);
if (larger(xabs, a)) {
a = xabs;
ipiv = i;
}
} else {
uindex[unz] = pinv[i];
uvalues[unz++] = x[i];
}
}
if (ipiv === -1 || a <= 0) {
return null;
}
if (pinv[col] < 0 && largerEq(abs2(x[col]), multiply(a, tol))) {
ipiv = col;
}
var pivot = x[ipiv];
uindex[unz] = k;
uvalues[unz++] = pivot;
pinv[ipiv] = k;
lindex[lnz] = ipiv;
lvalues[lnz++] = 1;
for (p = top; p < n; p++) {
i = xi[p];
if (pinv[i] < 0) {
lindex[lnz] = i;
lvalues[lnz++] = divideScalar(x[i], pivot);
}
x[i] = 0;
}
}
lptr[n] = lnz;
uptr[n] = unz;
for (p = 0; p < lnz; p++) {
lindex[p] = pinv[lindex[p]];
}
lvalues.splice(lnz, lvalues.length - lnz);
lindex.splice(lnz, lindex.length - lnz);
uvalues.splice(unz, uvalues.length - unz);
uindex.splice(unz, uindex.length - unz);
return {
L,
U,
pinv
};
};
});
// node_modules/mathjs/lib/esm/function/algebra/decomposition/slu.js
var name233 = "slu";
var dependencies233 = ["typed", "abs", "add", "multiply", "transpose", "divideScalar", "subtract", "larger", "largerEq", "SparseMatrix"];
var createSlu = /* @__PURE__ */ factory(name233, dependencies233, (_ref) => {
var {
typed: typed2,
abs: abs2,
add: add2,
multiply,
transpose,
divideScalar,
subtract,
larger,
largerEq,
SparseMatrix
} = _ref;
var csSqr = createCsSqr({
add: add2,
multiply,
transpose
});
var csLu = createCsLu({
abs: abs2,
divideScalar,
multiply,
subtract,
larger,
largerEq,
SparseMatrix
});
return typed2(name233, {
"SparseMatrix, number, number": function SparseMatrixNumberNumber(a, order, threshold) {
if (!isInteger(order) || order < 0 || order > 3) {
throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");
}
if (threshold < 0 || threshold > 1) {
throw new Error("Partial pivoting threshold must be a number from 0 to 1");
}
var s = csSqr(order, a, false);
var f = csLu(a, s, threshold);
return {
L: f.L,
U: f.U,
p: f.pinv,
q: s.q,
toString: function toString() {
return "L: " + this.L.toString() + "\nU: " + this.U.toString() + "\np: " + this.p.toString() + (this.q ? "\nq: " + this.q.toString() : "") + "\n";
}
};
}
});
});
// node_modules/mathjs/lib/esm/function/algebra/sparse/csIpvec.js
function csIpvec(p, b) {
var k;
var n = b.length;
var x = [];
if (p) {
for (k = 0; k < n; k++) {
x[p[k]] = b[k];
}
} else {
for (k = 0; k < n; k++) {
x[k] = b[k];
}
}
return x;
}
// node_modules/mathjs/lib/esm/function/algebra/solver/lusolve.js
var name234 = "lusolve";
var dependencies234 = ["typed", "matrix", "lup", "slu", "usolve", "lsolve", "DenseMatrix"];
var createLusolve = /* @__PURE__ */ factory(name234, dependencies234, (_ref) => {
var {
typed: typed2,
matrix,
lup,
slu,
usolve,
lsolve,
DenseMatrix
} = _ref;
var solveValidation = createSolveValidation({
DenseMatrix
});
return typed2(name234, {
"Array, Array | Matrix": function ArrayArrayMatrix(a, b) {
a = matrix(a);
var d = lup(a);
var x = _lusolve(d.L, d.U, d.p, null, b);
return x.valueOf();
},
"DenseMatrix, Array | Matrix": function DenseMatrixArrayMatrix(a, b) {
var d = lup(a);
return _lusolve(d.L, d.U, d.p, null, b);
},
"SparseMatrix, Array | Matrix": function SparseMatrixArrayMatrix(a, b) {
var d = lup(a);
return _lusolve(d.L, d.U, d.p, null, b);
},
"SparseMatrix, Array | Matrix, number, number": function SparseMatrixArrayMatrixNumberNumber(a, b, order, threshold) {
var d = slu(a, order, threshold);
return _lusolve(d.L, d.U, d.p, d.q, b);
},
"Object, Array | Matrix": function ObjectArrayMatrix(d, b) {
return _lusolve(d.L, d.U, d.p, d.q, b);
}
});
function _toMatrix(a) {
if (isMatrix(a)) {
return a;
}
if (isArray(a)) {
return matrix(a);
}
throw new TypeError("Invalid Matrix LU decomposition");
}
function _lusolve(l, u, p, q, b) {
l = _toMatrix(l);
u = _toMatrix(u);
if (p) {
b = solveValidation(l, b, true);
b._data = csIpvec(p, b._data);
}
var y = lsolve(l, b);
var x = usolve(u, y);
if (q) {
x._data = csIpvec(q, x._data);
}
return x;
}
});
// node_modules/mathjs/lib/esm/function/algebra/polynomialRoot.js
var name235 = "polynomialRoot";
var dependencies235 = ["typed", "isZero", "equalScalar", "add", "subtract", "multiply", "divide", "sqrt", "unaryMinus", "cbrt", "typeOf", "im", "re"];
var createPolynomialRoot = /* @__PURE__ */ factory(name235, dependencies235, (_ref) => {
var {
typed: typed2,
isZero,
equalScalar,
add: add2,
subtract,
multiply,
divide: divide2,
sqrt: sqrt2,
unaryMinus,
cbrt: cbrt4,
typeOf: typeOf2,
im,
re
} = _ref;
return typed2(name235, {
"number|Complex, ...number|Complex": (constant, restCoeffs) => {
var coeffs = [constant, ...restCoeffs];
while (coeffs.length > 0 && isZero(coeffs[coeffs.length - 1])) {
coeffs.pop();
}
if (coeffs.length < 2) {
throw new RangeError("Polynomial [".concat(constant, ", ").concat(restCoeffs, "] must have a non-zero non-constant coefficient"));
}
switch (coeffs.length) {
case 2:
return [unaryMinus(divide2(coeffs[0], coeffs[1]))];
case 3: {
var [c, b, a] = coeffs;
var denom = multiply(2, a);
var d1 = multiply(b, b);
var d2 = multiply(4, a, c);
if (equalScalar(d1, d2))
return [divide2(unaryMinus(b), denom)];
var discriminant = sqrt2(subtract(d1, d2));
return [divide2(subtract(discriminant, b), denom), divide2(subtract(unaryMinus(discriminant), b), denom)];
}
case 4: {
var [d, _c, _b, _a] = coeffs;
var _denom = unaryMinus(multiply(3, _a));
var D0_1 = multiply(_b, _b);
var D0_2 = multiply(3, _a, _c);
var D1_1 = add2(multiply(2, _b, _b, _b), multiply(27, _a, _a, d));
var D1_2 = multiply(9, _a, _b, _c);
if (equalScalar(D0_1, D0_2) && equalScalar(D1_1, D1_2)) {
return [divide2(_b, _denom)];
}
var Delta0 = subtract(D0_1, D0_2);
var Delta1 = subtract(D1_1, D1_2);
var discriminant1 = add2(multiply(18, _a, _b, _c, d), multiply(_b, _b, _c, _c));
var discriminant2 = add2(multiply(4, _b, _b, _b, d), multiply(4, _a, _c, _c, _c), multiply(27, _a, _a, d, d));
if (equalScalar(discriminant1, discriminant2)) {
return [
divide2(subtract(multiply(4, _a, _b, _c), add2(multiply(9, _a, _a, d), multiply(_b, _b, _b))), multiply(_a, Delta0)),
// simple root
divide2(subtract(multiply(9, _a, d), multiply(_b, _c)), multiply(2, Delta0))
// double root
];
}
var Ccubed;
if (equalScalar(D0_1, D0_2)) {
Ccubed = Delta1;
} else {
Ccubed = divide2(add2(Delta1, sqrt2(subtract(multiply(Delta1, Delta1), multiply(4, Delta0, Delta0, Delta0)))), 2);
}
var allRoots = true;
var rawRoots = cbrt4(Ccubed, allRoots).toArray().map((C) => divide2(add2(_b, C, divide2(Delta0, C)), _denom));
return rawRoots.map((r) => {
if (typeOf2(r) === "Complex" && equalScalar(re(r), re(r) + im(r))) {
return re(r);
}
return r;
});
}
default:
throw new RangeError("only implemented for cubic or lower-order polynomials, not ".concat(coeffs));
}
}
});
});
// node_modules/mathjs/lib/esm/expression/Help.js
var name236 = "Help";
var dependencies236 = ["parse"];
var createHelpClass = /* @__PURE__ */ factory(name236, dependencies236, (_ref) => {
var {
parse
} = _ref;
function Help(doc) {
if (!(this instanceof Help)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
if (!doc)
throw new Error('Argument "doc" missing');
this.doc = doc;
}
Help.prototype.type = "Help";
Help.prototype.isHelp = true;
Help.prototype.toString = function() {
var doc = this.doc || {};
var desc = "\n";
if (doc.name) {
desc += "Name: " + doc.name + "\n\n";
}
if (doc.category) {
desc += "Category: " + doc.category + "\n\n";
}
if (doc.description) {
desc += "Description:\n " + doc.description + "\n\n";
}
if (doc.syntax) {
desc += "Syntax:\n " + doc.syntax.join("\n ") + "\n\n";
}
if (doc.examples) {
desc += "Examples:\n";
var scope = {};
for (var i = 0; i < doc.examples.length; i++) {
var expr = doc.examples[i];
desc += " " + expr + "\n";
var res = void 0;
try {
res = parse(expr).compile().evaluate(scope);
} catch (e2) {
res = e2;
}
if (res !== void 0 && !isHelp(res)) {
desc += " " + format3(res, {
precision: 14
}) + "\n";
}
}
desc += "\n";
}
if (doc.mayThrow && doc.mayThrow.length) {
desc += "Throws: " + doc.mayThrow.join(", ") + "\n\n";
}
if (doc.seealso && doc.seealso.length) {
desc += "See also: " + doc.seealso.join(", ") + "\n";
}
return desc;
};
Help.prototype.toJSON = function() {
var obj = clone(this.doc);
obj.mathjs = "Help";
return obj;
};
Help.fromJSON = function(json) {
var doc = {};
Object.keys(json).filter((prop) => prop !== "mathjs").forEach((prop) => {
doc[prop] = json[prop];
});
return new Help(doc);
};
Help.prototype.valueOf = Help.prototype.toString;
return Help;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/type/chain/Chain.js
var name237 = "Chain";
var dependencies237 = ["?on", "math", "typed"];
var createChainClass = /* @__PURE__ */ factory(name237, dependencies237, (_ref) => {
var {
on,
math: math2,
typed: typed2
} = _ref;
function Chain(value) {
if (!(this instanceof Chain)) {
throw new SyntaxError("Constructor must be called with the new operator");
}
if (isChain(value)) {
this.value = value.value;
} else {
this.value = value;
}
}
Chain.prototype.type = "Chain";
Chain.prototype.isChain = true;
Chain.prototype.done = function() {
return this.value;
};
Chain.prototype.valueOf = function() {
return this.value;
};
Chain.prototype.toString = function() {
return format3(this.value);
};
Chain.prototype.toJSON = function() {
return {
mathjs: "Chain",
value: this.value
};
};
Chain.fromJSON = function(json) {
return new Chain(json.value);
};
function createProxy(name309, fn) {
if (typeof fn === "function") {
Chain.prototype[name309] = chainify(fn);
}
}
function createLazyProxy(name309, resolver) {
lazy(Chain.prototype, name309, function outerResolver() {
var fn = resolver();
if (typeof fn === "function") {
return chainify(fn);
}
return void 0;
});
}
function chainify(fn) {
return function() {
if (arguments.length === 0) {
return new Chain(fn(this.value));
}
var args = [this.value];
for (var i = 0; i < arguments.length; i++) {
args[i + 1] = arguments[i];
}
if (typed2.isTypedFunction(fn)) {
var sigObject = typed2.resolve(fn, args);
if (sigObject.params.length === 1) {
throw new Error("chain function " + fn.name + " cannot match rest parameter between chain value and additional arguments.");
}
return new Chain(sigObject.implementation.apply(fn, args));
}
return new Chain(fn.apply(fn, args));
};
}
Chain.createProxy = function(arg0, arg1) {
if (typeof arg0 === "string") {
createProxy(arg0, arg1);
} else {
var _loop = function _loop2(_name2) {
if (hasOwnProperty(arg0, _name2) && excludedNames[_name2] === void 0) {
createLazyProxy(_name2, () => arg0[_name2]);
}
};
for (var _name in arg0) {
_loop(_name);
}
}
};
var excludedNames = {
expression: true,
docs: true,
type: true,
classes: true,
json: true,
error: true,
isChain: true
// conflicts with the property isChain of a Chain instance
};
Chain.createProxy(math2);
if (on) {
on("import", function(name309, resolver, path) {
if (!path) {
createLazyProxy(name309, resolver);
}
});
}
return Chain;
}, {
isClass: true
});
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/e.js
var eDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/false.js
var falseDocs = {
name: "false",
category: "Constants",
syntax: ["false"],
description: "Boolean value false",
examples: ["false"],
seealso: ["true"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/i.js
var iDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/Infinity.js
var InfinityDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN10.js
var LN10Docs = {
name: "LN10",
category: "Constants",
syntax: ["LN10"],
description: "Returns the natural logarithm of 10, approximately equal to 2.302",
examples: ["LN10", "log(10)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LN2.js
var LN2Docs = {
name: "LN2",
category: "Constants",
syntax: ["LN2"],
description: "Returns the natural logarithm of 2, approximately equal to 0.693",
examples: ["LN2", "log(2)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG10E.js
var LOG10EDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/LOG2E.js
var LOG2EDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/NaN.js
var NaNDocs = {
name: "NaN",
category: "Constants",
syntax: ["NaN"],
description: "Not a number",
examples: ["NaN", "0 / 0"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/null.js
var nullDocs = {
name: "null",
category: "Constants",
syntax: ["null"],
description: "Value null",
examples: ["null"],
seealso: ["true", "false"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/phi.js
var phiDocs = {
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: ["phi"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/pi.js
var piDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT1_2.js
var SQRT12Docs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/SQRT2.js
var SQRT2Docs = {
name: "SQRT2",
category: "Constants",
syntax: ["SQRT2"],
description: "Returns the square root of 2, approximately equal to 1.414",
examples: ["SQRT2", "sqrt(2)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/tau.js
var tauDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/true.js
var trueDocs = {
name: "true",
category: "Constants",
syntax: ["true"],
description: "Boolean value true",
examples: ["true"],
seealso: ["false"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/constants/version.js
var versionDocs = {
name: "version",
category: "Constants",
syntax: ["version"],
description: "A string with the version number of math.js",
examples: ["version"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/bignumber.js
var bignumberDocs = {
name: "bignumber",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/boolean.js
var booleanDocs = {
name: "boolean",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/complex.js
var complexDocs = {
name: "complex",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/createUnit.js
var createUnitDocs = {
name: "createUnit",
category: "Construction",
syntax: ["createUnit(definitions)", "createUnit(name, definition)"],
description: "Create a user-defined unit and register it with the Unit type.",
examples: ['createUnit("foo")', 'createUnit("knot", {definition: "0.514444444 m/s", aliases: ["knots", "kt", "kts"]})', 'createUnit("mph", "1 mile/hour")'],
seealso: ["unit", "splitUnit"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/fraction.js
var fractionDocs = {
name: "fraction",
category: "Construction",
syntax: ["fraction(num)", "fraction(matrix)", "fraction(num,den)", "fraction({n: num, d: den})"],
description: "Create a fraction from a number or from integer numerator and denominator.",
examples: ["fraction(0.125)", "fraction(1, 3) + fraction(2, 5)", "fraction({n: 333, d: 53})", "fraction([sqrt(9), sqrt(10), sqrt(11)])"],
seealso: ["bignumber", "boolean", "complex", "index", "matrix", "string", "unit"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/index.js
var indexDocs = {
name: "index",
category: "Construction",
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: ["A = [1, 2, 3; 4, 5, 6]", "A[1, :]", "A[1, 2] = 50", "A[1:2, 1:2] = 1", "B = [1, 2, 3]", "B[B>1 and B<3]"],
seealso: ["bignumber", "boolean", "complex", "matrix,", "number", "range", "string", "unit"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/matrix.js
var matrixDocs = {
name: "matrix",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/number.js
var numberDocs = {
name: "number",
category: "Construction",
syntax: ["x", "number(x)", "number(unit, valuelessUnit)"],
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(unit("52cm"), "m")'],
seealso: ["bignumber", "boolean", "complex", "fraction", "index", "matrix", "string", "unit"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/sparse.js
var sparseDocs = {
name: "sparse",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/splitUnit.js
var splitUnitDocs = {
name: "splitUnit",
category: "Construction",
syntax: ["splitUnit(unit: Unit, parts: Unit[])"],
description: "Split a unit in an array of units whose sum is equal to the original unit.",
examples: ['splitUnit(1 m, ["feet", "inch"])'],
seealso: ["unit", "createUnit"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/string.js
var stringDocs = {
name: "string",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/construction/unit.js
var unitDocs = {
name: "unit",
category: "Construction",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/core/config.js
var configDocs = {
name: "config",
category: "Core",
syntax: ["config()", "config(options)"],
description: "Get configuration or change configuration.",
examples: ["config()", "1/3 + 1/4", 'config({number: "Fraction"})', "1/3 + 1/4"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/core/import.js
var importDocs = {
name: "import",
category: "Core",
syntax: ["import(functions)", "import(functions, options)"],
description: "Import functions or constants from an object.",
examples: ["import({myFn: f(x)=x^2, myConstant: 32 })", "myFn(2)", "myConstant"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/core/typed.js
var typedDocs = {
name: "typed",
category: "Core",
syntax: ["typed(signatures)", "typed(name, signatures)"],
description: "Create a typed function.",
examples: ['double = typed({ "number": f(x)=x+x, "string": f(x)=concat(x,x) })', "double(2)", 'double("hello")'],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/derivative.js
var derivativeDocs = {
name: "derivative",
category: "Algebra",
syntax: ["derivative(expr, variable)", "derivative(expr, variable, {simplify: boolean})"],
description: "Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.",
examples: ['derivative("2x^3", "x")', 'derivative("2x^3", "x", {simplify: false})', 'derivative("2x^2 + 3x + 4", "x")', 'derivative("sin(2x)", "x")', 'f = parse("x^2 + x")', 'x = parse("x")', "df = derivative(f, x)", "df.evaluate({x: 3})"],
seealso: ["simplify", "parse", "evaluate"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js
var leafCountDocs = {
name: "leafCount",
category: "Algebra",
syntax: ["leafCount(expr)"],
description: "Computes the number of leaves in the parse tree of the given expression",
examples: ['leafCount("e^(i*pi)-1")', 'leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],
seealso: ["simplify"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolve.js
var lsolveDocs = {
name: "lsolve",
category: "Algebra",
syntax: ["x=lsolve(L, b)"],
description: "Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",
examples: ["a = [-2, 3; 2, 1]", "b = [11, 9]", "x = lsolve(a, b)"],
seealso: ["lsolveAll", "lup", "lusolve", "usolve", "matrix", "sparse"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lsolveAll.js
var lsolveAllDocs = {
name: "lsolveAll",
category: "Algebra",
syntax: ["x=lsolveAll(L, b)"],
description: "Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",
examples: ["a = [-2, 3; 2, 1]", "b = [11, 9]", "x = lsolve(a, b)"],
seealso: ["lsolve", "lup", "lusolve", "usolve", "matrix", "sparse"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lup.js
var lupDocs = {
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", "qr"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lusolve.js
var lusolveDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/polynomialRoot.js
var polynomialRootDocs = {
name: "polynomialRoot",
category: "Algebra",
syntax: ["x=polynomialRoot(-6, 3)", "x=polynomialRoot(4, -4, 1)", "x=polynomialRoot(-8, 12, -6, 1)"],
description: "Finds the roots of a univariate polynomial given by its coefficients starting from constant, linear, and so on, increasing in degree.",
examples: ["a = polynomialRoot(-6, 11, -6, 1)"],
seealso: ["cbrt", "sqrt"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/qr.js
var qrDocs = {
name: "qr",
category: "Algebra",
syntax: ["qr(A)"],
description: "Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.",
examples: ["qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])"],
seealso: ["lup", "slu", "matrix"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/rationalize.js
var rationalizeDocs = {
name: "rationalize",
category: "Algebra",
syntax: ["rationalize(expr)", "rationalize(expr, scope)", "rationalize(expr, scope, detailed)"],
description: "Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.",
examples: ['rationalize("2x/y - y/(x+1)")', 'rationalize("2x/y - y/(x+1)", true)'],
seealso: ["simplify"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/resolve.js
var resolveDocs = {
name: "resolve",
category: "Algebra",
syntax: ["resolve(node, scope)"],
description: "Recursively substitute variables in an expression tree.",
examples: ['resolve(parse("1 + x"), { x: 7 })', 'resolve(parse("size(text)"), { text: "Hello World" })', 'resolve(parse("x + y"), { x: parse("3z") })', 'resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],
seealso: ["simplify", "evaluate"],
mayThrow: ["ReferenceError"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplify.js
var simplifyDocs = {
name: "simplify",
category: "Algebra",
syntax: ["simplify(expr)", "simplify(expr, rules)"],
description: "Simplify an expression tree.",
examples: ['simplify("3 + 2 / 4")', 'simplify("2x + x")', 'f = parse("x * (x + 2 + x)")', "simplified = simplify(f)", "simplified.evaluate({x: 2})"],
seealso: ["simplifyCore", "derivative", "evaluate", "parse", "rationalize", "resolve"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js
var simplifyConstantDocs = {
name: "simplifyConstant",
category: "Algebra",
syntax: ["simplifyConstant(expr)", "simplifyConstant(expr, options)"],
description: "Replace constant subexpressions of node with their values.",
examples: ['simplifyConstant("(3-3)*x")', 'simplifyConstant(parse("z-cos(tau/8)"))'],
seealso: ["simplify", "simplifyCore", "evaluate"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js
var simplifyCoreDocs = {
name: "simplifyCore",
category: "Algebra",
syntax: ["simplifyCore(node)"],
description: "Perform simple one-pass simplifications on an expression tree.",
examples: ['simplifyCore(parse("0*x"))', 'simplifyCore(parse("(x+0)*2"))'],
seealso: ["simplify", "simplifyConstant", "evaluate"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/slu.js
var sluDocs = {
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", "qr"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js
var symbolicEqualDocs = {
name: "symbolicEqual",
category: "Algebra",
syntax: ["symbolicEqual(expr1, expr2)", "symbolicEqual(expr1, expr2, options)"],
description: "Returns true if the difference of the expressions simplifies to 0",
examples: ['symbolicEqual("x*y","y*x")', 'symbolicEqual("abs(x^2)", "x^2")', 'symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],
seealso: ["simplify", "evaluate"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolve.js
var usolveDocs = {
name: "usolve",
category: "Algebra",
syntax: ["x=usolve(U, b)"],
description: "Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",
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: ["usolveAll", "lup", "lusolve", "lsolve", "matrix", "sparse"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/usolveAll.js
var usolveAllDocs = {
name: "usolveAll",
category: "Algebra",
syntax: ["x=usolve(U, b)"],
description: "Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",
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: ["usolve", "lup", "lusolve", "lsolve", "matrix", "sparse"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/abs.js
var absDocs = {
name: "abs",
category: "Arithmetic",
syntax: ["abs(x)"],
description: "Compute the absolute value.",
examples: ["abs(3.5)", "abs(-4.2)"],
seealso: ["sign"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/add.js
var addDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cbrt.js
var cbrtDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js
var ceilDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/cube.js
var cubeDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/divide.js
var divideDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotDivide.js
var dotDivideDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotMultiply.js
var dotMultiplyDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/dotPow.js
var dotPowDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/exp.js
var expDocs = {
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: ["expm", "expm1", "pow", "log"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm.js
var expmDocs = {
name: "expm",
category: "Arithmetic",
syntax: ["exp(x)"],
description: "Compute the matrix exponential, expm(A) = e^A. The matrix must be square. Not to be confused with exp(a), which performs element-wise exponentiation.",
examples: ["expm([[0,2],[0,0]])"],
seealso: ["exp"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/expm1.js
var expm1Docs = {
name: "expm1",
category: "Arithmetic",
syntax: ["expm1(x)"],
description: "Calculate the value of subtracting 1 from the exponential value.",
examples: ["expm1(2)", "pow(e, 2) - 1", "log(expm1(2) + 1)"],
seealso: ["exp", "pow", "log"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js
var fixDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js
var floorDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/gcd.js
var gcdDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js
var hypotDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js
var invmodDocs = {
name: "invmod",
category: "Arithmetic",
syntax: ["invmod(a, b)"],
description: "Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax \u2263 1 (mod b)",
examples: ["invmod(8, 12)", "invmod(7, 13)", "invmod(15151, 15122)"],
seealso: ["gcd", "xgcd"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/lcm.js
var lcmDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log.js
var logDocs = {
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", "log1p", "log2", "log10"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log10.js
var log10Docs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log1p.js
var log1pDocs = {
name: "log1p",
category: "Arithmetic",
syntax: ["log1p(x)", "log1p(x, base)"],
description: "Calculate the logarithm of a `value+1`",
examples: ["log1p(2.5)", "exp(log1p(1.4))", "pow(10, 4)", "log1p(9999, 10)", "log1p(9999) / log(10)"],
seealso: ["exp", "log", "log2", "log10"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/log2.js
var log2Docs = {
name: "log2",
category: "Arithmetic",
syntax: ["log2(x)"],
description: "Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.",
examples: ["log2(0.03125)", "log2(16)", "log2(16) / log2(2)", "pow(2, 4)"],
seealso: ["exp", "log1p", "log", "log10"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/mod.js
var modDocs = {
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", "isOdd(x) = x % 2", "isOdd(2)", "isOdd(3)"],
seealso: ["divide"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/multiply.js
var multiplyDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/norm.js
var normDocs = {
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")']
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoot.js
var nthRootDocs = {
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: ["nthRoots", "pow", "sqrt"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/nthRoots.js
var nthRootsDocs = {
name: "nthRoots",
category: "Arithmetic",
syntax: ["nthRoots(A)", "nthRoots(A, root)"],
description: 'Calculate the nth roots of a value. An nth root of a positive real number A, is a positive real solution of the equation "x^root = A". This function returns an array of complex values.',
examples: ["nthRoots(1)", "nthRoots(1, 3)"],
seealso: ["sqrt", "pow", "nthRoot"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js
var powDocs = {
name: "pow",
category: "Operators",
syntax: ["x ^ y", "pow(x, y)"],
description: "Calculates the power of x to y, x^y.",
examples: ["2^3", "2*2*2", "1 + e ^ (pi * i)", "pow([[1, 2], [4, 3]], 2)", "pow([[1, 2], [4, 3]], -1)"],
seealso: ["multiply", "nthRoot", "nthRoots", "sqrt"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/round.js
var roundDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js
var signDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrt.js
var sqrtDocs = {
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", "sqrtm", "multiply", "nthRoot", "nthRoots", "pow"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/sqrtm.js
var sqrtmDocs = {
name: "sqrtm",
category: "Arithmetic",
syntax: ["sqrtm(x)"],
description: "Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.",
examples: ["sqrtm([[33, 24], [48, 57]])"],
seealso: ["sqrt", "abs", "square", "multiply"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/sylvester.js
var sylvesterDocs = {
name: "sylvester",
category: "Algebra",
syntax: ["sylvester(A,B,C)"],
description: "Solves the real-valued Sylvester equation AX+XB=C for X",
examples: ["sylvester([[-1, -2], [1, 1]], [[-2, 1], [-1, 2]], [[-3, 2], [3, 0]])", "A = [[-1, -2], [1, 1]]; B = [[2, -1], [1, -2]]; C = [[-3, 2], [3, 0]]", "sylvester(A, B, C)"],
seealso: ["schur", "lyap"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/schur.js
var schurDocs = {
name: "schur",
category: "Algebra",
syntax: ["schur(A)"],
description: "Performs a real Schur decomposition of the real matrix A = UTU'",
examples: ["schur([[1, 0], [-4, 3]])", "A = [[1, 0], [-4, 3]]", "schur(A)"],
seealso: ["lyap", "sylvester"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/algebra/lyap.js
var lyapDocs = {
name: "lyap",
category: "Algebra",
syntax: ["lyap(A,Q)"],
description: "Solves the Continuous-time Lyapunov equation AP+PA'+Q=0 for P",
examples: ["lyap([[-2, 0], [1, -4]], [[3, 1], [1, 3]])", "A = [[-2, 0], [1, -4]]", "Q = [[3, 1], [1, 3]]", "lyap(A,Q)"],
seealso: ["schur", "sylvester"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/square.js
var squareDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/subtract.js
var subtractDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryMinus.js
var unaryMinusDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/unaryPlus.js
var unaryPlusDocs = {
name: "unaryPlus",
category: "Operators",
syntax: ["+x", "unaryPlus(x)"],
description: "Converts booleans and strings to numbers.",
examples: ["+true", '+"2"'],
seealso: ["add", "subtract", "unaryMinus"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/arithmetic/xgcd.js
var xgcdDocs = {
name: "xgcd",
category: "Arithmetic",
syntax: ["xgcd(a, b)"],
description: "Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",
examples: ["xgcd(8, 12)", "gcd(8, 12)", "xgcd(36163, 21199)"],
seealso: ["gcd", "lcm"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitAnd.js
var bitAndDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitNot.js
var bitNotDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitOr.js
var bitOrDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/bitXor.js
var bitXorDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/leftShift.js
var leftShiftDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightArithShift.js
var rightArithShiftDocs = {
name: "rightArithShift",
category: "Bitwise",
syntax: ["x >> y", "rightArithShift(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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/bitwise/rightLogShift.js
var rightLogShiftDocs = {
name: "rightLogShift",
category: "Bitwise",
syntax: ["x >>> y", "rightLogShift(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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/bellNumbers.js
var bellNumbersDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/catalan.js
var catalanDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/composition.js
var compositionDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/combinatorics/stirlingS2.js
var stirlingS2Docs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/arg.js
var argDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/conj.js
var conjDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/im.js
var imDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/complex/re.js
var reDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/evaluate.js
var evaluateDocs = {
name: "evaluate",
category: "Expression",
syntax: ["evaluate(expression)", "evaluate(expression, scope)", "evaluate([expr1, expr2, expr3, ...])", "evaluate([expr1, expr2, expr3, ...], scope)"],
description: "Evaluate an expression or an array with expressions.",
examples: ['evaluate("2 + 3")', 'evaluate("sqrt(16)")', 'evaluate("2 inch to cm")', 'evaluate("sin(x * pi)", { "x": 1/2 })', 'evaluate(["width=2", "height=4","width*height"])'],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/expression/help.js
var helpDocs = {
name: "help",
category: "Expression",
syntax: ["help(object)", "help(string)"],
description: "Display documentation on a function or data type.",
examples: ["help(sqrt)", 'help("complex")'],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/distance.js
var distanceDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/geometry/intersect.js
var intersectDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/and.js
var andDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/not.js
var notDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/or.js
var orDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/logical/xor.js
var xorDocs = {
name: "xor",
category: "Logical",
syntax: ["x xor y", "xor(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 xor 4"],
seealso: ["not", "and", "or"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/column.js
var columnDocs = {
name: "column",
category: "Matrix",
syntax: ["column(x, index)"],
description: "Return a column from a matrix or array.",
examples: ["A = [[1, 2], [3, 4]]", "column(A, 1)", "column(A, 2)"],
seealso: ["row", "matrixFromColumns"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/concat.js
var concatDocs = {
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/count.js
var countDocs = {
name: "count",
category: "Matrix",
syntax: ["count(x)"],
description: "Count the number of elements of a matrix, array or string.",
examples: ["a = [1, 2; 3, 4; 5, 6]", "count(a)", "size(a)", 'count("hello world")'],
seealso: ["size"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/cross.js
var crossDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ctranspose.js
var ctransposeDocs = {
name: "ctranspose",
category: "Matrix",
syntax: ["x'", "ctranspose(x)"],
description: "Complex Conjugate and Transpose a matrix",
examples: ["a = [1, 2, 3; 4, 5, 6]", "a'", "ctranspose(a)"],
seealso: ["concat", "det", "diag", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/det.js
var detDocs = {
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diag.js
var diagDocs = {
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/diff.js
var diffDocs = {
name: "diff",
category: "Matrix",
syntax: ["diff(arr)", "diff(arr, dim)"],
description: ["Create a new matrix or array with the difference of the passed matrix or array.", "Dim parameter is optional and used to indicant the dimension of the array/matrix to apply the difference", "If no dimension parameter is passed it is assumed as dimension 0", "Dimension is zero-based in javascript and one-based in the parser", "Arrays must be 'rectangular' meaning arrays like [1, 2]", "If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays"],
examples: ["A = [1, 2, 4, 7, 0]", "diff(A)", "diff(A, 1)", "B = [[1, 2], [3, 4]]", "diff(B)", "diff(B, 1)", "diff(B, 2)", "diff(B, bignumber(2))", "diff([[1, 2], matrix([3, 4])], 2)"],
seealso: ["subtract", "partitionSelect"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/dot.js
var dotDocs = {
name: "dot",
category: "Matrix",
syntax: ["dot(A, B)", "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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/eigs.js
var eigsDocs = {
name: "eigs",
category: "Matrix",
syntax: ["eigs(x)"],
description: "Calculate the eigenvalues and eigenvectors of a real symmetric matrix",
examples: ["eigs([[5, 2.3], [2.3, 1]])"],
seealso: ["inv"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/filter.js
var filterDocs = {
name: "filter",
category: "Matrix",
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/flatten.js
var flattenDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/forEach.js
var forEachDocs = {
name: "forEach",
category: "Matrix",
syntax: ["forEach(x, callback)"],
description: "Iterates over all elements of a matrix/array, and executes the given callback function.",
examples: ["numberOfPets = {}", "addPet(n) = numberOfPets[n] = (numberOfPets[n] ? numberOfPets[n]:0 ) + 1;", 'forEach(["Dog","Cat","Cat"], addPet)', "numberOfPets"],
seealso: ["map", "sort", "filter"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/getMatrixDataType.js
var getMatrixDataTypeDocs = {
name: "getMatrixDataType",
category: "Matrix",
syntax: ["getMatrixDataType(x)"],
description: 'Find the data type of all elements in a matrix or array, for example "number" if all items are a number and "Complex" if all values are complex numbers. If a matrix contains more than one data type, it will return "mixed".',
examples: ["getMatrixDataType([1, 2, 3])", "getMatrixDataType([[5 cm], [2 inch]])", 'getMatrixDataType([1, "text"])', "getMatrixDataType([1, bignumber(4)])"],
seealso: ["matrix", "sparse", "typeOf"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/identity.js
var identityDocs = {
name: "identity",
category: "Matrix",
syntax: ["identity(n)", "identity(m, n)", "identity([m, n])"],
description: "Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",
examples: ["identity(3)", "identity(3, 5)", "a = [1, 2, 3; 4, 5, 6]", "identity(size(a))"],
seealso: ["concat", "det", "diag", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/inv.js
var invDocs = {
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", "identity", "ones", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/pinv.js
var pinvDocs = {
name: "pinv",
category: "Matrix",
syntax: ["pinv(x)"],
description: "Calculate the Moore\u2013Penrose inverse of a matrix",
examples: ["pinv([1, 2; 3, 4])", "pinv([[1, 0], [0, 1], [0, 1]])", "pinv(4)"],
seealso: ["inv"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/kron.js
var kronDocs = {
name: "kron",
category: "Matrix",
syntax: ["kron(x, y)"],
description: "Calculates the kronecker product of 2 matrices or vectors.",
examples: ["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])", "kron([1,1], [2,3,4])"],
seealso: ["multiply", "dot", "cross"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/map.js
var mapDocs = {
name: "map",
category: "Matrix",
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], square)"],
seealso: ["filter", "forEach"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js
var matrixFromColumnsDocs = {
name: "matrixFromColumns",
category: "Matrix",
syntax: ["matrixFromColumns(...arr)", "matrixFromColumns(row1, row2)", "matrixFromColumns(row1, row2, row3)"],
description: "Create a dense matrix from vectors as individual columns.",
examples: ["matrixFromColumns([1, 2, 3], [[4],[5],[6]])"],
seealso: ["matrix", "matrixFromRows", "matrixFromFunction", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js
var matrixFromFunctionDocs = {
name: "matrixFromFunction",
category: "Matrix",
syntax: ["matrixFromFunction(size, fn)", "matrixFromFunction(size, fn, format)", "matrixFromFunction(size, fn, format, datatype)", "matrixFromFunction(size, format, fn)", "matrixFromFunction(size, format, datatype, fn)"],
description: "Create a matrix by evaluating a generating function at each index.",
examples: ["f(I) = I[1] - I[2]", "matrixFromFunction([3,3], f)", "g(I) = I[1] - I[2] == 1 ? 4 : 0", 'matrixFromFunction([100, 100], "sparse", g)', "matrixFromFunction([5], random)"],
seealso: ["matrix", "matrixFromRows", "matrixFromColumns", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js
var matrixFromRowsDocs = {
name: "matrixFromRows",
category: "Matrix",
syntax: ["matrixFromRows(...arr)", "matrixFromRows(row1, row2)", "matrixFromRows(row1, row2, row3)"],
description: "Create a dense matrix from vectors as individual rows.",
examples: ["matrixFromRows([1, 2, 3], [[4],[5],[6]])"],
seealso: ["matrix", "matrixFromColumns", "matrixFromFunction", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ones.js
var onesDocs = {
name: "ones",
category: "Matrix",
syntax: ["ones(m)", "ones(m, n)", "ones(m, n, p, ...)", "ones([m])", "ones([m, n])", "ones([m, n, p, ...])"],
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", "identity", "inv", "range", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js
var partitionSelectDocs = {
name: "partitionSelect",
category: "Matrix",
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, compareText)', "arr = [5, 2, 1]", "partitionSelect(arr, 0) # returns 1, arr is now: [1, 2, 5]", "arr", "partitionSelect(arr, 1, 'desc') # returns 2, arr is now: [5, 2, 1]", "arr"],
seealso: ["sort"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/range.js
var rangeDocs = {
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")', "range(1m, 1m, 3m)", "a = [1, 2, 3, 4; 5, 6, 7, 8]", "a[1:2, 1:2]"],
seealso: ["concat", "det", "diag", "identity", "inv", "ones", "size", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/reshape.js
var reshapeDocs = {
name: "reshape",
category: "Matrix",
syntax: ["reshape(x, sizes)"],
description: "Reshape a multi dimensional array to fit the specified dimensions.",
examples: ["reshape([1, 2, 3, 4, 5, 6], [2, 3])", "reshape([[1, 2], [3, 4]], [1, 4])", "reshape([[1, 2], [3, 4]], [4])", "reshape([1, 2, 3, 4], [-1, 2])"],
seealso: ["size", "squeeze", "resize"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/resize.js
var resizeDocs = {
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", "reshape"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotate.js
var rotateDocs = {
name: "rotate",
category: "Matrix",
syntax: ["rotate(w, theta)", "rotate(w, theta, v)"],
description: "Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",
examples: ["rotate([1, 0], pi / 2)", 'rotate(matrix([1, 0]), unit("35deg"))', 'rotate([1, 0, 0], unit("90deg"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],
seealso: ["matrix", "rotationMatrix"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/rotationMatrix.js
var rotationMatrixDocs = {
name: "rotationMatrix",
category: "Matrix",
syntax: ["rotationMatrix(theta)", "rotationMatrix(theta, v)", "rotationMatrix(theta, v, format)"],
description: "Returns a 2-D rotation matrix (2x2) for a given angle (in radians). Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.",
examples: ["rotationMatrix(pi / 2)", 'rotationMatrix(unit("45deg"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],
seealso: ["cos", "sin"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/row.js
var rowDocs = {
name: "row",
category: "Matrix",
syntax: ["row(x, index)"],
description: "Return a row from a matrix or array.",
examples: ["A = [[1, 2], [3, 4]]", "row(A, 1)", "row(A, 2)"],
seealso: ["column", "matrixFromRows"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/size.js
var sizeDocs = {
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", "count", "det", "diag", "identity", "inv", "ones", "range", "squeeze", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/sort.js
var sortDocs = {
name: "sort",
category: "Matrix",
syntax: ["sort(x)", "sort(x, compare)"],
description: 'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',
examples: ["sort([5, 10, 1])", 'sort(["C", "B", "A", "D"], "natural")', "sortByLength(a, b) = size(a)[1] - size(b)[1]", 'sort(["Langdon", "Tom", "Sara"], sortByLength)', 'sort(["10", "1", "2"], "natural")'],
seealso: ["map", "filter", "forEach"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/squeeze.js
var squeezeDocs = {
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", "identity", "inv", "ones", "range", "size", "subset", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/subset.js
var subsetDocs = {
name: "subset",
category: "Matrix",
syntax: ["value(index)", "value(index) = replacement", "subset(value, [index])", "subset(value, [index], replacement)"],
description: "Get or set a subset of the entries of a matrix or characters of a string. Indexes are one-based. There should be one index specification for each dimension of the target. Each specification can be a single index, a list of indices, or a range in colon notation `l:u`. In a range, both the lower bound l and upper bound u are included; and if a bound is omitted it defaults to the most extreme valid value. The cartesian product of the indices specified in each dimension determines the target of the operation.",
examples: ["d = [1, 2; 3, 4]", "e = []", "e[1, 1:2] = [5, 6]", "e[2, :] = [7, 8]", "f = d * e", "f[2, 1]", "f[:, 1]", "f[[1,2], [1,3]] = [9, 10; 11, 12]", "f"],
seealso: ["concat", "det", "diag", "identity", "inv", "ones", "range", "size", "squeeze", "trace", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/trace.js
var traceDocs = {
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "transpose", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/transpose.js
var transposeDocs = {
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "zeros"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/zeros.js
var zerosDocs = {
name: "zeros",
category: "Matrix",
syntax: ["zeros(m)", "zeros(m, n)", "zeros(m, n, p, ...)", "zeros([m])", "zeros([m, n])", "zeros([m, n, p, ...])"],
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", "identity", "inv", "ones", "range", "size", "squeeze", "subset", "trace", "transpose"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/fft.js
var fftDocs = {
name: "fft",
category: "Matrix",
syntax: ["fft(x)"],
description: "Calculate N-dimensional fourier transform",
examples: ["fft([[1, 0], [1, 0]])"],
seealso: ["ifft"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/matrix/ifft.js
var ifftDocs = {
name: "ifft",
category: "Matrix",
syntax: ["ifft(x)"],
description: "Calculate N-dimensional inverse fourier transform",
examples: ["ifft([[2, 2], [0, 0]])"],
seealso: ["fft"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinations.js
var combinationsDocs = {
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: ["combinationsWithRep", "permutations", "factorial"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/combinationsWithRep.js
var combinationsWithRepDocs = {
name: "combinationsWithRep",
category: "Probability",
syntax: ["combinationsWithRep(n, k)"],
description: "Compute the number of combinations of n items taken k at a time with replacements.",
examples: ["combinationsWithRep(7, 5)"],
seealso: ["combinations", "permutations", "factorial"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/factorial.js
var factorialDocs = {
name: "factorial",
category: "Probability",
syntax: ["n!", "factorial(n)"],
description: "Compute the factorial of a value",
examples: ["5!", "5 * 4 * 3 * 2 * 1", "3!"],
seealso: ["combinations", "combinationsWithRep", "permutations", "gamma"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/gamma.js
var gammaDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/lgamma.js
var lgammaDocs = {
name: "lgamma",
category: "Probability",
syntax: ["lgamma(n)"],
description: "Logarithm of the gamma function for real, positive numbers and complex numbers, using Lanczos approximation for numbers and Stirling series for complex numbers.",
examples: ["lgamma(4)", "lgamma(1/2)", "lgamma(i)", "lgamma(complex(1.1, 2))"],
seealso: ["gamma"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/kldivergence.js
var kldivergenceDocs = {
name: "kldivergence",
category: "Probability",
syntax: ["kldivergence(x, y)"],
description: "Calculate the Kullback-Leibler (KL) divergence between two distributions.",
examples: ["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/multinomial.js
var multinomialDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/permutations.js
var permutationsDocs = {
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", "combinationsWithRep", "factorial"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/pickRandom.js
var pickRandomDocs = {
name: "pickRandom",
category: "Probability",
syntax: ["pickRandom(array)", "pickRandom(array, number)", "pickRandom(array, weights)", "pickRandom(array, number, weights)", "pickRandom(array, weights, number)"],
description: "Pick a random entry from a given array.",
examples: ["pickRandom(0:10)", "pickRandom([1, 3, 1, 6])", "pickRandom([1, 3, 1, 6], 2)", "pickRandom([1, 3, 1, 6], [2, 3, 2, 1])", "pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])", "pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],
seealso: ["random", "randomInt"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/random.js
var randomDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/probability/randomInt.js
var randomIntDocs = {
name: "randomInt",
category: "Probability",
syntax: ["randomInt(max)", "randomInt(min, max)", "randomInt(size)", "randomInt(size, max)", "randomInt(size, min, max)"],
description: "Return a random integer number",
examples: ["randomInt(10, 20)", "randomInt([2, 3], 10)"],
seealso: ["pickRandom", "random"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compare.js
var compareDocs = {
name: "compare",
category: "Relational",
syntax: ["compare(x, y)"],
description: "Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",
examples: ["compare(2, 3)", "compare(3, 2)", "compare(2, 2)", "compare(5cm, 40mm)", "compare(2, [1, 2, 3])"],
seealso: ["equal", "unequal", "smaller", "smallerEq", "largerEq", "compareNatural", "compareText"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareNatural.js
var compareNaturalDocs = {
name: "compareNatural",
category: "Relational",
syntax: ["compareNatural(x, y)"],
description: "Compare two values of any type in a deterministic, natural way. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",
examples: ["compareNatural(2, 3)", "compareNatural(3, 2)", "compareNatural(2, 2)", "compareNatural(5cm, 40mm)", 'compareNatural("2", "10")', "compareNatural(2 + 3i, 2 + 4i)", "compareNatural([1, 2, 4], [1, 2, 3])", "compareNatural([1, 5], [1, 2, 3])", "compareNatural([1, 2], [1, 2])", "compareNatural({a: 2}, {a: 4})"],
seealso: ["equal", "unequal", "smaller", "smallerEq", "largerEq", "compare", "compareText"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/compareText.js
var compareTextDocs = {
name: "compareText",
category: "Relational",
syntax: ["compareText(x, y)"],
description: "Compare two strings lexically. Comparison is case sensitive. Returns 1 when x > y, -1 when x < y, and 0 when x == y.",
examples: ['compareText("B", "A")', 'compareText("A", "B")', 'compareText("A", "A")', 'compareText("2", "10")', 'compare("2", "10")', "compare(2, 10)", 'compareNatural("2", "10")', 'compareText("B", ["A", "B", "C"])'],
seealso: ["compare", "compareNatural"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/deepEqual.js
var deepEqualDocs = {
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: ["deepEqual([1,3,4], [1,3,4])", "deepEqual([1,3,4], [1,3])"],
seealso: ["equal", "unequal", "smaller", "larger", "smallerEq", "largerEq", "compare"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equal.js
var equalDocs = {
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", "equalText"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/equalText.js
var equalTextDocs = {
name: "equalText",
category: "Relational",
syntax: ["equalText(x, y)"],
description: "Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.",
examples: ['equalText("Hello", "Hello")', 'equalText("a", "A")', 'equal("2e3", "2000")', 'equalText("2e3", "2000")', 'equalText("B", ["A", "B", "C"])'],
seealso: ["compare", "compareNatural", "compareText", "equal"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/larger.js
var largerDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/largerEq.js
var largerEqDocs = {
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", "compare"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smaller.js
var smallerDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/smallerEq.js
var smallerEqDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/relational/unequal.js
var unequalDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setCartesian.js
var setCartesianDocs = {
name: "setCartesian",
category: "Set",
syntax: ["setCartesian(set1, set2)"],
description: "Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays and the values will be sorted in ascending order before the operation.",
examples: ["setCartesian([1, 2], [3, 4])"],
seealso: ["setUnion", "setIntersect", "setDifference", "setPowerset"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDifference.js
var setDifferenceDocs = {
name: "setDifference",
category: "Set",
syntax: ["setDifference(set1, set2)"],
description: "Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",
examples: ["setDifference([1, 2, 3, 4], [3, 4, 5, 6])", "setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],
seealso: ["setUnion", "setIntersect", "setSymDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setDistinct.js
var setDistinctDocs = {
name: "setDistinct",
category: "Set",
syntax: ["setDistinct(set)"],
description: "Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",
examples: ["setDistinct([1, 1, 1, 2, 2, 3])"],
seealso: ["setMultiplicity"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIntersect.js
var setIntersectDocs = {
name: "setIntersect",
category: "Set",
syntax: ["setIntersect(set1, set2)"],
description: "Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",
examples: ["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])", "setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],
seealso: ["setUnion", "setDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setIsSubset.js
var setIsSubsetDocs = {
name: "setIsSubset",
category: "Set",
syntax: ["setIsSubset(set1, set2)"],
description: "Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",
examples: ["setIsSubset([1, 2], [3, 4, 5, 6])", "setIsSubset([3, 4], [3, 4, 5, 6])"],
seealso: ["setUnion", "setIntersect", "setDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setMultiplicity.js
var setMultiplicityDocs = {
name: "setMultiplicity",
category: "Set",
syntax: ["setMultiplicity(element, set)"],
description: "Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",
examples: ["setMultiplicity(1, [1, 2, 2, 4])", "setMultiplicity(2, [1, 2, 2, 4])"],
seealso: ["setDistinct", "setSize"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setPowerset.js
var setPowersetDocs = {
name: "setPowerset",
category: "Set",
syntax: ["setPowerset(set)"],
description: "Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",
examples: ["setPowerset([1, 2, 3])"],
seealso: ["setCartesian"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSize.js
var setSizeDocs = {
name: "setSize",
category: "Set",
syntax: ["setSize(set)", "setSize(set, unique)"],
description: 'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',
examples: ["setSize([1, 2, 2, 4])", "setSize([1, 2, 2, 4], true)"],
seealso: ["setUnion", "setIntersect", "setDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setSymDifference.js
var setSymDifferenceDocs = {
name: "setSymDifference",
category: "Set",
syntax: ["setSymDifference(set1, set2)"],
description: "Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",
examples: ["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])", "setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],
seealso: ["setUnion", "setIntersect", "setDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/set/setUnion.js
var setUnionDocs = {
name: "setUnion",
category: "Set",
syntax: ["setUnion(set1, set2)"],
description: "Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",
examples: ["setUnion([1, 2, 3, 4], [3, 4, 5, 6])", "setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],
seealso: ["setIntersect", "setDifference"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/zpk2tf.js
var zpk2tfDocs = {
name: "zpk2tf",
category: "Signal",
syntax: ["zpk2tf(z, p, k)"],
description: "Compute the transfer function of a zero-pole-gain model.",
examples: ["zpk2tf([1, 2], [-1, -2], 1)", "zpk2tf([1, 2], [-1, -2])", "zpk2tf([1 - 3i, 2 + 2i], [-1, -2])"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/signal/freqz.js
var freqzDocs = {
name: "freqz",
category: "Signal",
syntax: ["freqz(b, a)", "freqz(b, a, w)"],
description: "Calculates the frequency response of a filter given its numerator and denominator coefficients.",
examples: ["freqz([1, 2], [1, 2, 3])", "freqz([1, 2], [1, 2, 3], [0, 1])", "freqz([1, 2], [1, 2, 3], 512)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/erf.js
var erfDocs = {
name: "erf",
category: "Special",
syntax: ["erf(x)"],
description: "Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",
examples: ["erf(0.2)", "erf(-0.5)", "erf(4)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/special/zeta.js
var zetaDocs = {
name: "zeta",
category: "Special",
syntax: ["zeta(s)"],
description: "Compute the Riemann Zeta Function using an infinite series and Riemanns Functional Equation for the entire complex plane",
examples: ["zeta(0.2)", "zeta(-0.5)", "zeta(4)"],
seealso: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mad.js
var madDocs = {
name: "mad",
category: "Statistics",
syntax: ["mad(a, b, c, ...)", "mad(A)"],
description: "Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",
examples: ["mad(10, 20, 30)", "mad([1, 2, 3])"],
seealso: ["mean", "median", "std", "abs"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/max.js
var maxDocs = {
name: "max",
category: "Statistics",
syntax: ["max(a, b, c, ...)", "max(A)", "max(A, dimension)"],
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mean.js
var meanDocs = {
name: "mean",
category: "Statistics",
syntax: ["mean(a, b, c, ...)", "mean(A)", "mean(A, dimension)"],
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/median.js
var medianDocs = {
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", "variance", "quantileSeq"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/min.js
var minDocs = {
name: "min",
category: "Statistics",
syntax: ["min(a, b, c, ...)", "min(A)", "min(A, dimension)"],
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/mode.js
var modeDocs = {
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(2, 1, 4, 3, 1)", "mode([1, 2.7, 3.2, 4, 2.7])", "mode(1, 4, 6, 1, 6)"],
seealso: ["max", "mean", "min", "median", "prod", "std", "sum", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/prod.js
var prodDocs = {
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js
var quantileSeqDocs = {
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/std.js
var stdDocs = {
name: "std",
category: "Statistics",
syntax: ["std(a, b, c, ...)", "std(A)", "std(A, dimension)", "std(A, normalization)", "std(A, dimension, normalization)"],
description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',
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", "prod", "sum", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js
var cumSumDocs = {
name: "cumsum",
category: "Statistics",
syntax: ["cumsum(a, b, c, ...)", "cumsum(A)"],
description: "Compute the cumulative sum of all values.",
examples: ["cumsum(2, 3, 4, 1)", "cumsum([2, 3, 4, 1])", "cumsum([1, 2; 3, 4])", "cumsum([1, 2; 3, 4], 1)", "cumsum([1, 2; 3, 4], 2)"],
seealso: ["max", "mean", "median", "min", "prod", "std", "sum", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/sum.js
var sumDocs = {
name: "sum",
category: "Statistics",
syntax: ["sum(a, b, c, ...)", "sum(A)", "sum(A, dimension)"],
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", "variance"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/variance.js
var varianceDocs = {
name: "variance",
category: "Statistics",
syntax: ["variance(a, b, c, ...)", "variance(A)", "variance(A, dimension)", "variance(A, normalization)", "variance(A, dimension, normalization)"],
description: 'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',
examples: ["variance(2, 4, 6)", "variance([2, 4, 6, 8])", 'variance([2, 4, 6, 8], "uncorrected")', 'variance([2, 4, 6, 8], "biased")', "variance([1, 2, 3; 4, 5, 6])"],
seealso: ["max", "mean", "min", "median", "min", "prod", "std", "sum"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/statistics/corr.js
var corrDocs = {
name: "corr",
category: "Statistics",
syntax: ["corr(A,B)"],
description: "Compute the correlation coefficient of a two list with values, For matrices, the matrix correlation coefficient is calculated.",
examples: ["corr([2, 4, 6, 8],[1, 2, 3, 6])", "corr(matrix([[1, 2.2, 3, 4.8, 5], [1, 2, 3, 4, 5]]), matrix([[4, 5.3, 6.6, 7, 8], [1, 2, 3, 4, 5]]))"],
seealso: ["max", "mean", "min", "median", "min", "prod", "std", "sum"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acos.js
var acosDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acosh.js
var acoshDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acot.js
var acotDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js
var acothDocs = {
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(2)", "acoth(0.5)"],
seealso: ["acsch", "asech"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsc.js
var acscDocs = {
name: "acsc",
category: "Trigonometry",
syntax: ["acsc(x)"],
description: "Calculate the inverse cotangent of a value.",
examples: ["acsc(2)", "acsc(csc(0.5))", "acsc(0.5)"],
seealso: ["csc", "asin", "asec"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js
var acschDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asec.js
var asecDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asech.js
var asechDocs = {
name: "asech",
category: "Trigonometry",
syntax: ["asech(x)"],
description: "Calculate the inverse secant of a value.",
examples: ["asech(0.5)"],
seealso: ["acsch", "acoth"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asin.js
var asinDocs = {
name: "asin",
category: "Trigonometry",
syntax: ["asin(x)"],
description: "Compute the inverse sine of a value in radians.",
examples: ["asin(0.5)", "asin(sin(0.5))"],
seealso: ["sin", "acos", "atan"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/asinh.js
var asinhDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan.js
var atanDocs = {
name: "atan",
category: "Trigonometry",
syntax: ["atan(x)"],
description: "Compute the inverse tangent of a value in radians.",
examples: ["atan(0.5)", "atan(tan(0.5))"],
seealso: ["tan", "acos", "asin"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atan2.js
var atan2Docs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/atanh.js
var atanhDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cos.js
var cosDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cosh.js
var coshDocs = {
name: "cosh",
category: "Trigonometry",
syntax: ["cosh(x)"],
description: "Compute the hyperbolic cosine of x in radians.",
examples: ["cosh(0.5)"],
seealso: ["sinh", "tanh", "coth"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/cot.js
var cotDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/coth.js
var cothDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csc.js
var cscDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/csch.js
var cschDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sec.js
var secDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sech.js
var sechDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sin.js
var sinDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/sinh.js
var sinhDocs = {
name: "sinh",
category: "Trigonometry",
syntax: ["sinh(x)"],
description: "Compute the hyperbolic sine of x in radians.",
examples: ["sinh(0.5)"],
seealso: ["cosh", "tanh"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tan.js
var tanDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/trigonometry/tanh.js
var tanhDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/units/to.js
var toDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/bin.js
var binDocs = {
name: "bin",
category: "Utils",
syntax: ["bin(value)"],
description: "Format a number as binary",
examples: ["bin(2)"],
seealso: ["oct", "hex"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/clone.js
var cloneDocs = {
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: []
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/format.js
var formatDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hasNumericValue.js
var hasNumericValueDocs = {
name: "hasNumericValue",
category: "Utils",
syntax: ["hasNumericValue(x)"],
description: "Test whether a value is an numeric value. In case of a string, true is returned if the string contains a numeric value.",
examples: ["hasNumericValue(2)", 'hasNumericValue("2")', 'isNumeric("2")', "hasNumericValue(0)", "hasNumericValue(bignumber(500))", "hasNumericValue(fraction(0.125))", "hasNumericValue(2 + 3i)", 'hasNumericValue([2.3, "foo", false])'],
seealso: ["isInteger", "isZero", "isNegative", "isPositive", "isNaN", "isNumeric"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/hex.js
var hexDocs = {
name: "hex",
category: "Utils",
syntax: ["hex(value)"],
description: "Format a number as hexadecimal",
examples: ["hex(240)"],
seealso: ["bin", "oct"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isInteger.js
var isIntegerDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNaN.js
var isNaNDocs = {
name: "isNaN",
category: "Utils",
syntax: ["isNaN(x)"],
description: "Test whether a value is NaN (not a number)",
examples: ["isNaN(2)", "isNaN(0 / 0)", "isNaN(NaN)", "isNaN(Infinity)"],
seealso: ["isNegative", "isNumeric", "isPositive", "isZero"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNegative.js
var isNegativeDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isNumeric.js
var isNumericDocs = {
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("2")', 'hasNumericValue("2")', "isNumeric(0)", "isNumeric(bignumber(500))", "isNumeric(fraction(0.125))", "isNumeric(2 + 3i)", 'isNumeric([2.3, "foo", false])'],
seealso: ["isInteger", "isZero", "isNegative", "isPositive", "isNaN", "hasNumericValue"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPositive.js
var isPositiveDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isPrime.js
var isPrimeDocs = {
name: "isPrime",
category: "Utils",
syntax: ["isPrime(x)"],
description: "Test whether a value is prime: has no divisors other than itself and one.",
examples: ["isPrime(3)", "isPrime(-2)", "isPrime([2, 17, 100])"],
seealso: ["isInteger", "isNumeric", "isNegative", "isZero"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/isZero.js
var isZeroDocs = {
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"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/numeric.js
var numericDocs = {
name: "numeric",
category: "Utils",
syntax: ["numeric(x)"],
description: "Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction.",
examples: ['numeric("4")', 'numeric("4", "number")', 'numeric("4", "BigNumber")', 'numeric("4", "Fraction")', 'numeric(4, "Fraction")', 'numeric(fraction(2, 5), "number")'],
seealso: ["number", "fraction", "bignumber", "string", "format"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/oct.js
var octDocs = {
name: "oct",
category: "Utils",
syntax: ["oct(value)"],
description: "Format a number as octal",
examples: ["oct(56)"],
seealso: ["bin", "hex"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/print.js
var printDocs = {
name: "print",
category: "Utils",
syntax: ["print(template, values)", "print(template, values, precision)"],
description: "Interpolate values into a string template.",
examples: ['print("Lucy is $age years old", {age: 5})', 'print("The value of pi is $pi", {pi: pi}, 3)', 'print("Hello, $user.name!", {user: {name: "John"}})', 'print("Values: $1, $2, $3", [6, 9, 4])'],
seealso: ["format"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/utils/typeOf.js
var typeOfDocs = {
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: ["getMatrixDataType"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/function/numeric/solveODE.js
var solveODEDocs = {
name: "solveODE",
category: "Numeric",
syntax: ["solveODE(func, tspan, y0)", "solveODE(func, tspan, y0, options)"],
description: "Numerical Integration of Ordinary Differential Equations.",
examples: ["f(t,y) = y", "tspan = [0, 4]", "solveODE(f, tspan, 1)", "solveODE(f, tspan, [1, 2])", 'solveODE(f, tspan, 1, { method:"RK23", maxStep:0.1 })'],
seealso: ["derivative", "simplifyCore"]
};
// node_modules/mathjs/lib/esm/expression/embeddedDocs/embeddedDocs.js
var embeddedDocs = {
// construction functions
bignumber: bignumberDocs,
boolean: booleanDocs,
complex: complexDocs,
createUnit: createUnitDocs,
fraction: fractionDocs,
index: indexDocs,
matrix: matrixDocs,
number: numberDocs,
sparse: sparseDocs,
splitUnit: splitUnitDocs,
string: stringDocs,
unit: unitDocs,
// constants
e: eDocs,
E: eDocs,
false: falseDocs,
i: iDocs,
Infinity: InfinityDocs,
LN2: LN2Docs,
LN10: LN10Docs,
LOG2E: LOG2EDocs,
LOG10E: LOG10EDocs,
NaN: NaNDocs,
null: nullDocs,
pi: piDocs,
PI: piDocs,
phi: phiDocs,
SQRT1_2: SQRT12Docs,
SQRT2: SQRT2Docs,
tau: tauDocs,
true: trueDocs,
version: versionDocs,
// physical constants
// TODO: more detailed docs for physical constants
speedOfLight: {
description: "Speed of light in vacuum",
examples: ["speedOfLight"]
},
gravitationConstant: {
description: "Newtonian constant of gravitation",
examples: ["gravitationConstant"]
},
planckConstant: {
description: "Planck constant",
examples: ["planckConstant"]
},
reducedPlanckConstant: {
description: "Reduced Planck constant",
examples: ["reducedPlanckConstant"]
},
magneticConstant: {
description: "Magnetic constant (vacuum permeability)",
examples: ["magneticConstant"]
},
electricConstant: {
description: "Electric constant (vacuum permeability)",
examples: ["electricConstant"]
},
vacuumImpedance: {
description: "Characteristic impedance of vacuum",
examples: ["vacuumImpedance"]
},
coulomb: {
description: "Coulomb's constant",
examples: ["coulomb"]
},
elementaryCharge: {
description: "Elementary charge",
examples: ["elementaryCharge"]
},
bohrMagneton: {
description: "Borh magneton",
examples: ["bohrMagneton"]
},
conductanceQuantum: {
description: "Conductance quantum",
examples: ["conductanceQuantum"]
},
inverseConductanceQuantum: {
description: "Inverse conductance quantum",
examples: ["inverseConductanceQuantum"]
},
// josephson: {description: 'Josephson constant', examples: ['josephson']},
magneticFluxQuantum: {
description: "Magnetic flux quantum",
examples: ["magneticFluxQuantum"]
},
nuclearMagneton: {
description: "Nuclear magneton",
examples: ["nuclearMagneton"]
},
klitzing: {
description: "Von Klitzing constant",
examples: ["klitzing"]
},
bohrRadius: {
description: "Borh radius",
examples: ["bohrRadius"]
},
classicalElectronRadius: {
description: "Classical electron radius",
examples: ["classicalElectronRadius"]
},
electronMass: {
description: "Electron mass",
examples: ["electronMass"]
},
fermiCoupling: {
description: "Fermi coupling constant",
examples: ["fermiCoupling"]
},
fineStructure: {
description: "Fine-structure constant",
examples: ["fineStructure"]
},
hartreeEnergy: {
description: "Hartree energy",
examples: ["hartreeEnergy"]
},
protonMass: {
description: "Proton mass",
examples: ["protonMass"]
},
deuteronMass: {
description: "Deuteron Mass",
examples: ["deuteronMass"]
},
neutronMass: {
description: "Neutron mass",
examples: ["neutronMass"]
},
quantumOfCirculation: {
description: "Quantum of circulation",
examples: ["quantumOfCirculation"]
},
rydberg: {
description: "Rydberg constant",
examples: ["rydberg"]
},
thomsonCrossSection: {
description: "Thomson cross section",
examples: ["thomsonCrossSection"]
},
weakMixingAngle: {
description: "Weak mixing angle",
examples: ["weakMixingAngle"]
},
efimovFactor: {
description: "Efimov factor",
examples: ["efimovFactor"]
},
atomicMass: {
description: "Atomic mass constant",
examples: ["atomicMass"]
},
avogadro: {
description: "Avogadro's number",
examples: ["avogadro"]
},
boltzmann: {
description: "Boltzmann constant",
examples: ["boltzmann"]
},
faraday: {
description: "Faraday constant",
examples: ["faraday"]
},
firstRadiation: {
description: "First radiation constant",
examples: ["firstRadiation"]
},
loschmidt: {
description: "Loschmidt constant at T=273.15 K and p=101.325 kPa",
examples: ["loschmidt"]
},
gasConstant: {
description: "Gas constant",
examples: ["gasConstant"]
},
molarPlanckConstant: {
description: "Molar Planck constant",
examples: ["molarPlanckConstant"]
},
molarVolume: {
description: "Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",
examples: ["molarVolume"]
},
sackurTetrode: {
description: "Sackur-Tetrode constant at T=1 K and p=101.325 kPa",
examples: ["sackurTetrode"]
},
secondRadiation: {
description: "Second radiation constant",
examples: ["secondRadiation"]
},
stefanBoltzmann: {
description: "Stefan-Boltzmann constant",
examples: ["stefanBoltzmann"]
},
wienDisplacement: {
description: "Wien displacement law constant",
examples: ["wienDisplacement"]
},
// spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},
molarMass: {
description: "Molar mass constant",
examples: ["molarMass"]
},
molarMassC12: {
description: "Molar mass constant of carbon-12",
examples: ["molarMassC12"]
},
gravity: {
description: "Standard acceleration of gravity (standard acceleration of free-fall on Earth)",
examples: ["gravity"]
},
planckLength: {
description: "Planck length",
examples: ["planckLength"]
},
planckMass: {
description: "Planck mass",
examples: ["planckMass"]
},
planckTime: {
description: "Planck time",
examples: ["planckTime"]
},
planckCharge: {
description: "Planck charge",
examples: ["planckCharge"]
},
planckTemperature: {
description: "Planck temperature",
examples: ["planckTemperature"]
},
// functions - algebra
derivative: derivativeDocs,
lsolve: lsolveDocs,
lsolveAll: lsolveAllDocs,
lup: lupDocs,
lusolve: lusolveDocs,
leafCount: leafCountDocs,
polynomialRoot: polynomialRootDocs,
resolve: resolveDocs,
simplify: simplifyDocs,
simplifyConstant: simplifyConstantDocs,
simplifyCore: simplifyCoreDocs,
symbolicEqual: symbolicEqualDocs,
rationalize: rationalizeDocs,
slu: sluDocs,
usolve: usolveDocs,
usolveAll: usolveAllDocs,
qr: qrDocs,
// functions - arithmetic
abs: absDocs,
add: addDocs,
cbrt: cbrtDocs,
ceil: ceilDocs,
cube: cubeDocs,
divide: divideDocs,
dotDivide: dotDivideDocs,
dotMultiply: dotMultiplyDocs,
dotPow: dotPowDocs,
exp: expDocs,
expm: expmDocs,
expm1: expm1Docs,
fix: fixDocs,
floor: floorDocs,
gcd: gcdDocs,
hypot: hypotDocs,
lcm: lcmDocs,
log: logDocs,
log2: log2Docs,
log1p: log1pDocs,
log10: log10Docs,
mod: modDocs,
multiply: multiplyDocs,
norm: normDocs,
nthRoot: nthRootDocs,
nthRoots: nthRootsDocs,
pow: powDocs,
round: roundDocs,
sign: signDocs,
sqrt: sqrtDocs,
sqrtm: sqrtmDocs,
square: squareDocs,
subtract: subtractDocs,
unaryMinus: unaryMinusDocs,
unaryPlus: unaryPlusDocs,
xgcd: xgcdDocs,
invmod: invmodDocs,
// functions - bitwise
bitAnd: bitAndDocs,
bitNot: bitNotDocs,
bitOr: bitOrDocs,
bitXor: bitXorDocs,
leftShift: leftShiftDocs,
rightArithShift: rightArithShiftDocs,
rightLogShift: rightLogShiftDocs,
// functions - combinatorics
bellNumbers: bellNumbersDocs,
catalan: catalanDocs,
composition: compositionDocs,
stirlingS2: stirlingS2Docs,
// functions - core
config: configDocs,
import: importDocs,
typed: typedDocs,
// functions - complex
arg: argDocs,
conj: conjDocs,
re: reDocs,
im: imDocs,
// functions - expression
evaluate: evaluateDocs,
help: helpDocs,
// functions - geometry
distance: distanceDocs,
intersect: intersectDocs,
// functions - logical
and: andDocs,
not: notDocs,
or: orDocs,
xor: xorDocs,
// functions - matrix
concat: concatDocs,
count: countDocs,
cross: crossDocs,
column: columnDocs,
ctranspose: ctransposeDocs,
det: detDocs,
diag: diagDocs,
diff: diffDocs,
dot: dotDocs,
getMatrixDataType: getMatrixDataTypeDocs,
identity: identityDocs,
filter: filterDocs,
flatten: flattenDocs,
forEach: forEachDocs,
inv: invDocs,
pinv: pinvDocs,
eigs: eigsDocs,
kron: kronDocs,
matrixFromFunction: matrixFromFunctionDocs,
matrixFromRows: matrixFromRowsDocs,
matrixFromColumns: matrixFromColumnsDocs,
map: mapDocs,
ones: onesDocs,
partitionSelect: partitionSelectDocs,
range: rangeDocs,
resize: resizeDocs,
reshape: reshapeDocs,
rotate: rotateDocs,
rotationMatrix: rotationMatrixDocs,
row: rowDocs,
size: sizeDocs,
sort: sortDocs,
squeeze: squeezeDocs,
subset: subsetDocs,
trace: traceDocs,
transpose: transposeDocs,
zeros: zerosDocs,
fft: fftDocs,
ifft: ifftDocs,
sylvester: sylvesterDocs,
schur: schurDocs,
lyap: lyapDocs,
// functions - numeric
solveODE: solveODEDocs,
// functions - probability
combinations: combinationsDocs,
combinationsWithRep: combinationsWithRepDocs,
// distribution: distributionDocs,
factorial: factorialDocs,
gamma: gammaDocs,
kldivergence: kldivergenceDocs,
lgamma: lgammaDocs,
multinomial: multinomialDocs,
permutations: permutationsDocs,
pickRandom: pickRandomDocs,
random: randomDocs,
randomInt: randomIntDocs,
// functions - relational
compare: compareDocs,
compareNatural: compareNaturalDocs,
compareText: compareTextDocs,
deepEqual: deepEqualDocs,
equal: equalDocs,
equalText: equalTextDocs,
larger: largerDocs,
largerEq: largerEqDocs,
smaller: smallerDocs,
smallerEq: smallerEqDocs,
unequal: unequalDocs,
// functions - set
setCartesian: setCartesianDocs,
setDifference: setDifferenceDocs,
setDistinct: setDistinctDocs,
setIntersect: setIntersectDocs,
setIsSubset: setIsSubsetDocs,
setMultiplicity: setMultiplicityDocs,
setPowerset: setPowersetDocs,
setSize: setSizeDocs,
setSymDifference: setSymDifferenceDocs,
setUnion: setUnionDocs,
// functions - signal
zpk2tf: zpk2tfDocs,
freqz: freqzDocs,
// functions - special
erf: erfDocs,
zeta: zetaDocs,
// functions - statistics
cumsum: cumSumDocs,
mad: madDocs,
max: maxDocs,
mean: meanDocs,
median: medianDocs,
min: minDocs,
mode: modeDocs,
prod: prodDocs,
quantileSeq: quantileSeqDocs,
std: stdDocs,
sum: sumDocs,
variance: varianceDocs,
corr: corrDocs,
// functions - trigonometry
acos: acosDocs,
acosh: acoshDocs,
acot: acotDocs,
acoth: acothDocs,
acsc: acscDocs,
acsch: acschDocs,
asec: asecDocs,
asech: asechDocs,
asin: asinDocs,
asinh: asinhDocs,
atan: atanDocs,
atanh: atanhDocs,
atan2: atan2Docs,
cos: cosDocs,
cosh: coshDocs,
cot: cotDocs,
coth: cothDocs,
csc: cscDocs,
csch: cschDocs,
sec: secDocs,
sech: sechDocs,
sin: sinDocs,
sinh: sinhDocs,
tan: tanDocs,
tanh: tanhDocs,
// functions - units
to: toDocs,
// functions - utils
clone: cloneDocs,
format: formatDocs,
bin: binDocs,
oct: octDocs,
hex: hexDocs,
isNaN: isNaNDocs,
isInteger: isIntegerDocs,
isNegative: isNegativeDocs,
isNumeric: isNumericDocs,
hasNumericValue: hasNumericValueDocs,
isPositive: isPositiveDocs,
isPrime: isPrimeDocs,
isZero: isZeroDocs,
print: printDocs,
typeOf: typeOfDocs,
numeric: numericDocs
};
// node_modules/mathjs/lib/esm/expression/function/help.js
var name238 = "help";
var dependencies238 = ["typed", "mathWithTransform", "Help"];
var createHelp = /* @__PURE__ */ factory(name238, dependencies238, (_ref) => {
var {
typed: typed2,
mathWithTransform,
Help
} = _ref;
return typed2(name238, {
any: function any(search) {
var prop;
var searchName = search;
if (typeof search !== "string") {
for (prop in mathWithTransform) {
if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {
searchName = prop;
break;
}
}
}
var doc = getSafeProperty(embeddedDocs, searchName);
if (!doc) {
var searchText = typeof searchName === "function" ? searchName.name : searchName;
throw new Error('No documentation found on "' + searchText + '"');
}
return new Help(doc);
}
});
});
// node_modules/mathjs/lib/esm/type/chain/function/chain.js
var name239 = "chain";
var dependencies239 = ["typed", "Chain"];
var createChain = /* @__PURE__ */ factory(name239, dependencies239, (_ref) => {
var {
typed: typed2,
Chain
} = _ref;
return typed2(name239, {
"": function _() {
return new Chain();
},
any: function any(value) {
return new Chain(value);
}
});
});
// node_modules/mathjs/lib/esm/function/matrix/det.js
var name240 = "det";
var dependencies240 = ["typed", "matrix", "subtract", "multiply", "divideScalar", "isZero", "unaryMinus"];
var createDet = /* @__PURE__ */ factory(name240, dependencies240, (_ref) => {
var {
typed: typed2,
matrix,
subtract,
multiply,
divideScalar,
isZero,
unaryMinus
} = _ref;
return typed2(name240, {
any: function any(x) {
return clone(x);
},
"Array | Matrix": function det(x) {
var size;
if (isMatrix(x)) {
size = x.size();
} else if (Array.isArray(x)) {
x = matrix(x);
size = x.size();
} else {
size = [];
}
switch (size.length) {
case 0:
return clone(x);
case 1:
if (size[0] === 1) {
return clone(x.valueOf()[0]);
}
if (size[0] === 0) {
return 1;
} else {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
case 2: {
var rows = size[0];
var cols = size[1];
if (rows === cols) {
return _det(x.clone().valueOf(), rows, cols);
}
if (cols === 0) {
return 1;
} else {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
}
default:
throw new RangeError("Matrix must be two dimensional (size: " + format3(size) + ")");
}
}
});
function _det(matrix2, rows, cols) {
if (rows === 1) {
return clone(matrix2[0][0]);
} else if (rows === 2) {
return subtract(multiply(matrix2[0][0], matrix2[1][1]), multiply(matrix2[1][0], matrix2[0][1]));
} else {
var negated = false;
var rowIndices = new Array(rows).fill(0).map((_, i2) => i2);
for (var k = 0; k < rows; k++) {
var k_ = rowIndices[k];
if (isZero(matrix2[k_][k])) {
var _k = void 0;
for (_k = k + 1; _k < rows; _k++) {
if (!isZero(matrix2[rowIndices[_k]][k])) {
k_ = rowIndices[_k];
rowIndices[_k] = rowIndices[k];
rowIndices[k] = k_;
negated = !negated;
break;
}
}
if (_k === rows)
return matrix2[k_][k];
}
var piv = matrix2[k_][k];
var piv_ = k === 0 ? 1 : matrix2[rowIndices[k - 1]][k - 1];
for (var i = k + 1; i < rows; i++) {
var i_ = rowIndices[i];
for (var j = k + 1; j < rows; j++) {
matrix2[i_][j] = divideScalar(subtract(multiply(matrix2[i_][j], piv), multiply(matrix2[i_][k], matrix2[k_][j])), piv_);
}
}
}
var det = matrix2[rowIndices[rows - 1]][rows - 1];
return negated ? unaryMinus(det) : det;
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/inv.js
var name241 = "inv";
var dependencies241 = ["typed", "matrix", "divideScalar", "addScalar", "multiply", "unaryMinus", "det", "identity", "abs"];
var createInv = /* @__PURE__ */ factory(name241, dependencies241, (_ref) => {
var {
typed: typed2,
matrix,
divideScalar,
addScalar,
multiply,
unaryMinus,
det,
identity,
abs: abs2
} = _ref;
return typed2(name241, {
"Array | Matrix": function ArrayMatrix(x) {
var size = isMatrix(x) ? x.size() : arraySize(x);
switch (size.length) {
case 1:
if (size[0] === 1) {
if (isMatrix(x)) {
return matrix([divideScalar(1, x.valueOf()[0])]);
} else {
return [divideScalar(1, x[0])];
}
} else {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
case 2: {
var rows = size[0];
var cols = size[1];
if (rows === cols) {
if (isMatrix(x)) {
return matrix(_inv(x.valueOf(), rows, cols), x.storage());
} else {
return _inv(x, rows, cols);
}
} else {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
}
default:
throw new RangeError("Matrix must be two dimensional (size: " + format3(size) + ")");
}
},
any: function any(x) {
return divideScalar(1, x);
}
});
function _inv(mat, rows, cols) {
var r, s, f, value, temp;
if (rows === 1) {
value = mat[0][0];
if (value === 0) {
throw Error("Cannot calculate inverse, determinant is zero");
}
return [[divideScalar(1, value)]];
} else if (rows === 2) {
var d = det(mat);
if (d === 0) {
throw Error("Cannot calculate inverse, determinant is zero");
}
return [[divideScalar(mat[1][1], d), divideScalar(unaryMinus(mat[0][1]), d)], [divideScalar(unaryMinus(mat[1][0]), d), divideScalar(mat[0][0], d)]];
} else {
var A = mat.concat();
for (r = 0; r < rows; r++) {
A[r] = A[r].concat();
}
var B = identity(rows).valueOf();
for (var c = 0; c < cols; c++) {
var ABig = abs2(A[c][c]);
var rBig = c;
r = c + 1;
while (r < rows) {
if (abs2(A[r][c]) > ABig) {
ABig = abs2(A[r][c]);
rBig = r;
}
r++;
}
if (ABig === 0) {
throw Error("Cannot calculate inverse, determinant is zero");
}
r = rBig;
if (r !== c) {
temp = A[c];
A[c] = A[r];
A[r] = temp;
temp = B[c];
B[c] = B[r];
B[r] = temp;
}
var Ac = A[c];
var Bc = B[c];
for (r = 0; r < rows; r++) {
var Ar = A[r];
var Br = B[r];
if (r !== c) {
if (Ar[c] !== 0) {
f = divideScalar(unaryMinus(Ar[c]), Ac[c]);
for (s = c; s < cols; s++) {
Ar[s] = addScalar(Ar[s], multiply(f, Ac[s]));
}
for (s = 0; s < cols; s++) {
Br[s] = addScalar(Br[s], multiply(f, Bc[s]));
}
}
} else {
f = Ac[c];
for (s = c; s < cols; s++) {
Ar[s] = divideScalar(Ar[s], f);
}
for (s = 0; s < cols; s++) {
Br[s] = divideScalar(Br[s], f);
}
}
}
}
return B;
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/pinv.js
var name242 = "pinv";
var dependencies242 = ["typed", "matrix", "inv", "deepEqual", "equal", "dotDivide", "dot", "ctranspose", "divideScalar", "multiply", "add", "Complex"];
var createPinv = /* @__PURE__ */ factory(name242, dependencies242, (_ref) => {
var {
typed: typed2,
matrix,
inv,
deepEqual,
equal,
dotDivide,
dot,
ctranspose,
divideScalar,
multiply,
add: add2,
Complex: Complex2
} = _ref;
return typed2(name242, {
"Array | Matrix": function ArrayMatrix(x) {
var size = isMatrix(x) ? x.size() : arraySize(x);
switch (size.length) {
case 1:
if (_isZeros(x))
return ctranspose(x);
if (size[0] === 1) {
return inv(x);
} else {
return dotDivide(ctranspose(x), dot(x, x));
}
case 2: {
if (_isZeros(x))
return ctranspose(x);
var rows = size[0];
var cols = size[1];
if (rows === cols) {
try {
return inv(x);
} catch (err) {
if (err instanceof Error && err.message.match(/Cannot calculate inverse, determinant is zero/)) {
} else {
throw err;
}
}
}
if (isMatrix(x)) {
return matrix(_pinv(x.valueOf(), rows, cols), x.storage());
} else {
return _pinv(x, rows, cols);
}
}
default:
throw new RangeError("Matrix must be two dimensional (size: " + format3(size) + ")");
}
},
any: function any(x) {
if (equal(x, 0))
return clone(x);
return divideScalar(1, x);
}
});
function _pinv(mat, rows, cols) {
var {
C,
F
} = _rankFact(mat, rows, cols);
var Cpinv = multiply(inv(multiply(ctranspose(C), C)), ctranspose(C));
var Fpinv = multiply(ctranspose(F), inv(multiply(F, ctranspose(F))));
return multiply(Fpinv, Cpinv);
}
function _rref(mat, rows, cols) {
var M = clone(mat);
var lead = 0;
for (var r = 0; r < rows; r++) {
if (cols <= lead) {
return M;
}
var i = r;
while (_isZero(M[i][lead])) {
i++;
if (rows === i) {
i = r;
lead++;
if (cols === lead) {
return M;
}
}
}
[M[i], M[r]] = [M[r], M[i]];
var val = M[r][lead];
for (var j = 0; j < cols; j++) {
M[r][j] = dotDivide(M[r][j], val);
}
for (var _i = 0; _i < rows; _i++) {
if (_i === r)
continue;
val = M[_i][lead];
for (var _j = 0; _j < cols; _j++) {
M[_i][_j] = add2(M[_i][_j], multiply(-1, multiply(val, M[r][_j])));
}
}
lead++;
}
return M;
}
function _rankFact(mat, rows, cols) {
var rref = _rref(mat, rows, cols);
var C = mat.map((_, i) => _.filter((_2, j) => j < rows && !_isZero(dot(rref[j], rref[j]))));
var F = rref.filter((_, i) => !_isZero(dot(rref[i], rref[i])));
return {
C,
F
};
}
function _isZero(x) {
return equal(add2(x, Complex2(1, 1)), add2(0, Complex2(1, 1)));
}
function _isZeros(arr) {
return deepEqual(add2(arr, Complex2(1, 1)), add2(multiply(arr, 0), Complex2(1, 1)));
}
});
// node_modules/mathjs/lib/esm/function/matrix/eigs/complexEigs.js
function createComplexEigs(_ref) {
var {
addScalar,
subtract,
flatten: flatten2,
multiply,
multiplyScalar,
divideScalar,
sqrt: sqrt2,
abs: abs2,
bignumber,
diag,
inv,
qr,
usolve,
usolveAll,
equal,
complex,
larger,
smaller,
matrixFromColumns,
dot
} = _ref;
function complexEigs(arr, N, prec, type, findVectors) {
if (findVectors === void 0) {
findVectors = true;
}
var R = balance(arr, N, prec, type, findVectors);
reduceToHessenberg(arr, N, prec, type, findVectors, R);
var {
values: values2,
C
} = iterateUntilTriangular(arr, N, prec, type, findVectors);
var vectors;
if (findVectors) {
vectors = findEigenvectors(arr, N, C, R, values2, prec, type);
vectors = matrixFromColumns(...vectors);
}
return {
values: values2,
vectors
};
}
function balance(arr, N, prec, type, findVectors) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var realzero = big ? bignumber(0) : 0;
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
var realone = big ? bignumber(1) : 1;
var radix = big ? bignumber(10) : 2;
var radixSq = multiplyScalar(radix, radix);
var Rdiag;
if (findVectors) {
Rdiag = Array(N).fill(one);
}
var last = false;
while (!last) {
last = true;
for (var i = 0; i < N; i++) {
var colNorm = realzero;
var rowNorm = realzero;
for (var j = 0; j < N; j++) {
if (i === j)
continue;
var c = abs2(arr[i][j]);
colNorm = addScalar(colNorm, c);
rowNorm = addScalar(rowNorm, c);
}
if (!equal(colNorm, 0) && !equal(rowNorm, 0)) {
var f = realone;
var _c = colNorm;
var rowDivRadix = divideScalar(rowNorm, radix);
var rowMulRadix = multiplyScalar(rowNorm, radix);
while (smaller(_c, rowDivRadix)) {
_c = multiplyScalar(_c, radixSq);
f = multiplyScalar(f, radix);
}
while (larger(_c, rowMulRadix)) {
_c = divideScalar(_c, radixSq);
f = divideScalar(f, radix);
}
var condition = smaller(divideScalar(addScalar(_c, rowNorm), f), multiplyScalar(addScalar(colNorm, rowNorm), 0.95));
if (condition) {
last = false;
var g = divideScalar(1, f);
for (var _j = 0; _j < N; _j++) {
if (i === _j) {
continue;
}
arr[i][_j] = multiplyScalar(arr[i][_j], f);
arr[_j][i] = multiplyScalar(arr[_j][i], g);
}
if (findVectors) {
Rdiag[i] = multiplyScalar(Rdiag[i], f);
}
}
}
}
}
return diag(Rdiag);
}
function reduceToHessenberg(arr, N, prec, type, findVectors, R) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var zero = big ? bignumber(0) : cplx ? complex(0) : 0;
if (big) {
prec = bignumber(prec);
}
for (var i = 0; i < N - 2; i++) {
var maxIndex = 0;
var max2 = zero;
for (var j = i + 1; j < N; j++) {
var el = arr[j][i];
if (smaller(abs2(max2), abs2(el))) {
max2 = el;
maxIndex = j;
}
}
if (smaller(abs2(max2), prec)) {
continue;
}
if (maxIndex !== i + 1) {
var tmp1 = arr[maxIndex];
arr[maxIndex] = arr[i + 1];
arr[i + 1] = tmp1;
for (var _j2 = 0; _j2 < N; _j2++) {
var tmp2 = arr[_j2][maxIndex];
arr[_j2][maxIndex] = arr[_j2][i + 1];
arr[_j2][i + 1] = tmp2;
}
if (findVectors) {
var tmp3 = R[maxIndex];
R[maxIndex] = R[i + 1];
R[i + 1] = tmp3;
}
}
for (var _j3 = i + 2; _j3 < N; _j3++) {
var n = divideScalar(arr[_j3][i], max2);
if (n === 0) {
continue;
}
for (var k = 0; k < N; k++) {
arr[_j3][k] = subtract(arr[_j3][k], multiplyScalar(n, arr[i + 1][k]));
}
for (var _k = 0; _k < N; _k++) {
arr[_k][i + 1] = addScalar(arr[_k][i + 1], multiplyScalar(n, arr[_k][_j3]));
}
if (findVectors) {
for (var _k2 = 0; _k2 < N; _k2++) {
R[_j3][_k2] = subtract(R[_j3][_k2], multiplyScalar(n, R[i + 1][_k2]));
}
}
}
}
return R;
}
function iterateUntilTriangular(A, N, prec, type, findVectors) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
if (big) {
prec = bignumber(prec);
}
var arr = clone(A);
var lambdas = [];
var n = N;
var Sdiag = [];
var Qtotal = findVectors ? diag(Array(N).fill(one)) : void 0;
var Qpartial = findVectors ? diag(Array(n).fill(one)) : void 0;
var lastConvergenceBefore = 0;
while (lastConvergenceBefore <= 100) {
lastConvergenceBefore += 1;
var k = 0;
for (var i = 0; i < n; i++) {
arr[i][i] = subtract(arr[i][i], k);
}
var {
Q: Q2,
R
} = qr(arr);
arr = multiply(R, Q2);
for (var _i = 0; _i < n; _i++) {
arr[_i][_i] = addScalar(arr[_i][_i], k);
}
if (findVectors) {
Qpartial = multiply(Qpartial, Q2);
}
if (n === 1 || smaller(abs2(arr[n - 1][n - 2]), prec)) {
lastConvergenceBefore = 0;
lambdas.push(arr[n - 1][n - 1]);
if (findVectors) {
Sdiag.unshift([[1]]);
inflateMatrix(Qpartial, N);
Qtotal = multiply(Qtotal, Qpartial);
if (n > 1) {
Qpartial = diag(Array(n - 1).fill(one));
}
}
n -= 1;
arr.pop();
for (var _i2 = 0; _i2 < n; _i2++) {
arr[_i2].pop();
}
} else if (n === 2 || smaller(abs2(arr[n - 2][n - 3]), prec)) {
lastConvergenceBefore = 0;
var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);
lambdas.push(...ll);
if (findVectors) {
Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));
inflateMatrix(Qpartial, N);
Qtotal = multiply(Qtotal, Qpartial);
if (n > 2) {
Qpartial = diag(Array(n - 2).fill(one));
}
}
n -= 2;
arr.pop();
arr.pop();
for (var _i3 = 0; _i3 < n; _i3++) {
arr[_i3].pop();
arr[_i3].pop();
}
}
if (n === 0) {
break;
}
}
lambdas.sort((a, b) => +subtract(abs2(a), abs2(b)));
if (lastConvergenceBefore > 100) {
var err = Error("The eigenvalues failed to converge. Only found these eigenvalues: " + lambdas.join(", "));
err.values = lambdas;
err.vectors = [];
throw err;
}
var C = findVectors ? multiply(Qtotal, blockDiag(Sdiag, N)) : void 0;
return {
values: lambdas,
C
};
}
function findEigenvectors(A, N, C, R, values2, prec, type) {
var Cinv = inv(C);
var U = multiply(Cinv, A, C);
var big = type === "BigNumber";
var cplx = type === "Complex";
var zero = big ? bignumber(0) : cplx ? complex(0) : 0;
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
var uniqueValues = [];
var multiplicities = [];
for (var \u03BB of values2) {
var i = indexOf(uniqueValues, \u03BB, equal);
if (i === -1) {
uniqueValues.push(\u03BB);
multiplicities.push(1);
} else {
multiplicities[i] += 1;
}
}
var vectors = [];
var len = uniqueValues.length;
var b = Array(N).fill(zero);
var E = diag(Array(N).fill(one));
var failedLambdas = [];
var _loop = function _loop2() {
var \u03BB2 = uniqueValues[_i4];
var S = subtract(U, multiply(\u03BB2, E));
var solutions = usolveAll(S, b);
solutions.shift();
while (solutions.length < multiplicities[_i4]) {
var approxVec = inverseIterate(S, N, solutions, prec, type);
if (approxVec == null) {
failedLambdas.push(\u03BB2);
break;
}
solutions.push(approxVec);
}
var correction = multiply(inv(R), C);
solutions = solutions.map((v) => multiply(correction, v));
vectors.push(...solutions.map((v) => flatten2(v)));
};
for (var _i4 = 0; _i4 < len; _i4++) {
_loop();
}
if (failedLambdas.length !== 0) {
var err = new Error("Failed to find eigenvectors for the following eigenvalues: " + failedLambdas.join(", "));
err.values = values2;
err.vectors = vectors;
throw err;
}
return vectors;
}
function eigenvalues2x2(a, b, c, d) {
var trA = addScalar(a, d);
var detA = subtract(multiplyScalar(a, d), multiplyScalar(b, c));
var x = multiplyScalar(trA, 0.5);
var y = multiplyScalar(sqrt2(subtract(multiplyScalar(trA, trA), multiplyScalar(4, detA))), 0.5);
return [addScalar(x, y), subtract(x, y)];
}
function jordanBase2x2(a, b, c, d, l1, l2, prec, type) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var zero = big ? bignumber(0) : cplx ? complex(0) : 0;
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
if (smaller(abs2(c), prec)) {
return [[one, zero], [zero, one]];
}
if (larger(abs2(subtract(l1, l2)), prec)) {
return [[subtract(l1, d), subtract(l2, d)], [c, c]];
}
var na = subtract(a, l1);
var nb = subtract(b, l1);
var nc = subtract(c, l1);
var nd = subtract(d, l1);
if (smaller(abs2(nb), prec)) {
return [[na, one], [nc, zero]];
} else {
return [[nb, zero], [nd, one]];
}
}
function inflateMatrix(arr, N) {
for (var i = 0; i < arr.length; i++) {
arr[i].push(...Array(N - arr[i].length).fill(0));
}
for (var _i5 = arr.length; _i5 < N; _i5++) {
arr.push(Array(N).fill(0));
arr[_i5][_i5] = 1;
}
return arr;
}
function blockDiag(arr, N) {
var M = [];
for (var i = 0; i < N; i++) {
M[i] = Array(N).fill(0);
}
var I = 0;
for (var sub2 of arr) {
var n = sub2.length;
for (var _i6 = 0; _i6 < n; _i6++) {
for (var j = 0; j < n; j++) {
M[I + _i6][I + j] = sub2[_i6][j];
}
}
I += n;
}
return M;
}
function indexOf(arr, el, fn) {
for (var i = 0; i < arr.length; i++) {
if (fn(arr[i], el)) {
return i;
}
}
return -1;
}
function inverseIterate(A, N, orthog, prec, type) {
var largeNum = type === "BigNumber" ? bignumber(1e3) : 1e3;
var b;
var i = 0;
while (true) {
b = randomOrthogonalVector(N, orthog, type);
b = usolve(A, b);
if (larger(norm(b), largeNum)) {
break;
}
if (++i >= 5) {
return null;
}
}
i = 0;
while (true) {
var c = usolve(A, b);
if (smaller(norm(orthogonalComplement(b, [c])), prec)) {
break;
}
if (++i >= 10) {
return null;
}
b = normalize(c);
}
return b;
}
function randomOrthogonalVector(N, orthog, type) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var v = Array(N).fill(0).map((_) => 2 * Math.random() - 1);
if (big) {
v = v.map((n) => bignumber(n));
}
if (cplx) {
v = v.map((n) => complex(n));
}
v = orthogonalComplement(v, orthog);
return normalize(v, type);
}
function orthogonalComplement(v, orthog) {
for (var w of orthog) {
v = subtract(v, multiply(divideScalar(dot(w, v), dot(w, w)), w));
}
return v;
}
function norm(v) {
return abs2(sqrt2(dot(v, v)));
}
function normalize(v, type) {
var big = type === "BigNumber";
var cplx = type === "Complex";
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
return multiply(divideScalar(one, norm(v)), v);
}
return complexEigs;
}
// node_modules/mathjs/lib/esm/function/matrix/eigs/realSymetric.js
function createRealSymmetric(_ref) {
var {
config: config2,
addScalar,
subtract,
abs: abs2,
atan: atan3,
cos: cos2,
sin: sin2,
multiplyScalar,
inv,
bignumber,
multiply,
add: add2
} = _ref;
function main(arr, N) {
var prec = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : config2.epsilon;
var type = arguments.length > 3 ? arguments[3] : void 0;
if (type === "number") {
return diag(arr, prec);
}
if (type === "BigNumber") {
return diagBig(arr, prec);
}
throw TypeError("Unsupported data type: " + type);
}
function diag(x, precision) {
var N = x.length;
var e0 = Math.abs(precision / N);
var psi;
var Sij = new Array(N);
for (var i = 0; i < N; i++) {
Sij[i] = createArray(N, 0);
Sij[i][i] = 1;
}
var Vab = getAij(x);
while (Math.abs(Vab[1]) >= Math.abs(e0)) {
var _i = Vab[0][0];
var j = Vab[0][1];
psi = getTheta(x[_i][_i], x[j][j], x[_i][j]);
x = x1(x, psi, _i, j);
Sij = Sij1(Sij, psi, _i, j);
Vab = getAij(x);
}
var Ei = createArray(N, 0);
for (var _i2 = 0; _i2 < N; _i2++) {
Ei[_i2] = x[_i2][_i2];
}
return sorting(clone(Ei), clone(Sij));
}
function diagBig(x, precision) {
var N = x.length;
var e0 = abs2(precision / N);
var psi;
var Sij = new Array(N);
for (var i = 0; i < N; i++) {
Sij[i] = createArray(N, 0);
Sij[i][i] = 1;
}
var Vab = getAijBig(x);
while (abs2(Vab[1]) >= abs2(e0)) {
var _i3 = Vab[0][0];
var j = Vab[0][1];
psi = getThetaBig(x[_i3][_i3], x[j][j], x[_i3][j]);
x = x1Big(x, psi, _i3, j);
Sij = Sij1Big(Sij, psi, _i3, j);
Vab = getAijBig(x);
}
var Ei = createArray(N, 0);
for (var _i4 = 0; _i4 < N; _i4++) {
Ei[_i4] = x[_i4][_i4];
}
return sorting(clone(Ei), clone(Sij));
}
function getTheta(aii, ajj, aij) {
var denom = ajj - aii;
if (Math.abs(denom) <= config2.epsilon) {
return Math.PI / 4;
} else {
return 0.5 * Math.atan(2 * aij / (ajj - aii));
}
}
function getThetaBig(aii, ajj, aij) {
var denom = subtract(ajj, aii);
if (abs2(denom) <= config2.epsilon) {
return bignumber(-1).acos().div(4);
} else {
return multiplyScalar(0.5, atan3(multiply(2, aij, inv(denom))));
}
}
function Sij1(Sij, theta, i, j) {
var N = Sij.length;
var c = Math.cos(theta);
var s = Math.sin(theta);
var Ski = createArray(N, 0);
var Skj = createArray(N, 0);
for (var k = 0; k < N; k++) {
Ski[k] = c * Sij[k][i] - s * Sij[k][j];
Skj[k] = s * Sij[k][i] + c * Sij[k][j];
}
for (var _k = 0; _k < N; _k++) {
Sij[_k][i] = Ski[_k];
Sij[_k][j] = Skj[_k];
}
return Sij;
}
function Sij1Big(Sij, theta, i, j) {
var N = Sij.length;
var c = cos2(theta);
var s = sin2(theta);
var Ski = createArray(N, bignumber(0));
var Skj = createArray(N, bignumber(0));
for (var k = 0; k < N; k++) {
Ski[k] = subtract(multiplyScalar(c, Sij[k][i]), multiplyScalar(s, Sij[k][j]));
Skj[k] = addScalar(multiplyScalar(s, Sij[k][i]), multiplyScalar(c, Sij[k][j]));
}
for (var _k2 = 0; _k2 < N; _k2++) {
Sij[_k2][i] = Ski[_k2];
Sij[_k2][j] = Skj[_k2];
}
return Sij;
}
function x1Big(Hij, theta, i, j) {
var N = Hij.length;
var c = bignumber(cos2(theta));
var s = bignumber(sin2(theta));
var c2 = multiplyScalar(c, c);
var s2 = multiplyScalar(s, s);
var Aki = createArray(N, bignumber(0));
var Akj = createArray(N, bignumber(0));
var csHij = multiply(bignumber(2), c, s, Hij[i][j]);
var Aii = addScalar(subtract(multiplyScalar(c2, Hij[i][i]), csHij), multiplyScalar(s2, Hij[j][j]));
var Ajj = add2(multiplyScalar(s2, Hij[i][i]), csHij, multiplyScalar(c2, Hij[j][j]));
for (var k = 0; k < N; k++) {
Aki[k] = subtract(multiplyScalar(c, Hij[i][k]), multiplyScalar(s, Hij[j][k]));
Akj[k] = addScalar(multiplyScalar(s, Hij[i][k]), multiplyScalar(c, Hij[j][k]));
}
Hij[i][i] = Aii;
Hij[j][j] = Ajj;
Hij[i][j] = bignumber(0);
Hij[j][i] = bignumber(0);
for (var _k3 = 0; _k3 < N; _k3++) {
if (_k3 !== i && _k3 !== j) {
Hij[i][_k3] = Aki[_k3];
Hij[_k3][i] = Aki[_k3];
Hij[j][_k3] = Akj[_k3];
Hij[_k3][j] = Akj[_k3];
}
}
return Hij;
}
function x1(Hij, theta, i, j) {
var N = Hij.length;
var c = Math.cos(theta);
var s = Math.sin(theta);
var c2 = c * c;
var s2 = s * s;
var Aki = createArray(N, 0);
var Akj = createArray(N, 0);
var Aii = c2 * Hij[i][i] - 2 * c * s * Hij[i][j] + s2 * Hij[j][j];
var Ajj = s2 * Hij[i][i] + 2 * c * s * Hij[i][j] + c2 * Hij[j][j];
for (var k = 0; k < N; k++) {
Aki[k] = c * Hij[i][k] - s * Hij[j][k];
Akj[k] = s * Hij[i][k] + c * Hij[j][k];
}
Hij[i][i] = Aii;
Hij[j][j] = Ajj;
Hij[i][j] = 0;
Hij[j][i] = 0;
for (var _k4 = 0; _k4 < N; _k4++) {
if (_k4 !== i && _k4 !== j) {
Hij[i][_k4] = Aki[_k4];
Hij[_k4][i] = Aki[_k4];
Hij[j][_k4] = Akj[_k4];
Hij[_k4][j] = Akj[_k4];
}
}
return Hij;
}
function getAij(Mij) {
var N = Mij.length;
var maxMij = 0;
var maxIJ = [0, 1];
for (var i = 0; i < N; i++) {
for (var j = i + 1; j < N; j++) {
if (Math.abs(maxMij) < Math.abs(Mij[i][j])) {
maxMij = Math.abs(Mij[i][j]);
maxIJ = [i, j];
}
}
}
return [maxIJ, maxMij];
}
function getAijBig(Mij) {
var N = Mij.length;
var maxMij = 0;
var maxIJ = [0, 1];
for (var i = 0; i < N; i++) {
for (var j = i + 1; j < N; j++) {
if (abs2(maxMij) < abs2(Mij[i][j])) {
maxMij = abs2(Mij[i][j]);
maxIJ = [i, j];
}
}
}
return [maxIJ, maxMij];
}
function sorting(E, S) {
var N = E.length;
var values2 = Array(N);
var vectors = Array(N);
for (var k = 0; k < N; k++) {
vectors[k] = Array(N);
}
for (var i = 0; i < N; i++) {
var minID = 0;
var minE = E[0];
for (var j = 0; j < E.length; j++) {
if (abs2(E[j]) < abs2(minE)) {
minID = j;
minE = E[minID];
}
}
values2[i] = E.splice(minID, 1)[0];
for (var _k5 = 0; _k5 < N; _k5++) {
vectors[_k5][i] = S[_k5][minID];
S[_k5].splice(minID, 1);
}
}
return {
values: values2,
vectors
};
}
function createArray(size, value) {
var array = new Array(size);
for (var i = 0; i < size; i++) {
array[i] = value;
}
return array;
}
return main;
}
// node_modules/mathjs/lib/esm/function/matrix/eigs.js
var name243 = "eigs";
var dependencies243 = ["config", "typed", "matrix", "addScalar", "equal", "subtract", "abs", "atan", "cos", "sin", "multiplyScalar", "divideScalar", "inv", "bignumber", "multiply", "add", "larger", "column", "flatten", "number", "complex", "sqrt", "diag", "qr", "usolve", "usolveAll", "im", "re", "smaller", "matrixFromColumns", "dot"];
var createEigs = /* @__PURE__ */ factory(name243, dependencies243, (_ref) => {
var {
config: config2,
typed: typed2,
matrix,
addScalar,
subtract,
equal,
abs: abs2,
atan: atan3,
cos: cos2,
sin: sin2,
multiplyScalar,
divideScalar,
inv,
bignumber,
multiply,
add: add2,
larger,
column,
flatten: flatten2,
number,
complex,
sqrt: sqrt2,
diag,
qr,
usolve,
usolveAll,
im,
re,
smaller,
matrixFromColumns,
dot
} = _ref;
var doRealSymetric = createRealSymmetric({
config: config2,
addScalar,
subtract,
column,
flatten: flatten2,
equal,
abs: abs2,
atan: atan3,
cos: cos2,
sin: sin2,
multiplyScalar,
inv,
bignumber,
complex,
multiply,
add: add2
});
var doComplexEigs = createComplexEigs({
config: config2,
addScalar,
subtract,
multiply,
multiplyScalar,
flatten: flatten2,
divideScalar,
sqrt: sqrt2,
abs: abs2,
bignumber,
diag,
qr,
inv,
usolve,
usolveAll,
equal,
complex,
larger,
smaller,
matrixFromColumns,
dot
});
return typed2("eigs", {
Array: function Array2(x) {
var mat = matrix(x);
return computeValuesAndVectors(mat);
},
"Array, number|BigNumber": function ArrayNumberBigNumber(x, prec) {
var mat = matrix(x);
return computeValuesAndVectors(mat, prec);
},
Matrix: function Matrix(mat) {
var {
values: values2,
vectors
} = computeValuesAndVectors(mat);
return {
values: matrix(values2),
vectors: matrix(vectors)
};
},
"Matrix, number|BigNumber": function MatrixNumberBigNumber(mat, prec) {
var {
values: values2,
vectors
} = computeValuesAndVectors(mat, prec);
return {
values: matrix(values2),
vectors: matrix(vectors)
};
}
});
function computeValuesAndVectors(mat, prec) {
if (prec === void 0) {
prec = config2.epsilon;
}
var size = mat.size();
if (size.length !== 2 || size[0] !== size[1]) {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
var arr = mat.toArray();
var N = size[0];
if (isReal(arr, N, prec)) {
coerceReal(arr, N);
if (isSymmetric(arr, N, prec)) {
var _type = coerceTypes(mat, arr, N);
return doRealSymetric(arr, N, prec, _type);
}
}
var type = coerceTypes(mat, arr, N);
return doComplexEigs(arr, N, prec, type);
}
function isSymmetric(arr, N, prec) {
for (var i = 0; i < N; i++) {
for (var j = i; j < N; j++) {
if (larger(bignumber(abs2(subtract(arr[i][j], arr[j][i]))), prec)) {
return false;
}
}
}
return true;
}
function isReal(arr, N, prec) {
for (var i = 0; i < N; i++) {
for (var j = 0; j < N; j++) {
if (larger(bignumber(abs2(im(arr[i][j]))), prec)) {
return false;
}
}
}
return true;
}
function coerceReal(arr, N) {
for (var i = 0; i < N; i++) {
for (var j = 0; j < N; j++) {
arr[i][j] = re(arr[i][j]);
}
}
}
function coerceTypes(mat, arr, N) {
var type = mat.datatype();
if (type === "number" || type === "BigNumber" || type === "Complex") {
return type;
}
var hasNumber = false;
var hasBig = false;
var hasComplex = false;
for (var i = 0; i < N; i++) {
for (var j = 0; j < N; j++) {
var el = arr[i][j];
if (isNumber(el) || isFraction(el)) {
hasNumber = true;
} else if (isBigNumber(el)) {
hasBig = true;
} else if (isComplex(el)) {
hasComplex = true;
} else {
throw TypeError("Unsupported type in Matrix: " + typeOf(el));
}
}
}
if (hasBig && hasComplex) {
console.warn("Complex BigNumbers not supported, this operation will lose precission.");
}
if (hasComplex) {
for (var _i = 0; _i < N; _i++) {
for (var _j = 0; _j < N; _j++) {
arr[_i][_j] = complex(arr[_i][_j]);
}
}
return "Complex";
}
if (hasBig) {
for (var _i2 = 0; _i2 < N; _i2++) {
for (var _j2 = 0; _j2 < N; _j2++) {
arr[_i2][_j2] = bignumber(arr[_i2][_j2]);
}
}
return "BigNumber";
}
if (hasNumber) {
for (var _i3 = 0; _i3 < N; _i3++) {
for (var _j3 = 0; _j3 < N; _j3++) {
arr[_i3][_j3] = number(arr[_i3][_j3]);
}
}
return "number";
} else {
throw TypeError("Matrix contains unsupported types only.");
}
}
});
// node_modules/mathjs/lib/esm/function/matrix/expm.js
var name244 = "expm";
var dependencies244 = ["typed", "abs", "add", "identity", "inv", "multiply"];
var createExpm = /* @__PURE__ */ factory(name244, dependencies244, (_ref) => {
var {
typed: typed2,
abs: abs2,
add: add2,
identity,
inv,
multiply
} = _ref;
return typed2(name244, {
Matrix: function Matrix(A) {
var size = A.size();
if (size.length !== 2 || size[0] !== size[1]) {
throw new RangeError("Matrix must be square (size: " + format3(size) + ")");
}
var n = size[0];
var eps = 1e-15;
var infNorm = infinityNorm(A);
var params = findParams(infNorm, eps);
var q = params.q;
var j = params.j;
var Apos = multiply(A, Math.pow(2, -j));
var N = identity(n);
var D = identity(n);
var factor = 1;
var AposToI = Apos;
var alternate = -1;
for (var i = 1; i <= q; i++) {
if (i > 1) {
AposToI = multiply(AposToI, Apos);
alternate = -alternate;
}
factor = factor * (q - i + 1) / ((2 * q - i + 1) * i);
N = add2(N, multiply(factor, AposToI));
D = add2(D, multiply(factor * alternate, AposToI));
}
var R = multiply(inv(D), N);
for (var _i = 0; _i < j; _i++) {
R = multiply(R, R);
}
return isSparseMatrix(A) ? A.createSparseMatrix(R) : R;
}
});
function infinityNorm(A) {
var n = A.size()[0];
var infNorm = 0;
for (var i = 0; i < n; i++) {
var rowSum = 0;
for (var j = 0; j < n; j++) {
rowSum += abs2(A.get([i, j]));
}
infNorm = Math.max(rowSum, infNorm);
}
return infNorm;
}
function findParams(infNorm, eps) {
var maxSearchSize = 30;
for (var k = 0; k < maxSearchSize; k++) {
for (var q = 0; q <= k; q++) {
var j = k - q;
if (errorEstimate(infNorm, q, j) < eps) {
return {
q,
j
};
}
}
}
throw new Error("Could not find acceptable parameters to compute the matrix exponential (try increasing maxSearchSize in expm.js)");
}
function errorEstimate(infNorm, q, j) {
var qfac = 1;
for (var i = 2; i <= q; i++) {
qfac *= i;
}
var twoqfac = qfac;
for (var _i2 = q + 1; _i2 <= 2 * q; _i2++) {
twoqfac *= _i2;
}
var twoqp1fac = twoqfac * (2 * q + 1);
return 8 * Math.pow(infNorm / Math.pow(2, j), 2 * q) * qfac * qfac / (twoqfac * twoqp1fac);
}
});
// node_modules/mathjs/lib/esm/function/matrix/sqrtm.js
var name245 = "sqrtm";
var dependencies245 = ["typed", "abs", "add", "multiply", "map", "sqrt", "subtract", "inv", "size", "max", "identity"];
var createSqrtm = /* @__PURE__ */ factory(name245, dependencies245, (_ref) => {
var {
typed: typed2,
abs: abs2,
add: add2,
multiply,
map: map2,
sqrt: sqrt2,
subtract,
inv,
size,
max: max2,
identity
} = _ref;
var _maxIterations = 1e3;
var _tolerance = 1e-6;
function _denmanBeavers(A) {
var error;
var iterations = 0;
var Y = A;
var Z = identity(size(A));
do {
var Yk = Y;
Y = multiply(0.5, add2(Yk, inv(Z)));
Z = multiply(0.5, add2(Z, inv(Yk)));
error = max2(abs2(subtract(Y, Yk)));
if (error > _tolerance && ++iterations > _maxIterations) {
throw new Error("computing square root of matrix: iterative method could not converge");
}
} while (error > _tolerance);
return Y;
}
return typed2(name245, {
"Array | Matrix": function ArrayMatrix(A) {
var size2 = isMatrix(A) ? A.size() : arraySize(A);
switch (size2.length) {
case 1:
if (size2[0] === 1) {
return map2(A, sqrt2);
} else {
throw new RangeError("Matrix must be square (size: " + format3(size2) + ")");
}
case 2: {
var rows = size2[0];
var cols = size2[1];
if (rows === cols) {
return _denmanBeavers(A);
} else {
throw new RangeError("Matrix must be square (size: " + format3(size2) + ")");
}
}
default:
throw new RangeError("Matrix must be at most two dimensional (size: " + format3(size2) + ")");
}
}
});
});
// node_modules/mathjs/lib/esm/function/algebra/sylvester.js
var name246 = "sylvester";
var dependencies246 = ["typed", "schur", "matrixFromColumns", "matrix", "multiply", "range", "concat", "transpose", "index", "subset", "add", "subtract", "identity", "lusolve", "abs"];
var createSylvester = /* @__PURE__ */ factory(name246, dependencies246, (_ref) => {
var {
typed: typed2,
schur,
matrixFromColumns,
matrix,
multiply,
range,
concat: concat2,
transpose,
index,
subset,
add: add2,
subtract,
identity,
lusolve,
abs: abs2
} = _ref;
return typed2(name246, {
"Matrix, Matrix, Matrix": _sylvester,
"Array, Matrix, Matrix": function ArrayMatrixMatrix(A, B, C) {
return _sylvester(matrix(A), B, C);
},
"Array, Array, Matrix": function ArrayArrayMatrix(A, B, C) {
return _sylvester(matrix(A), matrix(B), C);
},
"Array, Matrix, Array": function ArrayMatrixArray(A, B, C) {
return _sylvester(matrix(A), B, matrix(C));
},
"Matrix, Array, Matrix": function MatrixArrayMatrix(A, B, C) {
return _sylvester(A, matrix(B), C);
},
"Matrix, Array, Array": function MatrixArrayArray(A, B, C) {
return _sylvester(A, matrix(B), matrix(C));
},
"Matrix, Matrix, Array": function MatrixMatrixArray(A, B, C) {
return _sylvester(A, B, matrix(C));
},
"Array, Array, Array": function ArrayArrayArray(A, B, C) {
return _sylvester(matrix(A), matrix(B), matrix(C)).toArray();
}
});
function _sylvester(A, B, C) {
var n = B.size()[0];
var m = A.size()[0];
var sA = schur(A);
var F = sA.T;
var U = sA.U;
var sB = schur(multiply(-1, B));
var G = sB.T;
var V = sB.U;
var D = multiply(multiply(transpose(U), C), V);
var all2 = range(0, m);
var y = [];
var hc = (a, b) => concat2(a, b, 1);
var vc = (a, b) => concat2(a, b, 0);
for (var k = 0; k < n; k++) {
if (k < n - 1 && abs2(subset(G, index(k + 1, k))) > 1e-5) {
var RHS = vc(subset(D, index(all2, k)), subset(D, index(all2, k + 1)));
for (var j = 0; j < k; j++) {
RHS = add2(RHS, vc(multiply(y[j], subset(G, index(j, k))), multiply(y[j], subset(G, index(j, k + 1)))));
}
var gkk = multiply(identity(m), multiply(-1, subset(G, index(k, k))));
var gmk = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k))));
var gkm = multiply(identity(m), multiply(-1, subset(G, index(k, k + 1))));
var gmm = multiply(identity(m), multiply(-1, subset(G, index(k + 1, k + 1))));
var LHS = vc(hc(add2(F, gkk), gmk), hc(gkm, add2(F, gmm)));
var yAux = lusolve(LHS, RHS);
y[k] = yAux.subset(index(range(0, m), 0));
y[k + 1] = yAux.subset(index(range(m, 2 * m), 0));
k++;
} else {
var _RHS = subset(D, index(all2, k));
for (var _j = 0; _j < k; _j++) {
_RHS = add2(_RHS, multiply(y[_j], subset(G, index(_j, k))));
}
var _gkk = subset(G, index(k, k));
var _LHS = subtract(F, multiply(_gkk, identity(m)));
y[k] = lusolve(_LHS, _RHS);
}
}
var Y = matrix(matrixFromColumns(...y));
var X = multiply(U, multiply(Y, transpose(V)));
return X;
}
});
// node_modules/mathjs/lib/esm/function/algebra/decomposition/schur.js
var name247 = "schur";
var dependencies247 = ["typed", "matrix", "identity", "multiply", "qr", "norm", "subtract"];
var createSchur = /* @__PURE__ */ factory(name247, dependencies247, (_ref) => {
var {
typed: typed2,
matrix,
identity,
multiply,
qr,
norm,
subtract
} = _ref;
return typed2(name247, {
Array: function Array2(X) {
var r = _schur(matrix(X));
return {
U: r.U.valueOf(),
T: r.T.valueOf()
};
},
Matrix: function Matrix(X) {
return _schur(X);
}
});
function _schur(X) {
var n = X.size()[0];
var A = X;
var U = identity(n);
var k = 0;
var A0;
do {
A0 = A;
var QR = qr(A);
var Q2 = QR.Q;
var R = QR.R;
A = multiply(R, Q2);
U = multiply(U, Q2);
if (k++ > 100) {
break;
}
} while (norm(subtract(A, A0)) > 1e-4);
return {
U,
T: A
};
}
});
// node_modules/mathjs/lib/esm/function/algebra/lyap.js
var name248 = "lyap";
var dependencies248 = ["typed", "matrix", "sylvester", "multiply", "transpose"];
var createLyap = /* @__PURE__ */ factory(name248, dependencies248, (_ref) => {
var {
typed: typed2,
matrix,
sylvester,
multiply,
transpose
} = _ref;
return typed2(name248, {
"Matrix, Matrix": function MatrixMatrix(A, Q2) {
return sylvester(A, transpose(A), multiply(-1, Q2));
},
"Array, Matrix": function ArrayMatrix(A, Q2) {
return sylvester(matrix(A), transpose(matrix(A)), multiply(-1, Q2));
},
"Matrix, Array": function MatrixArray(A, Q2) {
return sylvester(A, transpose(matrix(A)), matrix(multiply(-1, Q2)));
},
"Array, Array": function ArrayArray(A, Q2) {
return sylvester(matrix(A), transpose(matrix(A)), matrix(multiply(-1, Q2))).toArray();
}
});
});
// node_modules/mathjs/lib/esm/function/arithmetic/divide.js
var name249 = "divide";
var dependencies249 = ["typed", "matrix", "multiply", "equalScalar", "divideScalar", "inv"];
var createDivide = /* @__PURE__ */ factory(name249, dependencies249, (_ref) => {
var {
typed: typed2,
matrix,
multiply,
equalScalar,
divideScalar,
inv
} = _ref;
var matAlgo11xS0s = createMatAlgo11xS0s({
typed: typed2,
equalScalar
});
var matAlgo14xDs = createMatAlgo14xDs({
typed: typed2
});
return typed2("divide", extend({
// we extend the signatures of divideScalar with signatures dealing with matrices
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(x, y) {
return multiply(x, inv(y));
},
"DenseMatrix, any": function DenseMatrixAny(x, y) {
return matAlgo14xDs(x, y, divideScalar, false);
},
"SparseMatrix, any": function SparseMatrixAny(x, y) {
return matAlgo11xS0s(x, y, divideScalar, false);
},
"Array, any": function ArrayAny(x, y) {
return matAlgo14xDs(matrix(x), y, divideScalar, false).valueOf();
},
"any, Array | Matrix": function anyArrayMatrix(x, y) {
return multiply(x, inv(y));
}
}, divideScalar.signatures));
});
// node_modules/mathjs/lib/esm/function/geometry/distance.js
var name250 = "distance";
var dependencies250 = ["typed", "addScalar", "subtract", "divideScalar", "multiplyScalar", "deepEqual", "sqrt", "abs"];
var createDistance = /* @__PURE__ */ factory(name250, dependencies250, (_ref) => {
var {
typed: typed2,
addScalar,
subtract,
multiplyScalar,
divideScalar,
deepEqual,
sqrt: sqrt2,
abs: abs2
} = _ref;
return typed2(name250, {
"Array, Array, Array": function ArrayArrayArray(x, y, z) {
if (x.length === 2 && y.length === 2 && z.length === 2) {
if (!_2d(x)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");
}
if (!_2d(y)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");
}
if (!_2d(z)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");
}
if (deepEqual(y, z)) {
throw new TypeError("LinePoint1 should not be same with LinePoint2");
}
var xCoeff = subtract(z[1], y[1]);
var yCoeff = subtract(y[0], z[0]);
var constant = subtract(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);
} else {
throw new TypeError("Invalid Arguments: Try again");
}
},
"Object, Object, Object": function ObjectObjectObject(x, y, z) {
if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {
if (!_2d(x)) {
throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");
}
if (!_2d(y)) {
throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers or BigNumbers");
}
if (!_2d(z)) {
throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers");
}
if (deepEqual(_objectToArray(y), _objectToArray(z))) {
throw new TypeError("LinePoint1 should not be same with LinePoint2");
}
if ("pointX" in x && "pointY" in x && "lineOnePtX" in y && "lineOnePtY" in y && "lineTwoPtX" in z && "lineTwoPtY" in z) {
var xCoeff = subtract(z.lineTwoPtY, y.lineOnePtY);
var yCoeff = subtract(y.lineOnePtX, z.lineTwoPtX);
var constant = subtract(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);
} else {
throw new TypeError("Key names do not match");
}
} else {
throw new TypeError("Invalid Arguments: Try again");
}
},
"Array, Array": function ArrayArray(x, y) {
if (x.length === 2 && y.length === 3) {
if (!_2d(x)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");
}
if (!_3d(y)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");
}
return _distancePointLine2D(x[0], x[1], y[0], y[1], y[2]);
} else if (x.length === 3 && y.length === 6) {
if (!_3d(x)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");
}
if (!_parametricLine(y)) {
throw new TypeError("Array with 6 numbers or BigNumbers expected for second argument");
}
return _distancePointLine3D(x[0], x[1], x[2], y[0], y[1], y[2], y[3], y[4], y[5]);
} else if (x.length === y.length && x.length > 0) {
if (!_containsOnlyNumbers(x)) {
throw new TypeError("All values of an array should be numbers or BigNumbers");
}
if (!_containsOnlyNumbers(y)) {
throw new TypeError("All values of an array should be numbers or BigNumbers");
}
return _euclideanDistance(x, y);
} else {
throw new TypeError("Invalid Arguments: Try again");
}
},
"Object, Object": function ObjectObject(x, y) {
if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {
if (!_2d(x)) {
throw new TypeError("Values of pointX and pointY should be numbers or BigNumbers");
}
if (!_3d(y)) {
throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers or BigNumbers");
}
if ("pointX" in x && "pointY" in x && "xCoeffLine" in y && "yCoeffLine" in y && "constant" in y) {
return _distancePointLine2D(x.pointX, x.pointY, y.xCoeffLine, y.yCoeffLine, y.constant);
} else {
throw new TypeError("Key names do not match");
}
} else if (Object.keys(x).length === 3 && Object.keys(y).length === 6) {
if (!_3d(x)) {
throw new TypeError("Values of pointX, pointY and pointZ should be numbers or BigNumbers");
}
if (!_parametricLine(y)) {
throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers or BigNumbers");
}
if ("pointX" in x && "pointY" in x && "x0" in y && "y0" in y && "z0" in y && "a" in y && "b" in y && "c" in y) {
return _distancePointLine3D(x.pointX, x.pointY, x.pointZ, y.x0, y.y0, y.z0, y.a, y.b, y.c);
} else {
throw new TypeError("Key names do not match");
}
} else if (Object.keys(x).length === 2 && Object.keys(y).length === 2) {
if (!_2d(x)) {
throw new TypeError("Values of pointOneX and pointOneY should be numbers or BigNumbers");
}
if (!_2d(y)) {
throw new TypeError("Values of pointTwoX and pointTwoY should be numbers or BigNumbers");
}
if ("pointOneX" in x && "pointOneY" in x && "pointTwoX" in y && "pointTwoY" in y) {
return _euclideanDistance([x.pointOneX, x.pointOneY], [y.pointTwoX, y.pointTwoY]);
} else {
throw new TypeError("Key names do not match");
}
} else if (Object.keys(x).length === 3 && Object.keys(y).length === 3) {
if (!_3d(x)) {
throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers or BigNumbers");
}
if (!_3d(y)) {
throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers or BigNumbers");
}
if ("pointOneX" in x && "pointOneY" in x && "pointOneZ" in x && "pointTwoX" in y && "pointTwoY" in y && "pointTwoZ" in y) {
return _euclideanDistance([x.pointOneX, x.pointOneY, x.pointOneZ], [y.pointTwoX, y.pointTwoY, y.pointTwoZ]);
} else {
throw new TypeError("Key names do not match");
}
} else {
throw new TypeError("Invalid Arguments: Try again");
}
},
Array: function Array2(arr) {
if (!_pairwise(arr)) {
throw new TypeError("Incorrect array format entered for pairwise distance calculation");
}
return _distancePairwise(arr);
}
});
function _isNumber(a) {
return typeof a === "number" || isBigNumber(a);
}
function _2d(a) {
if (a.constructor !== Array) {
a = _objectToArray(a);
}
return _isNumber(a[0]) && _isNumber(a[1]);
}
function _3d(a) {
if (a.constructor !== Array) {
a = _objectToArray(a);
}
return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]);
}
function _containsOnlyNumbers(a) {
if (!Array.isArray(a)) {
a = _objectToArray(a);
}
return a.every(_isNumber);
}
function _parametricLine(a) {
if (a.constructor !== Array) {
a = _objectToArray(a);
}
return _isNumber(a[0]) && _isNumber(a[1]) && _isNumber(a[2]) && _isNumber(a[3]) && _isNumber(a[4]) && _isNumber(a[5]);
}
function _objectToArray(o) {
var keys = Object.keys(o);
var a = [];
for (var i = 0; i < keys.length; i++) {
a.push(o[keys[i]]);
}
return a;
}
function _pairwise(a) {
if (a[0].length === 2 && _isNumber(a[0][0]) && _isNumber(a[0][1])) {
if (a.some((aI) => aI.length !== 2 || !_isNumber(aI[0]) || !_isNumber(aI[1]))) {
return false;
}
} else if (a[0].length === 3 && _isNumber(a[0][0]) && _isNumber(a[0][1]) && _isNumber(a[0][2])) {
if (a.some((aI) => aI.length !== 3 || !_isNumber(aI[0]) || !_isNumber(aI[1]) || !_isNumber(aI[2]))) {
return false;
}
} else {
return false;
}
return true;
}
function _distancePointLine2D(x, y, a, b, c) {
var num = abs2(addScalar(addScalar(multiplyScalar(a, x), multiplyScalar(b, y)), c));
var den = sqrt2(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)));
return divideScalar(num, den);
}
function _distancePointLine3D(x, y, z, x0, y0, z0, a, b, c) {
var num = [subtract(multiplyScalar(subtract(y0, y), c), multiplyScalar(subtract(z0, z), b)), subtract(multiplyScalar(subtract(z0, z), a), multiplyScalar(subtract(x0, x), c)), subtract(multiplyScalar(subtract(x0, x), b), multiplyScalar(subtract(y0, y), a))];
num = sqrt2(addScalar(addScalar(multiplyScalar(num[0], num[0]), multiplyScalar(num[1], num[1])), multiplyScalar(num[2], num[2])));
var den = sqrt2(addScalar(addScalar(multiplyScalar(a, a), multiplyScalar(b, b)), multiplyScalar(c, c)));
return divideScalar(num, den);
}
function _euclideanDistance(x, y) {
var vectorSize = x.length;
var result = 0;
var diff = 0;
for (var i = 0; i < vectorSize; i++) {
diff = subtract(x[i], y[i]);
result = addScalar(multiplyScalar(diff, diff), result);
}
return sqrt2(result);
}
function _distancePairwise(a) {
var result = [];
var pointA = [];
var pointB = [];
for (var i = 0; i < a.length - 1; i++) {
for (var j = i + 1; j < a.length; j++) {
if (a[0].length === 2) {
pointA = [a[i][0], a[i][1]];
pointB = [a[j][0], a[j][1]];
} else if (a[0].length === 3) {
pointA = [a[i][0], a[i][1], a[i][2]];
pointB = [a[j][0], a[j][1], a[j][2]];
}
result.push(_euclideanDistance(pointA, pointB));
}
}
return result;
}
});
// node_modules/mathjs/lib/esm/function/geometry/intersect.js
var name251 = "intersect";
var dependencies251 = ["typed", "config", "abs", "add", "addScalar", "matrix", "multiply", "multiplyScalar", "divideScalar", "subtract", "smaller", "equalScalar", "flatten", "isZero", "isNumeric"];
var createIntersect = /* @__PURE__ */ factory(name251, dependencies251, (_ref) => {
var {
typed: typed2,
config: config2,
abs: abs2,
add: add2,
addScalar,
matrix,
multiply,
multiplyScalar,
divideScalar,
subtract,
smaller,
equalScalar,
flatten: flatten2,
isZero,
isNumeric
} = _ref;
return typed2("intersect", {
"Array, Array, Array": _AAA,
"Array, Array, Array, Array": _AAAA,
"Matrix, Matrix, Matrix": function MatrixMatrixMatrix(x, y, plane) {
var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());
return arr === null ? null : matrix(arr);
},
"Matrix, Matrix, Matrix, Matrix": function MatrixMatrixMatrixMatrix(w, x, y, z) {
var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());
return arr === null ? null : matrix(arr);
}
});
function _AAA(x, y, plane) {
x = _coerceArr(x);
y = _coerceArr(y);
plane = _coerceArr(plane);
if (!_3d(x)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");
}
if (!_3d(y)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");
}
if (!_4d(plane)) {
throw new TypeError("Array with 4 numbers expected as third argument");
}
return _intersectLinePlane(x[0], x[1], x[2], y[0], y[1], y[2], plane[0], plane[1], plane[2], plane[3]);
}
function _AAAA(w, x, y, z) {
w = _coerceArr(w);
x = _coerceArr(x);
y = _coerceArr(y);
z = _coerceArr(z);
if (w.length === 2) {
if (!_2d(w)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for first argument");
}
if (!_2d(x)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for second argument");
}
if (!_2d(y)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for third argument");
}
if (!_2d(z)) {
throw new TypeError("Array with 2 numbers or BigNumbers expected for fourth argument");
}
return _intersect2d(w, x, y, z);
} else if (w.length === 3) {
if (!_3d(w)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for first argument");
}
if (!_3d(x)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for second argument");
}
if (!_3d(y)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for third argument");
}
if (!_3d(z)) {
throw new TypeError("Array with 3 numbers or BigNumbers expected for fourth argument");
}
return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);
} else {
throw new TypeError("Arrays with two or thee dimensional points expected");
}
}
function _coerceArr(arr) {
if (arr.length === 1)
return arr[0];
if (arr.length > 1 && Array.isArray(arr[0])) {
if (arr.every((el) => Array.isArray(el) && el.length === 1))
return flatten2(arr);
}
return arr;
}
function _2d(x) {
return x.length === 2 && isNumeric(x[0]) && isNumeric(x[1]);
}
function _3d(x) {
return x.length === 3 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]);
}
function _4d(x) {
return x.length === 4 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]) && isNumeric(x[3]);
}
function _intersect2d(p1a, p1b, p2a, p2b) {
var o1 = p1a;
var o2 = p2a;
var d1 = subtract(o1, p1b);
var d2 = subtract(o2, p2b);
var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));
if (isZero(det))
return null;
if (smaller(abs2(det), config2.epsilon)) {
return null;
}
var d20o11 = multiplyScalar(d2[0], o1[1]);
var d21o10 = multiplyScalar(d2[1], o1[0]);
var d20o21 = multiplyScalar(d2[0], o2[1]);
var d21o20 = multiplyScalar(d2[1], o2[0]);
var t = divideScalar(addScalar(subtract(subtract(d20o11, d21o10), d20o21), d21o20), det);
return add2(multiply(d1, t), o1);
}
function _intersect3dHelper(a, b, c, d, e2, f, g, h, i, j, k, l) {
var add1 = multiplyScalar(subtract(a, b), subtract(c, d));
var add22 = multiplyScalar(subtract(e2, f), subtract(g, h));
var add3 = multiplyScalar(subtract(i, j), subtract(k, l));
return addScalar(addScalar(add1, add22), add3);
}
function _intersect3d(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4) {
var d1343 = _intersect3dHelper(x1, x3, x4, x3, y1, y3, y4, y3, z1, z3, z4, z3);
var d4321 = _intersect3dHelper(x4, x3, x2, x1, y4, y3, y2, y1, z4, z3, z2, z1);
var d1321 = _intersect3dHelper(x1, x3, x2, x1, y1, y3, y2, y1, z1, z3, z2, z1);
var d4343 = _intersect3dHelper(x4, x3, x4, x3, y4, y3, y4, y3, z4, z3, z4, z3);
var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);
var numerator = subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343));
var denominator = subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321));
if (isZero(denominator))
return null;
var ta = divideScalar(numerator, denominator);
var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);
var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));
var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));
var paz = addScalar(z1, multiplyScalar(ta, subtract(z2, z1)));
var pbx = addScalar(x3, multiplyScalar(tb, subtract(x4, x3)));
var pby = addScalar(y3, multiplyScalar(tb, subtract(y4, y3)));
var pbz = addScalar(z3, multiplyScalar(tb, subtract(z4, z3)));
if (equalScalar(pax, pbx) && equalScalar(pay, pby) && equalScalar(paz, pbz)) {
return [pax, pay, paz];
} else {
return null;
}
}
function _intersectLinePlane(x1, y1, z1, x2, y2, z2, x, y, z, c) {
var x1x = multiplyScalar(x1, x);
var x2x = multiplyScalar(x2, x);
var y1y = multiplyScalar(y1, y);
var y2y = multiplyScalar(y2, y);
var z1z = multiplyScalar(z1, z);
var z2z = multiplyScalar(z2, z);
var numerator = subtract(subtract(subtract(c, x1x), y1y), z1z);
var denominator = subtract(subtract(subtract(addScalar(addScalar(x2x, y2y), z2z), x1x), y1y), z1z);
var t = divideScalar(numerator, denominator);
var px = addScalar(x1, multiplyScalar(t, subtract(x2, x1)));
var py = addScalar(y1, multiplyScalar(t, subtract(y2, y1)));
var pz = addScalar(z1, multiplyScalar(t, subtract(z2, z1)));
return [px, py, pz];
}
});
// node_modules/mathjs/lib/esm/function/statistics/sum.js
var name252 = "sum";
var dependencies252 = ["typed", "config", "add", "numeric"];
var createSum = /* @__PURE__ */ factory(name252, dependencies252, (_ref) => {
var {
typed: typed2,
config: config2,
add: add2,
numeric: numeric2
} = _ref;
return typed2(name252, {
// sum([a, b, c, d, ...])
"Array | Matrix": _sum,
// sum([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": _nsumDim,
// sum(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("Scalar values expected in function sum");
}
return _sum(args);
}
});
function _sum(array) {
var sum2;
deepForEach(array, function(value) {
try {
sum2 = sum2 === void 0 ? value : add2(sum2, value);
} catch (err) {
throw improveErrorMessage(err, "sum", value);
}
});
if (sum2 === void 0) {
sum2 = numeric2(0, config2.number);
}
if (typeof sum2 === "string") {
sum2 = numeric2(sum2, config2.number);
}
return sum2;
}
function _nsumDim(array, dim) {
try {
var sum2 = reduce(array, dim, add2);
return sum2;
} catch (err) {
throw improveErrorMessage(err, "sum");
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/cumsum.js
var name253 = "cumsum";
var dependencies253 = ["typed", "add", "unaryPlus"];
var createCumSum = /* @__PURE__ */ factory(name253, dependencies253, (_ref) => {
var {
typed: typed2,
add: add2,
unaryPlus
} = _ref;
return typed2(name253, {
// sum([a, b, c, d, ...])
Array: _cumsum,
Matrix: function Matrix(matrix) {
return matrix.create(_cumsum(matrix.valueOf()));
},
// sum([a, b, c, d, ...], dim)
"Array, number | BigNumber": _ncumSumDim,
"Matrix, number | BigNumber": function MatrixNumberBigNumber(matrix, dim) {
return matrix.create(_ncumSumDim(matrix.valueOf(), dim));
},
// cumsum(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("All values expected to be scalar in function cumsum");
}
return _cumsum(args);
}
});
function _cumsum(array) {
try {
return _cumsummap(array);
} catch (err) {
throw improveErrorMessage(err, name253);
}
}
function _cumsummap(array) {
if (array.length === 0) {
return [];
}
var sums = [unaryPlus(array[0])];
for (var i = 1; i < array.length; ++i) {
sums.push(add2(sums[i - 1], array[i]));
}
return sums;
}
function _ncumSumDim(array, dim) {
var size = arraySize(array);
if (dim < 0 || dim >= size.length) {
throw new IndexError(dim, size.length);
}
try {
return _cumsumDimensional(array, dim);
} catch (err) {
throw improveErrorMessage(err, name253);
}
}
function _cumsumDimensional(mat, dim) {
var i, ret, tran;
if (dim <= 0) {
var initialValue = mat[0][0];
if (!Array.isArray(initialValue)) {
return _cumsummap(mat);
} else {
tran = _switch(mat);
ret = [];
for (i = 0; i < tran.length; i++) {
ret[i] = _cumsumDimensional(tran[i], dim - 1);
}
return ret;
}
} else {
ret = [];
for (i = 0; i < mat.length; i++) {
ret[i] = _cumsumDimensional(mat[i], dim - 1);
}
return ret;
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/mean.js
var name254 = "mean";
var dependencies254 = ["typed", "add", "divide"];
var createMean = /* @__PURE__ */ factory(name254, dependencies254, (_ref) => {
var {
typed: typed2,
add: add2,
divide: divide2
} = _ref;
return typed2(name254, {
// mean([a, b, c, d, ...])
"Array | Matrix": _mean,
// mean([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": _nmeanDim,
// mean(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("Scalar values expected in function mean");
}
return _mean(args);
}
});
function _nmeanDim(array, dim) {
try {
var sum2 = reduce(array, dim, add2);
var s = Array.isArray(array) ? arraySize(array) : array.size();
return divide2(sum2, s[dim]);
} catch (err) {
throw improveErrorMessage(err, "mean");
}
}
function _mean(array) {
var sum2;
var num = 0;
deepForEach(array, function(value) {
try {
sum2 = sum2 === void 0 ? value : add2(sum2, value);
num++;
} catch (err) {
throw improveErrorMessage(err, "mean", value);
}
});
if (num === 0) {
throw new Error("Cannot calculate the mean of an empty array");
}
return divide2(sum2, num);
}
});
// node_modules/mathjs/lib/esm/function/statistics/median.js
var name255 = "median";
var dependencies255 = ["typed", "add", "divide", "compare", "partitionSelect"];
var createMedian = /* @__PURE__ */ factory(name255, dependencies255, (_ref) => {
var {
typed: typed2,
add: add2,
divide: divide2,
compare,
partitionSelect
} = _ref;
function _median(array) {
try {
array = flatten(array.valueOf());
var num = array.length;
if (num === 0) {
throw new Error("Cannot calculate median of an empty array");
}
if (num % 2 === 0) {
var mid = num / 2 - 1;
var right = partitionSelect(array, mid + 1);
var left = array[mid];
for (var i = 0; i < mid; ++i) {
if (compare(array[i], left) > 0) {
left = array[i];
}
}
return middle2(left, right);
} else {
var m = partitionSelect(array, (num - 1) / 2);
return middle(m);
}
} catch (err) {
throw improveErrorMessage(err, "median");
}
}
var middle = typed2({
"number | BigNumber | Complex | Unit": function numberBigNumberComplexUnit(value) {
return value;
}
});
var middle2 = typed2({
"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit": function numberBigNumberComplexUnitNumberBigNumberComplexUnit(left, right) {
return divide2(add2(left, right), 2);
}
});
return typed2(name255, {
// median([a, b, c, d, ...])
"Array | Matrix": _median,
// median([a, b, c, d, ...], dim)
"Array | Matrix, number | BigNumber": function ArrayMatrixNumberBigNumber(array, dim) {
throw new Error("median(A, dim) is not yet supported");
},
// median(a, b, c, d, ...)
"...": function _(args) {
if (containsCollections(args)) {
throw new TypeError("Scalar values expected in function median");
}
return _median(args);
}
});
});
// node_modules/mathjs/lib/esm/function/statistics/mad.js
var name256 = "mad";
var dependencies256 = ["typed", "abs", "map", "median", "subtract"];
var createMad = /* @__PURE__ */ factory(name256, dependencies256, (_ref) => {
var {
typed: typed2,
abs: abs2,
map: map2,
median,
subtract
} = _ref;
return typed2(name256, {
// mad([a, b, c, d, ...])
"Array | Matrix": _mad,
// mad(a, b, c, d, ...)
"...": function _(args) {
return _mad(args);
}
});
function _mad(array) {
array = flatten(array.valueOf());
if (array.length === 0) {
throw new Error("Cannot calculate median absolute deviation (mad) of an empty array");
}
try {
var med = median(array);
return median(map2(array, function(value) {
return abs2(subtract(value, med));
}));
} catch (err) {
if (err instanceof TypeError && err.message.indexOf("median") !== -1) {
throw new TypeError(err.message.replace("median", "mad"));
} else {
throw improveErrorMessage(err, "mad");
}
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/variance.js
var DEFAULT_NORMALIZATION = "unbiased";
var name257 = "variance";
var dependencies257 = ["typed", "add", "subtract", "multiply", "divide", "apply", "isNaN"];
var createVariance = /* @__PURE__ */ factory(name257, dependencies257, (_ref) => {
var {
typed: typed2,
add: add2,
subtract,
multiply,
divide: divide2,
apply,
isNaN: isNaN2
} = _ref;
return typed2(name257, {
// variance([a, b, c, d, ...])
"Array | Matrix": function ArrayMatrix(array) {
return _var(array, DEFAULT_NORMALIZATION);
},
// variance([a, b, c, d, ...], normalization)
"Array | Matrix, string": _var,
// variance([a, b, c, c, ...], dim)
"Array | Matrix, number | BigNumber": function ArrayMatrixNumberBigNumber(array, dim) {
return _varDim(array, dim, DEFAULT_NORMALIZATION);
},
// variance([a, b, c, c, ...], dim, normalization)
"Array | Matrix, number | BigNumber, string": _varDim,
// variance(a, b, c, d, ...)
"...": function _(args) {
return _var(args, DEFAULT_NORMALIZATION);
}
});
function _var(array, normalization) {
var sum2;
var num = 0;
if (array.length === 0) {
throw new SyntaxError("Function variance requires one or more parameters (0 provided)");
}
deepForEach(array, function(value) {
try {
sum2 = sum2 === void 0 ? value : add2(sum2, value);
num++;
} catch (err) {
throw improveErrorMessage(err, "variance", value);
}
});
if (num === 0)
throw new Error("Cannot calculate variance of an empty array");
var mean = divide2(sum2, num);
sum2 = void 0;
deepForEach(array, function(value) {
var diff = subtract(value, mean);
sum2 = sum2 === void 0 ? multiply(diff, diff) : add2(sum2, multiply(diff, diff));
});
if (isNaN2(sum2)) {
return sum2;
}
switch (normalization) {
case "uncorrected":
return divide2(sum2, num);
case "biased":
return divide2(sum2, num + 1);
case "unbiased": {
var zero = isBigNumber(sum2) ? sum2.mul(0) : 0;
return num === 1 ? zero : divide2(sum2, num - 1);
}
default:
throw new Error('Unknown normalization "' + normalization + '". Choose "unbiased" (default), "uncorrected", or "biased".');
}
}
function _varDim(array, dim, normalization) {
try {
if (array.length === 0) {
throw new SyntaxError("Function variance requires one or more parameters (0 provided)");
}
return apply(array, dim, (x) => _var(x, normalization));
} catch (err) {
throw improveErrorMessage(err, "variance");
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/quantileSeq.js
var name258 = "quantileSeq";
var dependencies258 = ["typed", "?bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger"];
var createQuantileSeq = /* @__PURE__ */ factory(name258, dependencies258, (_ref) => {
var {
typed: typed2,
bignumber,
add: add2,
subtract,
divide: divide2,
multiply,
partitionSelect,
compare,
isInteger: isInteger2,
smaller,
smallerEq,
larger
} = _ref;
var apply = createApply({
typed: typed2,
isInteger: isInteger2
});
return typed2(name258, {
"Array | Matrix, number | BigNumber": (data, p) => _quantileSeqProbNumber(data, p, false),
"Array | Matrix, number | BigNumber, number": (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbNumber),
"Array | Matrix, number | BigNumber, boolean": _quantileSeqProbNumber,
"Array | Matrix, number | BigNumber, boolean, number": (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbNumber),
"Array | Matrix, Array | Matrix": (data, p) => _quantileSeqProbCollection(data, p, false),
"Array | Matrix, Array | Matrix, number": (data, prob, dim) => _quantileSeqDim(data, prob, false, dim, _quantileSeqProbCollection),
"Array | Matrix, Array | Matrix, boolean": _quantileSeqProbCollection,
"Array | Matrix, Array | Matrix, boolean, number": (data, prob, sorted, dim) => _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbCollection)
});
function _quantileSeqDim(data, prob, sorted, dim, fn) {
return apply(data, dim, (x) => fn(x, prob, sorted));
}
function _quantileSeqProbNumber(data, probOrN, sorted) {
var probArr;
var dataArr = data.valueOf();
if (smaller(probOrN, 0)) {
throw new Error("N/prob must be non-negative");
}
if (smallerEq(probOrN, 1)) {
return isNumber(probOrN) ? _quantileSeq(dataArr, probOrN, sorted) : bignumber(_quantileSeq(dataArr, probOrN, sorted));
}
if (larger(probOrN, 1)) {
if (!isInteger2(probOrN)) {
throw new Error("N must be a positive integer");
}
if (larger(probOrN, 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 nPlusOne = add2(probOrN, 1);
probArr = [];
for (var i = 0; smaller(i, probOrN); i++) {
var prob = divide2(i + 1, nPlusOne);
probArr.push(_quantileSeq(dataArr, prob, sorted));
}
return isNumber(probOrN) ? probArr : bignumber(probArr);
}
}
function _quantileSeqProbCollection(data, probOrN, sorted) {
var dataArr = data.valueOf();
var probOrNArr = probOrN.valueOf();
var probArr = [];
for (var i = 0; i < probOrNArr.length; ++i) {
probArr.push(_quantileSeq(dataArr, probOrNArr[i], sorted));
}
return probArr;
}
function _quantileSeq(array, prob, sorted) {
var flat = flatten(array);
var len = flat.length;
if (len === 0) {
throw new Error("Cannot calculate quantile of an empty sequence");
}
var index = isNumber(prob) ? prob * (len - 1) : prob.times(len - 1);
var integerPart = isNumber(prob) ? Math.floor(index) : index.floor().toNumber();
var fracPart = isNumber(prob) ? index % 1 : index.minus(integerPart);
if (isInteger2(index)) {
return sorted ? flat[index] : partitionSelect(flat, isNumber(prob) ? index : index.valueOf());
}
var left;
var right;
if (sorted) {
left = flat[integerPart];
right = flat[integerPart + 1];
} else {
right = partitionSelect(flat, integerPart + 1);
left = flat[integerPart];
for (var i = 0; i < integerPart; ++i) {
if (compare(flat[i], left) > 0) {
left = flat[i];
}
}
}
return add2(multiply(left, subtract(1, fracPart)), multiply(right, fracPart));
}
});
// node_modules/mathjs/lib/esm/function/statistics/std.js
var name259 = "std";
var dependencies259 = ["typed", "map", "sqrt", "variance"];
var createStd = /* @__PURE__ */ factory(name259, dependencies259, (_ref) => {
var {
typed: typed2,
map: map2,
sqrt: sqrt2,
variance
} = _ref;
return typed2(name259, {
// std([a, b, c, d, ...])
"Array | Matrix": _std,
// std([a, b, c, d, ...], normalization)
"Array | Matrix, string": _std,
// std([a, b, c, c, ...], dim)
"Array | Matrix, number | BigNumber": _std,
// std([a, b, c, c, ...], dim, normalization)
"Array | Matrix, number | BigNumber, string": _std,
// std(a, b, c, d, ...)
"...": function _(args) {
return _std(args);
}
});
function _std(array, normalization) {
if (array.length === 0) {
throw new SyntaxError("Function std requires one or more parameters (0 provided)");
}
try {
var v = variance.apply(null, arguments);
if (isCollection(v)) {
return map2(v, sqrt2);
} else {
return sqrt2(v);
}
} catch (err) {
if (err instanceof TypeError && err.message.indexOf(" variance") !== -1) {
throw new TypeError(err.message.replace(" variance", " std"));
} else {
throw err;
}
}
}
});
// node_modules/mathjs/lib/esm/function/statistics/corr.js
var name260 = "corr";
var dependencies260 = ["typed", "matrix", "mean", "sqrt", "sum", "add", "subtract", "multiply", "pow", "divide"];
var createCorr = /* @__PURE__ */ factory(name260, dependencies260, (_ref) => {
var {
typed: typed2,
matrix,
sqrt: sqrt2,
sum: sum2,
add: add2,
subtract,
multiply,
pow: pow2,
divide: divide2
} = _ref;
return typed2(name260, {
"Array, Array": function ArrayArray(A, B) {
return _corr(A, B);
},
"Matrix, Matrix": function MatrixMatrix(A, B) {
var res = _corr(A.toArray(), B.toArray());
return Array.isArray(res) ? matrix(res) : res;
}
});
function _corr(A, B) {
var correlations = [];
if (Array.isArray(A[0]) && Array.isArray(B[0])) {
if (A.length !== B.length) {
throw new SyntaxError("Dimension mismatch. Array A and B must have the same length.");
}
for (var i = 0; i < A.length; i++) {
if (A[i].length !== B[i].length) {
throw new SyntaxError("Dimension mismatch. Array A and B must have the same number of elements.");
}
correlations.push(correlation(A[i], B[i]));
}
return correlations;
} else {
if (A.length !== B.length) {
throw new SyntaxError("Dimension mismatch. Array A and B must have the same number of elements.");
}
return correlation(A, B);
}
}
function correlation(A, B) {
var n = A.length;
var sumX = sum2(A);
var sumY = sum2(B);
var sumXY = A.reduce((acc, x, index) => add2(acc, multiply(x, B[index])), 0);
var sumXSquare = sum2(A.map((x) => pow2(x, 2)));
var sumYSquare = sum2(B.map((y) => pow2(y, 2)));
var numerator = subtract(multiply(n, sumXY), multiply(sumX, sumY));
var denominator = sqrt2(multiply(subtract(multiply(n, sumXSquare), pow2(sumX, 2)), subtract(multiply(n, sumYSquare), pow2(sumY, 2))));
return divide2(numerator, denominator);
}
});
// node_modules/mathjs/lib/esm/function/probability/combinations.js
var name261 = "combinations";
var dependencies261 = ["typed"];
var createCombinations = /* @__PURE__ */ factory(name261, dependencies261, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name261, {
"number, number": combinationsNumber,
"BigNumber, BigNumber": function BigNumberBigNumber(n, k) {
var BigNumber = n.constructor;
var result, i;
var nMinusk = n.minus(k);
var one = new BigNumber(1);
if (!isPositiveInteger(n) || !isPositiveInteger(k)) {
throw new TypeError("Positive integer value expected in function combinations");
}
if (k.gt(n)) {
throw new TypeError("k must be less than n in function combinations");
}
result = one;
if (k.lt(nMinusk)) {
for (i = one; i.lte(nMinusk); i = i.plus(one)) {
result = result.times(k.plus(i)).dividedBy(i);
}
} else {
for (i = one; i.lte(k); i = i.plus(one)) {
result = result.times(nMinusk.plus(i)).dividedBy(i);
}
}
return result;
}
// TODO: implement support for collection in combinations
});
});
function isPositiveInteger(n) {
return n.isInteger() && n.gte(0);
}
// node_modules/mathjs/lib/esm/function/probability/combinationsWithRep.js
var name262 = "combinationsWithRep";
var dependencies262 = ["typed"];
var createCombinationsWithRep = /* @__PURE__ */ factory(name262, dependencies262, (_ref) => {
var {
typed: typed2
} = _ref;
return typed2(name262, {
"number, number": function numberNumber(n, k) {
if (!isInteger(n) || n < 0) {
throw new TypeError("Positive integer value expected in function combinationsWithRep");
}
if (!isInteger(k) || k < 0) {
throw new TypeError("Positive integer value expected in function combinationsWithRep");
}
if (n < 1) {
throw new TypeError("k must be less than or equal to n + k - 1");
}
if (k < n - 1) {
var _prodrange = product2(n, n + k - 1);
return _prodrange / product2(1, k);
}
var prodrange = product2(k + 1, n + k - 1);
return prodrange / product2(1, n - 1);
},
"BigNumber, BigNumber": function BigNumberBigNumber(n, k) {
var BigNumber = n.constructor;
var result, i;
var one = new BigNumber(1);
var nMinusOne = n.minus(one);
if (!isPositiveInteger2(n) || !isPositiveInteger2(k)) {
throw new TypeError("Positive integer value expected in function combinationsWithRep");
}
if (n.lt(one)) {
throw new TypeError("k must be less than or equal to n + k - 1 in function combinationsWithRep");
}
result = one;
if (k.lt(nMinusOne)) {
for (i = one; i.lte(nMinusOne); i = i.plus(one)) {
result = result.times(k.plus(i)).dividedBy(i);
}
} else {
for (i = one; i.lte(k); i = i.plus(one)) {
result = result.times(nMinusOne.plus(i)).dividedBy(i);
}
}
return result;
}
});
});
function isPositiveInteger2(n) {
return n.isInteger() && n.gte(0);
}
// node_modules/mathjs/lib/esm/function/probability/gamma.js
var name263 = "gamma";
var dependencies263 = ["typed", "config", "multiplyScalar", "pow", "BigNumber", "Complex"];
var createGamma = /* @__PURE__ */ factory(name263, dependencies263, (_ref) => {
var {
typed: typed2,
config: config2,
multiplyScalar,
pow: pow2,
BigNumber: _BigNumber,
Complex: Complex2
} = _ref;
function gammaComplex(n) {
if (n.im === 0) {
return gammaNumber(n.re);
}
if (n.re < 0.5) {
var _t = new Complex2(1 - n.re, -n.im);
var r = new Complex2(Math.PI * n.re, Math.PI * n.im);
return new Complex2(Math.PI).div(r.sin()).div(gammaComplex(_t));
}
n = new Complex2(n.re - 1, n.im);
var x = new Complex2(gammaP[0], 0);
for (var i = 1; i < gammaP.length; ++i) {
var gammaPval = new Complex2(gammaP[i], 0);
x = x.add(gammaPval.div(n.add(i)));
}
var t = new Complex2(n.re + gammaG + 0.5, n.im);
var twoPiSqrt = Math.sqrt(2 * Math.PI);
var tpow = t.pow(n.add(0.5));
var expt = t.neg().exp();
return x.mul(twoPiSqrt).mul(tpow).mul(expt);
}
return typed2(name263, {
number: gammaNumber,
Complex: gammaComplex,
BigNumber: function BigNumber(n) {
if (n.isInteger()) {
return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));
}
if (!n.isFinite()) {
return new _BigNumber(n.isNegative() ? NaN : Infinity);
}
throw new Error("Integer BigNumber expected");
}
});
function bigFactorial(n) {
if (n < 8) {
return new _BigNumber([1, 1, 2, 6, 24, 120, 720, 5040][n]);
}
var precision = config2.precision + (Math.log(n.toNumber()) | 0);
var Big = _BigNumber.clone({
precision
});
if (n % 2 === 1) {
return n.times(bigFactorial(new _BigNumber(n - 1)));
}
var p = n;
var prod = new Big(n);
var sum2 = n.toNumber();
while (p > 2) {
p -= 2;
sum2 += p;
prod = prod.times(sum2);
}
return new _BigNumber(prod.toPrecision(_BigNumber.precision));
}
});
// node_modules/mathjs/lib/esm/function/probability/lgamma.js
var name264 = "lgamma";
var dependencies264 = ["Complex", "typed"];
var createLgamma = /* @__PURE__ */ factory(name264, dependencies264, (_ref) => {
var {
Complex: Complex2,
typed: typed2
} = _ref;
var SMALL_RE = 7;
var SMALL_IM = 7;
var coeffs = [-0.029550653594771242, 0.00641025641025641, -0.0019175269175269176, 8417508417508417e-19, -5952380952380953e-19, 7936507936507937e-19, -0.002777777777777778, 0.08333333333333333];
return typed2(name264, {
number: lgammaNumber,
Complex: lgammaComplex,
BigNumber: function BigNumber() {
throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber");
}
});
function lgammaComplex(n) {
var TWOPI = 6.283185307179586;
var LOGPI = 1.1447298858494002;
var REFLECTION = 0.1;
if (n.isNaN()) {
return new Complex2(NaN, NaN);
} else if (n.im === 0) {
return new Complex2(lgammaNumber(n.re), 0);
} else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
return lgammaStirling(n);
} else if (n.re <= REFLECTION) {
var tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);
var a = n.mul(Math.PI).sin().log();
var b = lgammaComplex(new Complex2(1 - n.re, -n.im));
return new Complex2(LOGPI, tmp).sub(a).sub(b);
} else if (n.im >= 0) {
return lgammaRecurrence(n);
} else {
return lgammaRecurrence(n.conjugate()).conjugate();
}
}
function lgammaStirling(z) {
var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(lnSqrt2PI);
var rz = new Complex2(1, 0).div(z);
var rzz = rz.div(z);
var a = coeffs[0];
var b = coeffs[1];
var r = 2 * rzz.re;
var s = rzz.re * rzz.re + rzz.im * rzz.im;
for (var i = 2; i < 8; i++) {
var tmp = b;
b = -s * a + coeffs[i];
a = r * a + tmp;
}
var rightPart = rz.mul(rzz.mul(a).add(b));
return leftPart.add(rightPart);
}
function lgammaRecurrence(z) {
var signflips = 0;
var sb = 0;
var shiftprod = z;
z = z.add(1);
while (z.re <= SMALL_RE) {
shiftprod = shiftprod.mul(z);
var nsb = shiftprod.im < 0 ? 1 : 0;
if (nsb !== 0 && sb === 0)
signflips++;
sb = nsb;
z = z.add(1);
}
return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex2(0, signflips * 2 * Math.PI * 1));
}
});
// node_modules/mathjs/lib/esm/function/probability/factorial.js
var name265 = "factorial";
var dependencies265 = ["typed", "gamma"];
var createFactorial = /* @__PURE__ */ factory(name265, dependencies265, (_ref) => {
var {
typed: typed2,
gamma
} = _ref;
return typed2(name265, {
number: function number(n) {
if (n < 0) {
throw new Error("Value must be non-negative");
}
return gamma(n + 1);
},
BigNumber: function BigNumber(n) {
if (n.isNegative()) {
throw new Error("Value must be non-negative");
}
return gamma(n.plus(1));
},
"Array | Matrix": typed2.referToSelf((self2) => (n) => deepMap(n, self2))
});
});
// node_modules/mathjs/lib/esm/function/probability/kldivergence.js
var name266 = "kldivergence";
var dependencies266 = ["typed", "matrix", "divide", "sum", "multiply", "map", "dotDivide", "log", "isNumeric"];
var createKldivergence = /* @__PURE__ */ factory(name266, dependencies266, (_ref) => {
var {
typed: typed2,
matrix,
divide: divide2,
sum: sum2,
multiply,
map: map2,
dotDivide,
log: log3,
isNumeric
} = _ref;
return typed2(name266, {
"Array, Array": function ArrayArray(q, p) {
return _kldiv(matrix(q), matrix(p));
},
"Matrix, Array": function MatrixArray(q, p) {
return _kldiv(q, matrix(p));
},
"Array, Matrix": function ArrayMatrix(q, p) {
return _kldiv(matrix(q), p);
},
"Matrix, Matrix": function MatrixMatrix(q, p) {
return _kldiv(q, p);
}
});
function _kldiv(q, p) {
var plength = p.size().length;
var qlength = q.size().length;
if (plength > 1) {
throw new Error("first object must be one dimensional");
}
if (qlength > 1) {
throw new Error("second object must be one dimensional");
}
if (plength !== qlength) {
throw new Error("Length of two vectors must be equal");
}
var sumq = sum2(q);
if (sumq === 0) {
throw new Error("Sum of elements in first object must be non zero");
}
var sump = sum2(p);
if (sump === 0) {
throw new Error("Sum of elements in second object must be non zero");
}
var qnorm = divide2(q, sum2(q));
var pnorm = divide2(p, sum2(p));
var result = sum2(multiply(qnorm, map2(dotDivide(qnorm, pnorm), (x) => log3(x))));
if (isNumeric(result)) {
return result;
} else {
return Number.NaN;
}
}
});
// node_modules/mathjs/lib/esm/function/probability/multinomial.js
var name267 = "multinomial";
var dependencies267 = ["typed", "add", "divide", "multiply", "factorial", "isInteger", "isPositive"];
var createMultinomial = /* @__PURE__ */ factory(name267, dependencies267, (_ref) => {
var {
typed: typed2,
add: add2,
divide: divide2,
multiply,
factorial,
isInteger: isInteger2,
isPositive
} = _ref;
return typed2(name267, {
"Array | Matrix": function ArrayMatrix(a) {
var sum2 = 0;
var denom = 1;
deepForEach(a, function(ai) {
if (!isInteger2(ai) || !isPositive(ai)) {
throw new TypeError("Positive integer value expected in function multinomial");
}
sum2 = add2(sum2, ai);
denom = multiply(denom, factorial(ai));
});
return divide2(factorial(sum2), denom);
}
});
});
// node_modules/mathjs/lib/esm/function/probability/permutations.js
var name268 = "permutations";
var dependencies268 = ["typed", "factorial"];
var createPermutations = /* @__PURE__ */ factory(name268, dependencies268, (_ref) => {
var {
typed: typed2,
factorial
} = _ref;
return typed2(name268, {
"number | BigNumber": factorial,
"number, number": function numberNumber(n, k) {
if (!isInteger(n) || n < 0) {
throw new TypeError("Positive integer value expected in function permutations");
}
if (!isInteger(k) || k < 0) {
throw new TypeError("Positive integer value expected in function permutations");
}
if (k > n) {
throw new TypeError("second argument k must be less than or equal to first argument n");
}
return product2(n - k + 1, n);
},
"BigNumber, BigNumber": function BigNumberBigNumber(n, k) {
var result, i;
if (!isPositiveInteger3(n) || !isPositiveInteger3(k)) {
throw new TypeError("Positive integer value expected in function permutations");
}
if (k.gt(n)) {
throw new TypeError("second argument k must be less than or equal to first argument n");
}
var one = n.mul(0).add(1);
result = one;
for (i = n.minus(k).plus(1); i.lte(n); i = i.plus(1)) {
result = result.times(i);
}
return result;
}
// TODO: implement support for collection in permutations
});
});
function isPositiveInteger3(n) {
return n.isInteger() && n.gte(0);
}
// node_modules/mathjs/lib/esm/function/probability/util/seededRNG.js
var import_seedrandom = __toESM(require_seedrandom2(), 1);
var singletonRandom = /* @__PURE__ */ (0, import_seedrandom.default)(Date.now());
function createRng(randomSeed) {
var random2;
function setSeed(seed) {
random2 = seed === null ? singletonRandom : (0, import_seedrandom.default)(String(seed));
}
setSeed(randomSeed);
function rng() {
return random2();
}
return rng;
}
// node_modules/mathjs/lib/esm/function/probability/pickRandom.js
var name269 = "pickRandom";
var dependencies269 = ["typed", "config", "?on"];
var createPickRandom = /* @__PURE__ */ factory(name269, dependencies269, (_ref) => {
var {
typed: typed2,
config: config2,
on
} = _ref;
var rng = createRng(config2.randomSeed);
if (on) {
on("config", function(curr, prev) {
if (curr.randomSeed !== prev.randomSeed) {
rng = createRng(curr.randomSeed);
}
});
}
return typed2(name269, {
"Array | Matrix": function ArrayMatrix(possibles) {
return _pickRandom(possibles, {});
},
"Array | Matrix, Object": function ArrayMatrixObject(possibles, options) {
return _pickRandom(possibles, options);
},
"Array | Matrix, number": function ArrayMatrixNumber(possibles, number) {
return _pickRandom(possibles, {
number
});
},
"Array | Matrix, Array | Matrix": function ArrayMatrixArrayMatrix(possibles, weights) {
return _pickRandom(possibles, {
weights
});
},
"Array | Matrix, Array | Matrix, number": function ArrayMatrixArrayMatrixNumber(possibles, weights, number) {
return _pickRandom(possibles, {
number,
weights
});
},
"Array | Matrix, number, Array | Matrix": function ArrayMatrixNumberArrayMatrix(possibles, number, weights) {
return _pickRandom(possibles, {
number,
weights
});
}
});
function _pickRandom(possibles, _ref2) {
var {
number,
weights,
elementWise = true
} = _ref2;
var single = typeof number === "undefined";
if (single) {
number = 1;
}
var createMatrix2 = isMatrix(possibles) ? possibles.create : isMatrix(weights) ? weights.create : null;
possibles = possibles.valueOf();
if (weights) {
weights = weights.valueOf();
}
if (elementWise === true) {
possibles = flatten(possibles);
weights = flatten(weights);
}
var totalWeights = 0;
if (typeof weights !== "undefined") {
if (weights.length !== possibles.length) {
throw new Error("Weights must have the same length as possibles");
}
for (var i = 0, len = weights.length; i < len; i++) {
if (!isNumber(weights[i]) || weights[i] < 0) {
throw new Error("Weights must be an array of positive numbers");
}
totalWeights += weights[i];
}
}
var length = possibles.length;
var result = [];
var pick;
while (result.length < number) {
if (typeof weights === "undefined") {
pick = possibles[Math.floor(rng() * length)];
} else {
var randKey = rng() * totalWeights;
for (var _i = 0, _len = possibles.length; _i < _len; _i++) {
randKey -= weights[_i];
if (randKey < 0) {
pick = possibles[_i];
break;
}
}
}
result.push(pick);
}
return single ? result[0] : createMatrix2 ? createMatrix2(result) : result;
}
});
// node_modules/mathjs/lib/esm/function/probability/util/randomMatrix.js
function randomMatrix(size, random2) {
var data = [];
size = size.slice(0);
if (size.length > 1) {
for (var i = 0, length = size.shift(); i < length; i++) {
data.push(randomMatrix(size, random2));
}
} else {
for (var _i = 0, _length = size.shift(); _i < _length; _i++) {
data.push(random2());
}
}
return data;
}
// node_modules/mathjs/lib/esm/function/probability/random.js
var name270 = "random";
var dependencies270 = ["typed", "config", "?on"];
var createRandom = /* @__PURE__ */ factory(name270, dependencies270, (_ref) => {
var {
typed: typed2,
config: config2,
on
} = _ref;
var rng = createRng(config2.randomSeed);
if (on) {
on("config", function(curr, prev) {
if (curr.randomSeed !== prev.randomSeed) {
rng = createRng(curr.randomSeed);
}
});
}
return typed2(name270, {
"": () => _random(0, 1),
number: (max2) => _random(0, max2),
"number, number": (min2, max2) => _random(min2, max2),
"Array | Matrix": (size) => _randomMatrix(size, 0, 1),
"Array | Matrix, number": (size, max2) => _randomMatrix(size, 0, max2),
"Array | Matrix, number, number": (size, min2, max2) => _randomMatrix(size, min2, max2)
});
function _randomMatrix(size, min2, max2) {
var res = randomMatrix(size.valueOf(), () => _random(min2, max2));
return isMatrix(size) ? size.create(res) : res;
}
function _random(min2, max2) {
return min2 + rng() * (max2 - min2);
}
});
// node_modules/mathjs/lib/esm/function/probability/randomInt.js
var name271 = "randomInt";
var dependencies271 = ["typed", "config", "?on"];
var createRandomInt = /* @__PURE__ */ factory(name271, dependencies271, (_ref) => {
var {
typed: typed2,
config: config2,
on
} = _ref;
var rng = createRng(config2.randomSeed);
if (on) {
on("config", function(curr, prev) {
if (curr.randomSeed !== prev.randomSeed) {
rng = createRng(curr.randomSeed);
}
});
}
return typed2(name271, {
"": () => _randomInt(0, 1),
number: (max2) => _randomInt(0, max2),
"number, number": (min2, max2) => _randomInt(min2, max2),
"Array | Matrix": (size) => _randomIntMatrix(size, 0, 1),
"Array | Matrix, number": (size, max2) => _randomIntMatrix(size, 0, max2),
"Array | Matrix, number, number": (size, min2, max2) => _randomIntMatrix(size, min2, max2)
});
function _randomIntMatrix(size, min2, max2) {
var res = randomMatrix(size.valueOf(), () => _randomInt(min2, max2));
return isMatrix(size) ? size.create(res) : res;
}
function _randomInt(min2, max2) {
return Math.floor(min2 + rng() * (max2 - min2));
}
});
// node_modules/mathjs/lib/esm/function/combinatorics/stirlingS2.js
var name272 = "stirlingS2";
var dependencies272 = ["typed", "addScalar", "subtract", "multiplyScalar", "divideScalar", "pow", "factorial", "combinations", "isNegative", "isInteger", "number", "?bignumber", "larger"];
var createStirlingS2 = /* @__PURE__ */ factory(name272, dependencies272, (_ref) => {
var {
typed: typed2,
addScalar,
subtract,
multiplyScalar,
divideScalar,
pow: pow2,
factorial,
combinations,
isNegative,
isInteger: isInteger2,
number,
bignumber,
larger
} = _ref;
var smallCache = [];
var bigCache = [];
return typed2(name272, {
"number | BigNumber, number | BigNumber": function numberBigNumberNumberBigNumber(n, k) {
if (!isInteger2(n) || isNegative(n) || !isInteger2(k) || isNegative(k)) {
throw new TypeError("Non-negative integer value expected in function stirlingS2");
} else if (larger(k, n)) {
throw new TypeError("k must be less than or equal to n in function stirlingS2");
}
var big = !(isNumber(n) && isNumber(k));
var cache = big ? bigCache : smallCache;
var make = big ? bignumber : number;
var nn = number(n);
var nk = number(k);
if (cache[nn] && cache[nn].length > nk) {
return cache[nn][nk];
}
for (var m = 0; m <= nn; ++m) {
if (!cache[m]) {
cache[m] = [m === 0 ? make(1) : make(0)];
}
if (m === 0)
continue;
var row = cache[m];
var prev = cache[m - 1];
for (var i = row.length; i <= m && i <= nk; ++i) {
if (i === m) {
row[i] = 1;
} else {
row[i] = addScalar(multiplyScalar(make(i), prev[i]), prev[i - 1]);
}
}
}
return cache[nn][nk];
}
});
});
// node_modules/mathjs/lib/esm/function/combinatorics/bellNumbers.js
var name273 = "bellNumbers";
var dependencies273 = ["typed", "addScalar", "isNegative", "isInteger", "stirlingS2"];
var createBellNumbers = /* @__PURE__ */ factory(name273, dependencies273, (_ref) => {
var {
typed: typed2,
addScalar,
isNegative,
isInteger: isInteger2,
stirlingS2
} = _ref;
return typed2(name273, {
"number | BigNumber": function numberBigNumber(n) {
if (!isInteger2(n) || isNegative(n)) {
throw new TypeError("Non-negative integer value expected in function bellNumbers");
}
var result = 0;
for (var i = 0; i <= n; i++) {
result = addScalar(result, stirlingS2(n, i));
}
return result;
}
});
});
// node_modules/mathjs/lib/esm/function/combinatorics/catalan.js
var name274 = "catalan";
var dependencies274 = ["typed", "addScalar", "divideScalar", "multiplyScalar", "combinations", "isNegative", "isInteger"];
var createCatalan = /* @__PURE__ */ factory(name274, dependencies274, (_ref) => {
var {
typed: typed2,
addScalar,
divideScalar,
multiplyScalar,
combinations,
isNegative,
isInteger: isInteger2
} = _ref;
return typed2(name274, {
"number | BigNumber": function numberBigNumber(n) {
if (!isInteger2(n) || isNegative(n)) {
throw new TypeError("Non-negative integer value expected in function catalan");
}
return divideScalar(combinations(multiplyScalar(n, 2), n), addScalar(n, 1));
}
});
});
// node_modules/mathjs/lib/esm/function/combinatorics/composition.js
var name275 = "composition";
var dependencies275 = ["typed", "addScalar", "combinations", "isNegative", "isPositive", "isInteger", "larger"];
var createComposition = /* @__PURE__ */ factory(name275, dependencies275, (_ref) => {
var {
typed: typed2,
addScalar,
combinations,
isPositive,
isNegative,
isInteger: isInteger2,
larger
} = _ref;
return typed2(name275, {
"number | BigNumber, number | BigNumber": function numberBigNumberNumberBigNumber(n, k) {
if (!isInteger2(n) || !isPositive(n) || !isInteger2(k) || !isPositive(k)) {
throw new TypeError("Positive integer value expected in function composition");
} else if (larger(k, n)) {
throw new TypeError("k must be less than or equal to n in function composition");
}
return combinations(addScalar(n, -1), addScalar(k, -1));
}
});
});
// node_modules/mathjs/lib/esm/function/algebra/leafCount.js
var name276 = "leafCount";
var dependencies276 = ["parse", "typed"];
var createLeafCount = /* @__PURE__ */ factory(name276, dependencies276, (_ref) => {
var {
parse,
typed: typed2
} = _ref;
function countLeaves(node) {
var count = 0;
node.forEach((n) => {
count += countLeaves(n);
});
return count || 1;
}
return typed2(name276, {
Node: function Node(expr) {
return countLeaves(expr);
}
});
});
// node_modules/mathjs/lib/esm/function/algebra/simplify/wildcards.js
function isNumericNode(x) {
return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);
}
function isConstantExpression(x) {
if (isConstantNode(x)) {
return true;
}
if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {
return true;
}
if (isParenthesisNode(x) && isConstantExpression(x.content)) {
return true;
}
return false;
}
// node_modules/mathjs/lib/esm/function/algebra/simplify/util.js
function ownKeys3(e2, r) {
var t = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e2);
r && (o = o.filter(function(r2) {
return Object.getOwnPropertyDescriptor(e2, r2).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread3(e2) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys3(Object(t), true).forEach(function(r2) {
_defineProperty(e2, r2, t[r2]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t)) : ownKeys3(Object(t)).forEach(function(r2) {
Object.defineProperty(e2, r2, Object.getOwnPropertyDescriptor(t, r2));
});
}
return e2;
}
var name277 = "simplifyUtil";
var dependencies277 = ["FunctionNode", "OperatorNode", "SymbolNode"];
var createUtil = /* @__PURE__ */ factory(name277, dependencies277, (_ref) => {
var {
FunctionNode,
OperatorNode,
SymbolNode
} = _ref;
var T = true;
var F = false;
var defaultName = "defaultF";
var defaultContext = {
/* */
add: {
trivial: T,
total: T,
commutative: T,
associative: T
},
/**/
unaryPlus: {
trivial: T,
total: T,
commutative: T,
associative: T
},
/* */
subtract: {
trivial: F,
total: T,
commutative: F,
associative: F
},
/* */
multiply: {
trivial: T,
total: T,
commutative: T,
associative: T
},
/* */
divide: {
trivial: F,
total: T,
commutative: F,
associative: F
},
/* */
paren: {
trivial: T,
total: T,
commutative: T,
associative: F
},
/* */
defaultF: {
trivial: F,
total: T,
commutative: F,
associative: F
}
};
var realContext = {
divide: {
total: F
},
log: {
total: F
}
};
var positiveContext = {
subtract: {
total: F
},
abs: {
trivial: T
},
log: {
total: T
}
};
function hasProperty(nodeOrName, property) {
var context = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultContext;
var name309 = defaultName;
if (typeof nodeOrName === "string") {
name309 = nodeOrName;
} else if (isOperatorNode(nodeOrName)) {
name309 = nodeOrName.fn.toString();
} else if (isFunctionNode(nodeOrName)) {
name309 = nodeOrName.name;
} else if (isParenthesisNode(nodeOrName)) {
name309 = "paren";
}
if (hasOwnProperty(context, name309)) {
var properties2 = context[name309];
if (hasOwnProperty(properties2, property)) {
return properties2[property];
}
if (hasOwnProperty(defaultContext, name309)) {
return defaultContext[name309][property];
}
}
if (hasOwnProperty(context, defaultName)) {
var _properties = context[defaultName];
if (hasOwnProperty(_properties, property)) {
return _properties[property];
}
return defaultContext[defaultName][property];
}
if (hasOwnProperty(defaultContext, name309)) {
var _properties2 = defaultContext[name309];
if (hasOwnProperty(_properties2, property)) {
return _properties2[property];
}
}
return defaultContext[defaultName][property];
}
function isCommutative(node) {
var context = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultContext;
return hasProperty(node, "commutative", context);
}
function isAssociative(node) {
var context = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultContext;
return hasProperty(node, "associative", context);
}
function mergeContext(primary, secondary) {
var merged = _objectSpread3({}, primary);
for (var prop in secondary) {
if (hasOwnProperty(primary, prop)) {
merged[prop] = _objectSpread3(_objectSpread3({}, secondary[prop]), primary[prop]);
} else {
merged[prop] = secondary[prop];
}
}
return merged;
}
function flatten2(node, context) {
if (!node.args || node.args.length === 0) {
return node;
}
node.args = allChildren(node, context);
for (var i = 0; i < node.args.length; i++) {
flatten2(node.args[i], context);
}
}
function allChildren(node, context) {
var op;
var children = [];
var findChildren = function findChildren2(node2) {
for (var i = 0; i < node2.args.length; i++) {
var child = node2.args[i];
if (isOperatorNode(child) && op === child.op) {
findChildren2(child);
} else {
children.push(child);
}
}
};
if (isAssociative(node, context)) {
op = node.op;
findChildren(node);
return children;
} else {
return node.args;
}
}
function unflattenr(node, context) {
if (!node.args || node.args.length === 0) {
return;
}
var makeNode = createMakeNodeFunction(node);
var l = node.args.length;
for (var i = 0; i < l; i++) {
unflattenr(node.args[i], context);
}
if (l > 2 && isAssociative(node, context)) {
var curnode = node.args.pop();
while (node.args.length > 0) {
curnode = makeNode([node.args.pop(), curnode]);
}
node.args = curnode.args;
}
}
function unflattenl(node, context) {
if (!node.args || node.args.length === 0) {
return;
}
var makeNode = createMakeNodeFunction(node);
var l = node.args.length;
for (var i = 0; i < l; i++) {
unflattenl(node.args[i], context);
}
if (l > 2 && isAssociative(node, context)) {
var curnode = node.args.shift();
while (node.args.length > 0) {
curnode = makeNode([curnode, node.args.shift()]);
}
node.args = curnode.args;
}
}
function createMakeNodeFunction(node) {
if (isOperatorNode(node)) {
return function(args) {
try {
return new OperatorNode(node.op, node.fn, args, node.implicit);
} catch (err) {
console.error(err);
return [];
}
};
} else {
return function(args) {
return new FunctionNode(new SymbolNode(node.name), args);
};
}
}
return {
createMakeNodeFunction,
hasProperty,
isCommutative,
isAssociative,
mergeContext,
flatten: flatten2,
allChildren,
unflattenr,
unflattenl,
defaultContext,
realContext,
positiveContext
};
});
// node_modules/mathjs/lib/esm/function/algebra/simplify.js
var name278 = "simplify";
var dependencies278 = ["config", "typed", "parse", "add", "subtract", "multiply", "divide", "pow", "isZero", "equal", "resolve", "simplifyConstant", "simplifyCore", "?fraction", "?bignumber", "mathWithTransform", "matrix", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode"];
var createSimplify = /* @__PURE__ */ factory(name278, dependencies278, (_ref) => {
var {
config: config2,
typed: typed2,
parse,
add: add2,
subtract,
multiply,
divide: divide2,
pow: pow2,
isZero,
equal,
resolve,
simplifyConstant,
simplifyCore,
fraction,
bignumber,
mathWithTransform,
matrix,
AccessorNode,
ArrayNode,
ConstantNode,
FunctionNode,
IndexNode,
ObjectNode,
OperatorNode,
ParenthesisNode,
SymbolNode
} = _ref;
var {
hasProperty,
isCommutative,
isAssociative,
mergeContext,
flatten: flatten2,
unflattenr,
unflattenl,
createMakeNodeFunction,
defaultContext,
realContext,
positiveContext
} = createUtil({
FunctionNode,
OperatorNode,
SymbolNode
});
typed2.addConversion({
from: "Object",
to: "Map",
convert: createMap
});
var simplify = typed2("simplify", {
Node: _simplify,
"Node, Map": (expr, scope) => _simplify(expr, false, scope),
"Node, Map, Object": (expr, scope, options) => _simplify(expr, false, scope, options),
"Node, Array": _simplify,
"Node, Array, Map": _simplify,
"Node, Array, Map, Object": _simplify
});
typed2.removeConversion({
from: "Object",
to: "Map",
convert: createMap
});
simplify.defaultContext = defaultContext;
simplify.realContext = realContext;
simplify.positiveContext = positiveContext;
function removeParens(node) {
return node.transform(function(node2, path, parent) {
return isParenthesisNode(node2) ? removeParens(node2.content) : node2;
});
}
var SUPPORTED_CONSTANTS = {
true: true,
false: true,
e: true,
i: true,
Infinity: true,
LN2: true,
LN10: true,
LOG2E: true,
LOG10E: true,
NaN: true,
phi: true,
pi: true,
SQRT1_2: true,
SQRT2: true,
tau: true
// null: false,
// undefined: false,
// version: false,
};
simplify.rules = [
simplifyCore,
// { l: 'n+0', r: 'n' }, // simplifyCore
// { l: 'n^0', r: '1' }, // simplifyCore
// { l: '0*n', r: '0' }, // simplifyCore
// { l: 'n/n', r: '1'}, // simplifyCore
// { l: 'n^1', r: 'n' }, // simplifyCore
// { l: '+n1', r:'n1' }, // simplifyCore
// { l: 'n--n1', r:'n+n1' }, // simplifyCore
{
l: "log(e)",
r: "1"
},
// temporary rules
// Note initially we tend constants to the right because like-term
// collection prefers the left, and we would rather collect nonconstants
{
s: "n-n1 -> n+-n1",
// temporarily replace 'subtract' so we can further flatten the 'add' operator
assuming: {
subtract: {
total: true
}
}
},
{
s: "n-n -> 0",
// partial alternative when we can't always subtract
assuming: {
subtract: {
total: false
}
}
},
{
s: "-(cl*v) -> v * (-cl)",
// make non-constant terms positive
assuming: {
multiply: {
commutative: true
},
subtract: {
total: true
}
}
},
{
s: "-(cl*v) -> (-cl) * v",
// non-commutative version, part 1
assuming: {
multiply: {
commutative: false
},
subtract: {
total: true
}
}
},
{
s: "-(v*cl) -> v * (-cl)",
// non-commutative version, part 2
assuming: {
multiply: {
commutative: false
},
subtract: {
total: true
}
}
},
{
l: "-(n1/n2)",
r: "-n1/n2"
},
{
l: "-v",
r: "v * (-1)"
},
// finish making non-constant terms positive
{
l: "(n1 + n2)*(-1)",
r: "n1*(-1) + n2*(-1)",
repeat: true
},
// expand negations to achieve as much sign cancellation as possible
{
l: "n/n1^n2",
r: "n*n1^-n2"
},
// temporarily replace 'divide' so we can further flatten the 'multiply' operator
{
l: "n/n1",
r: "n*n1^-1"
},
{
s: "(n1*n2)^n3 -> n1^n3 * n2^n3",
assuming: {
multiply: {
commutative: true
}
}
},
{
s: "(n1*n2)^(-1) -> n2^(-1) * n1^(-1)",
assuming: {
multiply: {
commutative: false
}
}
},
// expand nested exponentiation
{
s: "(n ^ n1) ^ n2 -> n ^ (n1 * n2)",
assuming: {
divide: {
total: true
}
}
// 1/(1/n) = n needs 1/n to exist
},
// collect like factors; into a sum, only do this for nonconstants
{
l: " vd * ( vd * n1 + n2)",
r: "vd^2 * n1 + vd * n2"
},
{
s: " vd * (vd^n4 * n1 + n2) -> vd^(1+n4) * n1 + vd * n2",
assuming: {
divide: {
total: true
}
}
// v*1/v = v^(1+-1) needs 1/v
},
{
s: "vd^n3 * ( vd * n1 + n2) -> vd^(n3+1) * n1 + vd^n3 * n2",
assuming: {
divide: {
total: true
}
}
},
{
s: "vd^n3 * (vd^n4 * n1 + n2) -> vd^(n3+n4) * n1 + vd^n3 * n2",
assuming: {
divide: {
total: true
}
}
},
{
l: "n*n",
r: "n^2"
},
{
s: "n * n^n1 -> n^(n1+1)",
assuming: {
divide: {
total: true
}
}
// n*1/n = n^(-1+1) needs 1/n
},
{
s: "n^n1 * n^n2 -> n^(n1+n2)",
assuming: {
divide: {
total: true
}
}
// ditto for n^2*1/n^2
},
// Unfortunately, to deal with more complicated cancellations, it
// becomes necessary to simplify constants twice per pass. It's not
// terribly expensive compared to matching rules, so this should not
// pose a performance problem.
simplifyConstant,
// First: before collecting like terms
// collect like terms
{
s: "n+n -> 2*n",
assuming: {
add: {
total: true
}
}
// 2 = 1 + 1 needs to exist
},
{
l: "n+-n",
r: "0"
},
{
l: "vd*n + vd",
r: "vd*(n+1)"
},
// NOTE: leftmost position is special:
{
l: "n3*n1 + n3*n2",
r: "n3*(n1+n2)"
},
// All sub-monomials tried there.
{
l: "n3^(-n4)*n1 + n3 * n2",
r: "n3^(-n4)*(n1 + n3^(n4+1) *n2)"
},
{
l: "n3^(-n4)*n1 + n3^n5 * n2",
r: "n3^(-n4)*(n1 + n3^(n4+n5)*n2)"
},
// noncommutative additional cases (term collection & factoring)
{
s: "n*vd + vd -> (n+1)*vd",
assuming: {
multiply: {
commutative: false
}
}
},
{
s: "vd + n*vd -> (1+n)*vd",
assuming: {
multiply: {
commutative: false
}
}
},
{
s: "n1*n3 + n2*n3 -> (n1+n2)*n3",
assuming: {
multiply: {
commutative: false
}
}
},
{
s: "n^n1 * n -> n^(n1+1)",
assuming: {
divide: {
total: true
},
multiply: {
commutative: false
}
}
},
{
s: "n1*n3^(-n4) + n2 * n3 -> (n1 + n2*n3^(n4 + 1))*n3^(-n4)",
assuming: {
multiply: {
commutative: false
}
}
},
{
s: "n1*n3^(-n4) + n2 * n3^n5 -> (n1 + n2*n3^(n4 + n5))*n3^(-n4)",
assuming: {
multiply: {
commutative: false
}
}
},
{
l: "n*cd + cd",
r: "(n+1)*cd"
},
{
s: "cd*n + cd -> cd*(n+1)",
assuming: {
multiply: {
commutative: false
}
}
},
{
s: "cd + cd*n -> cd*(1+n)",
assuming: {
multiply: {
commutative: false
}
}
},
simplifyConstant,
// Second: before returning expressions to "standard form"
// make factors positive (and undo 'make non-constant terms positive')
{
s: "(-n)*n1 -> -(n*n1)",
assuming: {
subtract: {
total: true
}
}
},
{
s: "n1*(-n) -> -(n1*n)",
// in case * non-commutative
assuming: {
subtract: {
total: true
},
multiply: {
commutative: false
}
}
},
// final ordering of constants
{
s: "ce+ve -> ve+ce",
assuming: {
add: {
commutative: true
}
},
imposeContext: {
add: {
commutative: false
}
}
},
{
s: "vd*cd -> cd*vd",
assuming: {
multiply: {
commutative: true
}
},
imposeContext: {
multiply: {
commutative: false
}
}
},
// undo temporary rules
// { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant
{
l: "n+-n1",
r: "n-n1"
},
// undo replace 'subtract'
{
l: "n+-(n1)",
r: "n-(n1)"
},
{
s: "n*(n1^-1) -> n/n1",
// undo replace 'divide'; for * commutative
assuming: {
multiply: {
commutative: true
}
}
// o.w. / not conventional
},
{
s: "n*n1^-n2 -> n/n1^n2",
assuming: {
multiply: {
commutative: true
}
}
// o.w. / not conventional
},
{
s: "n^-1 -> 1/n",
assuming: {
multiply: {
commutative: true
}
}
// o.w. / not conventional
},
{
l: "n^1",
r: "n"
},
// can be produced by power cancellation
{
s: "n*(n1/n2) -> (n*n1)/n2",
// '*' before '/'
assuming: {
multiply: {
associative: true
}
}
},
{
s: "n-(n1+n2) -> n-n1-n2",
// '-' before '+'
assuming: {
addition: {
associative: true,
commutative: true
}
}
},
// { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },
// { l: '(n*n1)/(n*n2)', r: 'n1/n2' },
// simplifyConstant can leave an extra factor of 1, which can always
// be eliminated, since the identity always commutes
{
l: "1*n",
r: "n",
imposeContext: {
multiply: {
commutative: true
}
}
},
{
s: "n1/(n2/n3) -> (n1*n3)/n2",
assuming: {
multiply: {
associative: true
}
}
},
{
l: "n1/(-n2)",
r: "-n1/n2"
}
];
function _canonicalizeRule(ruleObject, context) {
var newRule = {};
if (ruleObject.s) {
var lr = ruleObject.s.split("->");
if (lr.length === 2) {
newRule.l = lr[0];
newRule.r = lr[1];
} else {
throw SyntaxError("Could not parse rule: " + ruleObject.s);
}
} else {
newRule.l = ruleObject.l;
newRule.r = ruleObject.r;
}
newRule.l = removeParens(parse(newRule.l));
newRule.r = removeParens(parse(newRule.r));
for (var prop of ["imposeContext", "repeat", "assuming"]) {
if (prop in ruleObject) {
newRule[prop] = ruleObject[prop];
}
}
if (ruleObject.evaluate) {
newRule.evaluate = parse(ruleObject.evaluate);
}
if (isAssociative(newRule.l, context)) {
var nonCommutative = !isCommutative(newRule.l, context);
var leftExpandsym;
if (nonCommutative)
leftExpandsym = _getExpandPlaceholderSymbol();
var makeNode = createMakeNodeFunction(newRule.l);
var expandsym = _getExpandPlaceholderSymbol();
newRule.expanded = {};
newRule.expanded.l = makeNode([newRule.l, expandsym]);
flatten2(newRule.expanded.l, context);
unflattenr(newRule.expanded.l, context);
newRule.expanded.r = makeNode([newRule.r, expandsym]);
if (nonCommutative) {
newRule.expandedNC1 = {};
newRule.expandedNC1.l = makeNode([leftExpandsym, newRule.l]);
newRule.expandedNC1.r = makeNode([leftExpandsym, newRule.r]);
newRule.expandedNC2 = {};
newRule.expandedNC2.l = makeNode([leftExpandsym, newRule.expanded.l]);
newRule.expandedNC2.r = makeNode([leftExpandsym, newRule.expanded.r]);
}
}
return newRule;
}
function _buildRules(rules, context) {
var ruleSet = [];
for (var i = 0; i < rules.length; i++) {
var rule = rules[i];
var newRule = void 0;
var ruleType = typeof rule;
switch (ruleType) {
case "string":
rule = {
s: rule
};
case "object":
newRule = _canonicalizeRule(rule, context);
break;
case "function":
newRule = rule;
break;
default:
throw TypeError("Unsupported type of rule: " + ruleType);
}
ruleSet.push(newRule);
}
return ruleSet;
}
var _lastsym = 0;
function _getExpandPlaceholderSymbol() {
return new SymbolNode("_p" + _lastsym++);
}
function _simplify(expr, rules) {
var scope = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : createEmptyMap();
var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
var debug3 = options.consoleDebug;
rules = _buildRules(rules || simplify.rules, options.context);
var res = resolve(expr, scope);
res = removeParens(res);
var visited = {};
var str = res.toString({
parenthesis: "all"
});
while (!visited[str]) {
visited[str] = true;
_lastsym = 0;
var laststr = str;
if (debug3)
console.log("Working on: ", str);
for (var i = 0; i < rules.length; i++) {
var rulestr = "";
if (typeof rules[i] === "function") {
res = rules[i](res, options);
if (debug3)
rulestr = rules[i].name;
} else {
flatten2(res, options.context);
res = applyRule(res, rules[i], options.context);
if (debug3) {
rulestr = "".concat(rules[i].l.toString(), " -> ").concat(rules[i].r.toString());
}
}
if (debug3) {
var newstr = res.toString({
parenthesis: "all"
});
if (newstr !== laststr) {
console.log("Applying", rulestr, "produced", newstr);
laststr = newstr;
}
}
unflattenl(res, options.context);
}
str = res.toString({
parenthesis: "all"
});
}
return res;
}
function mapRule(nodes, rule, context) {
var resNodes = nodes;
if (nodes) {
for (var i = 0; i < nodes.length; ++i) {
var newNode = applyRule(nodes[i], rule, context);
if (newNode !== nodes[i]) {
if (resNodes === nodes) {
resNodes = nodes.slice();
}
resNodes[i] = newNode;
}
}
}
return resNodes;
}
function applyRule(node, rule, context) {
if (rule.assuming) {
for (var symbol in rule.assuming) {
for (var property in rule.assuming[symbol]) {
if (hasProperty(symbol, property, context) !== rule.assuming[symbol][property]) {
return node;
}
}
}
}
var mergedContext = mergeContext(rule.imposeContext, context);
var res = node;
if (res instanceof OperatorNode || res instanceof FunctionNode) {
var newArgs = mapRule(res.args, rule, context);
if (newArgs !== res.args) {
res = res.clone();
res.args = newArgs;
}
} else if (res instanceof ParenthesisNode) {
if (res.content) {
var newContent = applyRule(res.content, rule, context);
if (newContent !== res.content) {
res = new ParenthesisNode(newContent);
}
}
} else if (res instanceof ArrayNode) {
var newItems = mapRule(res.items, rule, context);
if (newItems !== res.items) {
res = new ArrayNode(newItems);
}
} else if (res instanceof AccessorNode) {
var newObj = res.object;
if (res.object) {
newObj = applyRule(res.object, rule, context);
}
var newIndex = res.index;
if (res.index) {
newIndex = applyRule(res.index, rule, context);
}
if (newObj !== res.object || newIndex !== res.index) {
res = new AccessorNode(newObj, newIndex);
}
} else if (res instanceof IndexNode) {
var newDims = mapRule(res.dimensions, rule, context);
if (newDims !== res.dimensions) {
res = new IndexNode(newDims);
}
} else if (res instanceof ObjectNode) {
var changed = false;
var newProps = {};
for (var prop in res.properties) {
newProps[prop] = applyRule(res.properties[prop], rule, context);
if (newProps[prop] !== res.properties[prop]) {
changed = true;
}
}
if (changed) {
res = new ObjectNode(newProps);
}
}
var repl = rule.r;
var matches = _ruleMatch(rule.l, res, mergedContext)[0];
if (!matches && rule.expanded) {
repl = rule.expanded.r;
matches = _ruleMatch(rule.expanded.l, res, mergedContext)[0];
}
if (!matches && rule.expandedNC1) {
repl = rule.expandedNC1.r;
matches = _ruleMatch(rule.expandedNC1.l, res, mergedContext)[0];
if (!matches) {
repl = rule.expandedNC2.r;
matches = _ruleMatch(rule.expandedNC2.l, res, mergedContext)[0];
}
}
if (matches) {
var implicit = res.implicit;
res = repl.clone();
if (implicit && "implicit" in repl) {
res.implicit = true;
}
res = res.transform(function(node2) {
if (node2.isSymbolNode && hasOwnProperty(matches.placeholders, node2.name)) {
return matches.placeholders[node2.name].clone();
} else {
return node2;
}
});
}
if (rule.repeat && res !== node) {
res = applyRule(res, rule, context);
}
return res;
}
function getSplits(node, context) {
var res = [];
var right, rightArgs;
var makeNode = createMakeNodeFunction(node);
if (isCommutative(node, context)) {
for (var i = 0; i < node.args.length; i++) {
rightArgs = node.args.slice(0);
rightArgs.splice(i, 1);
right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);
res.push(makeNode([node.args[i], right]));
}
} else {
for (var _i = 1; _i < node.args.length; _i++) {
var left = node.args[0];
if (_i > 1) {
left = makeNode(node.args.slice(0, _i));
}
rightArgs = node.args.slice(_i);
right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);
res.push(makeNode([left, right]));
}
}
return res;
}
function mergeMatch(match1, match2) {
var res = {
placeholders: {}
};
if (!match1.placeholders && !match2.placeholders) {
return res;
} else if (!match1.placeholders) {
return match2;
} else if (!match2.placeholders) {
return match1;
}
for (var key in match1.placeholders) {
if (hasOwnProperty(match1.placeholders, key)) {
res.placeholders[key] = match1.placeholders[key];
if (hasOwnProperty(match2.placeholders, key)) {
if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {
return null;
}
}
}
}
for (var _key in match2.placeholders) {
if (hasOwnProperty(match2.placeholders, _key)) {
res.placeholders[_key] = match2.placeholders[_key];
}
}
return res;
}
function combineChildMatches(list1, list2) {
var res = [];
if (list1.length === 0 || list2.length === 0) {
return res;
}
var merged;
for (var i1 = 0; i1 < list1.length; i1++) {
for (var i2 = 0; i2 < list2.length; i2++) {
merged = mergeMatch(list1[i1], list2[i2]);
if (merged) {
res.push(merged);
}
}
}
return res;
}
function mergeChildMatches(childMatches) {
if (childMatches.length === 0) {
return childMatches;
}
var sets = childMatches.reduce(combineChildMatches);
var uniqueSets = [];
var unique = {};
for (var i = 0; i < sets.length; i++) {
var s = JSON.stringify(sets[i]);
if (!unique[s]) {
unique[s] = true;
uniqueSets.push(sets[i]);
}
}
return uniqueSets;
}
function _ruleMatch(rule, node, context, isSplit) {
var res = [{
placeholders: {}
}];
if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {
if (rule instanceof OperatorNode) {
if (rule.op !== node.op || rule.fn !== node.fn) {
return [];
}
} else if (rule instanceof FunctionNode) {
if (rule.name !== node.name) {
return [];
}
}
if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node, context) && node.args.length === rule.args.length || isSplit) {
var childMatches = [];
for (var i = 0; i < rule.args.length; i++) {
var childMatch = _ruleMatch(rule.args[i], node.args[i], context);
if (childMatch.length === 0) {
break;
}
childMatches.push(childMatch);
}
if (childMatches.length !== rule.args.length) {
if (!isCommutative(node, context) || // exact match in order needed
rule.args.length === 1) {
return [];
}
if (rule.args.length > 2) {
throw new Error("permuting >2 commutative non-associative rule arguments not yet implemented");
}
var leftMatch = _ruleMatch(rule.args[0], node.args[1], context);
if (leftMatch.length === 0) {
return [];
}
var rightMatch = _ruleMatch(rule.args[1], node.args[0], context);
if (rightMatch.length === 0) {
return [];
}
childMatches = [leftMatch, rightMatch];
}
res = mergeChildMatches(childMatches);
} else if (node.args.length >= 2 && rule.args.length === 2) {
var splits = getSplits(node, context);
var splitMatches = [];
for (var _i2 = 0; _i2 < splits.length; _i2++) {
var matchSet = _ruleMatch(rule, splits[_i2], context, true);
splitMatches = splitMatches.concat(matchSet);
}
return splitMatches;
} else if (rule.args.length > 2) {
throw Error("Unexpected non-binary associative function: " + rule.toString());
} else {
return [];
}
} else if (rule instanceof SymbolNode) {
if (rule.name.length === 0) {
throw new Error("Symbol in rule has 0 length...!?");
}
if (SUPPORTED_CONSTANTS[rule.name]) {
if (rule.name !== node.name) {
return [];
}
} else {
switch (rule.name[1] >= "a" && rule.name[1] <= "z" ? rule.name.substring(0, 2) : rule.name[0]) {
case "n":
case "_p":
res[0].placeholders[rule.name] = node;
break;
case "c":
case "cl":
if (isConstantNode(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "v":
if (!isConstantNode(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "vl":
if (isSymbolNode(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "cd":
if (isNumericNode(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "vd":
if (!isNumericNode(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "ce":
if (isConstantExpression(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
case "ve":
if (!isConstantExpression(node)) {
res[0].placeholders[rule.name] = node;
} else {
return [];
}
break;
default:
throw new Error("Invalid symbol in rule: " + rule.name);
}
}
} else if (rule instanceof ConstantNode) {
if (!equal(rule.value, node.value)) {
return [];
}
} else {
return [];
}
return res;
}
function _exactMatch(p, q) {
if (p instanceof ConstantNode && q instanceof ConstantNode) {
if (!equal(p.value, q.value)) {
return false;
}
} else if (p instanceof SymbolNode && q instanceof SymbolNode) {
if (p.name !== q.name) {
return false;
}
} else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {
if (p instanceof OperatorNode) {
if (p.op !== q.op || p.fn !== q.fn) {
return false;
}
} else if (p instanceof FunctionNode) {
if (p.name !== q.name) {
return false;
}
}
if (p.args.length !== q.args.length) {
return false;
}
for (var i = 0; i < p.args.length; i++) {
if (!_exactMatch(p.args[i], q.args[i])) {
return false;
}
}
} else {
return false;
}
return true;
}
return simplify;
});
// node_modules/mathjs/lib/esm/function/algebra/simplifyConstant.js
var name279 = "simplifyConstant";
var dependencies279 = ["typed", "config", "mathWithTransform", "matrix", "?fraction", "?bignumber", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode"];
var createSimplifyConstant = /* @__PURE__ */ factory(name279, dependencies279, (_ref) => {
var {
typed: typed2,
config: config2,
mathWithTransform,
matrix,
fraction,
bignumber,
AccessorNode,
ArrayNode,
ConstantNode,
FunctionNode,
IndexNode,
ObjectNode,
OperatorNode,
SymbolNode
} = _ref;
var {
isCommutative,
isAssociative,
allChildren,
createMakeNodeFunction
} = createUtil({
FunctionNode,
OperatorNode,
SymbolNode
});
var simplifyConstant = typed2("simplifyConstant", {
Node: (node) => _ensureNode(foldFraction(node, {})),
"Node, Object": function NodeObject(expr, options) {
return _ensureNode(foldFraction(expr, options));
}
});
function _removeFractions(thing) {
if (isFraction(thing)) {
return thing.valueOf();
}
if (thing instanceof Array) {
return thing.map(_removeFractions);
}
if (isMatrix(thing)) {
return matrix(_removeFractions(thing.valueOf()));
}
return thing;
}
function _eval(fnname, args, options) {
try {
return mathWithTransform[fnname].apply(null, args);
} catch (ignore) {
args = args.map(_removeFractions);
return _toNumber(mathWithTransform[fnname].apply(null, args), options);
}
}
var _toNode = typed2({
Fraction: _fractionToNode,
number: function number(n) {
if (n < 0) {
return unaryMinusNode(new ConstantNode(-n));
}
return new ConstantNode(n);
},
BigNumber: function BigNumber(n) {
if (n < 0) {
return unaryMinusNode(new ConstantNode(-n));
}
return new ConstantNode(n);
},
Complex: function Complex2(s) {
throw new Error("Cannot convert Complex number to Node");
},
string: function string(s) {
return new ConstantNode(s);
},
Matrix: function Matrix(m) {
return new ArrayNode(m.valueOf().map((e2) => _toNode(e2)));
}
});
function _ensureNode(thing) {
if (isNode(thing)) {
return thing;
}
return _toNode(thing);
}
function _exactFraction(n, options) {
var exactFractions = options && options.exactFractions !== false;
if (exactFractions && isFinite(n) && fraction) {
var f = fraction(n);
var fractionsLimit = options && typeof options.fractionsLimit === "number" ? options.fractionsLimit : Infinity;
if (f.valueOf() === n && f.n < fractionsLimit && f.d < fractionsLimit) {
return f;
}
}
return n;
}
var _toNumber = typed2({
"string, Object": function stringObject(s, options) {
if (config2.number === "BigNumber") {
if (bignumber === void 0) {
noBignumber();
}
return bignumber(s);
} else if (config2.number === "Fraction") {
if (fraction === void 0) {
noFraction();
}
return fraction(s);
} else {
var n = parseFloat(s);
return _exactFraction(n, options);
}
},
"Fraction, Object": function FractionObject(s, options) {
return s;
},
// we don't need options here
"BigNumber, Object": function BigNumberObject(s, options) {
return s;
},
// we don't need options here
"number, Object": function numberObject(s, options) {
return _exactFraction(s, options);
},
"Complex, Object": function ComplexObject(s, options) {
if (s.im !== 0) {
return s;
}
return _exactFraction(s.re, options);
},
"Matrix, Object": function MatrixObject(s, options) {
return matrix(_exactFraction(s.valueOf()));
},
"Array, Object": function ArrayObject(s, options) {
return s.map(_exactFraction);
}
});
function unaryMinusNode(n) {
return new OperatorNode("-", "unaryMinus", [n]);
}
function _fractionToNode(f) {
var n;
var vn = f.s * f.n;
if (vn < 0) {
n = new OperatorNode("-", "unaryMinus", [new ConstantNode(-vn)]);
} else {
n = new ConstantNode(vn);
}
if (f.d === 1) {
return n;
}
return new OperatorNode("/", "divide", [n, new ConstantNode(f.d)]);
}
function _foldAccessor(obj, index, options) {
if (!isIndexNode(index)) {
return new AccessorNode(_ensureNode(obj), _ensureNode(index));
}
if (isArrayNode(obj) || isMatrix(obj)) {
var remainingDims = Array.from(index.dimensions);
while (remainingDims.length > 0) {
if (isConstantNode(remainingDims[0]) && typeof remainingDims[0].value !== "string") {
var first = _toNumber(remainingDims.shift().value, options);
if (isArrayNode(obj)) {
obj = obj.items[first - 1];
} else {
obj = obj.valueOf()[first - 1];
if (obj instanceof Array) {
obj = matrix(obj);
}
}
} else if (remainingDims.length > 1 && isConstantNode(remainingDims[1]) && typeof remainingDims[1].value !== "string") {
var second = _toNumber(remainingDims[1].value, options);
var tryItems = [];
var fromItems = isArrayNode(obj) ? obj.items : obj.valueOf();
for (var item of fromItems) {
if (isArrayNode(item)) {
tryItems.push(item.items[second - 1]);
} else if (isMatrix(obj)) {
tryItems.push(item[second - 1]);
} else {
break;
}
}
if (tryItems.length === fromItems.length) {
if (isArrayNode(obj)) {
obj = new ArrayNode(tryItems);
} else {
obj = matrix(tryItems);
}
remainingDims.splice(1, 1);
} else {
break;
}
} else {
break;
}
}
if (remainingDims.length === index.dimensions.length) {
return new AccessorNode(_ensureNode(obj), index);
}
if (remainingDims.length > 0) {
index = new IndexNode(remainingDims);
return new AccessorNode(_ensureNode(obj), index);
}
return obj;
}
if (isObjectNode(obj) && index.dimensions.length === 1 && isConstantNode(index.dimensions[0])) {
var key = index.dimensions[0].value;
if (key in obj.properties) {
return obj.properties[key];
}
return new ConstantNode();
}
return new AccessorNode(_ensureNode(obj), index);
}
function foldOp(fn, args, makeNode, options) {
var first = args.shift();
var reduction = args.reduce((sofar, next) => {
if (!isNode(next)) {
var last = sofar.pop();
if (isNode(last)) {
return [last, next];
}
try {
sofar.push(_eval(fn, [last, next], options));
return sofar;
} catch (ignoreandcontinue) {
sofar.push(last);
}
}
sofar.push(_ensureNode(sofar.pop()));
var newtree = sofar.length === 1 ? sofar[0] : makeNode(sofar);
return [makeNode([newtree, _ensureNode(next)])];
}, [first]);
if (reduction.length === 1) {
return reduction[0];
}
return makeNode([reduction[0], _toNode(reduction[1])]);
}
function foldFraction(node, options) {
switch (node.type) {
case "SymbolNode":
return node;
case "ConstantNode":
switch (typeof node.value) {
case "number":
return _toNumber(node.value, options);
case "string":
return node.value;
default:
if (!isNaN(node.value))
return _toNumber(node.value, options);
}
return node;
case "FunctionNode":
if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {
return node;
}
{
var operatorFunctions = ["add", "multiply"];
if (operatorFunctions.indexOf(node.name) === -1) {
var args = node.args.map((arg) => foldFraction(arg, options));
if (!args.some(isNode)) {
try {
return _eval(node.name, args, options);
} catch (ignoreandcontinue) {
}
}
if (node.name === "size" && args.length === 1 && isArrayNode(args[0])) {
var sz = [];
var section = args[0];
while (isArrayNode(section)) {
sz.push(section.items.length);
section = section.items[0];
}
return matrix(sz);
}
return new FunctionNode(node.name, args.map(_ensureNode));
} else {
}
}
case "OperatorNode": {
var fn = node.fn.toString();
var _args;
var res;
var makeNode = createMakeNodeFunction(node);
if (isOperatorNode(node) && node.isUnary()) {
_args = [foldFraction(node.args[0], options)];
if (!isNode(_args[0])) {
res = _eval(fn, _args, options);
} else {
res = makeNode(_args);
}
} else if (isAssociative(node, options.context)) {
_args = allChildren(node, options.context);
_args = _args.map((arg) => foldFraction(arg, options));
if (isCommutative(fn, options.context)) {
var consts = [];
var vars = [];
for (var i = 0; i < _args.length; i++) {
if (!isNode(_args[i])) {
consts.push(_args[i]);
} else {
vars.push(_args[i]);
}
}
if (consts.length > 1) {
res = foldOp(fn, consts, makeNode, options);
vars.unshift(res);
res = foldOp(fn, vars, makeNode, options);
} else {
res = foldOp(fn, _args, makeNode, options);
}
} else {
res = foldOp(fn, _args, makeNode, options);
}
} else {
_args = node.args.map((arg) => foldFraction(arg, options));
res = foldOp(fn, _args, makeNode, options);
}
return res;
}
case "ParenthesisNode":
return foldFraction(node.content, options);
case "AccessorNode":
return _foldAccessor(foldFraction(node.object, options), foldFraction(node.index, options), options);
case "ArrayNode": {
var foldItems = node.items.map((item) => foldFraction(item, options));
if (foldItems.some(isNode)) {
return new ArrayNode(foldItems.map(_ensureNode));
}
return matrix(foldItems);
}
case "IndexNode": {
return new IndexNode(node.dimensions.map((n) => simplifyConstant(n, options)));
}
case "ObjectNode": {
var foldProps = {};
for (var prop in node.properties) {
foldProps[prop] = simplifyConstant(node.properties[prop], options);
}
return new ObjectNode(foldProps);
}
case "AssignmentNode":
case "BlockNode":
case "FunctionAssignmentNode":
case "RangeNode":
case "ConditionalNode":
default:
throw new Error("Unimplemented node type in simplifyConstant: ".concat(node.type));
}
}
return simplifyConstant;
});
// node_modules/mathjs/lib/esm/function/algebra/simplifyCore.js
var name280 = "simplifyCore";
var dependencies280 = ["typed", "parse", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "ParenthesisNode", "SymbolNode"];
var createSimplifyCore = /* @__PURE__ */ factory(name280, dependencies280, (_ref) => {
var {
typed: typed2,
parse,
equal,
isZero,
add: add2,
subtract,
multiply,
divide: divide2,
pow: pow2,
AccessorNode,
ArrayNode,
ConstantNode,
FunctionNode,
IndexNode,
ObjectNode,
OperatorNode,
ParenthesisNode,
SymbolNode
} = _ref;
var node0 = new ConstantNode(0);
var node1 = new ConstantNode(1);
var nodeT = new ConstantNode(true);
var nodeF = new ConstantNode(false);
function isAlwaysBoolean(node) {
return isOperatorNode(node) && ["and", "not", "or"].includes(node.op);
}
var {
hasProperty,
isCommutative
} = createUtil({
FunctionNode,
OperatorNode,
SymbolNode
});
function _simplifyCore(nodeToSimplify) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var context = options ? options.context : void 0;
if (hasProperty(nodeToSimplify, "trivial", context)) {
if (isFunctionNode(nodeToSimplify) && nodeToSimplify.args.length === 1) {
return _simplifyCore(nodeToSimplify.args[0], options);
}
var simpChild = false;
var childCount = 0;
nodeToSimplify.forEach((c) => {
++childCount;
if (childCount === 1) {
simpChild = _simplifyCore(c, options);
}
});
if (childCount === 1) {
return simpChild;
}
}
var node = nodeToSimplify;
if (isFunctionNode(node)) {
var op = getOperator(node.name);
if (op) {
if (node.args.length > 2 && hasProperty(node, "associative", context)) {
while (node.args.length > 2) {
var last = node.args.pop();
var seclast = node.args.pop();
node.args.push(new OperatorNode(op, node.name, [last, seclast]));
}
}
node = new OperatorNode(op, node.name, node.args);
} else {
return new FunctionNode(_simplifyCore(node.fn), node.args.map((n) => _simplifyCore(n, options)));
}
}
if (isOperatorNode(node) && node.isUnary()) {
var a0 = _simplifyCore(node.args[0], options);
if (node.op === "~") {
if (isOperatorNode(a0) && a0.isUnary() && a0.op === "~") {
return a0.args[0];
}
}
if (node.op === "not") {
if (isOperatorNode(a0) && a0.isUnary() && a0.op === "not") {
if (isAlwaysBoolean(a0.args[0])) {
return a0.args[0];
}
}
}
var finish = true;
if (node.op === "-") {
if (isOperatorNode(a0)) {
if (a0.isBinary() && a0.fn === "subtract") {
node = new OperatorNode("-", "subtract", [a0.args[1], a0.args[0]]);
finish = false;
}
if (a0.isUnary() && a0.op === "-") {
return a0.args[0];
}
}
}
if (finish)
return new OperatorNode(node.op, node.fn, [a0]);
}
if (isOperatorNode(node) && node.isBinary()) {
var _a = _simplifyCore(node.args[0], options);
var a1 = _simplifyCore(node.args[1], options);
if (node.op === "+") {
if (isConstantNode(_a) && isZero(_a.value)) {
return a1;
}
if (isConstantNode(a1) && isZero(a1.value)) {
return _a;
}
if (isOperatorNode(a1) && a1.isUnary() && a1.op === "-") {
a1 = a1.args[0];
node = new OperatorNode("-", "subtract", [_a, a1]);
}
}
if (node.op === "-") {
if (isOperatorNode(a1) && a1.isUnary() && a1.op === "-") {
return _simplifyCore(new OperatorNode("+", "add", [_a, a1.args[0]]), options);
}
if (isConstantNode(_a) && isZero(_a.value)) {
return _simplifyCore(new OperatorNode("-", "unaryMinus", [a1]));
}
if (isConstantNode(a1) && isZero(a1.value)) {
return _a;
}
return new OperatorNode(node.op, node.fn, [_a, a1]);
}
if (node.op === "*") {
if (isConstantNode(_a)) {
if (isZero(_a.value)) {
return node0;
} else if (equal(_a.value, 1)) {
return a1;
}
}
if (isConstantNode(a1)) {
if (isZero(a1.value)) {
return node0;
} else if (equal(a1.value, 1)) {
return _a;
}
if (isCommutative(node, context)) {
return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit);
}
}
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
}
if (node.op === "/") {
if (isConstantNode(_a) && isZero(_a.value)) {
return node0;
}
if (isConstantNode(a1) && equal(a1.value, 1)) {
return _a;
}
return new OperatorNode(node.op, node.fn, [_a, a1]);
}
if (node.op === "^") {
if (isConstantNode(a1)) {
if (isZero(a1.value)) {
return node1;
} else if (equal(a1.value, 1)) {
return _a;
}
}
}
if (node.op === "and") {
if (isConstantNode(_a)) {
if (_a.value) {
if (isAlwaysBoolean(a1))
return a1;
} else {
return nodeF;
}
}
if (isConstantNode(a1)) {
if (a1.value) {
if (isAlwaysBoolean(_a))
return _a;
} else {
return nodeF;
}
}
}
if (node.op === "or") {
if (isConstantNode(_a)) {
if (_a.value) {
return nodeT;
} else {
if (isAlwaysBoolean(a1))
return a1;
}
}
if (isConstantNode(a1)) {
if (a1.value) {
return nodeT;
} else {
if (isAlwaysBoolean(_a))
return _a;
}
}
}
return new OperatorNode(node.op, node.fn, [_a, a1]);
}
if (isOperatorNode(node)) {
return new OperatorNode(node.op, node.fn, node.args.map((a) => _simplifyCore(a, options)));
}
if (isArrayNode(node)) {
return new ArrayNode(node.items.map((n) => _simplifyCore(n, options)));
}
if (isAccessorNode(node)) {
return new AccessorNode(_simplifyCore(node.object, options), _simplifyCore(node.index, options));
}
if (isIndexNode(node)) {
return new IndexNode(node.dimensions.map((n) => _simplifyCore(n, options)));
}
if (isObjectNode(node)) {
var newProps = {};
for (var prop in node.properties) {
newProps[prop] = _simplifyCore(node.properties[prop], options);
}
return new ObjectNode(newProps);
}
return node;
}
return typed2(name280, {
Node: _simplifyCore,
"Node,Object": _simplifyCore
});
});
// node_modules/mathjs/lib/esm/function/algebra/resolve.js
var name281 = "resolve";
var dependencies281 = ["typed", "parse", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode"];
var createResolve = /* @__PURE__ */ factory(name281, dependencies281, (_ref) => {
var {
typed: typed2,
parse,
ConstantNode,
FunctionNode,
OperatorNode,
ParenthesisNode
} = _ref;
function _resolve(node, scope) {
var within = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : /* @__PURE__ */ new Set();
if (!scope) {
return node;
}
if (isSymbolNode(node)) {
if (within.has(node.name)) {
var variables = Array.from(within).join(", ");
throw new ReferenceError("recursive loop of variable definitions among {".concat(variables, "}"));
}
var value = scope.get(node.name);
if (isNode(value)) {
var nextWithin = new Set(within);
nextWithin.add(node.name);
return _resolve(value, scope, nextWithin);
} else if (typeof value === "number") {
return parse(String(value));
} else if (value !== void 0) {
return new ConstantNode(value);
} else {
return node;
}
} else if (isOperatorNode(node)) {
var args = node.args.map(function(arg) {
return _resolve(arg, scope, within);
});
return new OperatorNode(node.op, node.fn, args, node.implicit);
} else if (isParenthesisNode(node)) {
return new ParenthesisNode(_resolve(node.content, scope, within));
} else if (isFunctionNode(node)) {
var _args = node.args.map(function(arg) {
return _resolve(arg, scope, within);
});
return new FunctionNode(node.name, _args);
}
return node.map((child) => _resolve(child, scope, within));
}
return typed2("resolve", {
Node: _resolve,
"Node, Map | null | undefined": _resolve,
"Node, Object": (n, scope) => _resolve(n, createMap(scope)),
// For arrays and matrices, we map `self` rather than `_resolve`
// because resolve is fairly expensive anyway, and this way
// we get nice error messages if one entry in the array has wrong type.
"Array | Matrix": typed2.referToSelf((self2) => (A) => A.map((n) => self2(n))),
"Array | Matrix, null | undefined": typed2.referToSelf((self2) => (A) => A.map((n) => self2(n))),
"Array, Object": typed2.referTo("Array,Map", (selfAM) => (A, scope) => selfAM(A, createMap(scope))),
"Matrix, Object": typed2.referTo("Matrix,Map", (selfMM) => (A, scope) => selfMM(A, createMap(scope))),
"Array | Matrix, Map": typed2.referToSelf((self2) => (A, scope) => A.map((n) => self2(n, scope)))
});
});
// node_modules/mathjs/lib/esm/function/algebra/symbolicEqual.js
var name282 = "symbolicEqual";
var dependencies282 = ["parse", "simplify", "typed", "OperatorNode"];
var createSymbolicEqual = /* @__PURE__ */ factory(name282, dependencies282, (_ref) => {
var {
parse,
simplify,
typed: typed2,
OperatorNode
} = _ref;
function _symbolicEqual(e1, e2) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var diff = new OperatorNode("-", "subtract", [e1, e2]);
var simplified = simplify(diff, {}, options);
return isConstantNode(simplified) && !simplified.value;
}
return typed2(name282, {
"Node, Node": _symbolicEqual,
"Node, Node, Object": _symbolicEqual
});
});
// node_modules/mathjs/lib/esm/function/algebra/derivative.js
var name283 = "derivative";
var dependencies283 = ["typed", "config", "parse", "simplify", "equal", "isZero", "numeric", "ConstantNode", "FunctionNode", "OperatorNode", "ParenthesisNode", "SymbolNode"];
var createDerivative = /* @__PURE__ */ factory(name283, dependencies283, (_ref) => {
var {
typed: typed2,
config: config2,
parse,
simplify,
equal,
isZero,
numeric: numeric2,
ConstantNode,
FunctionNode,
OperatorNode,
ParenthesisNode,
SymbolNode
} = _ref;
function plainDerivative(expr, variable) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
simplify: true
};
var constNodes = {};
constTag(constNodes, expr, variable.name);
var res = _derivative(expr, constNodes);
return options.simplify ? simplify(res) : res;
}
typed2.addConversion({
from: "identifier",
to: "SymbolNode",
convert: parse
});
var derivative = typed2(name283, {
"Node, SymbolNode": plainDerivative,
"Node, SymbolNode, Object": plainDerivative
/* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}
'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {
let res = expr
for (let i = 0; i < order; i++) {
let constNodes = {}
constTag(constNodes, expr, variable.name)
res = _derivative(res, constNodes)
}
return res
}
*/
});
typed2.removeConversion({
from: "identifier",
to: "SymbolNode",
convert: parse
});
derivative._simplify = true;
derivative.toTex = function(deriv) {
return _derivTex.apply(null, deriv.args);
};
var _derivTex = typed2("_derivTex", {
"Node, SymbolNode": function NodeSymbolNode(expr, x) {
if (isConstantNode(expr) && typeOf(expr.value) === "string") {
return _derivTex(parse(expr.value).toString(), x.toString(), 1);
} else {
return _derivTex(expr.toTex(), x.toString(), 1);
}
},
"Node, ConstantNode": function NodeConstantNode(expr, x) {
if (typeOf(x.value) === "string") {
return _derivTex(expr, parse(x.value));
} else {
throw new Error("The second parameter to 'derivative' is a non-string constant");
}
},
"Node, SymbolNode, ConstantNode": function NodeSymbolNodeConstantNode(expr, x, order) {
return _derivTex(expr.toString(), x.name, order.value);
},
"string, string, number": function stringStringNumber(expr, x, order) {
var d;
if (order === 1) {
d = "{d\\over d" + x + "}";
} else {
d = "{d^{" + order + "}\\over d" + x + "^{" + order + "}}";
}
return d + "\\left[".concat(expr, "\\right]");
}
});
var constTag = typed2("constTag", {
"Object, ConstantNode, string": function ObjectConstantNodeString(constNodes, node) {
constNodes[node] = true;
return true;
},
"Object, SymbolNode, string": function ObjectSymbolNodeString(constNodes, node, varName) {
if (node.name !== varName) {
constNodes[node] = true;
return true;
}
return false;
},
"Object, ParenthesisNode, string": function ObjectParenthesisNodeString(constNodes, node, varName) {
return constTag(constNodes, node.content, varName);
},
"Object, FunctionAssignmentNode, string": function ObjectFunctionAssignmentNodeString(constNodes, node, varName) {
if (node.params.indexOf(varName) === -1) {
constNodes[node] = true;
return true;
}
return constTag(constNodes, node.expr, varName);
},
"Object, FunctionNode | OperatorNode, string": function ObjectFunctionNodeOperatorNodeString(constNodes, node, varName) {
if (node.args.length > 0) {
var isConst = constTag(constNodes, node.args[0], varName);
for (var i = 1; i < node.args.length; ++i) {
isConst = constTag(constNodes, node.args[i], varName) && isConst;
}
if (isConst) {
constNodes[node] = true;
return true;
}
}
return false;
}
});
var _derivative = typed2("_derivative", {
"ConstantNode, Object": function ConstantNodeObject(node) {
return createConstantNode2(0);
},
"SymbolNode, Object": function SymbolNodeObject(node, constNodes) {
if (constNodes[node] !== void 0) {
return createConstantNode2(0);
}
return createConstantNode2(1);
},
"ParenthesisNode, Object": function ParenthesisNodeObject(node, constNodes) {
return new ParenthesisNode(_derivative(node.content, constNodes));
},
"FunctionAssignmentNode, Object": function FunctionAssignmentNodeObject(node, constNodes) {
if (constNodes[node] !== void 0) {
return createConstantNode2(0);
}
return _derivative(node.expr, constNodes);
},
"FunctionNode, Object": function FunctionNodeObject(node, constNodes) {
if (node.args.length !== 1) {
funcArgsCheck(node);
}
if (constNodes[node] !== void 0) {
return createConstantNode2(0);
}
var arg0 = node.args[0];
var arg1;
var div2 = false;
var negative = false;
var funcDerivative;
switch (node.name) {
case "cbrt":
div2 = true;
funcDerivative = new OperatorNode("*", "multiply", [createConstantNode2(3), new OperatorNode("^", "pow", [arg0, new OperatorNode("/", "divide", [createConstantNode2(2), createConstantNode2(3)])])]);
break;
case "sqrt":
case "nthRoot":
if (node.args.length === 1) {
div2 = true;
funcDerivative = new OperatorNode("*", "multiply", [createConstantNode2(2), new FunctionNode("sqrt", [arg0])]);
} else if (node.args.length === 2) {
arg1 = new OperatorNode("/", "divide", [createConstantNode2(1), node.args[1]]);
constNodes[arg1] = constNodes[node.args[1]];
return _derivative(new OperatorNode("^", "pow", [arg0, arg1]), constNodes);
}
break;
case "log10":
arg1 = createConstantNode2(10);
case "log":
if (!arg1 && node.args.length === 1) {
funcDerivative = arg0.clone();
div2 = true;
} else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== void 0) {
funcDerivative = new OperatorNode("*", "multiply", [arg0.clone(), new FunctionNode("log", [arg1 || node.args[1]])]);
div2 = true;
} else if (node.args.length === 2) {
return _derivative(new OperatorNode("/", "divide", [new FunctionNode("log", [arg0]), new FunctionNode("log", [node.args[1]])]), constNodes);
}
break;
case "pow":
constNodes[arg1] = constNodes[node.args[1]];
return _derivative(new OperatorNode("^", "pow", [arg0, node.args[1]]), constNodes);
case "exp":
funcDerivative = new FunctionNode("exp", [arg0.clone()]);
break;
case "sin":
funcDerivative = new FunctionNode("cos", [arg0.clone()]);
break;
case "cos":
funcDerivative = new OperatorNode("-", "unaryMinus", [new FunctionNode("sin", [arg0.clone()])]);
break;
case "tan":
funcDerivative = new OperatorNode("^", "pow", [new FunctionNode("sec", [arg0.clone()]), createConstantNode2(2)]);
break;
case "sec":
funcDerivative = new OperatorNode("*", "multiply", [node, new FunctionNode("tan", [arg0.clone()])]);
break;
case "csc":
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [node, new FunctionNode("cot", [arg0.clone()])]);
break;
case "cot":
negative = true;
funcDerivative = new OperatorNode("^", "pow", [new FunctionNode("csc", [arg0.clone()]), createConstantNode2(2)]);
break;
case "asin":
div2 = true;
funcDerivative = new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [createConstantNode2(1), new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)])])]);
break;
case "acos":
div2 = true;
negative = true;
funcDerivative = new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [createConstantNode2(1), new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)])])]);
break;
case "atan":
div2 = true;
funcDerivative = new OperatorNode("+", "add", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)]);
break;
case "asec":
div2 = true;
funcDerivative = new OperatorNode("*", "multiply", [new FunctionNode("abs", [arg0.clone()]), new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)])])]);
break;
case "acsc":
div2 = true;
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [new FunctionNode("abs", [arg0.clone()]), new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)])])]);
break;
case "acot":
div2 = true;
negative = true;
funcDerivative = new OperatorNode("+", "add", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)]);
break;
case "sinh":
funcDerivative = new FunctionNode("cosh", [arg0.clone()]);
break;
case "cosh":
funcDerivative = new FunctionNode("sinh", [arg0.clone()]);
break;
case "tanh":
funcDerivative = new OperatorNode("^", "pow", [new FunctionNode("sech", [arg0.clone()]), createConstantNode2(2)]);
break;
case "sech":
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [node, new FunctionNode("tanh", [arg0.clone()])]);
break;
case "csch":
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [node, new FunctionNode("coth", [arg0.clone()])]);
break;
case "coth":
negative = true;
funcDerivative = new OperatorNode("^", "pow", [new FunctionNode("csch", [arg0.clone()]), createConstantNode2(2)]);
break;
case "asinh":
div2 = true;
funcDerivative = new FunctionNode("sqrt", [new OperatorNode("+", "add", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)])]);
break;
case "acosh":
div2 = true;
funcDerivative = new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)])]);
break;
case "atanh":
div2 = true;
funcDerivative = new OperatorNode("-", "subtract", [createConstantNode2(1), new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)])]);
break;
case "asech":
div2 = true;
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [arg0.clone(), new FunctionNode("sqrt", [new OperatorNode("-", "subtract", [createConstantNode2(1), new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)])])])]);
break;
case "acsch":
div2 = true;
negative = true;
funcDerivative = new OperatorNode("*", "multiply", [new FunctionNode("abs", [arg0.clone()]), new FunctionNode("sqrt", [new OperatorNode("+", "add", [new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)]), createConstantNode2(1)])])]);
break;
case "acoth":
div2 = true;
negative = true;
funcDerivative = new OperatorNode("-", "subtract", [createConstantNode2(1), new OperatorNode("^", "pow", [arg0.clone(), createConstantNode2(2)])]);
break;
case "abs":
funcDerivative = new OperatorNode("/", "divide", [new FunctionNode(new SymbolNode("abs"), [arg0.clone()]), arg0.clone()]);
break;
case "gamma":
default:
throw new Error('Function "' + node.name + '" is not supported by derivative, or a wrong number of arguments is passed');
}
var op, func;
if (div2) {
op = "/";
func = "divide";
} else {
op = "*";
func = "multiply";
}
var chainDerivative = _derivative(arg0, constNodes);
if (negative) {
chainDerivative = new OperatorNode("-", "unaryMinus", [chainDerivative]);
}
return new OperatorNode(op, func, [chainDerivative, funcDerivative]);
},
"OperatorNode, Object": function OperatorNodeObject(node, constNodes) {
if (constNodes[node] !== void 0) {
return createConstantNode2(0);
}
if (node.op === "+") {
return new OperatorNode(node.op, node.fn, node.args.map(function(arg) {
return _derivative(arg, constNodes);
}));
}
if (node.op === "-") {
if (node.isUnary()) {
return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);
}
if (node.isBinary()) {
return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);
}
}
if (node.op === "*") {
var constantTerms = node.args.filter(function(arg) {
return constNodes[arg] !== void 0;
});
if (constantTerms.length > 0) {
var nonConstantTerms = node.args.filter(function(arg) {
return constNodes[arg] === void 0;
});
var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode("*", "multiply", nonConstantTerms);
var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));
return new OperatorNode("*", "multiply", newArgs);
}
return new OperatorNode("+", "add", node.args.map(function(argOuter) {
return new OperatorNode("*", "multiply", node.args.map(function(argInner) {
return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();
}));
}));
}
if (node.op === "/" && node.isBinary()) {
var arg0 = node.args[0];
var arg1 = node.args[1];
if (constNodes[arg1] !== void 0) {
return new OperatorNode("/", "divide", [_derivative(arg0, constNodes), arg1]);
}
if (constNodes[arg0] !== void 0) {
return new OperatorNode("*", "multiply", [new OperatorNode("-", "unaryMinus", [arg0]), new OperatorNode("/", "divide", [_derivative(arg1, constNodes), new OperatorNode("^", "pow", [arg1.clone(), createConstantNode2(2)])])]);
}
return new OperatorNode("/", "divide", [new OperatorNode("-", "subtract", [new OperatorNode("*", "multiply", [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode("*", "multiply", [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode("^", "pow", [arg1.clone(), createConstantNode2(2)])]);
}
if (node.op === "^" && node.isBinary()) {
var _arg = node.args[0];
var _arg2 = node.args[1];
if (constNodes[_arg] !== void 0) {
if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {
return createConstantNode2(0);
}
return new OperatorNode("*", "multiply", [node, new OperatorNode("*", "multiply", [new FunctionNode("log", [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);
}
if (constNodes[_arg2] !== void 0) {
if (isConstantNode(_arg2)) {
if (isZero(_arg2.value)) {
return createConstantNode2(0);
}
if (equal(_arg2.value, 1)) {
return _derivative(_arg, constNodes);
}
}
var powMinusOne = new OperatorNode("^", "pow", [_arg.clone(), new OperatorNode("-", "subtract", [_arg2, createConstantNode2(1)])]);
return new OperatorNode("*", "multiply", [_arg2.clone(), new OperatorNode("*", "multiply", [_derivative(_arg, constNodes), powMinusOne])]);
}
return new OperatorNode("*", "multiply", [new OperatorNode("^", "pow", [_arg.clone(), _arg2.clone()]), new OperatorNode("+", "add", [new OperatorNode("*", "multiply", [_derivative(_arg, constNodes), new OperatorNode("/", "divide", [_arg2.clone(), _arg.clone()])]), new OperatorNode("*", "multiply", [_derivative(_arg2, constNodes), new FunctionNode("log", [_arg.clone()])])])]);
}
throw new Error('Operator "' + node.op + '" is not supported by derivative, or a wrong number of arguments is passed');
}
});
function funcArgsCheck(node) {
if ((node.name === "log" || node.name === "nthRoot" || node.name === "pow") && node.args.length === 2) {
return;
}
for (var i = 0; i < node.args.length; ++i) {
node.args[i] = createConstantNode2(0);
}
node.compile().evaluate();
throw new Error('Function "' + node.name + '" is not supported by derivative, or a wrong number of arguments is passed');
}
function createConstantNode2(value, valueType) {
return new ConstantNode(numeric2(value, valueType || config2.number));
}
return derivative;
});
// node_modules/mathjs/lib/esm/function/algebra/rationalize.js
var name284 = "rationalize";
var dependencies284 = ["config", "typed", "equal", "isZero", "add", "subtract", "multiply", "divide", "pow", "parse", "simplifyConstant", "simplifyCore", "simplify", "?bignumber", "?fraction", "mathWithTransform", "matrix", "AccessorNode", "ArrayNode", "ConstantNode", "FunctionNode", "IndexNode", "ObjectNode", "OperatorNode", "SymbolNode", "ParenthesisNode"];
var createRationalize = /* @__PURE__ */ factory(name284, dependencies284, (_ref) => {
var {
config: config2,
typed: typed2,
equal,
isZero,
add: add2,
subtract,
multiply,
divide: divide2,
pow: pow2,
parse,
simplifyConstant,
simplifyCore,
simplify,
fraction,
bignumber,
mathWithTransform,
matrix,
AccessorNode,
ArrayNode,
ConstantNode,
FunctionNode,
IndexNode,
ObjectNode,
OperatorNode,
SymbolNode,
ParenthesisNode
} = _ref;
function _rationalize(expr) {
var scope = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var detailed = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var setRules = rulesRationalize();
var polyRet = polynomial(expr, scope, true, setRules.firstRules);
var nVars = polyRet.variables.length;
var noExactFractions = {
exactFractions: false
};
var withExactFractions = {
exactFractions: true
};
expr = polyRet.expression;
if (nVars >= 1) {
expr = expandPower(expr);
var sBefore;
var rules;
var eDistrDiv = true;
var redoInic = false;
expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
var s;
while (true) {
rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
expr = simplify(expr, rules, {}, withExactFractions);
eDistrDiv = !eDistrDiv;
s = expr.toString();
if (s === sBefore) {
break;
}
redoInic = true;
sBefore = s;
}
if (redoInic) {
expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
}
expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
}
var coefficients = [];
var retRationalize = {};
if (expr.type === "OperatorNode" && expr.isBinary() && expr.op === "/") {
if (nVars === 1) {
expr.args[0] = polyToCanonical(expr.args[0], coefficients);
expr.args[1] = polyToCanonical(expr.args[1]);
}
if (detailed) {
retRationalize.numerator = expr.args[0];
retRationalize.denominator = expr.args[1];
}
} else {
if (nVars === 1) {
expr = polyToCanonical(expr, coefficients);
}
if (detailed) {
retRationalize.numerator = expr;
retRationalize.denominator = null;
}
}
if (!detailed)
return expr;
retRationalize.coefficients = coefficients;
retRationalize.variables = polyRet.variables;
retRationalize.expression = expr;
return retRationalize;
}
return typed2(name284, {
Node: _rationalize,
"Node, boolean": (expr, detailed) => _rationalize(expr, {}, detailed),
"Node, Object": _rationalize,
"Node, Object, boolean": _rationalize
});
function polynomial(expr, scope, extended, rules) {
var variables = [];
var node = simplify(expr, rules, scope, {
exactFractions: false
});
extended = !!extended;
var oper = "+-*" + (extended ? "/" : "");
recPoly(node);
var retFunc = {};
retFunc.expression = node;
retFunc.variables = variables;
return retFunc;
function recPoly(node2) {
var tp = node2.type;
if (tp === "FunctionNode") {
throw new Error("There is an unsolved function call");
} else if (tp === "OperatorNode") {
if (node2.op === "^") {
if (node2.args[1].type !== "ConstantNode" || !isInteger(parseFloat(node2.args[1].value))) {
throw new Error("There is a non-integer exponent");
} else {
recPoly(node2.args[0]);
}
} else {
if (oper.indexOf(node2.op) === -1) {
throw new Error("Operator " + node2.op + " invalid in polynomial expression");
}
for (var i = 0; i < node2.args.length; i++) {
recPoly(node2.args[i]);
}
}
} else if (tp === "SymbolNode") {
var _name = node2.name;
var pos = variables.indexOf(_name);
if (pos === -1) {
variables.push(_name);
}
} else if (tp === "ParenthesisNode") {
recPoly(node2.content);
} else if (tp !== "ConstantNode") {
throw new Error("type " + tp + " is not allowed in polynomial expression");
}
}
}
function rulesRationalize() {
var oldRules = [
simplifyCore,
// sCore
{
l: "n+n",
r: "2*n"
},
{
l: "n+-n",
r: "0"
},
simplifyConstant,
// sConstant
{
l: "n*(n1^-1)",
r: "n/n1"
},
{
l: "n*n1^-n2",
r: "n/n1^n2"
},
{
l: "n1^-1",
r: "1/n1"
},
{
l: "n*(n1/n2)",
r: "(n*n1)/n2"
},
{
l: "1*n",
r: "n"
}
];
var rulesFirst = [
{
l: "(-n1)/(-n2)",
r: "n1/n2"
},
// Unary division
{
l: "(-n1)*(-n2)",
r: "n1*n2"
},
// Unary multiplication
{
l: "n1--n2",
r: "n1+n2"
},
// '--' elimination
{
l: "n1-n2",
r: "n1+(-n2)"
},
// Subtraction turn into add with un�ry minus
{
l: "(n1+n2)*n3",
r: "(n1*n3 + n2*n3)"
},
// Distributive 1
{
l: "n1*(n2+n3)",
r: "(n1*n2+n1*n3)"
},
// Distributive 2
{
l: "c1*n + c2*n",
r: "(c1+c2)*n"
},
// Joining constants
{
l: "c1*n + n",
r: "(c1+1)*n"
},
// Joining constants
{
l: "c1*n - c2*n",
r: "(c1-c2)*n"
},
// Joining constants
{
l: "c1*n - n",
r: "(c1-1)*n"
},
// Joining constants
{
l: "v/c",
r: "(1/c)*v"
},
// variable/constant (new!)
{
l: "v/-c",
r: "-(1/c)*v"
},
// variable/constant (new!)
{
l: "-v*-c",
r: "c*v"
},
// Inversion constant and variable 1
{
l: "-v*c",
r: "-c*v"
},
// Inversion constant and variable 2
{
l: "v*-c",
r: "-c*v"
},
// Inversion constant and variable 3
{
l: "v*c",
r: "c*v"
},
// Inversion constant and variable 4
{
l: "-(-n1*n2)",
r: "(n1*n2)"
},
// Unary propagation
{
l: "-(n1*n2)",
r: "(-n1*n2)"
},
// Unary propagation
{
l: "-(-n1+n2)",
r: "(n1-n2)"
},
// Unary propagation
{
l: "-(n1+n2)",
r: "(-n1-n2)"
},
// Unary propagation
{
l: "(n1^n2)^n3",
r: "(n1^(n2*n3))"
},
// Power to Power
{
l: "-(-n1/n2)",
r: "(n1/n2)"
},
// Division and Unary
{
l: "-(n1/n2)",
r: "(-n1/n2)"
}
];
var rulesDistrDiv = [
{
l: "(n1/n2 + n3/n4)",
r: "((n1*n4 + n3*n2)/(n2*n4))"
},
// Sum of fractions
{
l: "(n1/n2 + n3)",
r: "((n1 + n3*n2)/n2)"
},
// Sum fraction with number 1
{
l: "(n1 + n2/n3)",
r: "((n1*n3 + n2)/n3)"
}
];
var rulesSucDiv = [
{
l: "(n1/(n2/n3))",
r: "((n1*n3)/n2)"
},
// Division simplification
{
l: "(n1/n2/n3)",
r: "(n1/(n2*n3))"
}
];
var setRules = {};
setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv);
setRules.distrDivRules = rulesDistrDiv;
setRules.sucDivRules = rulesSucDiv;
setRules.firstRulesAgain = oldRules.concat(rulesFirst);
setRules.finalRules = [
simplifyCore,
// simplify.rules[0]
{
l: "n*-n",
r: "-n^2"
},
// Joining multiply with power 1
{
l: "n*n",
r: "n^2"
},
// Joining multiply with power 2
simplifyConstant,
// simplify.rules[14] old 3rd index in oldRules
{
l: "n*-n^n1",
r: "-n^(n1+1)"
},
// Joining multiply with power 3
{
l: "n*n^n1",
r: "n^(n1+1)"
},
// Joining multiply with power 4
{
l: "n^n1*-n^n2",
r: "-n^(n1+n2)"
},
// Joining multiply with power 5
{
l: "n^n1*n^n2",
r: "n^(n1+n2)"
},
// Joining multiply with power 6
{
l: "n^n1*-n",
r: "-n^(n1+1)"
},
// Joining multiply with power 7
{
l: "n^n1*n",
r: "n^(n1+1)"
},
// Joining multiply with power 8
{
l: "n^n1/-n",
r: "-n^(n1-1)"
},
// Joining multiply with power 8
{
l: "n^n1/n",
r: "n^(n1-1)"
},
// Joining division with power 1
{
l: "n/-n^n1",
r: "-n^(1-n1)"
},
// Joining division with power 2
{
l: "n/n^n1",
r: "n^(1-n1)"
},
// Joining division with power 3
{
l: "n^n1/-n^n2",
r: "n^(n1-n2)"
},
// Joining division with power 4
{
l: "n^n1/n^n2",
r: "n^(n1-n2)"
},
// Joining division with power 5
{
l: "n1+(-n2*n3)",
r: "n1-n2*n3"
},
// Solving useless parenthesis 1
{
l: "v*(-c)",
r: "-c*v"
},
// Solving useless unary 2
{
l: "n1+-n2",
r: "n1-n2"
},
// Solving +- together (new!)
{
l: "v*c",
r: "c*v"
},
// inversion constant with variable
{
l: "(n1^n2)^n3",
r: "(n1^(n2*n3))"
}
// Power to Power
];
return setRules;
}
function expandPower(node, parent, indParent) {
var tp = node.type;
var internal = arguments.length > 1;
if (tp === "OperatorNode" && node.isBinary()) {
var does = false;
var val;
if (node.op === "^") {
if ((node.args[0].type === "ParenthesisNode" || node.args[0].type === "OperatorNode") && node.args[1].type === "ConstantNode") {
val = parseFloat(node.args[1].value);
does = val >= 2 && isInteger(val);
}
}
if (does) {
if (val > 2) {
var nEsqTopo = node.args[0];
var nDirTopo = new OperatorNode("^", "pow", [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);
node = new OperatorNode("*", "multiply", [nEsqTopo, nDirTopo]);
} else {
node = new OperatorNode("*", "multiply", [node.args[0], node.args[0].cloneDeep()]);
}
if (internal) {
if (indParent === "content") {
parent.content = node;
} else {
parent.args[indParent] = node;
}
}
}
}
if (tp === "ParenthesisNode") {
expandPower(node.content, node, "content");
} else if (tp !== "ConstantNode" && tp !== "SymbolNode") {
for (var i = 0; i < node.args.length; i++) {
expandPower(node.args[i], node, i);
}
}
if (!internal) {
return node;
}
}
function polyToCanonical(node, coefficients) {
if (coefficients === void 0) {
coefficients = [];
}
coefficients[0] = 0;
var o = {};
o.cte = 1;
o.oper = "+";
o.fire = "";
var maxExpo = 0;
var varname = "";
recurPol(node, null, o);
maxExpo = coefficients.length - 1;
var first = true;
var no;
for (var i = maxExpo; i >= 0; i--) {
if (coefficients[i] === 0)
continue;
var n16 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));
var op = coefficients[i] < 0 ? "-" : "+";
if (i > 0) {
var n25 = new SymbolNode(varname);
if (i > 1) {
var n3 = new ConstantNode(i);
n25 = new OperatorNode("^", "pow", [n25, n3]);
}
if (coefficients[i] === -1 && first) {
n16 = new OperatorNode("-", "unaryMinus", [n25]);
} else if (Math.abs(coefficients[i]) === 1) {
n16 = n25;
} else {
n16 = new OperatorNode("*", "multiply", [n16, n25]);
}
}
if (first) {
no = n16;
} else if (op === "+") {
no = new OperatorNode("+", "add", [no, n16]);
} else {
no = new OperatorNode("-", "subtract", [no, n16]);
}
first = false;
}
if (first) {
return new ConstantNode(0);
} else {
return no;
}
function recurPol(node2, noPai, o2) {
var tp = node2.type;
if (tp === "FunctionNode") {
throw new Error("There is an unsolved function call");
} else if (tp === "OperatorNode") {
if ("+-*^".indexOf(node2.op) === -1)
throw new Error("Operator " + node2.op + " invalid");
if (noPai !== null) {
if ((node2.fn === "unaryMinus" || node2.fn === "pow") && noPai.fn !== "add" && noPai.fn !== "subtract" && noPai.fn !== "multiply") {
throw new Error("Invalid " + node2.op + " placing");
}
if ((node2.fn === "subtract" || node2.fn === "add" || node2.fn === "multiply") && noPai.fn !== "add" && noPai.fn !== "subtract") {
throw new Error("Invalid " + node2.op + " placing");
}
if ((node2.fn === "subtract" || node2.fn === "add" || node2.fn === "unaryMinus") && o2.noFil !== 0) {
throw new Error("Invalid " + node2.op + " placing");
}
}
if (node2.op === "^" || node2.op === "*") {
o2.fire = node2.op;
}
for (var _i = 0; _i < node2.args.length; _i++) {
if (node2.fn === "unaryMinus")
o2.oper = "-";
if (node2.op === "+" || node2.fn === "subtract") {
o2.fire = "";
o2.cte = 1;
o2.oper = _i === 0 ? "+" : node2.op;
}
o2.noFil = _i;
recurPol(node2.args[_i], node2, o2);
}
} else if (tp === "SymbolNode") {
if (node2.name !== varname && varname !== "") {
throw new Error("There is more than one variable");
}
varname = node2.name;
if (noPai === null) {
coefficients[1] = 1;
return;
}
if (noPai.op === "^" && o2.noFil !== 0) {
throw new Error("In power the variable should be the first parameter");
}
if (noPai.op === "*" && o2.noFil !== 1) {
throw new Error("In multiply the variable should be the second parameter");
}
if (o2.fire === "" || o2.fire === "*") {
if (maxExpo < 1)
coefficients[1] = 0;
coefficients[1] += o2.cte * (o2.oper === "+" ? 1 : -1);
maxExpo = Math.max(1, maxExpo);
}
} else if (tp === "ConstantNode") {
var valor = parseFloat(node2.value);
if (noPai === null) {
coefficients[0] = valor;
return;
}
if (noPai.op === "^") {
if (o2.noFil !== 1)
throw new Error("Constant cannot be powered");
if (!isInteger(valor) || valor <= 0) {
throw new Error("Non-integer exponent is not allowed");
}
for (var _i2 = maxExpo + 1; _i2 < valor; _i2++)
coefficients[_i2] = 0;
if (valor > maxExpo)
coefficients[valor] = 0;
coefficients[valor] += o2.cte * (o2.oper === "+" ? 1 : -1);
maxExpo = Math.max(valor, maxExpo);
return;
}
o2.cte = valor;
if (o2.fire === "") {
coefficients[0] += o2.cte * (o2.oper === "+" ? 1 : -1);
}
} else {
throw new Error("Type " + tp + " is not allowed");
}
}
}
});
// node_modules/mathjs/lib/esm/function/signal/zpk2tf.js
var name285 = "zpk2tf";
var dependencies285 = ["typed", "add", "multiply", "Complex", "number"];
var createZpk2tf = /* @__PURE__ */ factory(name285, dependencies285, (_ref) => {
var {
typed: typed2,
add: add2,
multiply,
Complex: Complex2,
number
} = _ref;
return typed2(name285, {
"Array,Array,number": function ArrayArrayNumber(z, p, k) {
return _zpk2tf(z, p, k);
},
"Array,Array": function ArrayArray(z, p) {
return _zpk2tf(z, p, 1);
},
"Matrix,Matrix,number": function MatrixMatrixNumber(z, p, k) {
return _zpk2tf(z.valueOf(), p.valueOf(), k);
},
"Matrix,Matrix": function MatrixMatrix(z, p) {
return _zpk2tf(z.valueOf(), p.valueOf(), 1);
}
});
function _zpk2tf(z, p, k) {
if (z.some((el) => el.type === "BigNumber")) {
z = z.map((el) => number(el));
}
if (p.some((el) => el.type === "BigNumber")) {
p = p.map((el) => number(el));
}
var num = [Complex2(1, 0)];
var den = [Complex2(1, 0)];
for (var i = 0; i < z.length; i++) {
var zero = z[i];
if (typeof zero === "number")
zero = Complex2(zero, 0);
num = _multiply(num, [Complex2(1, 0), Complex2(-zero.re, -zero.im)]);
}
for (var _i = 0; _i < p.length; _i++) {
var pole = p[_i];
if (typeof pole === "number")
pole = Complex2(pole, 0);
den = _multiply(den, [Complex2(1, 0), Complex2(-pole.re, -pole.im)]);
}
for (var _i2 = 0; _i2 < num.length; _i2++) {
num[_i2] = multiply(num[_i2], k);
}
return [num, den];
}
function _multiply(a, b) {
var c = [];
for (var i = 0; i < a.length + b.length - 1; i++) {
c[i] = Complex2(0, 0);
for (var j = 0; j < a.length; j++) {
if (i - j >= 0 && i - j < b.length) {
c[i] = add2(c[i], multiply(a[j], b[i - j]));
}
}
}
return c;
}
});
// node_modules/mathjs/lib/esm/function/signal/freqz.js
var name286 = "freqz";
var dependencies286 = ["typed", "add", "multiply", "Complex", "divide", "matrix"];
var createFreqz = /* @__PURE__ */ factory(name286, dependencies286, (_ref) => {
var {
typed: typed2,
add: add2,
multiply,
Complex: Complex2,
divide: divide2,
matrix
} = _ref;
return typed2(name286, {
"Array, Array": function ArrayArray(b, a) {
var w = createBins(512);
return _freqz(b, a, w);
},
"Array, Array, Array": function ArrayArrayArray(b, a, w) {
return _freqz(b, a, w);
},
"Array, Array, number": function ArrayArrayNumber(b, a, w) {
if (w < 0) {
throw new Error("w must be a positive number");
}
var w2 = createBins(w);
return _freqz(b, a, w2);
},
"Matrix, Matrix": function MatrixMatrix(b, a) {
var _w = createBins(512);
var {
w,
h
} = _freqz(b.valueOf(), a.valueOf(), _w);
return {
w: matrix(w),
h: matrix(h)
};
},
"Matrix, Matrix, Matrix": function MatrixMatrixMatrix(b, a, w) {
var {
h
} = _freqz(b.valueOf(), a.valueOf(), w.valueOf());
return {
h: matrix(h),
w: matrix(w)
};
},
"Matrix, Matrix, number": function MatrixMatrixNumber(b, a, w) {
if (w < 0) {
throw new Error("w must be a positive number");
}
var _w = createBins(w);
var {
h
} = _freqz(b.valueOf(), a.valueOf(), _w);
return {
h: matrix(h),
w: matrix(_w)
};
}
});
function _freqz(b, a, w) {
var num = [];
var den = [];
for (var i = 0; i < w.length; i++) {
var sumNum = Complex2(0, 0);
var sumDen = Complex2(0, 0);
for (var j = 0; j < b.length; j++) {
sumNum = add2(sumNum, multiply(b[j], Complex2(Math.cos(-j * w[i]), Math.sin(-j * w[i]))));
}
for (var _j = 0; _j < a.length; _j++) {
sumDen = add2(sumDen, multiply(a[_j], Complex2(Math.cos(-_j * w[i]), Math.sin(-_j * w[i]))));
}
num.push(sumNum);
den.push(sumDen);
}
var h = [];
for (var _i = 0; _i < num.length; _i++) {
h.push(divide2(num[_i], den[_i]));
}
return {
h,
w
};
}
function createBins(n) {
var bins = [];
for (var i = 0; i < n; i++) {
bins.push(i / n * Math.PI);
}
return bins;
}
});
// node_modules/mathjs/lib/esm/json/reviver.js
var name287 = "reviver";
var dependencies287 = ["classes"];
var createReviver = /* @__PURE__ */ factory(name287, dependencies287, (_ref) => {
var {
classes
} = _ref;
return function reviver(key, value) {
var constructor = classes[value && value.mathjs];
if (constructor && typeof constructor.fromJSON === "function") {
return constructor.fromJSON(value);
}
return value;
};
});
// node_modules/mathjs/lib/esm/json/replacer.js
var name288 = "replacer";
var dependencies288 = [];
var createReplacer = /* @__PURE__ */ factory(name288, dependencies288, () => {
return function replacer(key, value) {
if (typeof value === "number" && (!isFinite(value) || isNaN(value))) {
return {
mathjs: "number",
value: String(value)
};
}
return value;
};
});
// node_modules/mathjs/lib/esm/version.js
var version = "11.11.2";
// node_modules/mathjs/lib/esm/constants.js
var createTrue = /* @__PURE__ */ factory("true", [], () => true);
var createFalse = /* @__PURE__ */ factory("false", [], () => false);
var createNull = /* @__PURE__ */ factory("null", [], () => null);
var createInfinity = /* @__PURE__ */ recreateFactory("Infinity", ["config", "?BigNumber"], (_ref) => {
var {
config: config2,
BigNumber
} = _ref;
return config2.number === "BigNumber" ? new BigNumber(Infinity) : Infinity;
});
var createNaN = /* @__PURE__ */ recreateFactory("NaN", ["config", "?BigNumber"], (_ref2) => {
var {
config: config2,
BigNumber
} = _ref2;
return config2.number === "BigNumber" ? new BigNumber(NaN) : NaN;
});
var createPi = /* @__PURE__ */ recreateFactory("pi", ["config", "?BigNumber"], (_ref3) => {
var {
config: config2,
BigNumber
} = _ref3;
return config2.number === "BigNumber" ? createBigNumberPi(BigNumber) : pi;
});
var createTau = /* @__PURE__ */ recreateFactory("tau", ["config", "?BigNumber"], (_ref4) => {
var {
config: config2,
BigNumber
} = _ref4;
return config2.number === "BigNumber" ? createBigNumberTau(BigNumber) : tau;
});
var createE = /* @__PURE__ */ recreateFactory("e", ["config", "?BigNumber"], (_ref5) => {
var {
config: config2,
BigNumber
} = _ref5;
return config2.number === "BigNumber" ? createBigNumberE(BigNumber) : e;
});
var createPhi = /* @__PURE__ */ recreateFactory("phi", ["config", "?BigNumber"], (_ref6) => {
var {
config: config2,
BigNumber
} = _ref6;
return config2.number === "BigNumber" ? createBigNumberPhi(BigNumber) : phi;
});
var createLN2 = /* @__PURE__ */ recreateFactory("LN2", ["config", "?BigNumber"], (_ref7) => {
var {
config: config2,
BigNumber
} = _ref7;
return config2.number === "BigNumber" ? new BigNumber(2).ln() : Math.LN2;
});
var createLN10 = /* @__PURE__ */ recreateFactory("LN10", ["config", "?BigNumber"], (_ref8) => {
var {
config: config2,
BigNumber
} = _ref8;
return config2.number === "BigNumber" ? new BigNumber(10).ln() : Math.LN10;
});
var createLOG2E = /* @__PURE__ */ recreateFactory("LOG2E", ["config", "?BigNumber"], (_ref9) => {
var {
config: config2,
BigNumber
} = _ref9;
return config2.number === "BigNumber" ? new BigNumber(1).div(new BigNumber(2).ln()) : Math.LOG2E;
});
var createLOG10E = /* @__PURE__ */ recreateFactory("LOG10E", ["config", "?BigNumber"], (_ref10) => {
var {
config: config2,
BigNumber
} = _ref10;
return config2.number === "BigNumber" ? new BigNumber(1).div(new BigNumber(10).ln()) : Math.LOG10E;
});
var createSQRT1_2 = /* @__PURE__ */ recreateFactory(
// eslint-disable-line camelcase
"SQRT1_2",
["config", "?BigNumber"],
(_ref11) => {
var {
config: config2,
BigNumber
} = _ref11;
return config2.number === "BigNumber" ? new BigNumber("0.5").sqrt() : Math.SQRT1_2;
}
);
var createSQRT2 = /* @__PURE__ */ recreateFactory("SQRT2", ["config", "?BigNumber"], (_ref12) => {
var {
config: config2,
BigNumber
} = _ref12;
return config2.number === "BigNumber" ? new BigNumber(2).sqrt() : Math.SQRT2;
});
var createI = /* @__PURE__ */ recreateFactory("i", ["Complex"], (_ref13) => {
var {
Complex: Complex2
} = _ref13;
return Complex2.I;
});
var createUppercasePi = /* @__PURE__ */ factory("PI", ["pi"], (_ref14) => {
var {
pi: pi2
} = _ref14;
return pi2;
});
var createUppercaseE = /* @__PURE__ */ factory("E", ["e"], (_ref15) => {
var {
e: e2
} = _ref15;
return e2;
});
var createVersion = /* @__PURE__ */ factory("version", [], () => version);
function recreateFactory(name309, dependencies309, create2) {
return factory(name309, dependencies309, create2, {
recreateOnConfigChange: true
});
}
// node_modules/mathjs/lib/esm/type/unit/physicalConstants.js
var createSpeedOfLight = /* @__PURE__ */ unitFactory("speedOfLight", "299792458", "m s^-1");
var createGravitationConstant = /* @__PURE__ */ unitFactory("gravitationConstant", "6.67430e-11", "m^3 kg^-1 s^-2");
var createPlanckConstant = /* @__PURE__ */ unitFactory("planckConstant", "6.62607015e-34", "J s");
var createReducedPlanckConstant = /* @__PURE__ */ unitFactory("reducedPlanckConstant", "1.0545718176461565e-34", "J s");
var createMagneticConstant = /* @__PURE__ */ unitFactory("magneticConstant", "1.25663706212e-6", "N A^-2");
var createElectricConstant = /* @__PURE__ */ unitFactory("electricConstant", "8.8541878128e-12", "F m^-1");
var createVacuumImpedance = /* @__PURE__ */ unitFactory("vacuumImpedance", "376.730313667", "ohm");
var createCoulomb = /* @__PURE__ */ unitFactory("coulomb", "8.987551792261171e9", "N m^2 C^-2");
var createElementaryCharge = /* @__PURE__ */ unitFactory("elementaryCharge", "1.602176634e-19", "C");
var createBohrMagneton = /* @__PURE__ */ unitFactory("bohrMagneton", "9.2740100783e-24", "J T^-1");
var createConductanceQuantum = /* @__PURE__ */ unitFactory("conductanceQuantum", "7.748091729863649e-5", "S");
var createInverseConductanceQuantum = /* @__PURE__ */ unitFactory("inverseConductanceQuantum", "12906.403729652257", "ohm");
var createMagneticFluxQuantum = /* @__PURE__ */ unitFactory("magneticFluxQuantum", "2.0678338484619295e-15", "Wb");
var createNuclearMagneton = /* @__PURE__ */ unitFactory("nuclearMagneton", "5.0507837461e-27", "J T^-1");
var createKlitzing = /* @__PURE__ */ unitFactory("klitzing", "25812.807459304513", "ohm");
var createBohrRadius = /* @__PURE__ */ unitFactory("bohrRadius", "5.29177210903e-11", "m");
var createClassicalElectronRadius = /* @__PURE__ */ unitFactory("classicalElectronRadius", "2.8179403262e-15", "m");
var createElectronMass = /* @__PURE__ */ unitFactory("electronMass", "9.1093837015e-31", "kg");
var createFermiCoupling = /* @__PURE__ */ unitFactory("fermiCoupling", "1.1663787e-5", "GeV^-2");
var createFineStructure = numberFactory("fineStructure", 0.0072973525693);
var createHartreeEnergy = /* @__PURE__ */ unitFactory("hartreeEnergy", "4.3597447222071e-18", "J");
var createProtonMass = /* @__PURE__ */ unitFactory("protonMass", "1.67262192369e-27", "kg");
var createDeuteronMass = /* @__PURE__ */ unitFactory("deuteronMass", "3.3435830926e-27", "kg");
var createNeutronMass = /* @__PURE__ */ unitFactory("neutronMass", "1.6749271613e-27", "kg");
var createQuantumOfCirculation = /* @__PURE__ */ unitFactory("quantumOfCirculation", "3.6369475516e-4", "m^2 s^-1");
var createRydberg = /* @__PURE__ */ unitFactory("rydberg", "10973731.568160", "m^-1");
var createThomsonCrossSection = /* @__PURE__ */ unitFactory("thomsonCrossSection", "6.6524587321e-29", "m^2");
var createWeakMixingAngle = numberFactory("weakMixingAngle", 0.2229);
var createEfimovFactor = numberFactory("efimovFactor", 22.7);
var createAtomicMass = /* @__PURE__ */ unitFactory("atomicMass", "1.66053906660e-27", "kg");
var createAvogadro = /* @__PURE__ */ unitFactory("avogadro", "6.02214076e23", "mol^-1");
var createBoltzmann = /* @__PURE__ */ unitFactory("boltzmann", "1.380649e-23", "J K^-1");
var createFaraday = /* @__PURE__ */ unitFactory("faraday", "96485.33212331001", "C mol^-1");
var createFirstRadiation = /* @__PURE__ */ unitFactory("firstRadiation", "3.7417718521927573e-16", "W m^2");
var createLoschmidt = /* @__PURE__ */ unitFactory("loschmidt", "2.686780111798444e25", "m^-3");
var createGasConstant = /* @__PURE__ */ unitFactory("gasConstant", "8.31446261815324", "J K^-1 mol^-1");
var createMolarPlanckConstant = /* @__PURE__ */ unitFactory("molarPlanckConstant", "3.990312712893431e-10", "J s mol^-1");
var createMolarVolume = /* @__PURE__ */ unitFactory("molarVolume", "0.022413969545014137", "m^3 mol^-1");
var createSackurTetrode = numberFactory("sackurTetrode", -1.16487052358);
var createSecondRadiation = /* @__PURE__ */ unitFactory("secondRadiation", "0.014387768775039337", "m K");
var createStefanBoltzmann = /* @__PURE__ */ unitFactory("stefanBoltzmann", "5.67037441918443e-8", "W m^-2 K^-4");
var createWienDisplacement = /* @__PURE__ */ unitFactory("wienDisplacement", "2.897771955e-3", "m K");
var createMolarMass = /* @__PURE__ */ unitFactory("molarMass", "0.99999999965e-3", "kg mol^-1");
var createMolarMassC12 = /* @__PURE__ */ unitFactory("molarMassC12", "11.9999999958e-3", "kg mol^-1");
var createGravity = /* @__PURE__ */ unitFactory("gravity", "9.80665", "m s^-2");
var createPlanckLength = /* @__PURE__ */ unitFactory("planckLength", "1.616255e-35", "m");
var createPlanckMass = /* @__PURE__ */ unitFactory("planckMass", "2.176435e-8", "kg");
var createPlanckTime = /* @__PURE__ */ unitFactory("planckTime", "5.391245e-44", "s");
var createPlanckCharge = /* @__PURE__ */ unitFactory("planckCharge", "1.87554603778e-18", "C");
var createPlanckTemperature = /* @__PURE__ */ unitFactory("planckTemperature", "1.416785e+32", "K");
function unitFactory(name309, valueStr, unitStr) {
var dependencies309 = ["config", "Unit", "BigNumber"];
return factory(name309, dependencies309, (_ref) => {
var {
config: config2,
Unit,
BigNumber
} = _ref;
var value = config2.number === "BigNumber" ? new BigNumber(valueStr) : parseFloat(valueStr);
var unit = new Unit(value, unitStr);
unit.fixPrefix = true;
return unit;
});
}
function numberFactory(name309, value) {
var dependencies309 = ["config", "BigNumber"];
return factory(name309, dependencies309, (_ref2) => {
var {
config: config2,
BigNumber
} = _ref2;
return config2.number === "BigNumber" ? new BigNumber(value) : value;
});
}
// node_modules/mathjs/lib/esm/expression/transform/apply.transform.js
var name289 = "apply";
var dependencies289 = ["typed", "isInteger"];
var createApplyTransform = /* @__PURE__ */ factory(name289, dependencies289, (_ref) => {
var {
typed: typed2,
isInteger: isInteger2
} = _ref;
var apply = createApply({
typed: typed2,
isInteger: isInteger2
});
return typed2("apply", {
"...any": function any(args) {
var dim = args[1];
if (isNumber(dim)) {
args[1] = dim - 1;
} else if (isBigNumber(dim)) {
args[1] = dim.minus(1);
}
try {
return apply.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/column.transform.js
var name290 = "column";
var dependencies290 = ["typed", "Index", "matrix", "range"];
var createColumnTransform = /* @__PURE__ */ factory(name290, dependencies290, (_ref) => {
var {
typed: typed2,
Index,
matrix,
range
} = _ref;
var column = createColumn({
typed: typed2,
Index,
matrix,
range
});
return typed2("column", {
"...any": function any(args) {
var lastIndex = args.length - 1;
var last = args[lastIndex];
if (isNumber(last)) {
args[lastIndex] = last - 1;
}
try {
return column.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/utils/compileInlineExpression.js
function compileInlineExpression(expression, math2, scope) {
var symbol = expression.filter(function(node) {
return isSymbolNode(node) && !(node.name in math2) && !scope.has(node.name);
})[0];
if (!symbol) {
throw new Error('No undefined variable found in inline expression "' + expression + '"');
}
var name309 = symbol.name;
var subScope = createSubScope(scope);
var eq = expression.compile();
return function inlineExpression(x) {
subScope.set(name309, x);
return eq.evaluate(subScope);
};
}
// node_modules/mathjs/lib/esm/expression/transform/filter.transform.js
var name291 = "filter";
var dependencies291 = ["typed"];
var createFilterTransform = /* @__PURE__ */ factory(name291, dependencies291, (_ref) => {
var {
typed: typed2
} = _ref;
function filterTransform(args, math2, scope) {
var x, callback;
if (args[0]) {
x = args[0].compile().evaluate(scope);
}
if (args[1]) {
if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {
callback = args[1].compile().evaluate(scope);
} else {
callback = compileInlineExpression(args[1], math2, scope);
}
}
return filter2(x, callback);
}
filterTransform.rawArgs = true;
var filter2 = typed2("filter", {
"Array, function": _filter,
"Matrix, function": function MatrixFunction(x, test) {
return x.create(_filter(x.toArray(), test));
},
"Array, RegExp": filterRegExp,
"Matrix, RegExp": function MatrixRegExp(x, test) {
return x.create(filterRegExp(x.toArray(), test));
}
});
return filterTransform;
}, {
isTransformFunction: true
});
function _filter(x, callback) {
return filter(x, function(value, index, array) {
return applyCallback(callback, value, [index + 1], array, "filter");
});
}
// node_modules/mathjs/lib/esm/expression/transform/forEach.transform.js
var name292 = "forEach";
var dependencies292 = ["typed"];
var createForEachTransform = /* @__PURE__ */ factory(name292, dependencies292, (_ref) => {
var {
typed: typed2
} = _ref;
function forEachTransform(args, math2, scope) {
var x, callback;
if (args[0]) {
x = args[0].compile().evaluate(scope);
}
if (args[1]) {
if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {
callback = args[1].compile().evaluate(scope);
} else {
callback = compileInlineExpression(args[1], math2, scope);
}
}
return _forEach2(x, callback);
}
forEachTransform.rawArgs = true;
var _forEach2 = typed2("forEach", {
"Array | Matrix, function": function ArrayMatrixFunction(array, callback) {
var recurse = function recurse2(value, index) {
if (Array.isArray(value)) {
forEach(value, function(child, i) {
recurse2(child, index.concat(i + 1));
});
} else {
return applyCallback(callback, value, index, array, "forEach");
}
};
recurse(array.valueOf(), []);
}
});
return forEachTransform;
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/index.transform.js
var name293 = "index";
var dependencies293 = ["Index", "getMatrixDataType"];
var createIndexTransform = /* @__PURE__ */ factory(name293, dependencies293, (_ref) => {
var {
Index,
getMatrixDataType
} = _ref;
return function indexTransform() {
var args = [];
for (var i = 0, ii = arguments.length; i < ii; i++) {
var arg = arguments[i];
if (isRange(arg)) {
arg.start--;
arg.end -= arg.step > 0 ? 0 : 2;
} else if (arg && arg.isSet === true) {
arg = arg.map(function(v) {
return v - 1;
});
} else if (isArray(arg) || isMatrix(arg)) {
if (getMatrixDataType(arg) !== "boolean") {
arg = arg.map(function(v) {
return v - 1;
});
}
} else if (isNumber(arg)) {
arg--;
} else if (isBigNumber(arg)) {
arg = arg.toNumber() - 1;
} else if (typeof arg === "string") {
} else {
throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");
}
args[i] = arg;
}
var res = new Index();
Index.apply(res, args);
return res;
};
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/map.transform.js
var name294 = "map";
var dependencies294 = ["typed"];
var createMapTransform = /* @__PURE__ */ factory(name294, dependencies294, (_ref) => {
var {
typed: typed2
} = _ref;
function mapTransform(args, math2, scope) {
var x, callback;
if (args[0]) {
x = args[0].compile().evaluate(scope);
}
if (args[1]) {
if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {
callback = args[1].compile().evaluate(scope);
} else {
callback = compileInlineExpression(args[1], math2, scope);
}
}
return map2(x, callback);
}
mapTransform.rawArgs = true;
var map2 = typed2("map", {
"Array, function": function ArrayFunction(x, callback) {
return _map2(x, callback, x);
},
"Matrix, function": function MatrixFunction(x, callback) {
return x.create(_map2(x.valueOf(), callback, x));
}
});
return mapTransform;
}, {
isTransformFunction: true
});
function _map2(array, callback, orig) {
function recurse(value, index) {
if (Array.isArray(value)) {
return map(value, function(child, i) {
return recurse(child, index.concat(i + 1));
});
} else {
return applyCallback(callback, value, index, orig, "map");
}
}
return recurse(array, []);
}
// node_modules/mathjs/lib/esm/expression/transform/utils/lastDimToZeroBase.js
function lastDimToZeroBase(args) {
if (args.length === 2 && isCollection(args[0])) {
args = args.slice();
var dim = args[1];
if (isNumber(dim)) {
args[1] = dim - 1;
} else if (isBigNumber(dim)) {
args[1] = dim.minus(1);
}
}
return args;
}
// node_modules/mathjs/lib/esm/expression/transform/max.transform.js
var name295 = "max";
var dependencies295 = ["typed", "config", "numeric", "larger"];
var createMaxTransform = /* @__PURE__ */ factory(name295, dependencies295, (_ref) => {
var {
typed: typed2,
config: config2,
numeric: numeric2,
larger
} = _ref;
var max2 = createMax({
typed: typed2,
config: config2,
numeric: numeric2,
larger
});
return typed2("max", {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return max2.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/mean.transform.js
var name296 = "mean";
var dependencies296 = ["typed", "add", "divide"];
var createMeanTransform = /* @__PURE__ */ factory(name296, dependencies296, (_ref) => {
var {
typed: typed2,
add: add2,
divide: divide2
} = _ref;
var mean = createMean({
typed: typed2,
add: add2,
divide: divide2
});
return typed2("mean", {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return mean.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/min.transform.js
var name297 = "min";
var dependencies297 = ["typed", "config", "numeric", "smaller"];
var createMinTransform = /* @__PURE__ */ factory(name297, dependencies297, (_ref) => {
var {
typed: typed2,
config: config2,
numeric: numeric2,
smaller
} = _ref;
var min2 = createMin({
typed: typed2,
config: config2,
numeric: numeric2,
smaller
});
return typed2("min", {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return min2.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/range.transform.js
var name298 = "range";
var dependencies298 = ["typed", "config", "?matrix", "?bignumber", "smaller", "smallerEq", "larger", "largerEq", "add", "isPositive"];
var createRangeTransform = /* @__PURE__ */ factory(name298, dependencies298, (_ref) => {
var {
typed: typed2,
config: config2,
matrix,
bignumber,
smaller,
smallerEq,
larger,
largerEq,
add: add2,
isPositive
} = _ref;
var range = createRange({
typed: typed2,
config: config2,
matrix,
bignumber,
smaller,
smallerEq,
larger,
largerEq,
add: add2,
isPositive
});
return typed2("range", {
"...any": function any(args) {
var lastIndex = args.length - 1;
var last = args[lastIndex];
if (typeof last !== "boolean") {
args.push(true);
}
return range.apply(null, args);
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/row.transform.js
var name299 = "row";
var dependencies299 = ["typed", "Index", "matrix", "range"];
var createRowTransform = /* @__PURE__ */ factory(name299, dependencies299, (_ref) => {
var {
typed: typed2,
Index,
matrix,
range
} = _ref;
var row = createRow({
typed: typed2,
Index,
matrix,
range
});
return typed2("row", {
"...any": function any(args) {
var lastIndex = args.length - 1;
var last = args[lastIndex];
if (isNumber(last)) {
args[lastIndex] = last - 1;
}
try {
return row.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/subset.transform.js
var name300 = "subset";
var dependencies300 = ["typed", "matrix", "zeros", "add"];
var createSubsetTransform = /* @__PURE__ */ factory(name300, dependencies300, (_ref) => {
var {
typed: typed2,
matrix,
zeros: zeros2,
add: add2
} = _ref;
var subset = createSubset({
typed: typed2,
matrix,
zeros: zeros2,
add: add2
});
return typed2("subset", {
"...any": function any(args) {
try {
return subset.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/concat.transform.js
var name301 = "concat";
var dependencies301 = ["typed", "matrix", "isInteger"];
var createConcatTransform = /* @__PURE__ */ factory(name301, dependencies301, (_ref) => {
var {
typed: typed2,
matrix,
isInteger: isInteger2
} = _ref;
var concat2 = createConcat({
typed: typed2,
matrix,
isInteger: isInteger2
});
return typed2("concat", {
"...any": function any(args) {
var lastIndex = args.length - 1;
var last = args[lastIndex];
if (isNumber(last)) {
args[lastIndex] = last - 1;
} else if (isBigNumber(last)) {
args[lastIndex] = last.minus(1);
}
try {
return concat2.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/diff.transform.js
var name302 = "diff";
var dependencies302 = ["typed", "matrix", "subtract", "number", "bignumber"];
var createDiffTransform = /* @__PURE__ */ factory(name302, dependencies302, (_ref) => {
var {
typed: typed2,
matrix,
subtract,
number,
bignumber
} = _ref;
var diff = createDiff({
typed: typed2,
matrix,
subtract,
number,
bignumber
});
return typed2(name302, {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return diff.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/std.transform.js
var name303 = "std";
var dependencies303 = ["typed", "map", "sqrt", "variance"];
var createStdTransform = /* @__PURE__ */ factory(name303, dependencies303, (_ref) => {
var {
typed: typed2,
map: map2,
sqrt: sqrt2,
variance
} = _ref;
var std = createStd({
typed: typed2,
map: map2,
sqrt: sqrt2,
variance
});
return typed2("std", {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return std.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/sum.transform.js
var name304 = "sum";
var dependencies304 = ["typed", "config", "add", "numeric"];
var createSumTransform = /* @__PURE__ */ factory(name304, dependencies304, (_ref) => {
var {
typed: typed2,
config: config2,
add: add2,
numeric: numeric2
} = _ref;
var sum2 = createSum({
typed: typed2,
config: config2,
add: add2,
numeric: numeric2
});
return typed2(name304, {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return sum2.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/quantileSeq.transform.js
var name305 = "quantileSeq";
var dependencies305 = ["typed", "bignumber", "add", "subtract", "divide", "multiply", "partitionSelect", "compare", "isInteger", "smaller", "smallerEq", "larger"];
var createQuantileSeqTransform = /* @__PURE__ */ factory(name305, dependencies305, (_ref) => {
var {
typed: typed2,
bignumber,
add: add2,
subtract,
divide: divide2,
multiply,
partitionSelect,
compare,
isInteger: isInteger2,
smaller,
smallerEq,
larger
} = _ref;
var quantileSeq = createQuantileSeq({
typed: typed2,
bignumber,
add: add2,
subtract,
divide: divide2,
multiply,
partitionSelect,
compare,
isInteger: isInteger2,
smaller,
smallerEq,
larger
});
return typed2("quantileSeq", {
"Array | Matrix, number | BigNumber": quantileSeq,
"Array | Matrix, number | BigNumber, number": (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),
"Array | Matrix, number | BigNumber, boolean": quantileSeq,
"Array | Matrix, number | BigNumber, boolean, number": (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim)),
"Array | Matrix, Array | Matrix": quantileSeq,
"Array | Matrix, Array | Matrix, number": (data, prob, dim) => quantileSeq(data, prob, dimToZeroBase(dim)),
"Array | Matrix, Array | Matrix, boolean": quantileSeq,
"Array | Matrix, Array | Matrix, boolean, number": (data, prob, sorted, dim) => quantileSeq(data, prob, sorted, dimToZeroBase(dim))
});
function dimToZeroBase(dim) {
return lastDimToZeroBase([[], dim])[1];
}
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/cumsum.transform.js
var name306 = "cumsum";
var dependencies306 = ["typed", "add", "unaryPlus"];
var createCumSumTransform = /* @__PURE__ */ factory(name306, dependencies306, (_ref) => {
var {
typed: typed2,
add: add2,
unaryPlus
} = _ref;
var cumsum = createCumSum({
typed: typed2,
add: add2,
unaryPlus
});
return typed2(name306, {
"...any": function any(args) {
if (args.length === 2 && isCollection(args[0])) {
var dim = args[1];
if (isNumber(dim)) {
args[1] = dim - 1;
} else if (isBigNumber(dim)) {
args[1] = dim.minus(1);
}
}
try {
return cumsum.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/variance.transform.js
var name307 = "variance";
var dependencies307 = ["typed", "add", "subtract", "multiply", "divide", "apply", "isNaN"];
var createVarianceTransform = /* @__PURE__ */ factory(name307, dependencies307, (_ref) => {
var {
typed: typed2,
add: add2,
subtract,
multiply,
divide: divide2,
apply,
isNaN: isNaN2
} = _ref;
var variance = createVariance({
typed: typed2,
add: add2,
subtract,
multiply,
divide: divide2,
apply,
isNaN: isNaN2
});
return typed2(name307, {
"...any": function any(args) {
args = lastDimToZeroBase(args);
try {
return variance.apply(null, args);
} catch (err) {
throw errorTransform(err);
}
}
});
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/expression/transform/print.transform.js
var name308 = "print";
var dependencies308 = ["typed", "matrix", "zeros", "add"];
var createPrintTransform = /* @__PURE__ */ factory(name308, dependencies308, (_ref) => {
var {
typed: typed2,
matrix,
zeros: zeros2,
add: add2
} = _ref;
var print = createPrint({
typed: typed2,
matrix,
zeros: zeros2,
add: add2
});
return typed2(name308, {
"string, Object | Array": function stringObjectArray(template, values2) {
return print(_convertTemplateToZeroBasedIndex(template), values2);
},
"string, Object | Array, number | Object": function stringObjectArrayNumberObject(template, values2, options) {
return print(_convertTemplateToZeroBasedIndex(template), values2, options);
}
});
function _convertTemplateToZeroBasedIndex(template) {
return template.replace(printTemplate, (x) => {
var parts = x.slice(1).split(".");
var result = parts.map(function(part) {
if (!isNaN(part) && part.length > 0) {
return parseInt(part) - 1;
} else {
return part;
}
});
return "$" + result.join(".");
});
}
}, {
isTransformFunction: true
});
// node_modules/mathjs/lib/esm/entry/allFactoriesAny.js
var all = factoriesAny_exports;
// node_modules/mathjs/lib/esm/core/create.js
var import_typed_function3 = __toESM(require_typed_function(), 1);
// node_modules/mathjs/lib/esm/utils/emitter.js
var import_tiny_emitter = __toESM(require_tiny_emitter(), 1);
function mixin(obj) {
var emitter = new import_tiny_emitter.default();
obj.on = emitter.on.bind(emitter);
obj.off = emitter.off.bind(emitter);
obj.once = emitter.once.bind(emitter);
obj.emit = emitter.emit.bind(emitter);
return obj;
}
// node_modules/mathjs/lib/esm/core/function/import.js
function importFactory(typed2, load, math2, importedFactories) {
function mathImport(functions, options) {
var num = arguments.length;
if (num !== 1 && num !== 2) {
throw new ArgumentsError("import", num, 1, 2);
}
if (!options) {
options = {};
}
function flattenImports(flatValues2, value2, name310) {
if (Array.isArray(value2)) {
value2.forEach((item) => flattenImports(flatValues2, item));
} else if (typeof value2 === "object") {
for (var _name in value2) {
if (hasOwnProperty(value2, _name)) {
flattenImports(flatValues2, value2[_name], _name);
}
}
} else if (isFactory(value2) || name310 !== void 0) {
var flatName = isFactory(value2) ? isTransformFunctionFactory(value2) ? value2.fn + ".transform" : value2.fn : name310;
if (hasOwnProperty(flatValues2, flatName) && flatValues2[flatName] !== value2 && !options.silent) {
throw new Error('Cannot import "' + flatName + '" twice');
}
flatValues2[flatName] = value2;
} else {
if (!options.silent) {
throw new TypeError("Factory, Object, or Array expected");
}
}
}
var flatValues = {};
flattenImports(flatValues, functions);
for (var name309 in flatValues) {
if (hasOwnProperty(flatValues, name309)) {
var value = flatValues[name309];
if (isFactory(value)) {
_importFactory(value, options);
} else if (isSupportedType(value)) {
_import(name309, value, options);
} else {
if (!options.silent) {
throw new TypeError("Factory, Object, or Array expected");
}
}
}
}
}
function _import(name309, value, options) {
if (options.wrap && typeof value === "function") {
value = _wrap(value);
}
if (hasTypedFunctionSignature(value)) {
value = typed2(name309, {
[value.signature]: value
});
}
if (typed2.isTypedFunction(math2[name309]) && typed2.isTypedFunction(value)) {
if (options.override) {
value = typed2(name309, value.signatures);
} else {
value = typed2(math2[name309], value);
}
math2[name309] = value;
delete importedFactories[name309];
_importTransform(name309, value);
math2.emit("import", name309, function resolver() {
return value;
});
return;
}
if (math2[name309] === void 0 || options.override) {
math2[name309] = value;
delete importedFactories[name309];
_importTransform(name309, value);
math2.emit("import", name309, function resolver() {
return value;
});
return;
}
if (!options.silent) {
throw new Error('Cannot import "' + name309 + '": already exists');
}
}
function _importTransform(name309, value) {
if (value && typeof value.transform === "function") {
math2.expression.transform[name309] = value.transform;
if (allowedInExpressions(name309)) {
math2.expression.mathWithTransform[name309] = value.transform;
}
} else {
delete math2.expression.transform[name309];
if (allowedInExpressions(name309)) {
math2.expression.mathWithTransform[name309] = value;
}
}
}
function _deleteTransform(name309) {
delete math2.expression.transform[name309];
if (allowedInExpressions(name309)) {
math2.expression.mathWithTransform[name309] = math2[name309];
} else {
delete math2.expression.mathWithTransform[name309];
}
}
function _wrap(fn) {
var wrapper = function wrapper2() {
var args = [];
for (var i = 0, len = arguments.length; i < len; i++) {
var arg = arguments[i];
args[i] = arg && arg.valueOf();
}
return fn.apply(math2, args);
};
if (fn.transform) {
wrapper.transform = fn.transform;
}
return wrapper;
}
function _importFactory(factory2, options) {
var name309 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : factory2.fn;
if (contains2(name309, ".")) {
throw new Error("Factory name should not contain a nested path. Name: " + JSON.stringify(name309));
}
var namespace = isTransformFunctionFactory(factory2) ? math2.expression.transform : math2;
var existingTransform = name309 in math2.expression.transform;
var existing = hasOwnProperty(namespace, name309) ? namespace[name309] : void 0;
var resolver = function resolver2() {
var dependencies309 = {};
factory2.dependencies.map(stripOptionalNotation).forEach((dependency) => {
if (contains2(dependency, ".")) {
throw new Error("Factory dependency should not contain a nested path. Name: " + JSON.stringify(dependency));
}
if (dependency === "math") {
dependencies309.math = math2;
} else if (dependency === "mathWithTransform") {
dependencies309.mathWithTransform = math2.expression.mathWithTransform;
} else if (dependency === "classes") {
dependencies309.classes = math2;
} else {
dependencies309[dependency] = math2[dependency];
}
});
var instance = /* @__PURE__ */ factory2(dependencies309);
if (instance && typeof instance.transform === "function") {
throw new Error('Transforms cannot be attached to factory functions. Please create a separate function for it with exports.path="expression.transform"');
}
if (existing === void 0 || options.override) {
return instance;
}
if (typed2.isTypedFunction(existing) && typed2.isTypedFunction(instance)) {
return typed2(existing, instance);
}
if (options.silent) {
return existing;
} else {
throw new Error('Cannot import "' + name309 + '": already exists');
}
};
if (!factory2.meta || factory2.meta.lazy !== false) {
lazy(namespace, name309, resolver);
if (existing && existingTransform) {
_deleteTransform(name309);
} else {
if (isTransformFunctionFactory(factory2) || factoryAllowedInExpressions(factory2)) {
lazy(math2.expression.mathWithTransform, name309, () => namespace[name309]);
}
}
} else {
namespace[name309] = resolver();
if (existing && existingTransform) {
_deleteTransform(name309);
} else {
if (isTransformFunctionFactory(factory2) || factoryAllowedInExpressions(factory2)) {
lazy(math2.expression.mathWithTransform, name309, () => namespace[name309]);
}
}
}
importedFactories[name309] = factory2;
math2.emit("import", name309, resolver);
}
function isSupportedType(object) {
return typeof object === "function" || typeof object === "number" || typeof object === "string" || typeof object === "boolean" || object === null || isUnit(object) || isComplex(object) || isBigNumber(object) || isFraction(object) || isMatrix(object) || Array.isArray(object);
}
function hasTypedFunctionSignature(fn) {
return typeof fn === "function" && typeof fn.signature === "string";
}
function allowedInExpressions(name309) {
return !hasOwnProperty(unsafe, name309);
}
function factoryAllowedInExpressions(factory2) {
return factory2.fn.indexOf(".") === -1 && // FIXME: make checking on path redundant, check on meta data instead
!hasOwnProperty(unsafe, factory2.fn) && (!factory2.meta || !factory2.meta.isClass);
}
function isTransformFunctionFactory(factory2) {
return factory2 !== void 0 && factory2.meta !== void 0 && factory2.meta.isTransformFunction === true || false;
}
var unsafe = {
expression: true,
type: true,
docs: true,
error: true,
json: true,
chain: true
// chain method not supported. Note that there is a unit chain too.
};
return mathImport;
}
// node_modules/mathjs/lib/esm/core/create.js
function create(factories, config2) {
var configInternal = _extends({}, DEFAULT_CONFIG, config2);
if (typeof Object.create !== "function") {
throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");
}
var math2 = mixin({
// only here for backward compatibility for legacy factory functions
isNumber,
isComplex,
isBigNumber,
isFraction,
isUnit,
isString,
isArray,
isMatrix,
isCollection,
isDenseMatrix,
isSparseMatrix,
isRange,
isIndex,
isBoolean,
isResultSet,
isHelp,
isFunction,
isDate,
isRegExp,
isObject,
isNull,
isUndefined,
isAccessorNode,
isArrayNode,
isAssignmentNode,
isBlockNode,
isConditionalNode,
isConstantNode,
isFunctionAssignmentNode,
isFunctionNode,
isIndexNode,
isNode,
isObjectNode,
isOperatorNode,
isParenthesisNode,
isRangeNode,
isRelationalNode,
isSymbolNode,
isChain
});
math2.config = configFactory(configInternal, math2.emit);
math2.expression = {
transform: {},
mathWithTransform: {
config: math2.config
}
};
var legacyFactories = [];
var legacyInstances = [];
function load(factory2) {
if (isFactory(factory2)) {
return factory2(math2);
}
var firstProperty = factory2[Object.keys(factory2)[0]];
if (isFactory(firstProperty)) {
return firstProperty(math2);
}
if (!isLegacyFactory(factory2)) {
console.warn("Factory object with properties `type`, `name`, and `factory` expected", factory2);
throw new Error("Factory object with properties `type`, `name`, and `factory` expected");
}
var index = legacyFactories.indexOf(factory2);
var instance;
if (index === -1) {
if (factory2.math === true) {
instance = factory2.factory(math2.type, configInternal, load, math2.typed, math2);
} else {
instance = factory2.factory(math2.type, configInternal, load, math2.typed);
}
legacyFactories.push(factory2);
legacyInstances.push(instance);
} else {
instance = legacyInstances[index];
}
return instance;
}
var importedFactories = {};
function lazyTyped() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return math2.typed.apply(math2.typed, args);
}
lazyTyped.isTypedFunction = import_typed_function3.default.isTypedFunction;
var internalImport = importFactory(lazyTyped, load, math2, importedFactories);
math2.import = internalImport;
math2.on("config", () => {
values(importedFactories).forEach((factory2) => {
if (factory2 && factory2.meta && factory2.meta.recreateOnConfigChange) {
internalImport(factory2, {
override: true
});
}
});
});
math2.create = create.bind(null, factories);
math2.factory = factory;
math2.import(values(deepFlatten(factories)));
math2.ArgumentsError = ArgumentsError;
math2.DimensionError = DimensionError;
math2.IndexError = IndexError;
return math2;
}
// src/table-evaluator.ts
var debug = false;
var math = create(all);
math.import({
format: function(value, precision) {
if (typeof value === "number") {
if (precision >= 0) {
const cappedPrecision = Math.min(precision, 15);
const formatted = value.toFixed(cappedPrecision);
const rounded = parseFloat(formatted);
const hasMorePrecision = rounded !== value;
if (hasMorePrecision) {
return formatted;
} else {
return formatted.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, "");
}
}
return value.toString();
}
return String(value);
},
scientific: function(value, precision = 2) {
if (typeof value === "number") {
const formatted = value.toExponential(precision);
return formatted.replace(/(\.\d*?)0+(e[+-]?\d+)$/, "$1$2").replace(/\.(e[+-]?\d+)$/, "$1");
}
return String(value);
},
sum: function(...args) {
const flattened = args.flat(Infinity);
const filtered = flattened.filter((v) => {
if (v === null || v === void 0)
return false;
if (v === 0)
return false;
return true;
});
if (filtered.length === 0)
return 0;
const expression = filtered.join(" + ");
try {
return math.evaluate(expression);
} catch (e2) {
return filtered.reduce((sum2, val) => {
const num = typeof val === "number" ? val : parseFloat(val);
return sum2 + (isNaN(num) ? 0 : num);
}, 0);
}
}
}, { override: true });
var evaluate = math.evaluate;
var InfiniteLoop = class extends Error {
constructor(message) {
super(message);
this.name = "InfiniteLoop";
}
};
var TableEvaluator = class {
constructor() {
this.tableData = [];
this.formulaData = [];
this.celltype = [];
this.cellstatus = [];
this.errors = [];
this.parents = [];
this.children = [];
this.maxcols = 0;
this.maxrows = 0;
this.useBool = false;
}
parseLocaleNumber(str) {
const decimal = this.settings.decimalSeparator || ".";
const grouping = this.settings.groupingSeparator || ",";
const normalized = String(str).replace(new RegExp("\\" + grouping.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), "").replace(decimal, ".");
return parseFloat(normalized);
}
evaluateTable(gridData, settings) {
this.settings = settings || {
decimalSeparator: ".",
groupingSeparator: ","
};
this.tableData = [];
this.formulaData = [];
this.celltype = [];
this.cellstatus = [];
this.errors = [];
this.parents = [];
this.children = [];
this.maxcols = 0;
this.maxrows = 0;
this.initializeArrays(gridData);
this.parseGridData(gridData);
this.computeAllCells();
return {
values: this.tableData,
errors: this.errors,
cellTypes: this.celltype
};
}
initializeArrays(gridData) {
var _a;
this.maxrows = gridData.length;
this.maxcols = ((_a = gridData[0]) == null ? void 0 : _a.length) || 0;
for (let rowIndex = 0; rowIndex < this.maxrows; rowIndex++) {
this.tableData[rowIndex] = [];
this.formulaData[rowIndex] = [];
this.celltype[rowIndex] = [];
this.cellstatus[rowIndex] = [];
this.errors[rowIndex] = [];
this.parents[rowIndex] = [];
this.children[rowIndex] = [];
for (let colIndex = 0; colIndex < this.maxcols; colIndex++) {
this.cellstatus[rowIndex][colIndex] = 1 /* none */;
this.errors[rowIndex][colIndex] = null;
this.parents[rowIndex][colIndex] = [];
this.children[rowIndex][colIndex] = [];
this.tableData[rowIndex][colIndex] = null;
}
}
}
parseGridData(gridData) {
var _a;
for (let rowIndex = 0; rowIndex < this.maxrows; rowIndex++) {
for (let colIndex = 0; colIndex < this.maxcols; colIndex++) {
const cellContent = ((_a = gridData[rowIndex]) == null ? void 0 : _a[colIndex]) || "";
if (cellContent.startsWith("'=")) {
this.formulaData[rowIndex][colIndex] = null;
this.cellstatus[rowIndex][colIndex] = 3 /* iscomputed */;
this.celltype[rowIndex][colIndex] = 4 /* escaped_text */;
this.tableData[rowIndex][colIndex] = cellContent.substring(1);
} else if (cellContent.startsWith("=")) {
this.formulaData[rowIndex][colIndex] = cellContent;
this.cellstatus[rowIndex][colIndex] = 1 /* none */;
this.celltype[rowIndex][colIndex] = 2 /* formula */;
this.tableData[rowIndex][colIndex] = cellContent;
} else if (cellContent === "") {
this.formulaData[rowIndex][colIndex] = null;
this.cellstatus[rowIndex][colIndex] = 3 /* iscomputed */;
this.celltype[rowIndex][colIndex] = 1 /* number */;
this.tableData[rowIndex][colIndex] = null;
} else {
this.formulaData[rowIndex][colIndex] = null;
this.cellstatus[rowIndex][colIndex] = 3 /* iscomputed */;
this.celltype[rowIndex][colIndex] = 1 /* number */;
const parsed = this.parseUnitValue(cellContent);
if (parsed.unit) {
this.tableData[rowIndex][colIndex] = cellContent;
} else if (!isNaN(parsed.value) && isFinite(parsed.value)) {
this.tableData[rowIndex][colIndex] = parsed.value;
} else {
this.tableData[rowIndex][colIndex] = cellContent;
}
}
}
}
}
computeAllCells() {
for (let i = 0; i < this.tableData.length; i++) {
for (let j = 0; j < this.tableData[i].length; j++) {
try {
this.getValueByCoordinates(i, j);
} catch (error) {
console.log(error);
}
}
}
}
bool2nr(value) {
return typeof value === "boolean" ? +value : value;
}
cords2ref(row, col) {
const colStr = String.fromCharCode("a".charCodeAt(0) + col);
return colStr + (row + 1);
}
ref2cords(ref, formulaRow = 0, formulaCol = 0) {
const match = ref.match(/^([a-z]+|([+-]?)\d+c)(\d+|([+-]?)\d+r)$/);
if (!match) {
this.errors[formulaRow][formulaCol] = "invalid cell reference";
return null;
}
const [, colPart, altColPart, rowPart, altRowPart] = match;
let col, row;
if (colPart && colPart[0].match(/[a-z]/)) {
col = this.letter2col(colPart);
} else if (colPart.endsWith("c")) {
col = parseInt(colPart.replace("c", "")) + (altColPart ? formulaCol : -1);
} else {
col = parseInt(colPart);
}
if (rowPart && rowPart.includes("r")) {
const rw = parseInt(rowPart.replace("r", ""));
row = altRowPart ? formulaRow + rw : rw - 1;
} else {
row = parseInt(rowPart) - 1;
}
return [row, col];
}
letter2col(letter) {
return letter.charCodeAt(0) - "a".charCodeAt(0);
}
number2row(nr) {
return nr - 1;
}
copyArrayValues(sourceArray, targetArray, row, col) {
for (let i = 0; i < sourceArray.length; i++) {
for (let j = 0; j < sourceArray[i].length; j++) {
if (row + i < targetArray.length && col + j < targetArray[row + i].length) {
targetArray[row + i][col + j] = this.useBool ? sourceArray[i][j] : this.bool2nr(sourceArray[i][j]);
}
}
}
}
parseUnitValue(cellContent) {
if (typeof cellContent !== "string") {
return { value: this.parseLocaleNumber(cellContent), unit: null };
}
const unitMatch = cellContent.trim().match(/^(-?[\d,\.\s]+)\s*([a-zA-Z]+.*)?$/);
if (unitMatch) {
const [, numberPart, unitPart] = unitMatch;
const value = this.parseLocaleNumber(numberPart);
if (!isNaN(value) && isFinite(value)) {
return { value, unit: unitPart ? unitPart.trim() : null };
}
}
const numValue = this.parseLocaleNumber(cellContent);
if (!isNaN(numValue) && isFinite(numValue)) {
return { value: numValue, unit: null };
}
return { value: NaN, unit: null };
}
applyCustomFormat(value, precision) {
if (typeof value === "number") {
if (precision >= 0) {
const fixed = value.toFixed(precision);
return fixed.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, "");
}
return value.toString();
}
return String(value);
}
getValueByCoordinates(row, col) {
var _a, _b, _c;
const r = this.cords2ref(row, col);
this.debug(`getValueByCoordinates ${r}`);
if (this.cellstatus[row][col] == 3 /* iscomputed */) {
this.debug(`getValueByCoordinates giving the value ${this.tableData[row][col]}`);
const val = this.tableData[row][col];
if (val === null)
return 0;
if (typeof val === "string") {
const parsed = this.parseUnitValue(val);
if (parsed.unit) {
return `${parsed.value} ${parsed.unit}`;
}
const parsedNum = this.parseLocaleNumber(val);
if (!isNaN(parsedNum) && isFinite(parsedNum)) {
return parsedNum;
}
return `"${val}"`;
}
if (typeof val === "number" || !isNaN(parseFloat(val)) && isFinite(val)) {
return val;
}
if (this.useBool)
return val;
return this.bool2nr(val);
} else {
if (this.cellstatus[row][col] == 2 /* computing */) {
this.debug("********infinite loop*************");
const ref = this.cords2ref(row, col);
this.debug(`${ref}`);
throw new InfiniteLoop(`${ref}`);
}
this.cellstatus[row][col] = 2 /* computing */;
const formula = this.formulaData[row][col].slice(1);
if (debug) {
this.debug(`we are asked to fill in at ${row},${col} with formula: ${formula}`);
}
let processedformula;
try {
processedformula = this.parsefunction(formula, [row, col]);
} catch (error) {
if (error instanceof InfiniteLoop) {
const ref = this.cords2ref(row, col);
this.errors[row][col] = "loop\n" + error.message;
throw new InfiniteLoop(`${ref}`);
}
this.errors[row][col] = error.message;
throw error;
}
try {
this.debug(`we will evaluate the formula: ${processedformula}`);
const result = math.evaluate(processedformula);
if (result && typeof result === "object" && result._isFormatted) {
const formatted = this.applyCustomFormat(result.value, result.precision);
this.cellstatus[row][col] = 3 /* iscomputed */;
this.tableData[row][col] = formatted;
return formatted;
}
this.debug(
`we were asked to fill in at ${this.cords2ref(
row,
col
)} with formula: ${formula} ; the result is ${result}`
);
if (result && typeof result === "object" && ((_b = (_a = result.constructor) == null ? void 0 : _a.name) == null ? void 0 : _b.includes("Matrix"))) {
const matrixArray = result.toArray();
return this.fillInMatrix(row, col, matrixArray);
}
if (result && typeof result === "object" && ((_c = result.constructor) == null ? void 0 : _c.name) === "Unit") {
this.cellstatus[row][col] = 3 /* iscomputed */;
this.tableData[row][col] = result;
return result;
}
if (Array.isArray(result)) {
return this.fillInMatrix(row, col, result);
}
if (typeof result === "string") {
try {
const parsed = JSON.parse(result);
if (Array.isArray(parsed)) {
return this.fillInMatrix(row, col, parsed);
}
} catch (e2) {
}
}
this.cellstatus[row][col] = 3 /* iscomputed */;
this.tableData[row][col] = result;
return result;
} catch (error) {
this.errors[row][col] = error.message;
this.cellstatus[row][col] = 3 /* iscomputed */;
this.tableData[row][col] = null;
const r2 = this.cords2ref(row, col);
this.debug(`error computing cell ${r2}`);
return null;
}
}
}
fillInMatrix(row, col, parsed) {
const ismatrix = parsed.every((item) => Array.isArray(item));
if (!ismatrix)
parsed = parsed.map((n) => [n]);
this.copyArrayValues(parsed, this.tableData, row, col);
this.cellstatus[row][col] = 3 /* iscomputed */;
parsed.forEach((parsedrow, i) => {
parsedrow.forEach((_, j) => {
if (row + i < this.tableData.length && col + j < this.tableData[0].length) {
if (i || j) {
this.parents[row + i][col + j] = [];
this.formulaData[row + i][col + j] = null;
this.cellstatus[row + i][col + j] = 3 /* iscomputed */;
try {
this.cleanupchildren([row + i, col + j], [row, col]);
} catch (error) {
if (error instanceof InfiniteLoop) {
this.errors[row][col] = error.message;
} else {
throw error;
}
}
this.parents[row + i][col + j].push([row, col]);
this.children[row][col].push([row + i, col + j]);
this.celltype[row + i][col + j] = 3 /* matrix */;
this.debug(
`parents of ${this.cords2ref(row + i, col + j)} are ${this.parents[row + i][col + j]}`
);
}
}
});
});
if (this.cellstatus[row][col] != 3 /* iscomputed */) {
throw new Error("matrix\nloop");
}
parsed.forEach((tmprow, i) => {
tmprow.forEach((tmpcell, j) => {
if ((i || j) && row + i < this.tableData.length && col + j < this.tableData[0].length) {
this.computechildren(row + i, col + j);
}
});
});
return parsed[0][0];
}
cleanupchildren([row, col], [rootRow, rootCol], i = 0) {
if (i++ > 10) {
throw new Error(`too high recursivity on cleanupchildren`);
}
this.children[row][col].forEach(([r, c]) => {
this.debug(`cleanup? status for ${this.cords2ref(r, c)} is ${this.cellstatus[r][c]} `);
if (this.cellstatus[r][c] === 3 /* iscomputed */) {
if (r === rootRow && c === rootCol) {
throw new InfiniteLoop(`matrix
loop ${this.cords2ref(row, col)}`);
}
this.debug("yes, cleanup");
this.cellstatus[r][c] = 1 /* none */;
this.cleanupchildren([r, c], [rootRow, rootCol], i);
} else {
this.debug("nope");
}
});
}
computechildren(row, col, i = 0) {
this.debug(
`recomputing the children of ${this.cords2ref(row, col)}: ${this.children[row][col].map(([r, c]) => this.cords2ref(r, c)).join(", ")}`
);
if (i++ > 100) {
throw new Error(`too high recursivity on computechildren`);
}
this.children[row][col].forEach(([r, c]) => {
if (this.cellstatus[r][c] !== 3 /* iscomputed */) {
const res = this.getValueByCoordinates(r, c);
this.debug(`value for ${this.cords2ref(r, c)} is ${res} `);
this.debug(`status for ${this.cords2ref(r, c)} is ${this.cellstatus[r][c]} `);
this.computechildren(r, c);
}
});
}
getValuebyReference(ref, formulaRow = 0, formulaCol = 0) {
const coords = this.ref2cords(ref, formulaRow, formulaCol);
if (!coords)
throw new Error("invalid cell reference");
const [row, col] = coords;
if (row < 0 || row > this.maxrows - 1 || col < 0 || col > this.maxcols - 1) {
throw new Error("cell\nout of\ntable");
}
this.parents[formulaRow][formulaCol].push([row, col]);
this.children[row][col].push([formulaRow, formulaCol]);
return this.getValueByCoordinates(row, col);
}
findclosingbracket(formula) {
let counter = 1;
let pos = 0;
while (counter > 0 && pos < formula.length) {
if (formula[pos] === "(")
counter++;
else if (formula[pos] === ")")
counter--;
pos++;
}
const contentInsideParenthesis = formula.substring(0, pos - 1);
return contentInsideParenthesis;
}
parsefunction(formula, pos = [0, 0]) {
const [formulaRow, formulaCol] = pos;
this.debug(`we parsefunction; ${this.cords2ref(formulaRow, formulaCol)} (location:${formulaRow},${formulaCol})`);
let i = 0;
let results = "";
while (i < formula.length) {
if (formula[i] === "(") {
const contentInsideParenthesis = this.findclosingbracket(formula.slice(i + 1));
const res = this.parsefunction(contentInsideParenthesis, [formulaRow, formulaCol]);
results += "(" + res + ")";
i += contentInsideParenthesis.length + 2;
this.debug(`${contentInsideParenthesis}`);
this.debug(`the rest is ${formula.slice(i)}`);
} else {
const restformula = formula.slice(i);
this.debug(`rest formula is:${restformula}`);
const matchCell = restformula.match(/^([a-z]|[+-]?\d+c)([+-]?\d+r|\d+)/);
const matchRange = restformula.match(
/^([a-z]|[+-]?\d+c)([+-]?\d+r|\d+):([a-z]|[+-]?\d+c)([+-]?\d+r|\d+)/
);
const matchMatrix = restformula.match(
//basically matchRange but between `[` `]`
/^\[([a-z]|[+-]\d+c)([+-]\d+r|\d+):([a-z]|[+-]\d+c)([+-]\d+r|\d+)\]/
);
const matchformula = restformula.match(/^[a-zA-Z]{3,}\(/);
const matchNum = restformula.match(/^\d+/);
const matchRangeCol = restformula.match(/^[a-z]:[a-z]/);
const matchRangeColMatrix = restformula.match(/^\[[a-z]:[a-z]\]/);
const matchRangeRow = restformula.match(/^\d+:\d+/);
if (matchRange) {
this.debug(`we matched a range`);
i += matchRange[0].length - 1;
const [start, end] = matchRange[0].split(":");
const startCoords = this.ref2cords(start, formulaRow, formulaCol);
const endCoords = this.ref2cords(end, formulaRow, formulaCol);
if (!startCoords || !endCoords)
throw new Error("invalid range reference");
const [startRow, startCol] = startCoords;
const [endRow, endCol] = endCoords;
this.debug(`we look for range till ${this.cords2ref(endRow, endCol)}`);
results += this.unfoldRange(startRow, endRow, startCol, endCol, pos, false);
} else if (matchMatrix) {
this.debug(`we matched a matrix`);
i += matchMatrix[0].length - 1;
const [start, end] = matchMatrix[0].slice(1, -1).split(":");
const startCoords = this.ref2cords(start, formulaRow, formulaCol);
const endCoords = this.ref2cords(end, formulaRow, formulaCol);
if (!startCoords || !endCoords)
throw new Error("invalid range reference");
const [startRow, startCol] = startCoords;
const [endRow, endCol] = endCoords;
this.debug(`we look for range till ${this.cords2ref(endRow, endCol)}`);
results += this.unfoldRange(startRow, endRow, startCol, endCol, pos, true);
} else if (matchRangeCol) {
this.debug(`we matched a column range`);
i += matchRangeCol[0].length - 1;
const [start, end] = matchRangeCol[0].split(":");
const [startCol, startRow] = [this.letter2col(start), 1];
const [endCol, endRow] = [this.letter2col(end), this.maxrows - 1];
results += this.unfoldRange(startRow, endRow, startCol, endCol, pos);
} else if (matchRangeColMatrix) {
this.debug(`we matched a column range Matrix`);
i += matchRangeColMatrix[0].length - 1;
const [start, end] = matchRangeColMatrix[0].slice(1, -1).split(":");
const [startCol, startRow] = [this.letter2col(start), 1];
const [endCol, endRow] = [this.letter2col(end), this.maxrows - 1];
results += this.unfoldRange(startRow, endRow, startCol, endCol, pos, true);
} else if (matchRangeRow) {
this.debug(`we matched a row range`);
i += matchRangeRow[0].length - 1;
const [start, end] = matchRangeRow[0].split(":");
const startCol = 0;
const endCol = this.maxcols - 1;
const startRow = this.number2row(parseInt(start));
const endRow = this.number2row(parseInt(end));
results += this.unfoldRange(startRow, endRow, startCol, endCol, pos);
} else if (matchformula) {
this.debug(`we matched formula ${matchformula}`);
const contentInsideParenthesis = this.findclosingbracket(
restformula.slice(matchformula[0].length)
);
this.debug(`contentInsideParenthesis ${contentInsideParenthesis}`);
const res = this.parsefunction(contentInsideParenthesis, [
formulaRow,
formulaCol
//this keeps the referencing cell; for highlighting
]);
results += matchformula[0] + res + ")";
i += matchformula[0].length + contentInsideParenthesis.length;
} else if (matchCell) {
this.debug(`we matched a cell`);
const ref = this.getValuebyReference(matchCell[0], formulaRow, formulaCol);
results += ref.toString();
i += matchCell[0].length - 1;
} else if (matchNum) {
this.debug(`we matched a number`);
results += matchNum[0];
i += matchNum[0].length - 1;
} else {
results += restformula[0];
this.debug(`we didn't match anything`);
}
i++;
}
}
this.debug(`results are:${results}`);
return results;
}
unfoldRange(startRow, endRow, startCol, endCol, formulaPos = [0, 0], matrix = false, nullAsZero = true) {
const [formulaRow, formulaCol] = formulaPos;
[startRow, endRow] = startRow > endRow ? [endRow, startRow] : [startRow, endRow];
[startCol, endCol] = startCol > endCol ? [endCol, startCol] : [startCol, endCol];
endRow = Math.min(endRow, this.maxrows - 1);
endCol = Math.min(endCol, this.maxcols - 1);
const rowArray = [];
for (let r = startRow; r <= endRow; r++) {
const colArray = [];
for (let c = startCol; c <= endCol; c++) {
this.parents[formulaRow][formulaCol].push([r, c]);
this.children[r][c].push([formulaRow, formulaCol]);
const val = this.getValueByCoordinates(r, c);
colArray.push(val);
}
rowArray.push(colArray);
}
const fmt = (v) => {
if (v === null)
return nullAsZero ? "0" : "null";
return String(v);
};
if (matrix) {
const matrixString = rowArray.map((row) => `[${row.map((v) => fmt(v)).join(",")}]`).join(",");
return `[${matrixString}]`;
} else {
const flat = rowArray.flat();
return flat.map((v) => fmt(v)).join(",");
}
}
sanitizeFormula(formula) {
const dangerous = [
/import\s*\(/gi,
/require\s*\(/gi,
/eval\s*\(/gi,
/Function\s*\(/gi,
/constructor/gi,
/prototype/gi,
/__proto__/gi,
/process\./gi,
/global\./gi,
/window\./gi,
/document\./gi
];
for (const pattern of dangerous) {
if (pattern.test(formula)) {
throw new Error(`Formula contains forbidden pattern: ${pattern.source}`);
}
}
if (formula.length > 1e3) {
throw new Error("Formula too long");
}
return formula.trim();
}
sanitizeProcessedFormula(processedFormula) {
const suspiciousPatterns = [
/eval\s*\(/gi,
/Function\s*\(/gi,
/constructor\s*\(/gi,
/\[.*["'].*["'].*\]/gi
// bracket notation with strings
];
for (const pattern of suspiciousPatterns) {
if (pattern.test(processedFormula)) {
throw new Error("Processed formula contains suspicious patterns");
}
}
return processedFormula;
}
debug(message) {
if (debug) {
console.log(message);
}
}
};
// src/main.ts
var debug2 = false;
var CalcCraftPlugin = class extends import_obsidian2.Plugin {
constructor() {
super(...arguments);
this.settings = {};
this.cssVariables = [];
this.colOffset = 0;
this.rowOffset = 0;
this.htmlTable = [];
this.useBool = false;
//keep true and false, otherwise convert them to 0 and 1
this.suspendMutations = false;
// ignore MutationObserver notifications while we mutate
this.isEvaluating = false;
// prevent re-entrant recompute runs
this.recomputeTimer = null;
// for debouncing recompute calls
this.lpCleanup = [];
this.cssClassCache = /* @__PURE__ */ new Map();
//private recomputeLivePreview = debounce(() => {
this.scheduleRecompute = (delay = 40) => {
if (this.recomputeTimer) {
window.clearTimeout(this.recomputeTimer);
}
this.recomputeTimer = window.setTimeout(() => {
this.recomputeTimer = null;
requestAnimationFrame(() => this.recomputeLivePreview());
}, delay);
};
this.recomputeLivePreview = () => {
var _a, _b;
if (this.isEvaluating) {
this.debug("Recompute already running \u2014 skipping.");
return;
}
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
const root = (_b = (_a = view == null ? void 0 : view.editor) == null ? void 0 : _a.cm) == null ? void 0 : _b.contentDOM;
if (!root)
return;
this.isEvaluating = true;
this.suspendMutations = true;
try {
this.debug("Recomputing Live Preview tables");
this.postProcessor(root, {});
} catch (err) {
console.error("CalcCraft: recomputeLivePreview error", err);
} finally {
requestAnimationFrame(() => {
this.suspendMutations = false;
this.isEvaluating = false;
});
}
};
//} , 300, true);
this.attachLivePreviewHooks = () => {
var _a, _b;
this.detachLivePreviewHooks();
const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
const root = (_b = (_a = view == null ? void 0 : view.editor) == null ? void 0 : _a.cm) == null ? void 0 : _b.contentDOM;
if (!root) {
this.debug("No Live Preview root found");
return;
}
this.debug("Attaching Live Preview hooks");
const onCellBlur = (e2) => {
const target = e2.target;
if (target == null ? void 0 : target.closest(".cm-table-widget")) {
this.debug("Table cell blur detected, triggering recompute");
setTimeout(() => this.recomputeLivePreview(), 50);
}
};
root.addEventListener("blur", onCellBlur, true);
this.lpCleanup.push(() => {
root.removeEventListener("blur", onCellBlur, true);
});
const mo = new MutationObserver((mutations) => {
const hasActiveEdit = root.querySelector(".cm-table-widget .table-cell-wrapper:focus-within");
if (hasActiveEdit)
return;
if (this.suspendMutations) {
this.debug("Mutation ignored while suspendMutations is true");
return;
}
this.debug("DOM mutation detected (no active edit)");
this.scheduleRecompute();
});
mo.observe(root, { childList: true, subtree: true });
this.lpCleanup.push(() => mo.disconnect());
this.recomputeLivePreview();
};
this.detachLivePreviewHooks = () => {
this.debug("Detaching Live Preview hooks");
this.lpCleanup.forEach((fn) => fn());
this.lpCleanup = [];
};
}
async onload() {
await this.loadSettings();
this.registerMarkdownPostProcessor(this.postProcessor.bind(this));
this.settings_tab = new CalcCraftSettingsTab(this.app, this);
this.addSettingTab(this.settings_tab);
this.debug("table formula plugin loaded");
this.settings_tab.reloadPages();
this.registerEvent(this.app.workspace.on("active-leaf-change", () => this.attachLivePreviewHooks()));
this.registerEvent(this.app.workspace.on("layout-change", () => this.attachLivePreviewHooks()));
this.attachLivePreviewHooks();
this.registerEvent(
this.app.metadataCache.on("changed", (file) => {
if (this.settings.enableClassFilter) {
this.checkCssClassChange(file);
}
})
);
}
extractCssClasses(frontmatter) {
const classes = [];
if (frontmatter == null ? void 0 : frontmatter.cssclass) {
if (typeof frontmatter.cssclass === "string") {
classes.push(...frontmatter.cssclass.split(/\s+/));
} else if (Array.isArray(frontmatter.cssclass)) {
classes.push(...frontmatter.cssclass);
}
}
if (frontmatter == null ? void 0 : frontmatter.cssclasses) {
if (typeof frontmatter.cssclasses === "string") {
classes.push(...frontmatter.cssclasses.split(/\s+/));
} else if (Array.isArray(frontmatter.cssclasses)) {
classes.push(...frontmatter.cssclasses);
}
}
return classes.filter((cls) => cls.trim().length > 0);
}
checkCssClassChange(file) {
const cache = this.app.metadataCache.getFileCache(file);
const newClasses = (cache == null ? void 0 : cache.frontmatter) ? this.extractCssClasses(cache.frontmatter) : [];
const oldClasses = this.cssClassCache.get(file.path) || [];
const newSorted = [...newClasses].sort();
const oldSorted = [...oldClasses].sort();
const hasChanged = newSorted.length !== oldSorted.length || !newSorted.every((cls, i) => cls === oldSorted[i]);
if (hasChanged) {
this.debug(`CSS classes changed for ${file.name}: [${oldClasses.join(", ")}] -> [${newClasses.join(", ")}]`);
this.cssClassCache.set(file.path, newClasses);
const activeFile = this.app.workspace.getActiveFile();
if (activeFile && activeFile.path === file.path) {
this.refreshPageIfNeeded(file);
}
} else {
this.debug(`CSS classes unchanged for ${file.name}, skipping refresh`);
}
}
refreshPageIfNeeded(file) {
this.debug("CSS classes changed, refreshing page");
setTimeout(() => {
this.app.workspace.getLeavesOfType("markdown").forEach((e2) => e2.rebuildView());
}, 100);
}
async postProcessor(el, ctx) {
if (this.settings.enableClassFilter) {
const requiredClass = this.settings.requiredClass || "calccraft";
try {
let file = null;
const activeView = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView);
if (activeView) {
file = activeView.file;
}
if (!file && ctx.sourcePath) {
file = this.app.vault.getAbstractFileByPath(ctx.sourcePath);
}
if (!file) {
file = this.app.workspace.getActiveFile();
}
if (!file) {
this.debug("Could not determine current file, processing all tables");
} else {
const fileCache = this.app.metadataCache.getFileCache(file);
if (fileCache && fileCache.frontmatter) {
const cssclass = fileCache.frontmatter.cssclass;
const cssclasses = fileCache.frontmatter.cssclasses;
let hasRequiredClass = false;
if (cssclass) {
if (typeof cssclass === "string") {
hasRequiredClass = cssclass.split(/\s+/).includes(requiredClass);
} else if (Array.isArray(cssclass)) {
hasRequiredClass = cssclass.includes(requiredClass);
}
}
if (!hasRequiredClass && cssclasses) {
if (typeof cssclasses === "string") {
hasRequiredClass = cssclasses.split(/\s+/).includes(requiredClass);
} else if (Array.isArray(cssclasses)) {
hasRequiredClass = cssclasses.includes(requiredClass);
}
}
this.debug(`File: ${file.name}, Required: ${requiredClass}, Found: ${hasRequiredClass}`);
this.debug(`Mode: ${activeView == null ? void 0 : activeView.getMode()}, cssclass: ${cssclass}, cssclasses: ${cssclasses}`);
if (!hasRequiredClass) {
this.debug(`Skipping page - missing cssclass '${requiredClass}'`);
return;
}
} else {
this.debug("No frontmatter found, skipping page");
return;
}
}
} catch (error) {
console.error("CalcCraft: Error checking cssclass:", error);
}
}
el.querySelectorAll("table").forEach((tableEl, index) => {
try {
this.removeLabels(tableEl);
this.clearTableHighlights(tableEl);
tableEl.CalcCraft = { settings: this.settings };
if (this.settings.showLabels) {
this.addSimpleLabels(tableEl);
}
const gridData = this.extractTableGrid(tableEl);
const evaluator = new TableEvaluator();
const result = evaluator.evaluateTable(gridData, this.settings);
this.applyResultsToHTML(tableEl, result, gridData, evaluator);
} catch (error) {
console.error(`CalcCraft: Error processing table ${index}:`, error);
tableEl.setAttribute("data-calccraft-error", "true");
}
});
}
extractTableGrid(tableEl) {
const rows = Array.from(tableEl.querySelectorAll("tr"));
if (rows.length === 0)
return [];
const validRows = rows.slice(this.rowOffset);
if (validRows.length === 0)
return [];
const gridData = [];
validRows.forEach((rowEl, i) => {
const cells = Array.from(rowEl.querySelectorAll("td, th"));
const validCells = cells.slice(this.colOffset);
gridData[i] = [];
validCells.forEach((cellEl, j) => {
const wrapper = cellEl.querySelector(".table-cell-wrapper");
let cellContent = wrapper ? wrapper.textContent : cellEl.textContent;
cellContent = (cellContent || "").trim();
if (cellContent.startsWith("=") || cellContent.startsWith("'=")) {
}
gridData[i][j] = cellContent;
});
});
return gridData;
}
applyResultsToHTML(tableEl, result, gridData, evaluator) {
var _a, _b, _c, _d;
this.htmlTable = [];
const rows = Array.from(tableEl.querySelectorAll("tr")).slice(this.rowOffset);
rows.forEach((rowEl, i) => {
this.htmlTable[i] = [];
const cells = Array.from(rowEl.querySelectorAll("td, th")).slice(this.colOffset);
cells.forEach((cellEl, j) => {
this.htmlTable[i][j] = cellEl;
});
});
for (let rowIndex = 0; rowIndex < this.htmlTable.length; rowIndex++) {
for (let colIndex = 0; colIndex < this.htmlTable[rowIndex].length; colIndex++) {
const cellEl = this.htmlTable[rowIndex][colIndex];
const cellContent = ((_a = gridData[rowIndex]) == null ? void 0 : _a[colIndex]) || "";
const computedValue = (_b = result.values[rowIndex]) == null ? void 0 : _b[colIndex];
const error = (_c = result.errors[rowIndex]) == null ? void 0 : _c[colIndex];
const cellType = (_d = result.cellTypes[rowIndex]) == null ? void 0 : _d[colIndex];
cellEl.classList.remove(
"formula-cell",
"formula-cell-borderenabled",
"formula-cell-colorenabled",
"matrix-cell",
"matrix-cell-colorenabled",
"error-cell",
"error-cell-colorenabled"
);
const wrapper = cellEl.querySelector(".table-cell-wrapper");
if (wrapper) {
wrapper.classList.remove("calc-overlay-cell");
wrapper.removeAttribute("data-calc-display");
}
cellEl.CalcCraft = {
parents: [],
children: [],
settings: this.settings
};
const parentCoords = evaluator.parents[rowIndex][colIndex];
parentCoords.forEach(([parentRow, parentCol]) => {
if (this.htmlTable[parentRow] && this.htmlTable[parentRow][parentCol]) {
cellEl.CalcCraft.parents.push(this.htmlTable[parentRow][parentCol]);
}
});
const childrenCoords = evaluator.children[rowIndex][colIndex];
childrenCoords.forEach(([childRow, childCol]) => {
if (this.htmlTable[childRow] && this.htmlTable[childRow][childCol]) {
cellEl.CalcCraft.children.push(this.htmlTable[childRow][childCol]);
}
});
if (cellType === 2) {
cellEl.classList.add("formula-cell");
if (this.settings.showBorders) {
cellEl.classList.add("formula-cell-borderenabled");
}
if (this.settings.formula_background_color_toggle) {
cellEl.classList.add("formula-cell-colorenabled");
}
cellEl.setAttribute("title", cellContent);
if (error) {
cellEl.classList.add("error-cell");
if (this.settings.formula_background_error_toggle) {
cellEl.classList.add("error-cell-colorenabled");
}
this.setFormattedCellValue(cellEl, computedValue, error);
} else {
this.setFormattedCellValue(cellEl, computedValue);
}
} else if (cellType === 3) {
cellEl.classList.add("matrix-cell");
if (this.settings.formula_background_matrix_toggle) {
cellEl.classList.add("matrix-cell-colorenabled");
}
this.setFormattedCellValue(cellEl, computedValue);
} else if (cellType === 4) {
cellEl.classList.add("escaped-text-cell");
const wrapper2 = cellEl.querySelector(".table-cell-wrapper");
if (wrapper2) {
wrapper2.dataset.calcDisplay = String(computedValue);
wrapper2.classList.add("calc-overlay-cell");
cellEl.setAttribute("title", cellContent);
} else {
cellEl.textContent = String(computedValue);
}
}
}
}
this.addTableEventListeners(tableEl);
}
addSimpleLabels(tableEl) {
if (tableEl.dataset.labelsAdded === "true")
return;
tableEl.dataset.labelsAdded = "true";
const firstRow = tableEl.rows[0];
if (firstRow) {
Array.from(firstRow.cells).forEach((cell, colIndex) => {
if (!cell.dataset.colLabeled) {
cell.dataset.colLabeled = "true";
cell.dataset.colLetter = String.fromCharCode(97 + colIndex);
console.log(`Set column label '${cell.dataset.colLetter}' on cell:`, cell);
}
});
}
const allRows = Array.from(tableEl.rows);
allRows.forEach((row, rowIndex) => {
const firstCell = row.cells[0];
if (firstCell && !firstCell.dataset.rowLabeled) {
firstCell.dataset.rowLabeled = "true";
firstCell.dataset.rowNumber = String(rowIndex + 1);
}
});
}
formatNumber(num) {
let result;
if (this.settings.precision >= 0) {
result = num.toFixed(this.settings.precision);
const rounded = parseFloat(result);
const hasMorePrecision = rounded !== num;
if (hasMorePrecision) {
} else {
result = result.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, "");
}
} else {
result = num.toString();
}
return this.applySeparators(result);
}
applySeparators(numString) {
const parts = numString.split(".");
let integerPart = parts[0];
const decimalPart = parts[1];
if (this.settings.digitGrouping) {
integerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, this.settings.groupingSeparator || ",");
}
const result = decimalPart !== void 0 ? integerPart + (this.settings.decimalSeparator || ".") + decimalPart : integerPart;
return result;
}
setFormattedCellValue(cellEl, value, error) {
var _a;
let data = value;
if (typeof data === "object" && data !== null && (((_a = data.constructor) == null ? void 0 : _a.name) === "Unit" || data.value !== void 0 && data.units !== void 0)) {
const unitString = data.toString();
const unitMatch = unitString.match(/^(-?[\d\.]+)\s*(.*)$/);
if (unitMatch) {
const [, numberPart, unitPart] = unitMatch;
const formatted = this.applySeparators(numberPart);
data = `${formatted} ${unitPart}`;
} else {
data = unitString;
}
} else if (typeof data === "number") {
data = this.formatNumber(data);
} else if (typeof data === "string") {
const numMatch = data.match(/^(-?\d*\.?\d+)$/);
if (numMatch) {
data = this.applySeparators(data);
} else {
const unitMatch = data.match(/^(-?\d*\.?\d+)\s*(.+)$/);
if (unitMatch) {
const [, numberPart, unitPart] = unitMatch;
data = this.applySeparators(numberPart) + " " + unitPart;
}
}
}
const wrapper = cellEl.querySelector(".table-cell-wrapper");
if (wrapper) {
wrapper.dataset.calcDisplay = error || String(data);
wrapper.classList.add("calc-overlay-cell");
return;
}
cellEl.textContent = error || String(data);
}
async loadSettings() {
this.settings = Object.assign({}, DefaultSettings, await this.loadData());
this.updatecssvars();
}
async saveSettings() {
await this.saveData(this.settings);
}
updatecssvars() {
for (const variable in this.settings) {
if (typeof this.settings[variable] === "string" && this.settings[variable].startsWith("#")) {
document.documentElement.style.setProperty(
"--CalcCraft_" + variable,
this.settings[variable]
);
}
}
}
addTableEventListeners(tableEl) {
tableEl.addEventListener("mouseover", function(event) {
var _a;
const target = event.target;
const cellEl = target.closest("td, th");
if (!cellEl)
return;
cellEl.classList.add("cell-active");
if ((cellEl == null ? void 0 : cellEl.CalcCraft) == void 0) {
return;
}
if (cellEl.classList.contains("formula-cell") || cellEl.classList.contains("matrix-cell")) {
if (tableEl.CalcCraft.settings.formula_background_parents_toggle) {
cellEl.CalcCraft.parents.forEach((depCellEl) => {
depCellEl.classList.add("cell-parents-highlight");
});
}
}
if (tableEl.CalcCraft.settings.formula_background_children_toggle) {
(_a = cellEl.CalcCraft.children) == null ? void 0 : _a.forEach((depCellEl) => {
depCellEl.classList.add("cell-children-highlight");
});
}
});
tableEl.addEventListener("mouseout", function(event) {
var _a;
const target = event.target;
const cellEl = target.closest("td, th");
if (!cellEl)
return;
cellEl.classList.remove("cell-active");
if ((cellEl == null ? void 0 : cellEl.CalcCraft) == void 0)
return;
if (cellEl.classList.contains("formula-cell") || cellEl.classList.contains("matrix-cell")) {
if (tableEl.CalcCraft.settings.formula_background_parents_toggle) {
cellEl.CalcCraft.parents.forEach((depCellEl) => {
depCellEl.classList.remove("cell-parents-highlight");
});
}
}
if (tableEl.CalcCraft.settings.formula_background_children_toggle) {
(_a = cellEl.CalcCraft.children) == null ? void 0 : _a.forEach((depCellEl) => {
depCellEl.classList.remove("cell-children-highlight");
});
}
});
}
debug(message) {
if (debug2) {
console.log(message);
}
}
clearTableHighlights(tableEl) {
if (!tableEl)
return;
tableEl.querySelectorAll(
".cell-parents-highlight, .cell-children-highlight, .cell-active, .calc-overlay-cell"
).forEach((el) => {
el.classList.remove("cell-parents-highlight", "cell-children-highlight", "cell-active", "calc-overlay-cell");
const wrapper = el.querySelector(".table-cell-wrapper");
if (wrapper) {
wrapper.removeAttribute("data-calc-display");
wrapper.classList.remove("calc-overlay-cell");
}
if (el.CalcCraft) {
try {
el.CalcCraft.parents = [];
el.CalcCraft.children = [];
delete el.CalcCraft;
} catch (e2) {
}
}
});
}
createLabels(tableEl) {
if (tableEl.dataset.labelsAdded === "true") {
return;
}
this.colOffset = 0;
this.rowOffset = 0;
tableEl.dataset.labelsAdded = "true";
const rows = Array.from(tableEl.querySelectorAll("tr"));
const newRow = tableEl.insertRow(0);
const existingCells = Array.from(rows[0].querySelectorAll("td, th"));
for (let i = 0; i <= existingCells.length; i++) {
const newCell = newRow.insertCell(i);
if (i > this.colOffset) {
newCell.textContent = String.fromCharCode(
"a".charCodeAt(0) + i - 1 - this.colOffset
);
}
newCell.classList.add("label-cell", "column");
newCell.CalcCraft = { parents: [], children: [], settings: this.settings };
}
rows.forEach((row, index) => {
const newCell = row.insertCell(0);
if (index + 1 - this.rowOffset > 0) {
newCell.textContent = (index + 1 - this.rowOffset).toString();
}
newCell.classList.add("label-cell", "row");
newCell.CalcCraft = { parents: [], children: [], settings: this.settings };
});
this.colOffset = 1;
this.rowOffset = 1;
}
safelyMutateDOM(fn) {
this.suspendMutations = true;
try {
fn();
} finally {
requestAnimationFrame(() => {
this.suspendMutations = false;
});
}
}
removeLabels(tableEl) {
this.safelyMutateDOM(() => {
var _a;
if (tableEl.dataset.labelsAdded !== "true") {
return;
}
const firstRow = tableEl.rows[0];
if (firstRow && ((_a = firstRow.cells[0]) == null ? void 0 : _a.classList.contains("label-cell"))) {
firstRow.remove();
}
Array.from(tableEl.rows).forEach((row) => {
const firstCell = row.cells[0];
if (firstCell == null ? void 0 : firstCell.classList.contains("label-cell")) {
firstCell.remove();
}
});
delete tableEl.dataset.labelsAdded;
this.colOffset = 0;
this.rowOffset = 0;
});
}
};
/*! Bundled license information:
complex.js/complex.js:
(**
* @license Complex.js v2.1.1 12/05/2020
*
* Copyright (c) 2020, Robert Eisele (robert@xarg.org)
* Dual licensed under the MIT or GPL Version 2 licenses.
**)
fraction.js/fraction.js:
(**
* @license Fraction.js v4.3.0 20/08/2023
* https://www.xarg.org/2014/03/rational-numbers-in-javascript/
*
* Copyright (c) 2023, Robert Eisele (robert@raw.org)
* Dual licensed under the MIT or GPL Version 2 licenses.
**)
decimal.js/decimal.mjs:
(*!
* decimal.js v10.4.3
* An arbitrary-precision Decimal type for JavaScript.
* https://github.com/MikeMcl/decimal.js
* Copyright (c) 2022 Michael Mclaughlin
* MIT Licence
*)
*/
/* nosourcemap */