38 lines
		
	
	
		
			1000 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1000 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// 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));
 | 
						|
};
 |