field¶
Field¶
Field
Mathematically a Field is a Commutative Ring all whose non-zero elements have multiplicative inverses.
By convention one != zero, otherwise the algebra consists
of just one unique element.
Important
Contract: Field initializer parameters must have
add closed, commutative and associative on reps
mult closed, commutative and associative on reps
one an identity on reps,
rep*one == rep == one*repzero an identity on reps,
rep+zero == rep == zero+repinv is the mult inverse function on all non-zero reps
negate function to negate all proper rep values
invert function to invert all proper rep values
zero
!=one (by convention)
- class boring_math.abstract_algebra.algebras.field.Field¶
Bases:
CommutativeRing,Generic- Parameters:
mult – Closed associative function reps.
add – Closed commutative and associative function reps.
one – Representation for multiplicative identity.
zero – Representation for additive identity.
negate – Function mapping element representation to the representation of corresponding negated element.
invert – Function mapping non-zero element representations to their multiplicative inverses.
narrow – Narrow the rep type, many to one function, like choosing an element from a coset of a group,
- __init__(mult: Callable[[H, H], H], add: Callable[[H, H], H], one: H, zero: H, negate: Callable[[H], H], invert: Callable[[H], H], narrow: Callable[[H], H] | None = None)¶
- Parameters:
mult – Closed associative function reps.
add – Closed commutative and associative function reps.
one – Representation for multiplicative identity.
zero – Representation for additive identity.
negate – Function mapping element representation to the representation of corresponding negated element.
invert – Function mapping non-zero element representations to their multiplicative inverses.
narrow – Narrow the rep type, many to one function, like choosing an element from a coset of a group,
- class boring_math.abstract_algebra.algebras.field.FieldElement¶
Bases:
CommutativeRingElement,Generic- __str__() str¶
- Returns:
str(self) = FieldElement<rep>
- __pow__(n: int) Self¶
Raise the element to the
intpower ofn.- Parameters:
n – The
intpower to raise the element to.- Returns:
The element (or its inverse) raised to an
intpower.- Raises:
ValueError – If algebra is not multiplicative.
ValueError – If algebra does not have a multiplicative identity element.
ValueError – If algebra does not have multiplicative inverses.
- __truediv__(right: Self) Self¶
Divide self by right.
- __add__(right: Self) Self¶
Add two elements of the same concrete algebra together.
- Parameters:
other – Another element within the same algebra.
- Returns:
The sum
self + other.- Raises:
ValueError – If
selfandotherare same type but different concrete algebras.TypeError – If Addition not defined on the algebra of the elements.
TypeError – If
selfandrightare different types.
- __mul__(right: object) Self¶
Left multiplication for
*operator.- Parameters:
right – Object
leftshould be an element of same concrete algebra or anint.- Returns:
Algebra product, the sum of the element
righttimes, orNotImplemented.- Raises:
ValueError – If either right not an element of the same concrete algebra or
right: int < 0.TypeError – Multiplication nor defined on the algebra that
selfis a member of.
- __neg__() Self¶
Negate the element.
- Returns:
The unique additive inverse element to
self.- Raises:
ValueError – If algebra fails to have additive inverses.
- __radd__(left: Self) Self¶
When left side of addition does not know how to add right side.
- Parameters:
other – Left side of the addition.
- Returns:
Never returns, otherwise
left.__add__(right)would have worked.- Raises:
TypeError – When right side does not know how to add the left side to itself.
- __rmul__(left: object) Self¶
Right multiplication for
*operator.- Parameters:
left – Object
leftshould be anint.- Returns:
The sum of the element
lefttimes.- Raises:
TypeError – If object on left does not act on object on right