113{
114
115
116 ring_elem Dl, mkl, q;
117 if (!lambda->
get_entry(ell, k, mkl))
return;
121 mpz_t c, d;
122 mpz_init(c);
123 mpz_init(d);
124 mpz_mul_2exp(c, a, 1);
125 mpz_abs(d, c);
126 mpz_add(c, c, b);
127 mpz_mul_2exp(d, b, 1);
128 mpz_fdiv_q(c, c, d);
129 mpz_neg(c, c);
130 q = ring_elem(c);
131
132
133
134
136 if (Achange) Achange->
column_op(k, q, ell);
138
139 mpz_clear(c);
140 mpz_clear(d);
141}
virtual bool get_entry(size_t r, size_t c, ring_elem &result) const =0
virtual bool column_op(size_t i, ring_elem r, size_t j)=0
mpz_srcptr get_mpz() const