Hypercomplex
Abstract & fast header-only C++ template library for lattice-based cryptosystems in high-dimensional algebras
Loading...
Searching...
No Matches
Classes | Functions
Polynomial.hpp File Reference
#include <cassert>
#include <iostream>

Go to the source code of this file.

Classes

class  Polynomial< MaxDeg >
 

Functions

int64_t RingInverse (const int64_t x, const int64_t mod)
 Integer multiplicative inverse in a modular ring. More...
 
template<const uint64_t MaxDeg>
bool operator== (const Polynomial< MaxDeg > &P1, const Polynomial< MaxDeg > &P2)
 Equality operator. More...
 
template<const uint64_t MaxDeg>
bool operator!= (const Polynomial< MaxDeg > &P1, const Polynomial< MaxDeg > &P2)
 Inequality operator. More...
 
template<const uint64_t MaxDeg>
std::ostream & operator<< (std::ostream &os, const Polynomial< MaxDeg > &P)
 Print operator. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator* (const int64_t x, const Polynomial< MaxDeg > &P)
 Multiplication-by-scalar operator. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator+ (const Polynomial< MaxDeg > &P1, const Polynomial< MaxDeg > &P2)
 Addition operator. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator- (const Polynomial< MaxDeg > &P1, const Polynomial< MaxDeg > &P2)
 Subtraction operator. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator* (const Polynomial< MaxDeg > &P1, const Polynomial< MaxDeg > &P2)
 Convolution multiplication in a polynomial quotient ring operator. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator% (const Polynomial< MaxDeg > &P, const int64_t x)
 Coefficient reduction modulo a scalar. More...
 
template<const uint64_t MaxDeg>
void CenteredLift (Polynomial< MaxDeg > *P, const int64_t mod)
 Center-lift polynomial in a modular quotient ring. More...
 
template<const uint64_t MaxDeg>
Polynomial< MaxDeg > RingInverse (const Polynomial< MaxDeg > &P, const int64_t &mod)
 Inverse polynomial in a modular quotient ring. More...
 

Function Documentation

◆ CenteredLift()

template<const uint64_t MaxDeg>
void CenteredLift ( Polynomial< MaxDeg > *  P,
const int64_t  mod 
)

Center-lift polynomial in a modular quotient ring.

Parameters
[in]Pexisting class instance (pointer)
[in]modpositive integer

◆ operator!=()

template<const uint64_t MaxDeg>
bool operator!= ( const Polynomial< MaxDeg > &  P1,
const Polynomial< MaxDeg > &  P2 
)

Inequality operator.

Parameters
[in]P1LHS operand
[in]P2RHS operand
Returns
boolean value after the comparison

◆ operator%()

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator% ( const Polynomial< MaxDeg > &  P,
const int64_t  x 
)

Coefficient reduction modulo a scalar.

Parameters
[in]PLHS operand (polynomial)
[in]xRHS operand (scalar)
Returns
new class instance

◆ operator*() [1/2]

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator* ( const int64_t  x,
const Polynomial< MaxDeg > &  P 
)

Multiplication-by-scalar operator.

Parameters
[in]xLHS operand (scalar)
[in]PRHS operand (polynomial)
Returns
new class instance

◆ operator*() [2/2]

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator* ( const Polynomial< MaxDeg > &  P1,
const Polynomial< MaxDeg > &  P2 
)

Convolution multiplication in a polynomial quotient ring operator.

Parameters
[in]P1LHS operand
[in]P2RHS operand
Returns
new class instance

◆ operator+()

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator+ ( const Polynomial< MaxDeg > &  P1,
const Polynomial< MaxDeg > &  P2 
)

Addition operator.

Parameters
[in]P1LHS operand
[in]P2RHS operand
Returns
new class instance

◆ operator-()

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > operator- ( const Polynomial< MaxDeg > &  P1,
const Polynomial< MaxDeg > &  P2 
)

Subtraction operator.

Parameters
[in]P1LHS operand
[in]P2RHS operand
Returns
new class instance

◆ operator<<()

template<const uint64_t MaxDeg>
std::ostream & operator<< ( std::ostream &  os,
const Polynomial< MaxDeg > &  P 
)

Print operator.

Parameters
[in,out]osoutput stream
[in]Pexisting class instance
Returns
output stream

◆ operator==()

template<const uint64_t MaxDeg>
bool operator== ( const Polynomial< MaxDeg > &  P1,
const Polynomial< MaxDeg > &  P2 
)

Equality operator.

Parameters
[in]P1LHS operand
[in]P2RHS operand
Returns
boolean value after the comparison

◆ RingInverse() [1/2]

int64_t RingInverse ( const int64_t  x,
const int64_t  mod 
)

Integer multiplicative inverse in a modular ring.

Parameters
[in]xpositive integer
[in]modpositive integer
Returns
positive integer

◆ RingInverse() [2/2]

template<const uint64_t MaxDeg>
Polynomial< MaxDeg > RingInverse ( const Polynomial< MaxDeg > &  P,
const int64_t &  mod 
)

Inverse polynomial in a modular quotient ring.

Parameters
[in]Pexisting class instance
[in]modpositive integer
Returns
new class instance