Documentation
¶
Overview ¶
Package fields provides low-level field element traits used by generated finite field implementations.
Index ¶
- func Degree[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any]() uint64
- func IsNegative[FP impl.PrimeFieldElementPtrLowLevel[FP, F], F any](v *F) (neg ct.Bool)
- func IsOdd[FP impl.PrimeFieldElementPtrLowLevel[FP, F], F any](v *F) (odd ct.Bool)
- func Pow[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any](result, base *F, exp []uint8)
- func SliceCmpLE[S ~[]E, E constraints.Unsigned](x, y S) (lt, eq, gt ct.Bool)
- func TonelliShanks[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any](out, x, ethRootOfUnity *F, e uint64, progenitorExp []uint8) (ok ct.Bool)
- type CubicFieldExtensionArithmetic
- type CubicFieldExtensionImpl
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Add(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Bytes() []byte
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) ComponentsBytes() [][]byte
- func (*CubicFieldExtensionImpl[BFP, A, BF]) Degree() uint64
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Div(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Double(v *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Equal(rhs *CubicFieldExtensionImpl[BFP, A, BF]) ct.Bool
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Inv(arg *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsNonZero() ct.Bool
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsOne() ct.Bool
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsZero() ct.Bool
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Mul(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Neg(v *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Select(choice ct.Choice, z, nz *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Set(v *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetBytes(data []byte) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetOne()
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetRandom(prng io.Reader) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetUniformBytes(data ...[]byte) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetZero()
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Sqrt(v *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Square(v *CubicFieldExtensionImpl[BFP, A, BF])
- func (f *CubicFieldExtensionImpl[BFP, A, BF]) Sub(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
- func (*CubicFieldExtensionImpl[BFP, A, BF]) ToHex() string
- type FiniteFieldElement
- type FiniteFieldElementPtr
- type PrimeFieldElement
- type PrimeFieldElementPtr
- type QuadraticFieldExtensionArithmetic
- type QuadraticFieldExtensionImpl
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Add(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Bytes() []byte
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) ComponentsBytes() [][]byte
- func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Degree() uint64
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Div(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Double(v *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Equal(rhs *QuadraticFieldExtensionImpl[BFP, A, BF]) ct.Bool
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Inv(v *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsNonZero() ct.Bool
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsOne() ct.Bool
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsZero() ct.Bool
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Mul(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Neg(v *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Select(choice ct.Choice, z, nz *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Set(v *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetBytes(data []byte) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetOne()
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetRandom(prng io.Reader) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetUniformBytes(componentsData ...[]byte) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetZero()
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Sqrt(v *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Square(v *QuadraticFieldExtensionImpl[BFP, A, BF])
- func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Sub(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsNegative ¶
func IsNegative[FP impl.PrimeFieldElementPtrLowLevel[FP, F], F any](v *F) (neg ct.Bool)
func Pow ¶
func Pow[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any](result, base *F, exp []uint8)
func SliceCmpLE ¶
func SliceCmpLE[S ~[]E, E constraints.Unsigned](x, y S) (lt, eq, gt ct.Bool)
the slice is little-endian limb-like representation.
func TonelliShanks ¶
Types ¶
type CubicFieldExtensionArithmetic ¶
type CubicFieldExtensionArithmetic[BF impl.FiniteFieldElementLowLevel[BF]] interface { MulByCubicNonResidue(out BF, in BF) RootOfUnity(out BF) ProgenitorExponent() []uint8 E() uint64 }
type CubicFieldExtensionImpl ¶
type CubicFieldExtensionImpl[BFP interface {
*BF
impl.FiniteFieldElementLowLevel[BFP]
}, A CubicFieldExtensionArithmetic[BFP], BF any] struct {
U0 BF
U1 BF
U2 BF
}
func (*CubicFieldExtensionImpl[BFP, A, BF]) Add ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Add(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Bytes ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Bytes() []byte
func (*CubicFieldExtensionImpl[BFP, A, BF]) ComponentsBytes ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) ComponentsBytes() [][]byte
func (*CubicFieldExtensionImpl[BFP, A, BF]) Degree ¶
func (*CubicFieldExtensionImpl[BFP, A, BF]) Degree() uint64
func (*CubicFieldExtensionImpl[BFP, A, BF]) Div ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Div(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) Double ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Double(v *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Equal ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Equal(rhs *CubicFieldExtensionImpl[BFP, A, BF]) ct.Bool
func (*CubicFieldExtensionImpl[BFP, A, BF]) Inv ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Inv(arg *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) IsNonZero ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsNonZero() ct.Bool
func (*CubicFieldExtensionImpl[BFP, A, BF]) IsOne ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsOne() ct.Bool
func (*CubicFieldExtensionImpl[BFP, A, BF]) IsZero ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) IsZero() ct.Bool
func (*CubicFieldExtensionImpl[BFP, A, BF]) Mul ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Mul(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Neg ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Neg(v *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Select ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Select(choice ct.Choice, z, nz *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Set ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Set(v *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) SetBytes ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetBytes(data []byte) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) SetOne ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetOne()
func (*CubicFieldExtensionImpl[BFP, A, BF]) SetRandom ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetRandom(prng io.Reader) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) SetUniformBytes ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetUniformBytes(data ...[]byte) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) SetZero ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) SetZero()
func (*CubicFieldExtensionImpl[BFP, A, BF]) Sqrt ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Sqrt(v *CubicFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*CubicFieldExtensionImpl[BFP, A, BF]) Square ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Square(v *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) Sub ¶
func (f *CubicFieldExtensionImpl[BFP, A, BF]) Sub(lhs, rhs *CubicFieldExtensionImpl[BFP, A, BF])
func (*CubicFieldExtensionImpl[BFP, A, BF]) ToHex ¶
func (*CubicFieldExtensionImpl[BFP, A, BF]) ToHex() string
type FiniteFieldElement ¶
type FiniteFieldElement[E impl.FiniteFieldElementLowLevel[E]] = impl.FiniteFieldElementLowLevel[E]
type FiniteFieldElementPtr ¶
type FiniteFieldElementPtr[E impl.FiniteFieldElementPtrLowLevel[E, T], T any] = impl.FiniteFieldElementPtrLowLevel[E, T]
type PrimeFieldElement ¶
type PrimeFieldElement[E impl.PrimeFieldElementLowLevel[E]] = impl.PrimeFieldElementLowLevel[E]
type PrimeFieldElementPtr ¶
type PrimeFieldElementPtr[E impl.PrimeFieldElementPtrLowLevel[E, T], T any] = impl.PrimeFieldElementPtrLowLevel[E, T]
type QuadraticFieldExtensionArithmetic ¶
type QuadraticFieldExtensionArithmetic[BFP impl.FiniteFieldElementLowLevel[BFP]] interface { MulByQuadraticNonResidue(out BFP, in BFP) }
type QuadraticFieldExtensionImpl ¶
type QuadraticFieldExtensionImpl[BFP impl.FiniteFieldElementPtrLowLevel[BFP, BF], A QuadraticFieldExtensionArithmetic[BFP], BF any] struct { U0 BF U1 BF }
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Add ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Add(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Bytes ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Bytes() []byte
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) ComponentsBytes ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) ComponentsBytes() [][]byte
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Degree ¶
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Degree() uint64
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Div ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Div(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Double ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Double(v *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Equal ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Equal(rhs *QuadraticFieldExtensionImpl[BFP, A, BF]) ct.Bool
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Inv ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Inv(v *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) IsNonZero ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsNonZero() ct.Bool
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) IsOne ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsOne() ct.Bool
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) IsZero ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) IsZero() ct.Bool
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Mul ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Mul(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Neg ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Neg(v *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Select ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Select(choice ct.Choice, z, nz *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Set ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Set(v *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) SetBytes ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetBytes(data []byte) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) SetOne ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetOne()
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) SetRandom ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetRandom(prng io.Reader) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) SetUniformBytes ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetUniformBytes(componentsData ...[]byte) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) SetZero ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) SetZero()
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Sqrt ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Sqrt(v *QuadraticFieldExtensionImpl[BFP, A, BF]) (ok ct.Bool)
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Square ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Square(v *QuadraticFieldExtensionImpl[BFP, A, BF])
func (*QuadraticFieldExtensionImpl[BFP, A, BF]) Sub ¶
func (f *QuadraticFieldExtensionImpl[BFP, A, BF]) Sub(lhs, rhs *QuadraticFieldExtensionImpl[BFP, A, BF])
Click to show internal directories.
Click to hide internal directories.