Versions in this module Expand all Collapse all v0 v0.2.0 May 16, 2023 v0.1.10 Aug 3, 2023 v0.1.9 Aug 2, 2023 v0.1.8 Aug 2, 2023 v0.1.7 Jul 30, 2023 v0.1.6 Mar 14, 2023 v0.1.5 Mar 8, 2023 v0.1.3 Dec 16, 2022 v0.1.2 Dec 15, 2022 v0.1.1 Dec 15, 2022 v0.1.0 Dec 14, 2022 Changes in this version + const Chebyshev + const DefaultNTTFlag + const GaloisGen + const IsNegligibleThreshold + const Monomial + var DefaultConjugateInvariantParams = []ParametersLiteral + var DefaultParams = []ParametersLiteral + var DefaultPostQuantumConjugateInvariantParams = []ParametersLiteral + var DefaultPostQuantumParams = []ParametersLiteral + var PN12QP101CIpq = ParametersLiteral + var PN12QP101pq = ParametersLiteral + var PN12QP109 = ParametersLiteral + var PN12QP109CI = ParametersLiteral + var PN13QP202CIpq = ParametersLiteral + var PN13QP202pq = ParametersLiteral + var PN13QP218 = ParametersLiteral + var PN13QP218CI = ParametersLiteral + var PN14QP411CIpq = ParametersLiteral + var PN14QP411pq = ParametersLiteral + var PN14QP438 = ParametersLiteral + var PN14QP438CI = ParametersLiteral + var PN15QP827CIpq = ParametersLiteral + var PN15QP827pq = ParametersLiteral + var PN15QP880 = ParametersLiteral + var PN15QP880CI = ParametersLiteral + var PN16QP1654CIpq = ParametersLiteral + var PN16QP1654pq = ParametersLiteral + var PN16QP1761 = ParametersLiteral + var PN16QP1761CI = ParametersLiteral + func BsgsIndex(el interface{}, slots, N1 int) (index map[int][]int, rotN1, rotN2 []int) + func DivideComplex128SliceVec(values []complex128, scaleVal complex128) + func FindBestBSGSSplit(diagMatrix interface{}, maxN int, maxRatio float64) (minN int) + func GenSwitchkeysRescalingParams(Q, P []uint64) (params []uint64) + func GetRootsFloat64(NthRoot int) (roots []complex128) + func GetRootsbigFloat(NthRoot int, prec uint) (roots []*ring.Complex) + func NewCiphertext(params Parameters, degree, level int) (ct *rlwe.Ciphertext) + func NewDecryptor(params Parameters, key *rlwe.SecretKey) rlwe.Decryptor + func NewEncryptor(params Parameters, key interface{}) rlwe.Encryptor + func NewKeyGenerator(params Parameters) rlwe.KeyGenerator + func NewPRNGEncryptor(params Parameters, key *rlwe.SecretKey) rlwe.PRNGEncryptor + func NewPlaintext(params Parameters, level int) (pt *rlwe.Plaintext) + func NttAndMontgomeryLvl(level int, logSlots int, ringQ *ring.Ring, montgomery bool, pol *ring.Poly) + func SliceBitReverseInPlaceComplex128(slice []complex128, N int) + func SliceBitReverseInPlaceFloat64(slice []float64, N int) + func SliceBitReverseInPlaceRingComplex(slice []*ring.Complex, N int) + func SpecialFFTUL8Vec(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialFFTVec(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialiFFTUL8Vec(values []complex128, N, M int, rotGroup []int, roots []complex128) + func SpecialiFFTVec(values []complex128, N, M int, rotGroup []int, roots []complex128) + func StandardDeviation(vec []float64, scale float64) (std float64) + type BasisType int + type DomainSwitcher struct + func NewDomainSwitcher(params Parameters, comlexToRealSwk, RealToComplexSwk *rlwe.SwitchingKey) (DomainSwitcher, error) + func (switcher *DomainSwitcher) ComplexToReal(eval Evaluator, ctIn, ctOut *rlwe.Ciphertext) + func (switcher *DomainSwitcher) RealToComplex(eval Evaluator, ctIn, ctOut *rlwe.Ciphertext) + type Encoder interface + Decode func(plaintext *rlwe.Plaintext, logSlots int) (res []complex128) + DecodeCoeffs func(plaintext *rlwe.Plaintext) (res []float64) + DecodeCoeffsPublic func(plaintext *rlwe.Plaintext, bound float64) (res []float64) + DecodePublic func(plaintext *rlwe.Plaintext, logSlots int, sigma float64) []complex128 + DecodeSlots func(plaintext *rlwe.Plaintext, logSlots int) (res []complex128) + DecodeSlotsPublic func(plaintext *rlwe.Plaintext, logSlots int, sigma float64) []complex128 + Embed func(values interface{}, logSlots int, scale rlwe.Scale, montgomery bool, ...) + Encode func(values interface{}, plaintext *rlwe.Plaintext, logSlots int) + EncodeCoeffs func(values []float64, plaintext *rlwe.Plaintext) + EncodeCoeffsNew func(values []float64, level int, scale rlwe.Scale) (plaintext *rlwe.Plaintext) + EncodeNew func(values interface{}, level int, scale rlwe.Scale, logSlots int) (plaintext *rlwe.Plaintext) + EncodeSlots func(values interface{}, plaintext *rlwe.Plaintext, logSlots int) + EncodeSlotsNew func(values interface{}, level int, scale rlwe.Scale, logSlots int) (plaintext *rlwe.Plaintext) + GetErrSTDCoeffDomain func(valuesWant, valuesHave []complex128, scale rlwe.Scale) (std float64) + GetErrSTDSlotDomain func(valuesWant, valuesHave []complex128, scale rlwe.Scale) (std float64) + ShallowCopy func() Encoder + func NewEncoder(params Parameters) Encoder + type EncoderBigComplex interface + Decode func(plaintext *rlwe.Plaintext, logSlots int) (res []*ring.Complex) + DecodePublic func(plaintext *rlwe.Plaintext, logSlots int, sigma float64) (res []*ring.Complex) + Encode func(values []*ring.Complex, plaintext *rlwe.Plaintext, logSlots int) + EncodeNew func(values []*ring.Complex, level int, scale rlwe.Scale, logSlots int) (plaintext *rlwe.Plaintext) + FFT func(values []*ring.Complex, N int) + InvFFT func(values []*ring.Complex, N int) + ShallowCopy func() EncoderBigComplex + func NewEncoderBigComplex(params Parameters, prec uint) EncoderBigComplex + type Evaluator interface + Add func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + AddConst func(ctIn *rlwe.Ciphertext, constant interface{}, ctOut *rlwe.Ciphertext) + AddConstNew func(ctIn *rlwe.Ciphertext, constant interface{}) (ctOut *rlwe.Ciphertext) + AddNew func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand) (ctOut *rlwe.Ciphertext) + Average func(ctIn *rlwe.Ciphertext, batch int, ctOut *rlwe.Ciphertext) + BuffCt func() *rlwe.Ciphertext + BuffQ func() [3]*ring.Poly + Conjugate func(ctIn *rlwe.Ciphertext, ctOut *rlwe.Ciphertext) + ConjugateNew func(ctIn *rlwe.Ciphertext) (ctOut *rlwe.Ciphertext) + DivByi func(ctIn *rlwe.Ciphertext, ctOut *rlwe.Ciphertext) + DivByiNew func(ctIn *rlwe.Ciphertext) (ctOut *rlwe.Ciphertext) + DropLevel func(ctIn *rlwe.Ciphertext, levels int) + DropLevelNew func(ctIn *rlwe.Ciphertext, levels int) (ctOut *rlwe.Ciphertext) + EvaluatePoly func(input interface{}, pol *Polynomial, targetScale rlwe.Scale) (ctOut *rlwe.Ciphertext, err error) + EvaluatePolyVector func(input interface{}, pols []*Polynomial, encoder Encoder, ...) (ctOut *rlwe.Ciphertext, err error) + GetRLWEEvaluator func() *rlwe.Evaluator + InnerSum func(ctIn *rlwe.Ciphertext, batch, n int, ctOut *rlwe.Ciphertext) + InverseNew func(ctIn *rlwe.Ciphertext, steps int) (ctOut *rlwe.Ciphertext, err error) + LinearTransform func(ctIn *rlwe.Ciphertext, linearTransform interface{}, ctOut []*rlwe.Ciphertext) + LinearTransformNew func(ctIn *rlwe.Ciphertext, linearTransform interface{}) (ctOut []*rlwe.Ciphertext) + Mul func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + MulAndAdd func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + MulNew func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand) (ctOut *rlwe.Ciphertext) + MulRelin func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + MulRelinAndAdd func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + MulRelinNew func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand) (ctOut *rlwe.Ciphertext) + MultByConst func(ctIn *rlwe.Ciphertext, constant interface{}, ctOut *rlwe.Ciphertext) + MultByConstAndAdd func(ctIn *rlwe.Ciphertext, constant interface{}, ctOut *rlwe.Ciphertext) + MultByConstNew func(ctIn *rlwe.Ciphertext, constant interface{}) (ctOut *rlwe.Ciphertext) + MultByGaussianInteger func(ctIn *rlwe.Ciphertext, cReal, cImag interface{}, ctOut *rlwe.Ciphertext) + MultByGaussianIntegerAndAdd func(ctIn *rlwe.Ciphertext, cReal, cImag interface{}, ctOut *rlwe.Ciphertext) + MultByi func(ctIn *rlwe.Ciphertext, ctOut *rlwe.Ciphertext) + MultByiNew func(ctIn *rlwe.Ciphertext) (ctOut *rlwe.Ciphertext) + MultiplyByDiagMatrix func(ctIn *rlwe.Ciphertext, matrix LinearTransform, c2DecompQP []ringqp.Poly, ...) + MultiplyByDiagMatrixBSGS func(ctIn *rlwe.Ciphertext, matrix LinearTransform, c2DecompQP []ringqp.Poly, ...) + Neg func(ctIn *rlwe.Ciphertext, ctOut *rlwe.Ciphertext) + NegNew func(ctIn *rlwe.Ciphertext) (ctOut *rlwe.Ciphertext) + Relinearize func(ctIn *rlwe.Ciphertext, ctOut *rlwe.Ciphertext) + RelinearizeNew func(ctIn *rlwe.Ciphertext) (ctOut *rlwe.Ciphertext) + Replicate func(ctIn *rlwe.Ciphertext, batch, n int, ctOut *rlwe.Ciphertext) + Rescale func(ctIn *rlwe.Ciphertext, minScale rlwe.Scale, ctOut *rlwe.Ciphertext) (err error) + Rotate func(ctIn *rlwe.Ciphertext, k int, ctOut *rlwe.Ciphertext) + RotateHoisted func(ctIn *rlwe.Ciphertext, rotations []int, ctOut map[int]*rlwe.Ciphertext) + RotateHoistedNew func(ctIn *rlwe.Ciphertext, rotations []int) (ctOut map[int]*rlwe.Ciphertext) + RotateHoistedNoModDownNew func(level int, rotations []int, c0 *ring.Poly, c2DecompQP []ringqp.Poly) (cOut map[int]rlwe.CiphertextQP) + RotateNew func(ctIn *rlwe.Ciphertext, k int) (ctOut *rlwe.Ciphertext) + ScaleUp func(ctIn *rlwe.Ciphertext, scale rlwe.Scale, ctOut *rlwe.Ciphertext) + ScaleUpNew func(ctIn *rlwe.Ciphertext, scale rlwe.Scale) (ctOut *rlwe.Ciphertext) + SetScale func(ctIn *rlwe.Ciphertext, scale rlwe.Scale) + ShallowCopy func() Evaluator + Sub func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand, ctOut *rlwe.Ciphertext) + SubNew func(ctIn *rlwe.Ciphertext, op1 rlwe.Operand) (ctOut *rlwe.Ciphertext) + SwitchKeys func(ctIn *rlwe.Ciphertext, switchingKey *rlwe.SwitchingKey, ctOut *rlwe.Ciphertext) + SwitchKeysNew func(ctIn *rlwe.Ciphertext, switchingKey *rlwe.SwitchingKey) (ctOut *rlwe.Ciphertext) + Trace func(ctIn *rlwe.Ciphertext, logSlots int, ctOut *rlwe.Ciphertext) + TraceNew func(ctIn *rlwe.Ciphertext, logSlots int) (ctOut *rlwe.Ciphertext) + WithKey func(rlwe.EvaluationKey) Evaluator + func NewEvaluator(params Parameters, evaluationKey rlwe.EvaluationKey) Evaluator + type LinearTransform struct + Level int + LogSlots int + N1 int + Scale rlwe.Scale + Vec map[int]ringqp.Poly + func GenLinearTransform(encoder Encoder, value interface{}, level int, scale rlwe.Scale, logslots int) LinearTransform + func GenLinearTransformBSGS(encoder Encoder, value interface{}, level int, scale rlwe.Scale, ...) (LT LinearTransform) + func NewLinearTransform(params Parameters, nonZeroDiags []int, level, logSlots int, BSGSRatio float64) LinearTransform + func (LT *LinearTransform) Encode(encoder Encoder, value interface{}, scale rlwe.Scale) + func (LT *LinearTransform) Rotations() (rotations []int) + type Parameters struct + func NewParameters(rlweParams rlwe.Parameters, logSlots int) (p Parameters, err error) + func NewParametersFromLiteral(pl ParametersLiteral) (Parameters, error) + func (p *Parameters) UnmarshalBinary(data []byte) (err error) + func (p *Parameters) UnmarshalJSON(data []byte) (err error) + func (p Parameters) Equals(other Parameters) bool + func (p Parameters) LogQLvl(level int) int + func (p Parameters) LogSlots() int + func (p Parameters) MarshalBinary() ([]byte, error) + func (p Parameters) MarshalBinarySize() int + func (p Parameters) MarshalJSON() ([]byte, error) + func (p Parameters) MaxLevel() int + func (p Parameters) MaxLogSlots() int + func (p Parameters) MaxSlots() int + func (p Parameters) ParametersLiteral() (pLit ParametersLiteral) + func (p Parameters) QLvl(level int) *big.Int + func (p Parameters) RotationsForLinearTransform(nonZeroDiags interface{}, logSlots int, BSGSratio float64) (rotations []int) + func (p Parameters) Slots() int + func (p Parameters) StandardParameters() (pckks Parameters, err error) + type ParametersLiteral struct + DefaultScale float64 + H int + LogN int + LogP []int + LogQ []int + LogSlots int + P []uint64 + Pow2Base int + Q []uint64 + RingType ring.Type + Sigma float64 + func (p ParametersLiteral) RLWEParameters() rlwe.ParametersLiteral + type Polynomial struct + A float64 + B float64 + Coeffs []complex128 + Lead bool + MaxDeg int + func Approximate(function interface{}, a, b float64, degree int) (pol *Polynomial) + func NewPoly(coeffs []complex128) (p *Polynomial) + func (p *Polynomial) Degree() int + func (p *Polynomial) Depth() int + type PolynomialBasis struct + Value map[int]*rlwe.Ciphertext + func NewPolynomialBasis(ct *rlwe.Ciphertext, basistype BasisType) (p *PolynomialBasis) + func (p *PolynomialBasis) GenPower(n int, lazy bool, scale rlwe.Scale, eval Evaluator) (err error) + func (p *PolynomialBasis) MarshalBinary() (data []byte, err error) + func (p *PolynomialBasis) UnmarshalBinary(data []byte) (err error) + type PrecisionStats struct + ImagDist []struct{ ... } + L2Dist []struct{ ... } + MaxDelta Stats + MaxPrecision Stats + MeanDelta Stats + MeanPrecision Stats + MedianDelta Stats + MedianPrecision Stats + MinDelta Stats + MinPrecision Stats + RealDist []struct{ ... } + STDFreq float64 + STDTime float64 + 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