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

◆ lower_content()

void LocalRing::lower_content ( ring_elem & c,
const ring_elem g ) const
virtual

Reimplemented from Ring.

Definition at line 373 of file localring.cpp.

374{
375 if (!use_gcd_simplify) return;
376 if (is_zero(c))
377 {
378 c = g;
379 return;
380 }
381
382 const local_elem *cf = c.get_local_elem();
383 const local_elem *gf = g.get_local_elem();
384 const RingElement *c1 = RingElement::make_raw(mRing, cf->numer);
385 const RingElement *c2 = RingElement::make_raw(mRing, cf->denom);
386 const RingElement *g1 = RingElement::make_raw(mRing, gf->numer);
387 const RingElement *g2 = RingElement::make_raw(mRing, gf->denom);
388
389 c1 = rawGCDRingElement(c1, g1, nullptr, false);
390
391 const RingElement *cc2 = rawGCDRingElement(c2, g2, nullptr, false);
392 const RingElement *cc3 = (*c2) * (*g2);
393 const RingElement *cc4 = (*cc3) / (*cc2);
394
395 local_elem *result = new_local_elem();
396 result->numer = c1->get_value();
397 result->denom = cc4->get_value();
398
399 c = ring_elem(result);
400}
const PolyRing * mRing
Definition localring.hpp:69
virtual bool is_zero(const ring_elem f) const
bool use_gcd_simplify
Definition localring.hpp:83
local_elem * new_local_elem() const
Definition localring.cpp:61
ring_elem get_value() const
Definition relem.hpp:79
static RingElement * make_raw(const Ring *R, ring_elem f)
Definition relem.cpp:20
const RingElement * rawGCDRingElement(const RingElement *f, const RingElement *g, const RingElement *mipo, const M2_bool inExtension)
Definition factory.cpp:488
VALGRIND_MAKE_MEM_DEFINED & result(result)
ring_elem numer
Definition localring.hpp:48
ring_elem denom
Definition localring.hpp:49
const local_elem * get_local_elem() const
Definition ringelem.hpp:136

References local_elem::denom, ring_elem::get_local_elem(), RingElement::get_value(), is_zero(), RingElement::make_raw(), mRing, new_local_elem(), local_elem::numer, rawGCDRingElement(), result(), and use_gcd_simplify.