when I try to use math power in reduce it’s not working as expected and returns infinity
const array1 = [1,2,3,4];
const initialValue = 0;
const sumWithInitial = array1.reduce(
(a,b) => a + Math.pow(b, b + a),
0
);
console.log(sumWithInitial);
but if there’s only 1-3 numbers in arr1 it works as intended
>Solution :
As of the last iteration, you’re exceeding the capacity of the JavaScript number type (which is an IEEE-754 double-precision binary floating point value). It has nothing to do with reduce
, it’s just that Math.pow(4, 4 + 531450)
(the last value produced by your reduce
loop) goes past the limit:
console.log(Math.pow(4, 4 + 531450));
You can see when pow
will do that via the Number::exponentiate abstract operation in the specification (in the text, infinity is denoted by +∞𝔽
, negative infinity by -∞𝔽
). This is just a fact of trying to use a 64-bit value to try to represent a truly, truly, truly massive number.