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

◆ lower_content()

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

Reimplemented from Ring.

Definition at line 191 of file frac.cpp.

192{
193 if (!use_gcd_simplify) return;
194 if (is_zero(c))
195 {
196 c = g;
197 return;
198 }
199
200 frac_elem *cf = FRAC_VAL(c);
201 frac_elem *gf = FRAC_VAL(g);
202 const RingElement *c1 = RingElement::make_raw(R_, cf->numer);
203 const RingElement *c2 = RingElement::make_raw(R_, cf->denom);
204 const RingElement *g1 = RingElement::make_raw(R_, gf->numer);
205 const RingElement *g2 = RingElement::make_raw(R_, gf->denom);
206
207 c1 = rawGCDRingElement(c1, g1, nullptr, false);
208
209 const RingElement *cc2 = rawGCDRingElement(c2, g2, nullptr, false);
210 const RingElement *cc3 = (*c2) * (*g2);
211 const RingElement *cc4 = (*cc3) / (*cc2);
212
213 frac_elem *result = new_frac_elem();
214 result->numer = c1->get_value();
215 result->denom = cc4->get_value();
216
218}
virtual bool is_zero(const ring_elem f) const
Definition frac.cpp:366
frac_elem * new_frac_elem() const
Definition frac.cpp:88
bool use_gcd_simplify
Definition frac.hpp:64
const PolyRingFlat * R_
Definition frac.hpp:63
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
#define FRAC_VAL(f)
Definition frac.cpp:14
#define FRAC_RINGELEM(a)
Definition frac.cpp:15
VALGRIND_MAKE_MEM_DEFINED & result(result)
ring_elem numer
Definition frac.hpp:43
ring_elem denom
Definition frac.hpp:44

References frac_elem::denom, FRAC_RINGELEM, FRAC_VAL, RingElement::get_value(), is_zero(), RingElement::make_raw(), new_frac_elem(), frac_elem::numer, R_, rawGCDRingElement(), result(), and use_gcd_simplify.