Last change
on this file was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago |
initial commit
|
-
Property mode
set to
100644
|
File size:
864 bytes
|
Rev | Line | |
---|
[6a3a178] | 1 | var sign = require('../internals/math-sign');
|
---|
| 2 |
|
---|
| 3 | var abs = Math.abs;
|
---|
| 4 | var pow = Math.pow;
|
---|
| 5 | var EPSILON = pow(2, -52);
|
---|
| 6 | var EPSILON32 = pow(2, -23);
|
---|
| 7 | var MAX32 = pow(2, 127) * (2 - EPSILON32);
|
---|
| 8 | var MIN32 = pow(2, -126);
|
---|
| 9 |
|
---|
| 10 | var roundTiesToEven = function (n) {
|
---|
| 11 | return n + 1 / EPSILON - 1 / EPSILON;
|
---|
| 12 | };
|
---|
| 13 |
|
---|
| 14 | // `Math.fround` method implementation
|
---|
| 15 | // https://tc39.es/ecma262/#sec-math.fround
|
---|
| 16 | // eslint-disable-next-line es/no-math-fround -- safe
|
---|
| 17 | module.exports = Math.fround || function fround(x) {
|
---|
| 18 | var $abs = abs(x);
|
---|
| 19 | var $sign = sign(x);
|
---|
| 20 | var a, result;
|
---|
| 21 | if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
|
---|
| 22 | a = (1 + EPSILON32 / EPSILON) * $abs;
|
---|
| 23 | result = a - (a - $abs);
|
---|
| 24 | // eslint-disable-next-line no-self-compare -- NaN check
|
---|
| 25 | if (result > MAX32 || result != result) return $sign * Infinity;
|
---|
| 26 | return $sign * result;
|
---|
| 27 | };
|
---|
Note:
See
TracBrowser
for help on using the repository browser.