title: Javascript - adding Integers using arrays
body: <p>I am using an array in order to calculate large powers of 2. The arrays add to each other and afterwords they calculate the carries and loop n-1 amount of times until i end up with the number as an array. I do this in order to avoid the 15 digit limit that JavaScript has.</p>
  
  <p>Everything works fine once i reach n = 42, where the carries start to be overlooked and numbers aren't reduced, producing wrong answers.</p>
  
  <p>I tried changing the method of which the carry is processed inside the while loop from basic addition to integer division and modulus
  Sounds stupid but i added an extra loop to check if any elements are greater than 10 but it didn't find them.</p>
  
  <pre><code>  for (var n = 1; n &lt;= 100; n++) {
      for (var i = 0, x = [2]; i &lt; n - 1; i++) { // Loop for amount of times to multiply
        x.unshift(0)
        for (var j = x.length - 1; j &gt; 0; j--) { // Double each element of the array
          x[j] += x[j]
        }
        for (j = x.length - 1; x[j] &gt; 0; j--) { // Check if element &gt;= 10 and carry
          while (x[j] &gt;= 10) {
            x[j - 1] += Math.floor(x[j] / 10)
            x[j] = x[j] % 10
          }
        }
        if (x[0] === 0) {
          x.shift()
        }
      }
      console.log('N: ' + n + ' Array: ' + x)
    }
  </code></pre>
  
  <p>The expected results are that each element in the array will be reduced into a single number and will "carry" onto the element to its left like :</p>
  
  <pre><code>N: 1 Array: 2
  N: 2 Array: 4
  N: 3 Array: 8
  N: 4 Array: 1,6
  N: 5 Array: 3,2
  N: 6 Array: 6,4
  </code></pre>
  
  <p>but starting at n=42 carries get bugged looking like this:</p>
  
  <pre><code>N: 42 Array: 4,2,18,18,0,4,6,5,1,1,1,0,4
  N: 43 Array: 8,4,36,36,0,8,12,10,2,2,2,0,8
  N: 44 Array: 1,7,5,9,2,1,8,6,0,4,4,4,1,6
  N: 45 Array: 2,14,10,18,4,2,16,12,0,8,8,8,3,2
  N: 46 Array: 7,0,3,6,8,7,4,4,1,7,7,6,6,4
  N: 47 Array: 14,0,7,3,7,4,8,8,3,5,5,3,2,8
  </code></pre>
  
  <p>What's the error that could be throwing it off like this?</p>