Documentation
¶
Overview ¶
Package algebra provides algebraic interfaces and generic helpers for groups, rings, fields, modules, and related algebraic structures.
Index ¶
- Constants
- Variables
- func Addition[E Summand[E]](a, b E) E
- func And[E Conjunct[E]](a, b E) E
- func Compare[E base.WithInternalCompareMethod[E]](lhs, rhs E) base.Ordering
- func Division[E Dividend[E]](a, b E) E
- func DualOperator[E DualOperand[E]](a, b E) E
- func Equal[E base.Equatable[E]](a, b E) bool
- func Exponentiate[A ExponentiationBase[A, E], E Element[E]](b A, exponent E) A
- func FixedCapacityAddition[E FixedCapacitySummand[E]](a, b E, capacity int) E
- func FixedCapacityDivision[E FixedCapacityDividend[E]](a, b E, capacity int) E
- func FixedCapacityDualOperator[E FixedCapacityDualOperand[E]](a, b E, capacity int) E
- func FixedCapacityExponentiate[A FixedCapacityExponentiationBase[A, E], E Element[E]](b A, exponent E, capacity int) A
- func FixedCapacityMultiplication[E FixedCapacityMultiplicand[E]](a, b E, capacity int) E
- func FixedCapacityOperator[E FixedCapacityOperand[E]](a, b E, capacity int) E
- func FixedCapacitySubtraction[E FixedCapacityMinuend[E]](a, b E, capacity int) E
- func FixedLengthLeftBitwiseShift[E FixedLengthLeftBitwiseShiftable[E]](a E, shift uint, capacity int) E
- func FixedLengthRightBitwiseShift[E FixedLengthRightBitwiseShiftable[E]](a E, shift uint, capacity int) E
- func Invert[E Inversand[E]](a E) E
- func IsLessThanOrEqual[E base.Comparable[E]](lhs, rhs E) bool
- func LeftBitwiseShift[E LeftBitwiseShiftable[E]](a E, shift uint) E
- func MaybeAddition[E MaybeSummand[E]](a, b E) (E, error)
- func MaybeAnd[E MaybeConjunct[E]](a, b E) (E, error)
- func MaybeDivision[E MaybeDividend[E]](a, b E) (E, error)
- func MaybeExponentiate[A MaybeExponentiationBase[A, E], E Element[E]](b A, exponent E) (A, error)
- func MaybeFixedCapacityAddition[E MaybeFixedCapacitySummand[E]](a, b E, capacity int) (E, error)
- func MaybeFixedCapacityDivision[E MaybeFixedCapacityDividend[E]](a, b E, capacity int) (E, error)
- func MaybeFixedCapacityExponentiate[A MaybeFixedCapacityExponentiationBase[A, E], E Element[E]](b A, exponent E, capacity int) (A, error)
- func MaybeFixedCapacityMultiplication[E MaybeFixedCapacityMultiplicand[E]](a, b E, capacity int) (E, error)
- func MaybeFixedCapacitySubtraction[E MaybeFixedCapacityMinuend[E]](a, b E, capacity int) (E, error)
- func MaybeInvert[E MaybeInversand[E]](a E) (E, error)
- func MaybeMultiplication[E MaybeMultiplicand[E]](a, b E) (E, error)
- func MaybeNegate[E MaybeArithmeticNegand[E]](a E) (E, error)
- func MaybeNot[E MaybeBooleanNegand[E]](a E) (E, error)
- func MaybeOr[E MaybeDisjunct[E]](a, b E) (E, error)
- func MaybeShift[E MaybeShiftable[E, S], S any](a E, shift S) (E, error)
- func MaybeSubtraction[E MaybeMinuend[E]](a, b E) (E, error)
- func MaybeXor[E MaybeExclusiveDisjunct[E]](a, b E) (E, error)
- func Modulo[E Residuand[M, Q], M Element[M], Q Residue[Q, M]](x E, m M) (Q, error)
- func Multiplication[E Multiplicand[E]](a, b E) E
- func Negate[E ArithmeticNegand[E]](a E) E
- func Not[E BooleanNegand[E]](a E) E
- func Operator[E Operand[E]](a, b E) E
- func Or[E Disjunct[E]](a, b E) E
- func PartialCompare[E base.WithInternalPartialCompareMethod[E]](lhs, rhs E) base.PartialOrdering
- func Resize[E Resizable[E, C], C any](a E, capacity C) E
- func ResizeCapacity[E ResizableCapacity[E]](a E, capacity int) E
- func RightBitwiseShift[E RightBitwiseShiftable[E]](a E, shift uint) E
- func ScalarExponentiate[E MultiplicativelyActable[E, S], S Element[S]](sc S, a E) E
- func ScalarMultiply[E AdditivelyActable[E, S], S Element[S]](sc S, a E) E
- func ScalarOp[E Actable[E, S], S Element[S]](sc S, a E) E
- func Shift[E Shiftable[E, S], S any](a E, shift S) E
- func StructureAs[S crtp.Structure[E], E any](s Structure[E]) (S, error)
- func StructureIs[S crtp.Structure[E], E any](s Structure[E]) bool
- func StructureMustBeAs[S crtp.Structure[E], E any](s Structure[E]) S
- func Subtraction[E Minuend[E]](a, b E) E
- func Xor[E ExclusiveDisjunct[E]](a, b E) E
- type AbelianGroup
- type AbelianGroupElement
- type Actable
- type Action
- type AdditiveGroup
- type AdditiveGroupElement
- type AdditiveModule
- type AdditiveModuleElement
- type AdditiveMonoid
- type AdditiveMonoidElement
- type AdditivePrimeGroup
- type AdditivePrimeGroupElement
- type AdditiveSemiGroup
- type AdditiveSemiGroupElement
- type AdditiveSemiModule
- type AdditiveSemiModuleElement
- type AdditivelyActable
- type AdditivelyHomomorphicLike
- type AdditivelyHomomorphicLikeInCoDomain
- type AffineCurve
- type AffinePoint
- type Algebra
- type AlgebraElement
- type AlgebraicCurve
- type AlgebraicPoint
- type ArithmeticNegand
- type BooleanNegand
- type Cardinal
- type CoProduct
- type Conjunct
- type CyclicGroup
- type CyclicGroupElement
- type CyclicMonoid
- type CyclicMonoidElement
- type CyclicSemiGroup
- type CyclicSemiGroupElement
- type Disjunct
- type Dividend
- type DoubleMagma
- type DoubleMagmaElement
- type DualOperand
- type Element
- type EllipticCurve
- type EllipticCurvePoint
- type EuclideanDomain
- type EuclideanDomainElement
- type EuclideanSemiDomain
- type EuclideanSemiDomainElement
- type ExclusiveDisjunct
- type ExponentiationBase
- type Field
- type FieldElement
- type FieldExtension
- type FieldExtensionElement
- type FiniteField
- type FiniteFieldElement
- type FiniteGroup
- type FiniteModule
- type FiniteRing
- type FiniteStructure
- type FixedCapacityDividend
- type FixedCapacityDualOperand
- type FixedCapacityExponentiationBase
- type FixedCapacityIntegerExponentiationBase
- type FixedCapacityMinuend
- type FixedCapacityMultiplicand
- type FixedCapacityOperand
- type FixedCapacitySummand
- type FixedLengthLeftBitwiseShiftable
- type FixedLengthRightBitwiseShiftable
- type Group
- type GroupElement
- type HemiRing
- type HemiRingElement
- type HomomorphicLike
- type HomomorphicMinued
- type HomomorphicNegand
- type HomomorphicSummand
- type Homomorphism
- type IntLike
- type IntegerExponentiationBase
- type Inversand
- type LeftBitwiseShiftable
- type Magma
- type MagmaElement
- type Mapping
- type MaybeArithmeticNegand
- type MaybeBooleanNegand
- type MaybeConjunct
- type MaybeDisjunct
- type MaybeDividend
- type MaybeExclusiveDisjunct
- type MaybeExponentiationBase
- type MaybeFixedCapacityDividend
- type MaybeFixedCapacityExponentiationBase
- type MaybeFixedCapacityIntegerExponentiationBase
- type MaybeFixedCapacityMinuend
- type MaybeFixedCapacityMultiplicand
- type MaybeFixedCapacitySummand
- type MaybeIntegerExponentiationBase
- type MaybeInversand
- type MaybeMinuend
- type MaybeMultiplicand
- type MaybeShiftable
- type MaybeSummand
- type Minuend
- type Module
- type ModuleElement
- type ModuleValuedPolynomial
- type Monoid
- type MonoidElement
- type MultiVariatePolynomialRing
- type Multiplicand
- type MultiplicativeGroup
- type MultiplicativeGroupElement
- type MultiplicativeModule
- type MultiplicativeModuleElement
- type MultiplicativeMonoid
- type MultiplicativeMonoidElement
- type MultiplicativeSemiGroup
- type MultiplicativeSemiGroupElement
- type MultiplicativeSemiModule
- type MultiplicativeSemiModuleElement
- type MultiplicativelyActable
- type MultiplicativelyHomomorphicLike
- type MultivariatePolynomial
- type NAry
- type NLike
- type NPlusLike
- type NatLike
- type NatPlusLike
- type Numeric
- type NumericStructure
- type Operand
- type PairingFriendlyCurve
- type PairingFriendlyPoint
- type PairingName
- type PairingProductEvaluator
- type PairingType
- type Polynomial
- type PolynomialLike
- type PolynomialLikeStructure
- type PolynomialModule
- type PolynomialRing
- type Power
- type PrimeField
- type PrimeFieldElement
- type PrimeGroup
- type PrimeGroupElement
- type PrimeOrderEllipticCurve
- type PrimeOrderEllipticCurvePoint
- type Product
- type Quotient
- type RationalPoint
- type Residuand
- type Residue
- type Resizable
- type ResizableCapacity
- type Rig
- type RigElement
- type RightBitwiseShiftable
- type Ring
- type RingElement
- type Rng
- type RngElement
- type SemiGroup
- type SemiGroupElement
- type SemiModule
- type SemiModuleElement
- type SemiRing
- type SemiRingElement
- type Shiftable
- type Structure
- type Summand
- type Tensor
- type TensorProduct
- type UintLike
- type UnivariatePolynomialLike
- type UnivariatePolynomialLikeStructure
- type Variety
- type Vector
- type VectorSpace
- type ZLike
- type ZModLike
Constants ¶
Variables ¶
View Source
var (
ErrInvalidType = errs.New("invalid type")
)
Functions ¶
func DualOperator ¶
func DualOperator[E DualOperand[E]](a, b E) E
func Exponentiate ¶
func Exponentiate[A ExponentiationBase[A, E], E Element[E]](b A, exponent E) A
func FixedCapacityAddition ¶
func FixedCapacityAddition[E FixedCapacitySummand[E]](a, b E, capacity int) E
func FixedCapacityDivision ¶
func FixedCapacityDivision[E FixedCapacityDividend[E]](a, b E, capacity int) E
func FixedCapacityDualOperator ¶
func FixedCapacityDualOperator[E FixedCapacityDualOperand[E]](a, b E, capacity int) E
func FixedCapacityMultiplication ¶
func FixedCapacityMultiplication[E FixedCapacityMultiplicand[E]](a, b E, capacity int) E
func FixedCapacityOperator ¶
func FixedCapacityOperator[E FixedCapacityOperand[E]](a, b E, capacity int) E
func FixedCapacitySubtraction ¶
func FixedCapacitySubtraction[E FixedCapacityMinuend[E]](a, b E, capacity int) E
func IsLessThanOrEqual ¶
func IsLessThanOrEqual[E base.Comparable[E]](lhs, rhs E) bool
func LeftBitwiseShift ¶
func LeftBitwiseShift[E LeftBitwiseShiftable[E]](a E, shift uint) E
func MaybeAddition ¶
func MaybeAddition[E MaybeSummand[E]](a, b E) (E, error)
func MaybeDivision ¶
func MaybeDivision[E MaybeDividend[E]](a, b E) (E, error)
func MaybeExponentiate ¶
func MaybeInvert ¶
func MaybeInvert[E MaybeInversand[E]](a E) (E, error)
func MaybeMultiplication ¶
func MaybeMultiplication[E MaybeMultiplicand[E]](a, b E) (E, error)
func MaybeNegate ¶
func MaybeNegate[E MaybeArithmeticNegand[E]](a E) (E, error)
func MaybeShift ¶
func MaybeSubtraction ¶
func MaybeSubtraction[E MaybeMinuend[E]](a, b E) (E, error)
func Multiplication ¶
func Multiplication[E Multiplicand[E]](a, b E) E
func PartialCompare ¶
func PartialCompare[E base.WithInternalPartialCompareMethod[E]](lhs, rhs E) base.PartialOrdering
func ResizeCapacity ¶
func ResizeCapacity[E ResizableCapacity[E]](a E, capacity int) E
func RightBitwiseShift ¶
func RightBitwiseShift[E RightBitwiseShiftable[E]](a E, shift uint) E
func ScalarExponentiate ¶
func ScalarExponentiate[E MultiplicativelyActable[E, S], S Element[S]](sc S, a E) E
func ScalarMultiply ¶
func ScalarMultiply[E AdditivelyActable[E, S], S Element[S]](sc S, a E) E
func StructureMustBeAs ¶
func Subtraction ¶
func Subtraction[E Minuend[E]](a, b E) E
Types ¶
type AbelianGroup ¶
type AbelianGroup[E crtp.AbelianGroupElement[E, S], S crtp.RingElement[S]] = crtp.AbelianGroup[E, S]
Ab ~= Mod_Z, however due to type system constraints we cannot express this directly without breaking some things (e.g. ZMod would have to be considered as a euclidean domain) So we leave it under-constrained as a RingElement, just to satisfy properties of a module.
type AbelianGroupElement ¶
type AbelianGroupElement[E crtp.AbelianGroupElement[E, S], S crtp.RingElement[S]] = crtp.AbelianGroupElement[E, S]
type AdditiveGroup ¶
type AdditiveGroup[E crtp.AdditiveGroupElement[E]] = crtp.AdditiveGroup[E]
type AdditiveGroupElement ¶
type AdditiveGroupElement[E crtp.AdditiveGroupElement[E]] = crtp.AdditiveGroupElement[E]
type AdditiveModule ¶
type AdditiveModule[ME crtp.AdditiveModuleElement[ME, S], S crtp.RingElement[S]] crtp.AdditiveModule[ME, S]
type AdditiveModuleElement ¶
type AdditiveModuleElement[ME crtp.AdditiveModuleElement[ME, S], S crtp.RingElement[S]] crtp.AdditiveModuleElement[ME, S]
type AdditiveMonoid ¶
type AdditiveMonoid[ME crtp.AdditiveMonoidElement[ME]] = crtp.AdditiveMonoid[ME]
type AdditiveMonoidElement ¶
type AdditiveMonoidElement[ME crtp.AdditiveMonoidElement[ME]] = crtp.AdditiveMonoidElement[ME]
type AdditivePrimeGroup ¶
type AdditivePrimeGroup[E crtp.AdditivePrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.AdditivePrimeGroup[E, S]
type AdditivePrimeGroupElement ¶
type AdditivePrimeGroupElement[E crtp.AdditivePrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.AdditivePrimeGroupElement[E, S]
type AdditiveSemiGroup ¶
type AdditiveSemiGroup[E crtp.AdditiveSemiGroupElement[E]] = crtp.AdditiveSemiGroup[E]
type AdditiveSemiGroupElement ¶
type AdditiveSemiGroupElement[E crtp.AdditiveSemiGroupElement[E]] = crtp.AdditiveSemiGroupElement[E]
type AdditiveSemiModule ¶
type AdditiveSemiModule[ME crtp.AdditiveSemiModuleElement[ME, S], S crtp.SemiRingElement[S]] crtp.AdditiveSemiModule[ME, S]
type AdditiveSemiModuleElement ¶
type AdditiveSemiModuleElement[ME crtp.AdditiveSemiModuleElement[ME, S], S crtp.SemiRingElement[S]] crtp.AdditiveSemiModuleElement[ME, S]
type AdditivelyActable ¶
type AdditivelyActable[E, S any] crtp.AdditivelyActable[E, S]
type AdditivelyHomomorphicLike ¶
type AdditivelyHomomorphicLike[T HomomorphicLike[T, TV], TV AdditiveSemiGroupElement[TV]] interface { HomomorphicLike[T, TV] crtp.Summand[T] }
type AdditivelyHomomorphicLikeInCoDomain ¶
type AdditivelyHomomorphicLikeInCoDomain[T HomomorphicLike[T, TV], TV GroupElement[TV]] interface { HomomorphicLike[T, TV] HomomorphicSummand[T] }
type AffineCurve ¶
type AffineCurve[P crtp.AffinePoint[P, C], C crtp.RingElement[C]] crtp.AffineCurve[P, C]
type AffinePoint ¶
type AffinePoint[P crtp.AffinePoint[P, C], C crtp.RingElement[C]] crtp.AffinePoint[P, C]
type Algebra ¶
type Algebra[AE crtp.AlgebraElement[AE, S], S crtp.RingElement[S]] crtp.Algebra[AE, S]
type AlgebraElement ¶
type AlgebraElement[AE crtp.AlgebraElement[AE, S], S crtp.RingElement[S]] crtp.AlgebraElement[AE, S] //nolint:revive // algebra.AlgebraElement is meaningful because they relate to two different meaning of algebra.
type AlgebraicCurve ¶
type AlgebraicCurve[P crtp.AlgebraicPoint[P, C], C crtp.RingElement[C]] crtp.AlgebraicCurve[P, C]
type AlgebraicPoint ¶
type AlgebraicPoint[P crtp.AlgebraicPoint[P, C], C crtp.RingElement[C]] crtp.AlgebraicPoint[P, C]
type ArithmeticNegand ¶
type ArithmeticNegand[E any] crtp.ArithmeticNegand[E]
type BooleanNegand ¶
type BooleanNegand[E any] crtp.BooleanNegand[E]
type CyclicGroup ¶
type CyclicGroup[E crtp.CyclicGroupElement[E]] = crtp.CyclicGroup[E]
type CyclicGroupElement ¶
type CyclicGroupElement[E crtp.CyclicGroupElement[E]] = crtp.CyclicGroupElement[E]
type CyclicMonoid ¶
type CyclicMonoid[ME crtp.CyclicMonoidElement[ME]] = crtp.CyclicMonoid[ME]
type CyclicMonoidElement ¶
type CyclicMonoidElement[ME crtp.CyclicMonoidElement[ME]] = crtp.CyclicMonoidElement[ME]
type CyclicSemiGroup ¶
type CyclicSemiGroup[E crtp.CyclicSemiGroupElement[E]] = crtp.CyclicSemiGroup[E]
type CyclicSemiGroupElement ¶
type CyclicSemiGroupElement[E crtp.CyclicSemiGroupElement[E]] = crtp.CyclicSemiGroupElement[E]
type DoubleMagma ¶
type DoubleMagma[E crtp.DoubleMagmaElement[E]] crtp.DoubleMagma[E]
type DoubleMagmaElement ¶
type DoubleMagmaElement[E crtp.DoubleMagmaElement[E]] crtp.DoubleMagmaElement[E]
type DualOperand ¶
type DualOperand[E any] crtp.DualOperand[E]
type EllipticCurve ¶
type EllipticCurve[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.UintLike[S]] crtp.EllipticCurve[P, B, S]
type EllipticCurvePoint ¶
type EllipticCurvePoint[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.UintLike[S]] crtp.EllipticCurvePoint[P, B, S]
type EuclideanDomain ¶
type EuclideanDomain[RE crtp.EuclideanDomainElement[RE]] crtp.EuclideanDomain[RE]
type EuclideanDomainElement ¶
type EuclideanDomainElement[RE crtp.EuclideanDomainElement[RE]] crtp.EuclideanDomainElement[RE]
type EuclideanSemiDomain ¶
type EuclideanSemiDomain[RE crtp.EuclideanSemiDomainElement[RE]] crtp.EuclideanSemiDomain[RE]
type EuclideanSemiDomainElement ¶
type EuclideanSemiDomainElement[RE crtp.EuclideanSemiDomainElement[RE]] crtp.EuclideanSemiDomainElement[RE]
type ExclusiveDisjunct ¶
type ExclusiveDisjunct[E any] crtp.ExclusiveDisjunct[E]
type ExponentiationBase ¶
type ExponentiationBase[B, E any] crtp.ExponentiationBase[B, E]
type FieldElement ¶
type FieldElement[FE crtp.FieldElement[FE]] = crtp.FieldElement[FE]
type FieldExtension ¶
type FieldExtension[FE crtp.FieldExtensionElement[FE]] = crtp.FieldExtension[FE]
type FieldExtensionElement ¶
type FieldExtensionElement[FE crtp.FieldExtensionElement[FE]] = crtp.FieldExtensionElement[FE]
type FiniteField ¶
type FiniteField[FE crtp.FiniteFieldElement[FE]] = crtp.FiniteField[FE]
type FiniteFieldElement ¶
type FiniteFieldElement[FE crtp.FiniteFieldElement[FE]] = crtp.FiniteFieldElement[FE]
type FiniteGroup ¶
type FiniteGroup[GE crtp.GroupElement[GE]] = crtp.FiniteGroup[GE]
type FiniteModule ¶
type FiniteModule[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.FiniteModule[ME, S]
type FiniteRing ¶
type FiniteRing[RE crtp.RingElement[RE]] = crtp.FiniteRing[RE]
type FiniteStructure ¶
type FiniteStructure[E any] = crtp.FiniteStructure[E]
type FixedCapacityDividend ¶
type FixedCapacityDividend[E any] crtp.FixedCapacityDividend[E]
type FixedCapacityDualOperand ¶
type FixedCapacityDualOperand[E any] crtp.FixedCapacityDualOperand[E]
type FixedCapacityExponentiationBase ¶
type FixedCapacityExponentiationBase[B, E any] crtp.FixedCapacityExponentiationBase[B, E]
type FixedCapacityIntegerExponentiationBase ¶
type FixedCapacityIntegerExponentiationBase[B, I any] crtp.FixedCapacityIntegerExponentiationBase[B, I]
type FixedCapacityMinuend ¶
type FixedCapacityMinuend[E any] crtp.FixedCapacityMinuend[E]
type FixedCapacityMultiplicand ¶
type FixedCapacityMultiplicand[E any] crtp.FixedCapacityMultiplicand[E]
type FixedCapacityOperand ¶
type FixedCapacityOperand[E any] crtp.FixedCapacityOperand[E]
type FixedCapacitySummand ¶
type FixedCapacitySummand[E any] crtp.FixedCapacitySummand[E]
type FixedLengthLeftBitwiseShiftable ¶
type FixedLengthLeftBitwiseShiftable[E any] crtp.FixedLengthLeftBitwiseShiftable[E]
type FixedLengthRightBitwiseShiftable ¶
type FixedLengthRightBitwiseShiftable[E any] crtp.FixedLengthRightBitwiseShiftable[E]
type GroupElement ¶
type GroupElement[E crtp.GroupElement[E]] = crtp.GroupElement[E]
type HemiRingElement ¶
type HemiRingElement[E crtp.HemiRingElement[E]] crtp.HemiRingElement[E]
type HomomorphicLike ¶
type HomomorphicMinued ¶
type HomomorphicMinued[T any] interface { HomSub(T) T }
type HomomorphicNegand ¶
type HomomorphicNegand[T any] interface { HomNeg() T }
type HomomorphicSummand ¶
type HomomorphicSummand[T any] interface { HomAdd(T) T }
type Homomorphism ¶
type Homomorphism[E2 SemiGroupElement[E2], E1 SemiGroupElement[E1]] func(E1) E2
type IntegerExponentiationBase ¶
type IntegerExponentiationBase[B, I any] crtp.IntegerExponentiationBase[B, I]
type LeftBitwiseShiftable ¶
type LeftBitwiseShiftable[E any] crtp.LeftBitwiseShiftable[E]
type MagmaElement ¶
type MagmaElement[E crtp.MagmaElement[E]] = crtp.MagmaElement[E]
type MaybeArithmeticNegand ¶
type MaybeArithmeticNegand[E any] crtp.MaybeArithmeticNegand[E]
type MaybeBooleanNegand ¶
type MaybeBooleanNegand[E any] crtp.MaybeBooleanNegand[E]
type MaybeConjunct ¶
type MaybeConjunct[E any] crtp.MaybeConjunct[E]
type MaybeDisjunct ¶
type MaybeDisjunct[E any] crtp.MaybeDisjunct[E]
type MaybeDividend ¶
type MaybeDividend[E any] crtp.MaybeDividend[E]
type MaybeExclusiveDisjunct ¶
type MaybeExclusiveDisjunct[E any] crtp.MaybeExclusiveDisjunct[E]
type MaybeExponentiationBase ¶
type MaybeExponentiationBase[B, E any] crtp.MaybeExponentiationBase[B, E]
type MaybeFixedCapacityDividend ¶
type MaybeFixedCapacityDividend[E any] crtp.MaybeFixedCapacityDividend[E]
type MaybeFixedCapacityExponentiationBase ¶
type MaybeFixedCapacityExponentiationBase[B, E any] crtp.MaybeFixedCapacityExponentiationBase[B, E]
type MaybeFixedCapacityIntegerExponentiationBase ¶
type MaybeFixedCapacityIntegerExponentiationBase[B, I any] crtp.MaybeFixedCapacityIntegerExponentiationBase[B, I]
type MaybeFixedCapacityMinuend ¶
type MaybeFixedCapacityMinuend[E any] crtp.MaybeFixedCapacityMinuend[E]
type MaybeFixedCapacityMultiplicand ¶
type MaybeFixedCapacityMultiplicand[E any] crtp.MaybeFixedCapacityMultiplicand[E]
type MaybeFixedCapacitySummand ¶
type MaybeFixedCapacitySummand[E any] crtp.MaybeFixedCapacitySummand[E]
type MaybeIntegerExponentiationBase ¶
type MaybeIntegerExponentiationBase[B, I any] crtp.MaybeIntegerExponentiationBase[B, I]
type MaybeInversand ¶
type MaybeInversand[E any] crtp.MaybeInversand[E]
type MaybeMinuend ¶
type MaybeMinuend[E any] crtp.MaybeMinuend[E]
type MaybeMultiplicand ¶
type MaybeMultiplicand[E any] crtp.MaybeMultiplicand[E]
type MaybeShiftable ¶
type MaybeShiftable[E, S any] crtp.MaybeShiftable[E, S]
type MaybeSummand ¶
type MaybeSummand[E any] crtp.MaybeSummand[E]
type Module ¶
type Module[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.Module[ME, S]
type ModuleElement ¶
type ModuleElement[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.ModuleElement[ME, S]
type ModuleValuedPolynomial ¶
type ModuleValuedPolynomial[ MP crtp.ModuleValuedPolynomial[MP, P, C, S], P crtp.Polynomial[P, S], C crtp.ModuleElement[C, S], S crtp.RingElement[S], ] = crtp.ModuleValuedPolynomial[MP, P, C, S]
type MonoidElement ¶
type MonoidElement[ME crtp.MonoidElement[ME]] = crtp.MonoidElement[ME]
type MultiVariatePolynomialRing ¶
type MultiVariatePolynomialRing[ PP crtp.MultivariatePolynomial[PP, P, S], P crtp.Polynomial[P, S], S crtp.RingElement[S], ] = crtp.MultivariatePolynomialRing[PP, P, S]
type Multiplicand ¶
type Multiplicand[E any] crtp.Multiplicand[E]
type MultiplicativeGroup ¶
type MultiplicativeGroup[E crtp.MultiplicativeGroupElement[E]] = crtp.MultiplicativeGroup[E]
type MultiplicativeGroupElement ¶
type MultiplicativeGroupElement[E crtp.MultiplicativeGroupElement[E]] = crtp.MultiplicativeGroupElement[E]
type MultiplicativeModule ¶
type MultiplicativeModule[ME crtp.MultiplicativeModuleElement[ME, S], S crtp.RingElement[S]] crtp.MultiplicativeModule[ME, S]
type MultiplicativeModuleElement ¶
type MultiplicativeModuleElement[ME crtp.MultiplicativeModuleElement[ME, S], S crtp.RingElement[S]] crtp.MultiplicativeModuleElement[ME, S]
type MultiplicativeMonoid ¶
type MultiplicativeMonoid[ME crtp.MultiplicativeMonoidElement[ME]] = crtp.MultiplicativeMonoid[ME]
type MultiplicativeMonoidElement ¶
type MultiplicativeMonoidElement[ME crtp.MultiplicativeMonoidElement[ME]] = crtp.MultiplicativeMonoidElement[ME]
type MultiplicativeSemiGroup ¶
type MultiplicativeSemiGroup[E crtp.MultiplicativeSemiGroupElement[E]] = crtp.MultiplicativeSemiGroup[E]
type MultiplicativeSemiGroupElement ¶
type MultiplicativeSemiGroupElement[E crtp.MultiplicativeSemiGroupElement[E]] = crtp.MultiplicativeSemiGroupElement[E]
type MultiplicativeSemiModule ¶
type MultiplicativeSemiModule[ME crtp.MultiplicativeSemiModuleElement[ME, S], S crtp.SemiRingElement[S]] crtp.MultiplicativeSemiModule[ME, S]
type MultiplicativeSemiModuleElement ¶
type MultiplicativeSemiModuleElement[ME crtp.MultiplicativeSemiModuleElement[ME, S], S crtp.SemiRingElement[S]] crtp.MultiplicativeSemiModuleElement[ME, S]
type MultiplicativelyActable ¶
type MultiplicativelyActable[E, S any] crtp.MultiplicativelyActable[E, S]
type MultiplicativelyHomomorphicLike ¶
type MultiplicativelyHomomorphicLike[T HomomorphicLike[T, TV], TV MultiplicativeSemiGroupElement[TV]] interface { HomomorphicLike[T, TV] crtp.Multiplicand[T] }
type MultivariatePolynomial ¶
type MultivariatePolynomial[ MP crtp.MultivariatePolynomial[MP, P, S], P crtp.Polynomial[P, S], S crtp.RingElement[S], ] = crtp.MultivariatePolynomial[MP, P, S]
type NatPlusLike ¶
type NatPlusLike[E crtp.NatPlusLike[E]] crtp.NatPlusLike[E]
type NumericStructure ¶
type NumericStructure[E Numeric] = crtp.NumericStructure[E]
type PairingFriendlyCurve ¶
type PairingFriendlyCurve[ P1 PairingFriendlyPoint[P1, B1, P2, B2, E, S], B1 crtp.FieldElement[B1], P2 PairingFriendlyPoint[P2, B2, P1, B1, E, S], B2 crtp.FieldElement[B2], E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S], DualStructureType any, ] interface { crtp.PairingFriendlyCurve[P1, B1, P2, E, S, DualStructureType] PrimeOrderEllipticCurve[P1, B1, S] }
type PairingFriendlyPoint ¶
type PairingFriendlyPoint[ P1 crtp.PairingFriendlyPoint[P1, B1, P2, E, S], B1 crtp.FieldElement[B1], P2 crtp.PairingFriendlyPoint[P2, B2, P1, E, S], B2 crtp.FieldElement[B2], E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S], ] interface { crtp.PairingFriendlyPoint[P1, B1, P2, E, S] PrimeOrderEllipticCurvePoint[P1, B1, S] }
type PairingName ¶
type PairingName = crtp.PairingAlgorithm
type PairingProductEvaluator ¶
type PairingProductEvaluator[ P1 PairingFriendlyPoint[P1, B1, P2, B2, E, S], B1 crtp.FieldElement[B1], P2 PairingFriendlyPoint[P2, B2, P1, B1, E, S], B2 crtp.FieldElement[B2], E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S], ] = crtp.PairingProductEvaluator[P1, P2, E]
type PairingType ¶
type PairingType = crtp.PairingType
type Polynomial ¶
type Polynomial[ P crtp.Polynomial[P, S], S crtp.RingElement[S], ] = crtp.Polynomial[P, S]
type PolynomialLike ¶
type PolynomialLike[ P crtp.PolynomialLike[P, S, C], S crtp.RingElement[S], C crtp.GroupElement[C], ] = crtp.PolynomialLike[P, S, C]
type PolynomialLikeStructure ¶
type PolynomialLikeStructure[ P crtp.PolynomialLike[P, S, C], S crtp.RingElement[S], C crtp.GroupElement[C], ] = crtp.PolynomialLikeStructure[P, S, C]
type PolynomialModule ¶
type PolynomialModule[ MP crtp.ModuleValuedPolynomial[MP, P, C, S], P crtp.Polynomial[P, S], C crtp.ModuleElement[C, S], S crtp.RingElement[S], ] = crtp.PolynomialModule[MP, P, C, S]
type PolynomialRing ¶
type PolynomialRing[ P crtp.Polynomial[P, S], S crtp.RingElement[S], ] = crtp.PolynomialRing[P, S]
type PrimeField ¶
type PrimeField[E PrimeFieldElement[E]] crtp.PrimeField[E]
type PrimeFieldElement ¶
type PrimeFieldElement[E crtp.PrimeFieldElement[E]] crtp.PrimeFieldElement[E]
type PrimeGroup ¶
type PrimeGroup[E crtp.PrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.PrimeGroup[E, S]
type PrimeGroupElement ¶
type PrimeGroupElement[E crtp.PrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.PrimeGroupElement[E, S]
type PrimeOrderEllipticCurve ¶
type PrimeOrderEllipticCurve[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.PrimeFieldElement[S]] interface { crtp.EllipticCurve[P, B, S] crtp.AdditivePrimeGroup[P, S] }
type PrimeOrderEllipticCurvePoint ¶
type PrimeOrderEllipticCurvePoint[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.PrimeFieldElement[S]] interface { crtp.EllipticCurvePoint[P, B, S] crtp.AdditivePrimeGroupElement[P, S] }
type RationalPoint ¶
type RationalPoint[E crtp.RationalPoint[E, C], C crtp.RingElement[C]] crtp.RationalPoint[E, C]
type ResizableCapacity ¶
type ResizableCapacity[E any] crtp.ResizableCapacity[E]
type RigElement ¶
type RigElement[RE crtp.RigElement[RE]] crtp.RigElement[RE]
type RightBitwiseShiftable ¶
type RightBitwiseShiftable[E any] crtp.RightBitwiseShiftable[E]
type RingElement ¶
type RingElement[RE crtp.RingElement[RE]] = crtp.RingElement[RE]
type RngElement ¶
type RngElement[RE crtp.RngElement[RE]] crtp.RngElement[RE]
type SemiGroupElement ¶
type SemiGroupElement[E crtp.SemiGroupElement[E]] = crtp.SemiGroupElement[E]
type SemiModule ¶
type SemiModule[ME crtp.SemiModuleElement[ME, S], S crtp.SemiRingElement[S]] = crtp.SemiModule[ME, S]
type SemiModuleElement ¶
type SemiModuleElement[ME crtp.SemiModuleElement[ME, S], S crtp.SemiRingElement[S]] = crtp.SemiModuleElement[ME, S]
type SemiRingElement ¶
type SemiRingElement[RE crtp.SemiRingElement[RE]] crtp.SemiRingElement[RE]
type TensorProduct ¶
type TensorProduct[E, C, S any] = crtp.TensorProduct[E, C, S]
type UnivariatePolynomialLike ¶
type UnivariatePolynomialLike[ P crtp.UnivariatePolynomialLike[P, S, C, SS, CS], S crtp.RingElement[S], C crtp.GroupElement[C], SS crtp.Structure[S], CS crtp.Structure[C], ] = crtp.UnivariatePolynomialLike[P, S, C, SS, CS]
type UnivariatePolynomialLikeStructure ¶
type UnivariatePolynomialLikeStructure[ P crtp.UnivariatePolynomialLike[P, S, C, SS, CS], S crtp.RingElement[S], C crtp.GroupElement[C], SS crtp.Structure[S], CS crtp.Structure[C], ] = crtp.UnivariatePolynomialLikeStructure[P, S, C]
type Variety ¶
type Variety[E crtp.RationalPoint[E, C], C crtp.RingElement[C]] crtp.Variety[E, C]
type VectorSpace ¶
type VectorSpace[V crtp.Vector[V, S], S crtp.FieldElement[S]] crtp.VectorSpace[V, S]
Source Files
¶
Click to show internal directories.
Click to hide internal directories.