Skip to content

Commit

Permalink
Fix Math.signbit semantics
Browse files Browse the repository at this point in the history
According [spec draft](https://tc39.es/proposal-Math.signbit/Math.signbit.html#spec), Math.signbit returns `true` only for negative values and `Math.signbit(NaN)` should return `true`
  • Loading branch information
chicoxyzzy committed Nov 3, 2019
1 parent 306ba2c commit 311373f
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
2 changes: 1 addition & 1 deletion packages/core-js/modules/esnext.math.signbit.js
Expand Up @@ -4,6 +4,6 @@ var $ = require('../internals/export');
// https://github.com/tc39/proposal-Math.signbit
$({ target: 'Math', stat: true }, {
signbit: function signbit(x) {
return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;
return (x = +x) == x && x == 0 ? 1 / x == -Infinity : x < 0;
}
});
2 changes: 1 addition & 1 deletion tests/commonjs.js
Expand Up @@ -143,7 +143,7 @@ for (const _PATH of ['../packages/core-js-pure', '../packages/core-js']) {
ok(load('features/math/radians')(180) === Math.PI);
ok(load('features/math/scale')(3, 1, 2, 1, 2) === 3);
ok(load('features/math/umulh')(0xFFFFFFFF, 7) === 6);
ok(load('features/math/signbit')(-2) === false);
ok(load('features/math/signbit')(-2) === true);
ok(typeof load('features/math/seeded-prng')({ seed: 42 }).next().value === 'number');
ok(load('features/number/constructor')('5') === 5);
ok(load('features/number/epsilon') === 2 ** -52);
Expand Down
20 changes: 10 additions & 10 deletions tests/pure/esnext.math.signbit.js
Expand Up @@ -2,14 +2,14 @@ import signbit from 'core-js-pure/features/math/signbit';

QUnit.test('Math.signbit', assert => {
assert.isFunction(signbit);
assert.same(signbit(NaN), NaN);
assert.same(signbit(), NaN);
assert.same(signbit(-0), false);
assert.same(signbit(0), true);
assert.strictEqual(signbit(Infinity), true);
assert.strictEqual(signbit(-Infinity), false);
assert.strictEqual(signbit(13510798882111488), true);
assert.strictEqual(signbit(-13510798882111488), false);
assert.strictEqual(signbit(42.5), true);
assert.strictEqual(signbit(-42.5), false);
assert.strictEqual(signbit(NaN), false);
assert.strictEqual(signbit(), false);
assert.strictEqual(signbit(-0), true);
assert.strictEqual(signbit(0), false);
assert.strictEqual(signbit(Infinity), false);
assert.strictEqual(signbit(-Infinity), true);
assert.strictEqual(signbit(13510798882111488), false);
assert.strictEqual(signbit(-13510798882111488), true);
assert.strictEqual(signbit(42.5), false);
assert.strictEqual(signbit(-42.5), true);
});
20 changes: 10 additions & 10 deletions tests/tests/esnext.math.signbit.js
Expand Up @@ -5,14 +5,14 @@ QUnit.test('Math.signbit', assert => {
assert.arity(signbit, 1);
assert.looksNative(signbit);
assert.nonEnumerable(Math, 'signbit');
assert.same(signbit(NaN), NaN);
assert.same(signbit(), NaN);
assert.same(signbit(-0), false);
assert.same(signbit(0), true);
assert.strictEqual(signbit(Infinity), true);
assert.strictEqual(signbit(-Infinity), false);
assert.strictEqual(signbit(13510798882111488), true);
assert.strictEqual(signbit(-13510798882111488), false);
assert.strictEqual(signbit(42.5), true);
assert.strictEqual(signbit(-42.5), false);
assert.strictEqual(signbit(NaN), false);
assert.strictEqual(signbit(), false);
assert.strictEqual(signbit(-0), true);
assert.strictEqual(signbit(0), false);
assert.strictEqual(signbit(Infinity), false);
assert.strictEqual(signbit(-Infinity), true);
assert.strictEqual(signbit(13510798882111488), false);
assert.strictEqual(signbit(-13510798882111488), true);
assert.strictEqual(signbit(42.5), false);
assert.strictEqual(signbit(-42.5), true);
});

0 comments on commit 311373f

Please sign in to comment.