Skip to content

Add a clamp function to math.js #24

Mergedsyntaqx merged into mainrequested by syntaqx

Approved by g1t

2 files+14−10/2 viewed
+9−1
6767 return Math.sqrt(variance);
6868 }
6969
70−module.exports = { add, multiply, subtract, divide, mod, power, mean, median, standard_deviation };
70+/** Returns value limited to the range [min, max]; throws a RangeError if min is greater than max. */
71+function clamp(value, min, max) {
72+ if (min > max) {
73+ throw new RangeError("min must not be greater than max");
74+ }
75+ return Math.min(Math.max(value, min), max);
76+}
77+
78+module.exports = { add, multiply, subtract, divide, mod, power, mean, median, standard_deviation, clamp };
+5−0
2424 for (const fn of [math.mean, math.median, math.standard_deviation]) {
2525 assert.throws(() => fn([]), TypeError);
2626 }
27+assert.strictEqual(math.clamp(5, 0, 10), 5);
28+assert.strictEqual(math.clamp(-5, 0, 10), 0);
29+assert.strictEqual(math.clamp(15, 0, 10), 10);
30+assert.strictEqual(math.clamp(3, 3, 3), 3);
31+assert.throws(() => math.clamp(1, 10, 0), RangeError);
2732 console.log("all tests passed");