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

◆ mult_n()

TowerPolynomial DPoly::mult_n ( int level,
const TowerPolynomial f,
const TowerPolynomial g,
bool reduce_by_extension )
private

Definition at line 818 of file dpoly.cpp.

822{
823 if (f == nullptr || g == nullptr) return nullptr;
824 TowerPolynomial result = alloc_poly_n(f->deg + g->deg);
825
826 for (int i = 0; i <= f->deg; i++)
827 {
828 TowerPolynomial a = f->arr.polys[i];
829 if (a != nullptr)
830 for (int j = 0; j <= g->deg; j++)
831 {
832 TowerPolynomial b = g->arr.polys[j];
833 TowerPolynomial c = mult(level - 1, a, b, true);
834 if (c != nullptr)
835 {
836 add_in_place(level - 1, result->arr.polys[i + j], c);
837 dealloc_poly(c);
838 }
839 }
840 }
841
842 if (reduce_by_extension && extensions[level] != nullptr)
843 remainder(level, result, extensions[level]);
844 return result;
845}
TowerPolynomial * extensions
Definition dpoly.hpp:114
static TowerPolynomial alloc_poly_n(int deg, TowerPolynomial *elems=nullptr)
Definition dpoly.cpp:265
void remainder(int level, TowerPolynomial &f, const TowerPolynomial g)
Definition dpoly.cpp:1089
void add_in_place(int level, TowerPolynomial &f, const TowerPolynomial g)
Definition dpoly.cpp:722
TowerPolynomial mult(int level, const TowerPolynomial f, const TowerPolynomial g, bool reduce_by_extension)
Definition dpoly.cpp:846
static void dealloc_poly(TowerPolynomial &f)
Definition dpoly.cpp:292
VALGRIND_MAKE_MEM_DEFINED & result(result)

References add_in_place(), alloc_poly_n(), dealloc_poly(), extensions, mult(), remainder(), and result().

Referenced by mult().