34 for (uint32_t i = 0U; i < k; i++) {
41 for (uint32_t i = 0U; i < k; i++) {
48 for (uint32_t i = 0U; i < k; i++) {
55 for (uint32_t i = 0U; i < k; i++) {
62 for (uint32_t i = 0U; i < k; i++) {
69 for (uint32_t i = 0U; i < k; i++) {
76 for (uint32_t i = 0U; i < k; i++) {
84 for (uint32_t i = 0U; i < k; i++) {
89 for (uint32_t i = 0U; i < k; i++) {
98 for (uint32_t i = 0U; i < k; i++) {
103 for (uint32_t i = 0U; i < k; i++) {
111 for (uint32_t i = 0U; i < k; i++) {
void MLKEM_POLY_basemul_acc_montgomery(poly *r, const poly *a, const poly *b, int32_t first)
Pointwise multiplication of two polynomials in NTT domain with accumulation.
void MLKEM_POLY_tomont(poly *r)
Converts a polynomial to Montgomery domain.
void MLKEM_POLY_reduce(poly *r)
Applies Barrett reduction to all coefficients and map to [0, q-1].
void MLKEM_POLY_ntt(poly *p)
Computes the NTT of a polynomial in place.
void MLKEM_POLY_tobytes(uint8_t *r, const poly *a)
Serializes a polynomial to bytes (12 bits per coefficient).
void MLKEM_POLY_compress_d11(uint8_t *r, const poly *a)
Compresses a polynomial with du=11 and serialize to bytes.
void MLKEM_POLY_invntt_tomont(poly *p)
Computes the inverse NTT and multiply by Montgomery factor.
void MLKEM_POLY_decompress_d11(poly *r, const uint8_t *a)
Decompresses a polynomial from bytes with du=11.
void MLKEM_POLY_decompress_d10(poly *r, const uint8_t *a)
Decompresses a polynomial from bytes with du=10.
void MLKEM_POLY_frombytes(poly *r, const uint8_t *a)
Deserializes a polynomial from bytes (12 bits per coefficient).
void MLKEM_POLY_add(poly *r, const poly *b)
Adds polynomial b to polynomial r in place.
void MLKEM_POLY_compress_d10(uint8_t *r, const poly *a)
Compresses a polynomial with du=10 and serialize to bytes.
void MLKEM_POLYVEC_decompress(polyvec *r, const uint8_t *a, uint8_t k, uint8_t du)
Decompresses and deserializes a polynomial vector.
void MLKEM_POLYVEC_invntt_tomont(polyvec *r, uint8_t k)
Applies the inverse NTT to each polynomial in a vector.
void MLKEM_POLYVEC_reduce(polyvec *r, uint8_t k)
Reduces all coefficients of each polynomial in a vector.
void MLKEM_POLYVEC_compress(uint8_t *r, const polyvec *a, uint8_t k, uint8_t du)
Compresses and serializes a polynomial vector.
void MLKEM_POLYVEC_tomont(polyvec *r, uint8_t k)
Converts each polynomial in a vector to Montgomery domain.
void MLKEM_POLYVEC_frombytes(polyvec *r, const uint8_t *a, uint8_t k)
Deserializes a polynomial vector from bytes.
void MLKEM_POLYVEC_tobytes(uint8_t *r, const polyvec *a, uint8_t k)
Serializes a polynomial vector to bytes.
void MLKEM_POLYVEC_add(polyvec *r, const polyvec *b, uint8_t k)
Adds polynomial vector b to r in place.
void MLKEM_POLYVEC_basemul_acc_montgomery(poly *r, const polyvec *a, const polyvec *b, uint8_t k)
Accumulated pointwise multiplication of two polynomial vectors in the NTT domain.
void MLKEM_POLYVEC_ntt(polyvec *r, uint8_t k)
Applies the NTT to each polynomial in a vector.
#define MLKEM_POLYCOMPRESSEDBYTES_D11
#define MLKEM_POLYCOMPRESSEDBYTES_D10
ML-KEM (Module-Lattice Key Encapsulation Mechanism) public API.
Polynomial with MLKEM_N coefficients.
Vector of polynomials with up to MLKEM_MAX_K elements.