Class AdvancedSHECKKSRNS

Inheritance Relationships

Base Type

Class Documentation

class lbcrypto::AdvancedSHECKKSRNS : public lbcrypto::AdvancedSHERNS

Inheritence diagram for lbcrypto::AdvancedSHECKKSRNS:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="lbcrypto::AdvancedSHERNS" tooltip="lbcrypto::AdvancedSHERNS"]
    "3" [label="lbcrypto::AdvancedSHEBase< DCRTPoly >" tooltip="lbcrypto::AdvancedSHEBase< DCRTPoly >"]
    "1" [label="lbcrypto::AdvancedSHECKKSRNS" tooltip="lbcrypto::AdvancedSHECKKSRNS" fillcolor="#BFBFBF"]
    "2" -> "3" [dir=forward tooltip="public-inheritance"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for lbcrypto::AdvancedSHECKKSRNS:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="lbcrypto::AdvancedSHERNS" tooltip="lbcrypto::AdvancedSHERNS"]
    "3" [label="lbcrypto::AdvancedSHEBase< DCRTPoly >" tooltip="lbcrypto::AdvancedSHEBase< DCRTPoly >"]
    "1" [label="lbcrypto::AdvancedSHECKKSRNS" tooltip="lbcrypto::AdvancedSHECKKSRNS" fillcolor="#BFBFBF"]
    "2" -> "3" [dir=forward tooltip="public-inheritance"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Public Functions

virtual ~AdvancedSHECKKSRNS() = default
Ciphertext<DCRTPoly> EvalMultMany(const std::vector<Ciphertext<DCRTPoly>> &ciphertextVec, const std::vector<EvalKey<DCRTPoly>> &evalKeyVec) const override
virtual Ciphertext<DCRTPoly> EvalLinearWSum(std::vector<ReadOnlyCiphertext<DCRTPoly>> &ciphertexts, const std::vector<int64_t> &constants) const override

Virtual function for computing the linear weighted sum of a vector of ciphertexts.

Parameters
  • ciphertexts – vector of input ciphertexts.

  • constants – vector containing double weights.

Returns

A ciphertext containing the linear weighted sum.

virtual Ciphertext<DCRTPoly> EvalLinearWSum(std::vector<ReadOnlyCiphertext<DCRTPoly>> &ciphertexts, const std::vector<double> &constants) const override
virtual Ciphertext<DCRTPoly> EvalLinearWSum(std::vector<ReadOnlyCiphertext<DCRTPoly>> &ciphertexts, const std::vector<std::complex<double>> &constants) const override
virtual Ciphertext<DCRTPoly> EvalLinearWSumMutable(std::vector<Ciphertext<DCRTPoly>> &ciphertexts, const std::vector<int64_t> &constants) const override

Function for computing the linear weighted sum of a vector of ciphertexts. This is a mutable method, meaning that the level/depth of input ciphertexts may change.

Parameters
  • ciphertexts – vector of input ciphertexts.

  • constants – vector containing double weights.

Returns

A ciphertext containing the linear weighted sum.

virtual Ciphertext<DCRTPoly> EvalLinearWSumMutable(std::vector<Ciphertext<DCRTPoly>> &ciphertexts, const std::vector<double> &constants) const override
virtual Ciphertext<DCRTPoly> EvalLinearWSumMutable(std::vector<Ciphertext<DCRTPoly>> &ciphertexts, const std::vector<std::complex<double>> &constants) const override
virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalPowers(ConstCiphertext<DCRTPoly> &x, const std::vector<int64_t> &coefficients) const override

Method for computing the powers for polynomials represented in the power series. This uses a binary tree computation of the polynomial powers.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in the polynomial; the size of the vector is the degree of the polynomial + 1

Returns

the result of polynomial evaluation.

virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalPowers(ConstCiphertext<DCRTPoly> &x, const std::vector<double> &coefficients) const override
virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalPowers(ConstCiphertext<DCRTPoly> &x, const std::vector<std::complex<double>> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPoly(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<int64_t> &coefficients) const override

Method for computing the powers of a ciphertext to be used when evaluating a polynomial. Uses EvalPowersLinear() for low polynomial degrees (degree < 5), or EvalPowersPS() for higher degrees.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in the polynomial; the size of the vector is the degree of the polynomial + 1

Returns

the resulting data structure of powers.

virtual Ciphertext<DCRTPoly> EvalPoly(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<double> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPoly(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<std::complex<double>> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> powers, const std::vector<int64_t> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> powers, const std::vector<double> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> powers, const std::vector<std::complex<double>> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyLinear(ConstCiphertext<DCRTPoly> &x, const std::vector<int64_t> &coefficients) const override

Method for polynomial evaluation for polynomials represented in the power series. This uses a binary tree computation of the polynomial powers.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in the polynomial; the size of the vector is the degree of the polynomial + 1

Returns

the result of polynomial evaluation.

virtual Ciphertext<DCRTPoly> EvalPolyLinear(ConstCiphertext<DCRTPoly> &x, const std::vector<double> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyLinear(ConstCiphertext<DCRTPoly> &x, const std::vector<std::complex<double>> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyPS(ConstCiphertext<DCRTPoly> &x, const std::vector<int64_t> &coefficients) const override

Method for polynomial evaluation for polynomials represented in the power series. This uses the Paterson-Stockmeyer algorith,.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in the polynomial; the size of the vector is the degree of the polynomial + 1

Returns

the result of polynomial evaluation.

virtual Ciphertext<DCRTPoly> EvalPolyPS(ConstCiphertext<DCRTPoly> &x, const std::vector<double> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalPolyPS(ConstCiphertext<DCRTPoly> &x, const std::vector<std::complex<double>> &coefficients) const override
virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalChebyPolys(ConstCiphertext<DCRTPoly> &x, const std::vector<int64_t> &coefficients, double a, double b) const override

Method for computing the Chebyshev polynomials to be used in polynomial interpolation via the Chebyshev series. This uses a binary tree computation of the Chebyshev polynomials.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in the polynomial; the size of the vector is the degree of the polynomial + 1

  • a – - lower bound of argument for which the coefficients were found

  • b – - upper bound of argument for which the coefficients were found

Returns

the result of polynomial evaluation.

virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalChebyPolys(ConstCiphertext<DCRTPoly> &x, const std::vector<double> &coefficients, double a, double b) const override
virtual std::shared_ptr<seriesPowers<DCRTPoly>> EvalChebyPolys(ConstCiphertext<DCRTPoly> &x, const std::vector<std::complex<double>> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeries(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<int64_t> &coefficients, double a, double b) const override

Method for evaluating Chebyshev polynomial interpolation; first the range [a,b] is mapped to [-1,1] using linear transformation 1 + 2 (x-a)/(b-a) If the degree of the polynomial is less than 5, use EvalChebyshevSeriesLinear, otherwise, use EvalChebyshevSeriesPS.

Parameters
  • &cipherText – input ciphertext

  • &coefficients – is the vector of coefficients in Chebyshev expansion

  • a – - lower bound of argument for which the coefficients were found

  • b – - upper bound of argument for which the coefficients were found

Returns

the result of polynomial evaluation.

virtual Ciphertext<DCRTPoly> EvalChebyshevSeries(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<double> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeries(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<std::complex<double>> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> polys, const std::vector<int64_t> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> polys, const std::vector<double> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesWithPrecomp(std::shared_ptr<seriesPowers<DCRTPoly>> polys, const std::vector<std::complex<double>> &coefficients) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesLinear(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<int64_t> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesLinear(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<double> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesLinear(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<std::complex<double>> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesPS(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<int64_t> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesPS(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<double> &coefficients, double a, double b) const override
virtual Ciphertext<DCRTPoly> EvalChebyshevSeriesPS(ConstCiphertext<DCRTPoly> &ciphertext, const std::vector<std::complex<double>> &coefficients, double a, double b) const override
template<class Archive>
inline void save(Archive &ar) const
template<class Archive>
inline void load(Archive &ar)
inline std::string SerializedObjectName() const