Versions in this module Expand all Collapse all v5 v5.0.5 May 3, 2024 Changes in this version + func BSGSIndex(nonZeroDiags []int, slots, N1 int) (index map[int][]int, rotN1, rotN2 []int) + func EncodeLinearTransformation[T any](encoder Encoder[T, ringqp.Poly], diagonals Diagonals[T], ...) (err error) + func EvaluateGianStep(i int, giantSteps []int, babySteps []*BabyStep, eval Evaluator, pb PowerBasis) (err error) + func EvaluateLinearTranformationSequential(evalLT EvaluatorForLinearTransformation, evalDiag EvaluatorForDiagonalMatrix, ...) (err error) + func EvaluateLinearTransformationsMany(evalLT EvaluatorForLinearTransformation, evalDiag EvaluatorForDiagonalMatrix, ...) (err error) + func EvaluateMonomial(a, b, xpow *rlwe.Ciphertext, eval Evaluator) (err error) + func EvaluatePatersonStockmeyerPolynomialVector[T any](eval Evaluator, poly PatersonStockmeyerPolynomialVector, ...) (res *rlwe.Ciphertext, err error) + func EvaluatePolynomial(eval EvaluatorForPolynomial, input interface{}, p interface{}, ...) (opOut *rlwe.Ciphertext, err error) + func EvaluatePolynomialVectorFromPowerBasis[T any](eval Evaluator, targetLevel int, pol PolynomialVector, cg CoefficientGetter[T], ...) (res *rlwe.Ciphertext, err error) + func FindBestBSGSRatio(nonZeroDiags []int, maxN int, logMaxRatio int) (minN int) + func GaloisElementsForLinearTransformation(params rlwe.ParameterProvider, diags []int, ...) (galEls []uint64) + func GetPreRotatedCiphertextForDiagonalMatrixMultiplication(levelQ int, eval EvaluatorForLinearTransformation, ctIn *rlwe.Ciphertext, ...) (err error) + func MultiplyByDiagMatrix(eval EvaluatorForLinearTransformation, ctIn *rlwe.Ciphertext, ...) (err error) + func MultiplyByDiagMatrixBSGS(eval EvaluatorForLinearTransformation, ctIn *rlwe.Ciphertext, ...) (err error) + func SplitDegree(n int) (a, b int) + type BabyStep struct + Degree int + Value *rlwe.Ciphertext + func EvaluateBabyStep[T any](i int, eval Evaluator, poly PatersonStockmeyerPolynomialVector, ...) (ct *BabyStep, err error) + type Bootstrapper interface + Bootstrap func(ct *CiphertextType) (*CiphertextType, error) + BootstrapMany func(cts []CiphertextType) ([]CiphertextType, error) + Depth func() int + MinimumInputLevel func() int + OutputLevel func() int + type CoefficientGetter interface + GetSingleCoefficient func(pol Polynomial, k int) (value T) + GetVectorCoefficient func(pol PolynomialVector, k int) (values []T) + ShallowCopy func() CoefficientGetter[T] + type Diagonals map[int][]T + func (m Diagonals[T]) At(i, slots int) ([]T, error) + func (m Diagonals[T]) DiagonalsIndexList() (indexes []int) + type Encoder interface + Encode func(values []T, metaData *rlwe.MetaData, output U) (err error) + type Evaluator interface + Add func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + AddNew func(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + GetEvaluatorBuffer func() *rlwe.EvaluatorBuffers + Mul func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + MulNew func(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + MulRelin func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + MulRelinNew func(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + MulThenAdd func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + Relinearize func(op0, op1 *rlwe.Ciphertext) (err error) + Rescale func(op0, op1 *rlwe.Ciphertext) (err error) + Sub func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + SubNew func(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + type EvaluatorForDiagonalMatrix interface + Decompose func(levelQ int, ctIn *rlwe.Ciphertext, BuffDecompQP []ringqp.Poly) + GetPreRotatedCiphertextForDiagonalMatrixMultiplication func(levelQ int, ctIn *rlwe.Ciphertext, BuffDecompQP []ringqp.Poly, rots []int, ...) (err error) + MultiplyByDiagMatrix func(ctIn *rlwe.Ciphertext, matrix LinearTransformation, BuffDecompQP []ringqp.Poly, ...) (err error) + MultiplyByDiagMatrixBSGS func(ctIn *rlwe.Ciphertext, matrix LinearTransformation, ...) (err error) + type EvaluatorForLinearTransformation interface + AutomorphismHoistedLazy func(levelQ int, ctIn *rlwe.Ciphertext, c1DecompQP []ringqp.Poly, galEl uint64, ...) (err error) + AutomorphismIndex func(uint64) []uint64 + CheckAndGetGaloisKey func(galEl uint64) (evk *rlwe.GaloisKey, err error) + DecomposeNTT func(level, levelP, pCount int, c1 ring.Poly, isNTT bool, ...) + GadgetProductHoistedLazy func(levelQ int, BuffQPDecompQP []ringqp.Poly, gadgetCt *rlwe.GadgetCiphertext, ...) + GadgetProductLazy func(levelQ int, cx ring.Poly, gadgetCt *rlwe.GadgetCiphertext, ...) + GetBuffCt func() *rlwe.Ciphertext + GetBuffDecompQP func() []ringqp.Poly + GetBuffQP func() [6]ringqp.Poly + ModDownQPtoQNTT func(levelQ, levelP int, p1Q, p1P, p2Q ring.Poly) + Rescale func(op1, op2 *rlwe.Ciphertext) (err error) + type EvaluatorForPolynomial interface + EvaluatePatersonStockmeyerPolynomialVector func(poly PatersonStockmeyerPolynomialVector, pb PowerBasis) (res *rlwe.Ciphertext, err error) + type LinearTransformation struct + Level int + LogBabyStepGianStepRatio int + N1 int + Vec map[int]ringqp.Poly + func NewLinearTransformation(params rlwe.ParameterProvider, ltparams LinearTransformationParameters) LinearTransformation + func (lt LinearTransformation) BSGSIndex() (index map[int][]int, n1, n2 []int) + func (lt LinearTransformation) GaloisElements(params rlwe.ParameterProvider) (galEls []uint64) + type LinearTransformationParameters struct + DiagonalsIndexList []int + Level int + LogBabyStepGianStepRatio int + LogDimensions ring.Dimensions + Scale rlwe.Scale + type PatersonStockmeyerPolynomial struct + Base int + Degree int + Level int + Scale rlwe.Scale + Value []Polynomial + type PatersonStockmeyerPolynomialVector struct + Mapping map[int][]int + Value []PatersonStockmeyerPolynomial + type Polynomial struct + Lazy bool + Lead bool + Level int + MaxDeg int + Scale rlwe.Scale + func NewPolynomial(poly bignum.Polynomial) Polynomial + func (p Polynomial) Factorize(n int) (pq, pr Polynomial) + func (p Polynomial) GetPatersonStockmeyerPolynomial(params rlwe.ParameterProvider, inputLevel int, ...) PatersonStockmeyerPolynomial + type PolynomialVector struct + Mapping map[int][]int + Value []Polynomial + func NewPolynomialVector(polys []bignum.Polynomial, mapping map[int][]int) (PolynomialVector, error) + func (p PolynomialVector) Factorize(n int) (polyq, polyr PolynomialVector) + func (p PolynomialVector) GetPatersonStockmeyerPolynomial(params rlwe.Parameters, inputLevel int, inputScale, outputScale rlwe.Scale, ...) PatersonStockmeyerPolynomialVector + func (p PolynomialVector) IsEven() (even bool) + func (p PolynomialVector) IsOdd() (odd bool) + type PowerBasis struct + Value structs.Map[int, rlwe.Ciphertext] + func NewPowerBasis(ct *rlwe.Ciphertext, basis bignum.Basis) (p PowerBasis) + func (p *PowerBasis) GenPower(n int, lazy bool, eval Evaluator) (err error) + func (p *PowerBasis) ReadFrom(r io.Reader) (n int64, err error) + func (p *PowerBasis) UnmarshalBinary(data []byte) (err error) + func (p PowerBasis) BinarySize() (size int) + func (p PowerBasis) MarshalBinary() (data []byte, err error) + func (p PowerBasis) WriteTo(w io.Writer) (n int64, err error) + type SimEvaluator interface + MulNew func(op0, op1 *SimOperand) *SimOperand + PolynomialDepth func(degree int) int + Rescale func(op0 *SimOperand) + UpdateLevelAndScaleBabyStep func(lead bool, tLevelOld int, tScaleOld rlwe.Scale) (tLevelNew int, tScaleNew rlwe.Scale) + UpdateLevelAndScaleGiantStep func(lead bool, tLevelOld int, tScaleOld, xPowScale rlwe.Scale) (tLevelNew int, tScaleNew rlwe.Scale) + type SimOperand struct + Level int + Scale rlwe.Scale + type SimPowerBasis map[int]*SimOperand + func (d SimPowerBasis) GenPower(params rlwe.ParameterProvider, n int, eval SimEvaluator)