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

◆ add_in_place()

void M2::ARingTower::add_in_place ( int level,
ARingPolynomial & f,
const ARingPolynomial g ) const
private

Definition at line 333 of file aring-tower.cpp.

334{
335 if (g == nullptr) return;
336 if (f == nullptr)
337 {
338 f = copy(level, g);
339 return;
340 }
341 int fdeg = f->deg;
342 int gdeg = g->deg;
343
344 increase_capacity(g->deg, f);
345 if (level == 0)
346 for (int i = 0; i <= gdeg; i++)
347 mBaseRing.add(f->coeffs[i], f->coeffs[i], g->coeffs[i]);
348 else
349 for (int i = 0; i <= gdeg; i++)
350 add_in_place(level - 1, f->polys[i], g->polys[i]);
351
352 if (gdeg > fdeg)
353 f->deg = gdeg;
354 else if (gdeg == fdeg)
355 reset_degree(f);
356}
void copy(elem &result, elem a) const
void reset_degree(ARingPolynomial &f) const
void increase_capacity(int newdeg, ARingPolynomial &f) const
void add_in_place(int level, ARingPolynomial &f, const ARingPolynomial g) const
const ARingZZpFFPACK & mBaseRing

References add_in_place(), M2::ARingPolynomialStruct::coeffs, copy(), M2::ARingPolynomialStruct::deg, increase_capacity(), mBaseRing, M2::ARingPolynomialStruct::polys, and reset_degree().

Referenced by add(), and add_in_place().