fields

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package fields provides low-level field element traits used by generated finite field implementations.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Degree

func Degree[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any]() uint64

func IsNegative

func IsNegative[FP impl.PrimeFieldElementPtrLowLevel[FP, F], F any](v *F) (neg ct.Bool)

func IsOdd

func IsOdd[FP impl.PrimeFieldElementPtrLowLevel[FP, F], F any](v *F) (odd 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

func TonelliShanks[FP impl.FiniteFieldElementPtrLowLevel[FP, F], F any](out, x, ethRootOfUnity *F, e uint64, progenitorExp []uint8) (ok ct.Bool)

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 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])

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL