UNPKG

888 BJavaScriptView Raw
1var $ = require('../internals/export');
2
3var $hypot = Math.hypot;
4var abs = Math.abs;
5var sqrt = Math.sqrt;
6
7// Chrome 77 bug
8// https://bugs.chromium.org/p/v8/issues/detail?id=9546
9var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;
10
11// `Math.hypot` method
12// https://tc39.github.io/ecma262/#sec-math.hypot
13$({ target: 'Math', stat: true, forced: BUGGY }, {
14 hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
15 var sum = 0;
16 var i = 0;
17 var aLen = arguments.length;
18 var larg = 0;
19 var arg, div;
20 while (i < aLen) {
21 arg = abs(arguments[i++]);
22 if (larg < arg) {
23 div = larg / arg;
24 sum = sum * div * div + 1;
25 larg = arg;
26 } else if (arg > 0) {
27 div = arg / larg;
28 sum += div * div;
29 } else sum += arg;
30 }
31 return larg === Infinity ? Infinity : larg * sqrt(sum);
32 }
33});