1 // 20.2.2.16 Math.fround(x)
2 var $export = require('./_export')
3 , sign = require('./_math-sign')
5 , EPSILON = pow(2, -52)
6 , EPSILON32 = pow(2, -23)
7 , MAX32 = pow(2, 127) * (2 - EPSILON32)
8 , MIN32 = pow(2, -126);
10 var roundTiesToEven = function(n){
11 return n + 1 / EPSILON - 1 / EPSILON;
15 $export($export.S, 'Math', {
16 fround: function fround(x){
17 var $abs = Math.abs(x)
20 if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
21 a = (1 + EPSILON32 / EPSILON) * $abs;
22 result = a - (a - $abs);
23 if(result > MAX32 || result != result)return $sign * Infinity;
24 return $sign * result;