Versions in this module Expand all Collapse all v0 v0.0.2 Dec 20, 2024 v0.0.1 Oct 31, 2024 Changes in this version + const CosContinuous + const CosDiscrete + const GaloisGen + const HomomorphicDecode + const HomomorphicEncode + const NTTFlag + const PREC128 + const PREC64 + const RepackImagAsReal + const SinContinuous + const SplitRealAndImag + const Standard + var CoeffsSignX2Cheby = []string + var CoeffsSignX4Cheby = []string + var DefaultMinimaxCompositePolynomialForSign = [][]string + var ExampleParameters128BitLogN14LogQP438 = ParametersLiteral + func BigFloatToFixedPointCRT(r ring.RNSRing, values []big.Float, scale *big.Float, coeffs ring.RNSPoly) + func Complex128ToFixedPointCRT(r ring.RNSRing, values []complex128, scale float64, coeffs ring.RNSPoly) + func ComplexArbitraryToFixedPointCRT(r ring.RNSRing, values []bignum.Complex, scale *big.Float, coeffs ring.RNSPoly) + func Float64ToFixedPointCRT(r ring.RNSRing, values []float64, scale float64, coeffs ring.RNSPoly) + func GenMinimaxCompositePolynomial(prec uint, logalpha, logerr int, deg []int, f func(*big.Float) *big.Float) (coeffs [][]big.Float) + func GenMinimaxCompositePolynomialForSign(prec uint, logalpha, logerr int, deg []int) + func GetEncodedPolynomialVector(params Parameters, ecd *Encoder, polys *he.PolynomialVector, inputLevel int, ...) (pspe *he.EncodedPolynomialVector, err error) + func GetRootsBigComplex(NthRoot int, prec uint) (roots []bignum.Complex) + func GetRootsComplex128(NthRoot int) (roots []complex128) + func NewCiphertext(params Parameters, degree, level int) (ct *rlwe.Ciphertext) + func NewDecryptor(params Parameters, key *rlwe.SecretKey) *rlwe.Decryptor + func NewEncryptor(params Parameters, key rlwe.EncryptionKey) *rlwe.Encryptor + func NewKeyGenerator(params Parameters) *rlwe.KeyGenerator + func NewPlaintext(params Parameters, level int) (pt *rlwe.Plaintext) + func NewPowerBasis(ct *rlwe.Ciphertext, basis bignum.Basis) *he.PowerBasis + func PrettyPrintCoefficients(decimals int, coeffs []big.Float, odd, even, first bool) + func SingleFloat64ToFixedPointCRT(r ring.RNSRing, i int, value float64, scale float64, coeffs ring.RNSPoly) + func SpecialFFTArbitrary(values []bignum.Complex, N, M int, rotGroup []int, roots []bignum.Complex) + func SpecialFFTDouble(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialFFTDoubleUL8(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialIFFTArbitrary(values []bignum.Complex, N, M int, rotGroup []int, roots []bignum.Complex) + func SpecialIFFTDouble(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialiFFTDoubleUnrolled8(values []complex128, N, M int, rotGroup []int, roots []complex128) + func StandardDeviation(vec interface{}, scale rlwe.Scale) (std float64) + func VerifyTestVectors(params Parameters, encoder *Encoder, decryptor *rlwe.Decryptor, ...) + type CoefficientGetter struct + Values []bignum.Complex + func (c CoefficientGetter) GetSingleCoefficient(pol *he.Polynomial, k int) (value bignum.Complex) + func (c CoefficientGetter) GetVectorCoefficient(pol *he.PolynomialVector, k int) (values []bignum.Complex) + func (c CoefficientGetter) ShallowCopy() he.CoefficientGetter[bignum.Complex] + type ComparisonEvaluator struct + MinimaxCompositeSignPolynomial MinimaxCompositePolynomial + func NewComparisonEvaluator(params Parameters, eval EvaluatorForMinimaxCompositePolynomial, ...) *ComparisonEvaluator + func (eval ComparisonEvaluator) Max(op0, op1 *rlwe.Ciphertext) (max *rlwe.Ciphertext, err error) + func (eval ComparisonEvaluator) Min(op0, op1 *rlwe.Ciphertext) (min *rlwe.Ciphertext, err error) + func (eval ComparisonEvaluator) Sign(op0 *rlwe.Ciphertext) (sign *rlwe.Ciphertext, err error) + func (eval ComparisonEvaluator) Step(op0 *rlwe.Ciphertext) (step *rlwe.Ciphertext, err error) + type DFTEvaluator struct + func NewDFTEvaluator(params Parameters, eval EvaluatorForDFT) *DFTEvaluator + func (eval *DFTEvaluator) CoeffsToSlots(ctIn *rlwe.Ciphertext, ctsMatrices *DFTMatrix, buf rlwe.HoistingBuffer, ...) (err error) + func (eval *DFTEvaluator) CoeffsToSlotsNew(ctIn *rlwe.Ciphertext, ctsMatrices *DFTMatrix, buf rlwe.HoistingBuffer) (ctReal, ctImag *rlwe.Ciphertext, err error) + func (eval *DFTEvaluator) Evaluate(ctIn *rlwe.Ciphertext, dft *DFTMatrix, buf rlwe.HoistingBuffer, ...) (err error) + func (eval *DFTEvaluator) SlotsToCoeffs(ctReal, ctImag *rlwe.Ciphertext, stcMatrices *DFTMatrix, ...) (err error) + func (eval *DFTEvaluator) SlotsToCoeffsNew(ctReal, ctImag *rlwe.Ciphertext, stcMatrices *DFTMatrix, ...) (opOut *rlwe.Ciphertext, err error) + type DFTFormat int + type DFTMatrix struct + Matrices []*he.LinearTransformation + func NewDFTMatrixFromLiteral(params Parameters, d DFTMatrixLiteral, encoder *Encoder) (*DFTMatrix, error) + type DFTMatrixLiteral struct + BitReversed bool + Format DFTFormat + LevelP int + LevelQ int + Levels []int + LogSlots int + Scaling *big.Float + Type DFTType + func (d *DFTMatrixLiteral) UnmarshalBinary(data []byte) error + func (d DFTMatrixLiteral) Depth(actual bool) (depth int) + func (d DFTMatrixLiteral) GaloisElements(params Parameters) (galEls []uint64) + func (d DFTMatrixLiteral) GenMatrices(LogN int, prec uint) (plainVector []he.Diagonals[bignum.Complex]) + func (d DFTMatrixLiteral) MarshalBinary() (data []byte, err error) + type DFTType int + type DomainSwitcher struct + func NewDomainSwitcher(params Parameters, comlexToRealEvk, realToComplexEvk *rlwe.EvaluationKey) (DomainSwitcher, error) + func (switcher DomainSwitcher) ComplexToReal(eval *Evaluator, ctIn, opOut *rlwe.Ciphertext) (err error) + func (switcher DomainSwitcher) RealToComplex(eval *Evaluator, ctIn, opOut *rlwe.Ciphertext) (err error) + type Encoder struct + func NewEncoder(parameters Parameters, precision ...uint) (ecd *Encoder) + func (ecd Encoder) Decode(pt *rlwe.Plaintext, values FloatSlice) (err error) + func (ecd Encoder) DecodePublic(pt *rlwe.Plaintext, values FloatSlice, logprec float64) (err error) + func (ecd Encoder) Embed(values interface{}, metadata *rlwe.MetaData, polyOut interface{}) (err error) + func (ecd Encoder) Encode(values FloatSlice, pt *rlwe.Plaintext) (err error) + func (ecd Encoder) FFT(values FloatSlice, logN int) (err error) + func (ecd Encoder) GetRLWEParameters() rlwe.Parameters + func (ecd Encoder) IFFT(values FloatSlice, logN int) (err error) + func (ecd Encoder) Parameters() Parameters + func (ecd Encoder) Prec() uint + func (ecd Encoder) ShallowCopy() *Encoder + type Evaluator struct + func NewEvaluator(params Parameters, evk rlwe.EvaluationKeySet) *Evaluator + func (eval *Evaluator) Add(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) AddNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) ApplyEvaluationKeyNew(op0 *rlwe.Ciphertext, evk *rlwe.EvaluationKey) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) Conjugate(op0 *rlwe.Ciphertext, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) ConjugateNew(op0 *rlwe.Ciphertext) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) DropLevel(op0 *rlwe.Ciphertext, levels int) + func (eval *Evaluator) DropLevelNew(op0 *rlwe.Ciphertext, levels int) (opOut *rlwe.Ciphertext) + func (eval *Evaluator) GetRLWEParameters() *rlwe.Parameters + func (eval *Evaluator) LevelsConsumedPerRescaling() int + func (eval *Evaluator) MatchScalesForMul(op0, op1 *rlwe.Ciphertext, targetScale rlwe.Scale) (err error) + func (eval *Evaluator) Mul(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) MulNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) MulRelin(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) MulRelinNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) MulRelinThenAdd(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) MulThenAdd(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) Relinearize(op0, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) RelinearizeNew(op0 *rlwe.Ciphertext) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) Rescale(op0, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) RescaleTo(op0 *rlwe.Ciphertext, minScale rlwe.Scale, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) Rotate(op0 *rlwe.Ciphertext, k int, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) RotateHoisted(ctIn *rlwe.Ciphertext, rotations []int, buf rlwe.HoistingBuffer, ...) (err error) + func (eval *Evaluator) RotateHoistedLazyNew(level int, rotations []int, ct *rlwe.Ciphertext, buf rlwe.HoistingBuffer) (cOut map[int]*rlwe.Ciphertext, err error) + func (eval *Evaluator) RotateHoistedNew(ctIn *rlwe.Ciphertext, rotations []int, buf rlwe.HoistingBuffer) (opOut map[int]*rlwe.Ciphertext, err error) + func (eval *Evaluator) RotateNew(op0 *rlwe.Ciphertext, k int) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) ScaleUp(op0 *rlwe.Ciphertext, scale rlwe.Scale, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) ScaleUpNew(op0 *rlwe.Ciphertext, scale rlwe.Scale) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) SetScale(ct *rlwe.Ciphertext, scale rlwe.Scale) (err error) + func (eval *Evaluator) ShallowCopy() *Evaluator + func (eval *Evaluator) Sub(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + func (eval *Evaluator) SubNew(op0 *rlwe.Ciphertext, op1 rlwe.Operand) (opOut *rlwe.Ciphertext, err error) + func (eval *Evaluator) WithKey(evk rlwe.EvaluationKeySet) *Evaluator + func (eval Evaluator) Average(ctIn *rlwe.Ciphertext, logBatchSize int, buf rlwe.HoistingBuffer, ...) (err error) + func (eval Evaluator) TraceNew(ctIn *rlwe.Ciphertext, logSlots int) (opOut *rlwe.Ciphertext, err error) + type EvaluatorForDFT interface + Add func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + Conjugate func(op0 *rlwe.Ciphertext, opOut *rlwe.Ciphertext) (err error) + Mul func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + Rescale func(op0 *rlwe.Ciphertext, opOut *rlwe.Ciphertext) (err error) + Rotate func(op0 *rlwe.Ciphertext, k int, opOut *rlwe.Ciphertext) (err error) + Sub func(op0 *rlwe.Ciphertext, op1 rlwe.Operand, opOut *rlwe.Ciphertext) (err error) + type EvaluatorForInverse interface + MatchScalesForMul func(op0, op1 *rlwe.Ciphertext, targetScale rlwe.Scale) (err error) + SetScale func(op0 *rlwe.Ciphertext, scale rlwe.Scale) (err error) + type EvaluatorForMinimaxCompositePolynomial interface + ConjugateNew func(ct *rlwe.Ciphertext) (ctConj *rlwe.Ciphertext, err error) + type EvaluatorForMod1 interface + Parameters func() Parameters + type FloatSlice interface + type InverseEvaluator struct + Parameters Parameters + func NewInverseEvaluator(params Parameters, eval EvaluatorForInverse, ...) InverseEvaluator + func (eval *InverseEvaluator) GoldschmidtDivision(iters int, ct *rlwe.Ciphertext) (err error) + func (eval *InverseEvaluator) IntervalNormalization(in *rlwe.Ciphertext, scaling, Max float64, Fac int) (norm *rlwe.Ciphertext, err error) + func (eval *InverseEvaluator) InvSqrt(in, inHalf *rlwe.Ciphertext, r int) (err error) + func (eval *InverseEvaluator) InverseFullDomainNew(in *rlwe.Ciphertext, Min, Max float64, ...) (err error) + func (eval *InverseEvaluator) InverseNegativeDomainNew(in *rlwe.Ciphertext, Min, Max float64) (err error) + func (eval *InverseEvaluator) InversePositiveDomainNew(in *rlwe.Ciphertext, Min, Max float64) (err error) + type MinimaxCompositePolynomial []bignum.Polynomial + func NewMinimaxCompositePolynomial(coeffsStr [][]string) MinimaxCompositePolynomial + func (mcp MinimaxCompositePolynomial) Evaluate(x interface{}) (y *bignum.Complex) + func (mcp MinimaxCompositePolynomial) MaxDepth() (depth int) + type MinimaxCompositePolynomialEvaluator struct + Parameters Parameters + func NewMinimaxCompositePolynomialEvaluator(params Parameters, eval EvaluatorForMinimaxCompositePolynomial, ...) *MinimaxCompositePolynomialEvaluator + func (eval MinimaxCompositePolynomialEvaluator) Evaluate(in *rlwe.Ciphertext, mcp MinimaxCompositePolynomial, targetScale rlwe.Scale) (out *rlwe.Ciphertext, err error) + type Mod1Evaluator struct + Mod1Parameters Mod1Parameters + PolynomialEvaluator *PolynomialEvaluator + func NewMod1Evaluator(eval EvaluatorForMod1, evalPoly *PolynomialEvaluator, ...) *Mod1Evaluator + func (eval Mod1Evaluator) EvaluateNew(ct *rlwe.Ciphertext) (*rlwe.Ciphertext, error) + func (eval Mod1Evaluator) EvaluateWithAffineTransformationNew(ct *rlwe.Ciphertext, a, b complex128) (*rlwe.Ciphertext, error) + type Mod1Parameters struct + DoubleAngle int + LevelQ int + LogDefaultScale int + LogMessageRatio int + Mod1InvPoly *bignum.Polynomial + Mod1Poly *bignum.Polynomial + Mod1Type Mod1Type + QDiff float64 + Sqrt2Pi float64 + func NewMod1ParametersFromLiteral(params Parameters, evm Mod1ParametersLiteral) (Mod1Parameters, error) + func (evp Mod1Parameters) MessageRatio() float64 + func (evp Mod1Parameters) Mod1Interval() float64 + func (evp Mod1Parameters) Mod1IntervalScaled() float64 + func (evp Mod1Parameters) Mod1IntervalScalingFactor() float64 + func (evp Mod1Parameters) ScalingFactor() rlwe.Scale + type Mod1ParametersLiteral struct + DoubleAngle int + LevelQ int + LogMessageRatio int + LogScale int + Mod1Degree int + Mod1Interval int + Mod1InvDegree int + Mod1Type Mod1Type + Scaling float64 + func (evm *Mod1ParametersLiteral) UnmarshalBinary(data []byte) (err error) + func (evm Mod1ParametersLiteral) Depth() (depth int) + func (evm Mod1ParametersLiteral) MarshalBinary() (data []byte, err error) + type Mod1Type uint64 + type Parameters struct + func NewParametersFromLiteral(pl ParametersLiteral) (Parameters, error) + func (p *Parameters) ReadFrom(r io.Reader) (n int64, err error) + func (p *Parameters) UnmarshalBinary(data []byte) (err error) + func (p *Parameters) UnmarshalJSON(data []byte) (err error) + func (p Parameters) BinarySize() int + func (p Parameters) EncodingPrecision() (prec uint) + func (p Parameters) Equal(other *Parameters) bool + func (p Parameters) GaloisElementForComplexConjugation() uint64 + func (p Parameters) GaloisElementForRotation(k int) uint64 + func (p Parameters) GaloisElementsForInnerSum(batch, n int) []uint64 + func (p Parameters) GaloisElementsForReplicate(batch, n int) []uint64 + func (p Parameters) GaloisElementsForTrace(logN int) []uint64 + func (p Parameters) GetRLWEParameters() *rlwe.Parameters + func (p Parameters) GetScalingFactor(a, c rlwe.Scale, level int) (b rlwe.Scale) + func (p Parameters) LevelsConsumedPerRescaling() int + func (p Parameters) LogDefaultScale() int + func (p Parameters) LogMaxDimensions() ring.Dimensions + func (p Parameters) LogMaxSlots() int + func (p Parameters) LogQLvl(level int) int + func (p Parameters) MarshalBinary() (data []byte, err error) + func (p Parameters) MaxDepth() int + func (p Parameters) MaxDimensions() ring.Dimensions + func (p Parameters) MaxLevel() int + func (p Parameters) MaxSlots() int + func (p Parameters) ParametersLiteral() (pLit ParametersLiteral) + func (p Parameters) PrecisionMode() PrecisionMode + func (p Parameters) QLvl(level int) *big.Int + func (p Parameters) StandardParameters() (pckks Parameters, err error) + func (p Parameters) WriteTo(w io.Writer) (n int64, err error) + type ParametersLiteral struct + LogDefaultScale int + LogN int + LogNthRoot int + LogP structs.Vector[int] + LogQ structs.Vector[int] + P structs.Vector[uint64] + Q structs.Vector[uint64] + RingType ring.Type + Xe ring.DistributionParameters + Xs ring.DistributionParameters + func (p *ParametersLiteral) ReadFrom(r io.Reader) (n int64, err error) + func (p *ParametersLiteral) UnmarshalBinary(data []byte) (err error) + func (p *ParametersLiteral) UnmarshalJSON(b []byte) (err error) + func (p ParametersLiteral) BinarySize() (size int) + func (p ParametersLiteral) GetRLWEParametersLiteral() rlwe.ParametersLiteral + func (p ParametersLiteral) MarshalBinary() (data []byte, err error) + func (p ParametersLiteral) WriteTo(w io.Writer) (n int64, err error) + type PolynomialEvaluator struct + Parameters Parameters + func NewPolynomialEvaluator(params Parameters, eval he.Evaluator) *PolynomialEvaluator + func (eval PolynomialEvaluator) Evaluate(ct *rlwe.Ciphertext, p interface{}, targetScale rlwe.Scale) (opOut *rlwe.Ciphertext, err error) + func (eval PolynomialEvaluator) EvaluateFromPowerBasis(pb *he.PowerBasis, p interface{}, targetScale rlwe.Scale) (opOut *rlwe.Ciphertext, err error) + type PrecisionMode int + type PrecisionStats struct + AvgErr Stats + AvgPrec Stats + ImagDist []struct{ ... } + L2Dist []struct{ ... } + MaxErr Stats + MaxPrec Stats + MedErr Stats + MedPrec Stats + MinErr Stats + MinPrec Stats + RealDist []struct{ ... } + StdErr Stats + StdPrec Stats + func GetPrecisionStats(params Parameters, encoder *Encoder, decryptor *rlwe.Decryptor, ...) (prec PrecisionStats) + func (prec PrecisionStats) String() string + type Stats struct + Imag float64 + L2 float64 + Real float64