private static int[] subtractRes(BigInt firstNumberBiggerAbsThanSecond, BigInt second) { int[] minusOfaAndb = new int[Math.Max(firstNumberBiggerAbsThanSecond.number.Length, second.number.Length)]; int carry = 0; for (int i = 0; i < Math.Max(firstNumberBiggerAbsThanSecond.number.Length, second.number.Length); ++i) { minusOfaAndb[i] += -carry + firstNumberBiggerAbsThanSecond.intAtDigits(i) - second.intAtDigits(i); carry = minusOfaAndb[i] < 0 ? 1 : 0; if (carry == 1) { minusOfaAndb[i] += BASE; } } return(deleteLeadingZerosOfArray(minusOfaAndb)); }