Macaulay2 Engine
Loading...
Searching...
No Matches

◆ divide()

ring_elem RingZZ::divide ( const ring_elem f,
const ring_elem g ) const
virtual

Implements Ring.

Definition at line 304 of file ZZ.cpp.

305{
306 if (is_zero(g)) throw exc::division_by_zero_error();
307 mpz_ptr result = new_elem();
308 mpz_t rem;
309 mpz_init(rem);
310 mpz_fdiv_qr(result, rem, f.get_mpz(), g.get_mpz());
311 if (mpz_sgn(rem)) throw exc::engine_error("division not exact");
312 mpz_clear(rem);
314 return ring_elem(result);
315}
virtual bool is_zero(const ring_elem f) const
Definition ZZ.cpp:155
mpz_ptr new_elem() const
Definition ZZ.cpp:34
void mpz_reallocate_limbs(mpz_ptr _z)
Definition gmp-util.h:46
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal rem(const mpreal &x, const mpreal &y, mp_rnd_t rnd_mode=mpreal::get_default_rnd())
Definition mpreal.h:2628
mpz_srcptr get_mpz() const
Definition ringelem.hpp:127

References ring_elem::get_mpz(), is_zero(), mpz_reallocate_limbs(), new_elem(), and result().

Referenced by syzygy(), and TEST().