#ifndef POLX_H
#define POLX_H

#include "poly.h"

typedef struct {
  poly vec[6];
} polx;

#include "polz.h"

void polx_gaussian64(polx *r);
void polx_gaussian70(polx *r);
void polx_frompoly(polx *r,const poly *a);
void polx_reduce(polx *r);
void polx_add(polx *r,const polx *a,const polx *b);
void polx_sub(polx *r,const polx *a,const polx *b);
void polx_ntt(polx *r);
void polx_invntt(polx *r);
void polx_pointwise(polx *r,const polx *a,const polx *b);
void polx_pointwise_add(polx *r,const polx *a,const polx *b,const polx *c);
void polx_add_poly(polx *r,const polx *a,const poly *b);
void polx_scale(polx *r,const polx *a,const int32_t s[3]);
void polx_sigmam1(polx *r,const polx *a);
void polx_sigma5(polx *r,const polx *a);
void polx_sigma5inv(polx *r,const polx *a);

#endif
