Exemplo n.º 1
0
struct NATURAL MUL_NN_N(struct NATURAL E, struct NATURAL B)
  {
  // Инициализация числа
  struct NATURAL result;
  result.index = ( (E.index * B.index) / 10 > 0) ? (i + j) : (i + j - 1);
  int i;
  for (i = 0; i < result.index; ++i)
    result.number[i] = 0;
  
  for (i = 0; i < B.index; ++i)
    result = ADD_NN_N( result, MUL_ND_N(MUL_Nk_N(E, i), B.number[i]) );
  }  
Exemplo n.º 2
0
natural SUB_NDN_N(const natural& a, const natural& b, const digit& n) {
    natural res = a;
    natural mul_sub = b;

    digit fact = n;
    mul_sub = MUL_ND_N(mul_sub, fact);
    if (COM_NN_D(res, mul_sub) == ordinal::GT) {
        auto res_2 = SUB_NN_N(res, mul_sub);
        return res_2;
    } else {
        throw std::invalid_argument("Your digit is too big");
    }
}
Exemplo n.º 3
0
natural natural::operator*(const digit& other) {
    return MUL_ND_N(*this, other);
}