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

◆ fraction()

RingElement * RingElement::fraction ( const Ring * R,
const RingElement * bottom ) const

Definition at line 388 of file relem.cpp.

390{
391 if (bottom->is_zero())
392 throw exc::division_by_zero_error();
393
394 if (K == globalQQ)
395 return new RingElement(globalQQ,
396 globalQQ->fraction(val, bottom->get_value()));
397 const FractionField *K1 = K->cast_to_FractionField();
398 if (K1 != nullptr)
399 {
400 if (K1->get_ring() != R)
401 {
402 ERROR("fraction field required");
403 return nullptr;
404 }
405 return new RingElement(K1, K1->fraction(val, bottom->get_value()));
406 }
407 const LocalRing *L1 = K->cast_to_LocalRing();
408 if (L1 != nullptr)
409 {
410 if (L1->get_ring() != R)
411 {
412 ERROR("local ring required");
413 return nullptr;
414 }
415 return new RingElement(L1, L1->fraction(val, bottom->get_value()));
416 }
417 ERROR("fraction field or local ring required");
418 return nullptr;
419}
const RingQQ * globalQQ
Definition aring.cpp:24
const Ring * get_ring() const
Definition frac.hpp:84
ring_elem fraction(const ring_elem top, const ring_elem bottom) const
Definition frac.cpp:102
ring_elem fraction(const ring_elem top, const ring_elem bottom) const
const PolyRing * get_ring() const
Definition localring.hpp:90
ring_elem fraction(ring_elem top, ring_elem bottom) const
RingElement(const Ring *R, ring_elem f)
Definition relem.hpp:166
ring_elem val
Definition relem.hpp:69
ring_elem get_value() const
Definition relem.hpp:79
bool is_zero() const
Definition relem.hpp:167
const Ring * R
Definition relem.hpp:68
const int ERROR
Definition m2-mem.cpp:55

References Ring::cast_to_FractionField(), Ring::cast_to_LocalRing(), ERROR, FractionField::fraction(), LocalRing::fraction(), FractionField::get_ring(), LocalRing::get_ring(), get_value(), globalQQ, is_zero(), R, RingElement(), and val.

Referenced by IM2_RingElement_fraction().