764{
765
766
767
768
769
770
771
772
773
774 try
775 {
776 int len = H->len;
777 if (len <= 1)
778 {
779 ERROR(
"expected ring element array of length at least 2");
780 return nullptr;
781 }
782 const PolyRing *P = H->array[1]->get_ring()->cast_to_PolyRing();
783 if (P == nullptr)
784 {
785 ERROR(
"expected a polynomial ring");
786 return nullptr;
787 }
790 for (int i = 0; i < len; i++) input_relems[i] = H->array[i]->get_value();
791 convolve(P, input_relems, output_relems, convolve_type);
792
793 engine_RawRingElementArray
result =
796 for (
int i = 0; i <
result->len; i++)
798
801 {
803 return nullptr;
804 }
805}
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
static RingElement * make_raw(const Ring *R, ring_elem f)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define getmemarraytype(S, len)
void convolve(const PolyRing *R, const VECTOR(ring_elem) &input_relems, VECTOR(ring_elem) &output_relems, int convolve_type)