Blame view

node_modules/es5-ext/math/hypot/shim.js 1004 Bytes
aaac7fed   liuqimichale   add
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
35
36
37
38
39
40
41
42
43
  // Thanks for hints: https://github.com/paulmillr/es6-shim
  
  "use strict";
  
  var some = Array.prototype.some
    , abs = Math.abs
    , sqrt = Math.sqrt
    , compare = function (val1, val2) {
  	return val2 - val1;
  }
    , divide = function (value) {
  	return value / this;
  }
    , add = function (sum, number) {
  	return sum + number * number;
  };
  
  // eslint-disable-next-line no-unused-vars
  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 false;
  		}
  		if (!isFinite(val)) {
  			result = Infinity;
  			return true;
  		}
  		if (result !== undefined) return false;
  		val = Number(val);
  		if (val === 0) return false;
  		if (numbers) numbers.push(abs(val));
  		else numbers = [abs(val)];
  		return false;
  	});
  	if (result !== undefined) return result;
  	if (!numbers) return 0;
  
  	numbers.sort(compare);
  	return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0));
  };