You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					24 lines
				
				716 B
			
		
		
			
		
	
	
					24 lines
				
				716 B
			| 
											3 years ago
										 | // 20.2.2.16 Math.fround(x)
 | ||
|  | var sign = require('./_math-sign'); | ||
|  | var pow = Math.pow; | ||
|  | var EPSILON = pow(2, -52); | ||
|  | var EPSILON32 = pow(2, -23); | ||
|  | var MAX32 = pow(2, 127) * (2 - EPSILON32); | ||
|  | var MIN32 = pow(2, -126); | ||
|  | 
 | ||
|  | var roundTiesToEven = function (n) { | ||
|  |   return n + 1 / EPSILON - 1 / EPSILON; | ||
|  | }; | ||
|  | 
 | ||
|  | module.exports = Math.fround || function fround(x) { | ||
|  |   var $abs = Math.abs(x); | ||
|  |   var $sign = sign(x); | ||
|  |   var a, result; | ||
|  |   if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; | ||
|  |   a = (1 + EPSILON32 / EPSILON) * $abs; | ||
|  |   result = a - (a - $abs); | ||
|  |   // eslint-disable-next-line no-self-compare
 | ||
|  |   if (result > MAX32 || result != result) return $sign * Infinity; | ||
|  |   return $sign * result; | ||
|  | }; |