869{
870 ring_elem
result, g, rest, h, tmp;
871 ring_elem coef1, coef2, coef3;
872
873 Nterm *lead = ff;
875
878
879
884
886
889
890 mpz_t bin_c;
891
892 mpz_init_set_ui(bin_c, 1);
893
894 for (int i = 1; i <= n; i++)
895 {
897 g = tmp;
898
899 mpz_mul_ui(bin_c, bin_c, n - i + 1);
900 mpz_fdiv_q_ui(bin_c, bin_c, i);
901
902 coef1 =
K_->from_int(bin_c);
903
904 if (!
K_->is_zero(coef1))
905 {
906 coef2 =
K_->power(lead->
coeff, n - i);
907 coef3 =
K_->mult(coef1, coef2);
908 M_->power(lead->
monom, n - i, m);
909
912 }
913 }
914 mpz_clear(bin_c);
916}
virtual ring_elem from_long(long n) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const
void add_to(ring_elem &f, const ring_elem &g) const
VALGRIND_MAKE_MEM_DEFINED & result(result)