Listing 4: Division of BigNum by long integer


BigNum BigNum::operator/(long denom){
 BigNum a;
  if (abs(*this)<abs(denom)) return a;
  a.positive =
    ((denom<0 && !this->positive) ||
    (denom>0 && this->positive));
  if (denom <0) denom = -denom;
  long r = 0;
  if (denom){
     a = *this;
     for(int i=this->exp;i>=0;i--){
      long temp = long(this->x[i]) + r*BASE;
      a.x[i] = temp/denom; r = temp % denom;
     }
     while(!a.x[a.exp] && a.exp) a.exp--;
    }
    else cerr << "divide by zero error";
    return a;
}
//End of File