UNPKG

nerdamer-ts

Version:

javascript light-weight symbolic math expression evaluator

41 lines 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.symMinMax = exports.min = void 0; const Utils_1 = require("../../../Core/Utils"); const Symbol_1 = require("../../../Types/Symbol"); const Settings_1 = require("../../../Settings"); const Parser_1 = require("../../../Parser/Parser"); /** * Returns minimum of a set of numbers * @returns {Symbol} */ function min() { let args = [].slice.call(arguments); if ((0, Utils_1.allSame)(args)) return args[0]; if ((0, Utils_1.allNumbers)(args)) return new Symbol_1.Symbol(Math.min.apply(null, args)); if (Settings_1.Settings.SYMBOLIC_MIN_MAX && (0, Utils_1.allConstants)(args)) return symMinMax('min', args); return (0, Symbol_1.symfunction)('min', args); } exports.min = min; function symMinMax(f, args) { args.map(function (x) { x.numVal = (0, Parser_1.evaluate)(x).multiplier; }); let l, a, b; while (true) { l = args.length; if (l < 2) return args[0]; a = args.pop(); b = args[l - 2]; if (f === 'min' ? a.numVal < b.numVal : a.numVal > b.numVal) { args.pop(); args.push(a); } } } exports.symMinMax = symMinMax; //# sourceMappingURL=min.js.map