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

◆ lower_associate_divisor()

bool RingZZ::lower_associate_divisor ( ring_elem & f,
ring_elem g ) const
virtual

Reimplemented from Ring.

Definition at line 206 of file ZZ.cpp.

207{
208 // This sets f to either 0, 1 or -1.
209 // if f is 0, do f=sign(g), else f=sign(f)
210 // return whether f is zero
211 mpz_ptr result = RingZZ::new_elem();
212 mpz_srcptr a = f.get_mpz();
213 mpz_srcptr b = g.get_mpz();
214 int sa = mpz_sgn(a);
215 int sb = mpz_sgn(b);
216 int s = (sa == 0 ? sb : sa);
217
218 mpz_set_si(result, s);
220
221 f = ring_elem(result);
222 return !RingZZ::is_zero(f);
223}
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
void size_t s
Definition m2-mem.cpp:271
VALGRIND_MAKE_MEM_DEFINED & result(result)
mpz_srcptr get_mpz() const
Definition ringelem.hpp:127

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