smath
Version:
Small math function library
165 lines (164 loc) • 6.2 kB
JavaScript
"use strict";
var _a, _b, _c, _d, _e;
Object.defineProperty(exports, "__esModule", { value: true });
var SMath = require(".");
var func = ((_a = process.argv[2]) !== null && _a !== void 0 ? _a : '').toLowerCase(), nums = process.argv.slice(3).map(function (arg, i) {
var num = Number.parseFloat(arg);
if (Number.isFinite(num)) {
return num;
}
else {
console.error('Argument #' + i + ' is "' + arg + '" but a number was expected.');
process.exit(1);
}
});
if (func.includes('help')) {
console.log('Key: <required> [optional]');
console.log('Arguments:');
console.log(' help : Show this page');
console.log(' approx <a> <b> [eps] : Check if `a` and `b` are approximately equal');
console.log(' clamp <n> <min> <max> : Clamp `n` between `min` and `max`');
console.log(' normalize <n> <min> <max>: Normalize `n` between `min` and `max`');
console.log(' expand <n> <min> <max> : Expand normalized `n` between `min` and `max`');
console.log(' translate <n> <min1> <max1> <min2> <max2>');
console.log(' : Linearly interpolate `n` from `min1`, `max1` to `min2`, `max2`');
console.log(' linspace <min> <max> <n> : Generate `n` linearly spaced numbers between `min` and `max`');
console.log(' logspace <min> <max> <n> : Generate `n` logarithmically spaced numbers between `min` and `max`');
console.log(' factorial <n> : Compute `n!` (factorial)');
console.log(' factors <n> : List the prime factors of `n`');
console.log(' round2 <n> <base> : Round `n` to a multiple of any `base`');
console.log(' error <exp> <act> : Calculate the normaized percent error between `exp` and `act`');
console.log(' sum <c0> [c1] ... [cn] : Compute a total of `n` numbers');
console.log(' prod <c0> [c1] ... [cn] : Compute a product of `n` numbers');
console.log(' avg <c0> [c1] ... [cn] : Take an average of `n` numbers');
console.log(' median <c0> [c1] ... [cn]: Take the median of `n` numbers');
console.log(' varp <c0> [c1] ... [cn] : Compute the population variance of `n` numbers');
console.log(' vars <c0> [c1] ... [cn] : Compute the sample variance of `n` numbers');
console.log(' stdevp <c0> [c1] ... [cn]: Compute the population standard deviation of `n` numbers');
console.log(' stdevs <c0> [c1] ... [cn]: Compute the sample standard deviation of `n` numbers');
console.log(' runif <min> <max> : Generate a uniformly-distributed random float');
console.log(' rint <min> <max> : Generate a uniformly-distributed random integer, range inclusive');
console.log(' rnorm [mean] [stdev] : Generate a normally-distributed random float');
console.log(' rdist <n> [mean] [stdev] : Generate `n` normally-distributed random floats');
console.log(' rat <n> [eps] : Decompose `n` into a ratio');
console.log(' mixed <n> [eps] : Decompose `n` into a mixed number');
console.log(' toHex <n> [length] : Convert decimal `n` into hexadecimal');
process.exit(1);
}
switch (func) {
case ('approx'): {
console.log(SMath.approx(nums[0], nums[1], (_b = nums[2]) !== null && _b !== void 0 ? _b : 1e-6));
break;
}
case ('clamp'): {
console.log(SMath.clamp(nums[0], nums[1], nums[2]));
break;
}
case ('normalize'): {
console.log(SMath.normalize(nums[0], nums[1], nums[2]));
break;
}
case ('expand'): {
console.log(SMath.expand(nums[0], nums[1], nums[2]));
break;
}
case ('translate'): {
console.log(SMath.translate(nums[0], nums[1], nums[2], nums[3], nums[4]));
break;
}
case ('linspace'): {
console.log(SMath.linspace(nums[0], nums[1], nums[2]));
break;
}
case ('logspace'): {
console.log(SMath.logspace(nums[0], nums[1], nums[2]));
break;
}
case ('factorial'): {
console.log(SMath.factorial(nums[0]));
break;
}
case ('factors'): {
console.log(SMath.factors(nums[0]));
break;
}
case ('round2'): {
console.log(SMath.round2(nums[0], nums[1]));
break;
}
case ('error'): {
console.log(SMath.error(nums[0], nums[1]));
break;
}
case ('sum'): {
console.log(SMath.sum(nums));
break;
}
case ('prod'): {
console.log(SMath.prod(nums));
break;
}
case ('avg'): {
console.log(SMath.avg(nums));
break;
}
case ('median'): {
console.log(SMath.median(nums));
break;
}
case ('varp'): {
console.log(SMath.varp(nums));
break;
}
case ('vars'): {
console.log(SMath.vars(nums));
break;
}
case ('stdevp'): {
console.log(SMath.stdevp(nums));
break;
}
case ('stdevs'): {
console.log(SMath.stdevs(nums));
break;
}
case ('runif'): {
console.log(SMath.runif(nums[0], nums[1]));
break;
}
case ('rint'): {
console.log(SMath.rint(nums[0], nums[1]));
break;
}
case ('rnorm'): {
console.log(SMath.rnorm(nums[0], nums[1]));
break;
}
case ('rdist'): {
console.log(SMath.rdist(nums[0], nums[1], nums[2]));
break;
}
case ('rat'): {
console.log(SMath.rat(nums[0], (_c = nums[1]) !== null && _c !== void 0 ? _c : 1e-6));
break;
}
case ('mixed'): {
console.log(SMath.mixed(nums[0], (_d = nums[1]) !== null && _d !== void 0 ? _d : 1e-6));
break;
}
case ('tohex'): {
console.warn('toHex() is deprecated!');
console.log(SMath.toHex(nums[0], (_e = nums[1]) !== null && _e !== void 0 ? _e : 0));
break;
}
case (''): {
console.error('Missing argument. Use with "help" for a list of commands.');
process.exit(1);
break;
}
default: {
console.error('Unknown argument "' + func + '". Use with "help" for a list of commands.');
process.exit(1);
}
}