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]) ); }
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"); } }
natural natural::operator*(const digit& other) { return MUL_ND_N(*this, other); }