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

◆ internal_subtract_to()

void FractionField::internal_subtract_to ( ring_elem & f,
ring_elem & g ) const

Definition at line 436 of file frac.cpp.

437{
438 frac_elem *f = FRAC_VAL(a);
439 frac_elem *g = FRAC_VAL(b);
440 if (R_->is_equal(f->denom, g->denom))
441 R_->subtract_to(f->numer, g->numer);
442 else
443 {
444 R_->mult_to(f->numer, g->denom);
445 ring_elem tmp = R_->mult(f->denom, g->numer);
446 R_->subtract_to(f->numer, tmp);
447 R_->mult_to(f->denom, g->denom);
448 if (R_->is_zero(f->denom))
449 {
451 return;
452 }
453 }
454 simplify(f);
455 remove(b);
456 a = FRAC_RINGELEM(f);
457}
ring_elem set_non_unit_frac(ring_elem top) const
Definition frac.cpp:89
void simplify(frac_elem *f) const
Definition frac.cpp:108
const PolyRingFlat * R_
Definition frac.hpp:63
virtual void remove(ring_elem &f) const
Definition frac.cpp:406
#define FRAC_VAL(f)
Definition frac.cpp:14
#define FRAC_RINGELEM(a)
Definition frac.cpp:15
ring_elem numer
Definition frac.hpp:43
ring_elem denom
Definition frac.hpp:44

References frac_elem::denom, FRAC_RINGELEM, FRAC_VAL, frac_elem::numer, R_, remove(), set_non_unit_frac(), and simplify().