Blame view
node_modules/es5-ext/math/hypot/shim.js
899 Bytes
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// Thanks for hints: https://github.com/paulmillr/es6-shim 'use strict'; var some = Array.prototype.some, abs = Math.abs, sqrt = Math.sqrt , compare = function (a, b) { return b - a; } , divide = function (x) { return x / this; } , add = function (sum, number) { return sum + number * number; }; module.exports = function (val1, val2/*, …valn*/) { var result, numbers; if (!arguments.length) return 0; some.call(arguments, function (val) { if (isNaN(val)) { result = NaN; return; } if (!isFinite(val)) { result = Infinity; return true; } if (result !== undefined) return; val = Number(val); if (val === 0) return; if (!numbers) numbers = [abs(val)]; else numbers.push(abs(val)); }); if (result !== undefined) return result; if (!numbers) return 0; numbers.sort(compare); return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0)); }; |