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

◆ lower_content()

void M2::RingQQ::lower_content ( ring_elem & c,
const ring_elem g ) const
inlinevirtual

Reimplemented from Ring.

Definition at line 563 of file aring-glue.hpp.

564 {
565 if (is_zero(c))
566 {
567 c = g;
568 return;
569 }
570 mpq_srcptr a = MPQ_VAL(c);
571 mpq_srcptr b = MPQ_VAL(g);
572 int sa = mpq_sgn(a);
573 mpq_ptr result = getmemstructtype(mpq_ptr);
574 mpq_init(result);
575
576 mpz_gcd(mpq_numref(result), mpq_numref(a), mpq_numref(b));
577 mpz_lcm(mpq_denref(result), mpq_denref(a), mpq_denref(b));
578 if (sa != mpq_sgn(result)) mpq_neg(result, result);
579 mpz_reallocate_limbs(mpq_numref(result));
580 mpz_reallocate_limbs(mpq_denref(result));
581 c = ring_elem(result);
582 }
virtual bool is_zero(const ring_elem f) const
void mpz_reallocate_limbs(mpz_ptr _z)
Definition gmp-util.h:46
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemstructtype(S)
Definition m2-mem.h:143
#define MPQ_VAL(f)
Definition ringelem.hpp:206

References getmemstructtype, M2::ConcreteRing< ARingQQ >::is_zero(), MPQ_VAL, mpz_reallocate_limbs(), and result().