Version 1
[yaffs-website] / node_modules / core-js / modules / es6.math.fround.js
1 // 20.2.2.16 Math.fround(x)
2 var $export   = require('./_export')
3   , sign      = require('./_math-sign')
4   , pow       = Math.pow
5   , EPSILON   = pow(2, -52)
6   , EPSILON32 = pow(2, -23)
7   , MAX32     = pow(2, 127) * (2 - EPSILON32)
8   , MIN32     = pow(2, -126);
9
10 var roundTiesToEven = function(n){
11   return n + 1 / EPSILON - 1 / EPSILON;
12 };
13
14
15 $export($export.S, 'Math', {
16   fround: function fround(x){
17     var $abs  = Math.abs(x)
18       , $sign = sign(x)
19       , a, result;
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;
25   }
26 });