Listing 3: Multiplication of BigNums
//multiply two bignums BigNum BigNum::operator*(const BigNum & b){ BigNum product; product.exp = this->exp + b.exp + 1; delete[] product.x; product.x = new int[product.exp+1]; product.positive = (this->positive==b.positive); for (int j = 0; j<=product.exp; j++) product.x[j] = 0; long carry; for(j=0;j<=b.exp;j++){ carry = 0; for(int i=0;i<=this->exp;i++){ long t = this->x[i]; t = t * long(b.x[j]) + product.x[i+j] + carry; product.x[i+j] = t % BASE; carry = t/BASE; } product.x[i+j] = carry; } while(!product.x[product.exp] && product.exp) product.exp--; return product; } //End of File