nerdamer-ts
Version:
javascript light-weight symbolic math expression evaluator
41 lines • 1.28 kB
JavaScript
;
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