From a61397cfc628f25f175be0dd1ff7ef5232786dfd Mon Sep 17 00:00:00 2001 From: jos Date: Fri, 21 Nov 2014 11:16:09 +0100 Subject: [PATCH] Fixed #236: BigNumber downgrading to Number for a negative base in `pow` --- lib/function/arithmetic/pow.js | 2 +- test/function/arithmetic/pow.test.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/function/arithmetic/pow.js b/lib/function/arithmetic/pow.js index e64ccffca..6142d9f57 100644 --- a/lib/function/arithmetic/pow.js +++ b/lib/function/arithmetic/pow.js @@ -81,7 +81,7 @@ module.exports = function (math) { } if (y instanceof BigNumber) { - if (y.isInteger() && !x.isNegative()) { + if (y.isInteger() || !x.isNegative()) { return x.pow(y); } else { diff --git a/test/function/arithmetic/pow.test.js b/test/function/arithmetic/pow.test.js index 5e3b3fa83..f61cb2047 100644 --- a/test/function/arithmetic/pow.test.js +++ b/test/function/arithmetic/pow.test.js @@ -50,6 +50,9 @@ describe('pow', function() { it('should exponentiate bignumbers', function() { assert.deepEqual(pow(bignumber(2), bignumber(3)), bignumber(8)); assert.deepEqual(pow(bignumber(100), bignumber(500)), bignumber('1e1000')); + + assert.deepEqual(pow(bignumber(-1), bignumber(2)), bignumber('1')); + assert.deepEqual(pow(bignumber(2), bignumber(1.5)), bignumber('2.828427124746190097603377448419396157139343750753896146353359476')); }); it('should exponentiate a negative bignumber to a non-integer power', function() {