# Octonion RΒΆ

oct.spad line 261 [edit on github]

Octonion implements octonions (Cayley-Dixon algebra) over a commutative ring, an eight-dimensional non-associative algebra, doubling the quaternions in the same way as doubling the complex numbers to get the quaternions the main constructor function is *octon* which takes 8 arguments: the real part, the `i`

imaginary part, the `j`

imaginary part, the `k`

imaginary part, (as with quaternions) and in addition the imaginary parts `E`

, `I`

, `J`

, `K`

.

- 0: %
from AbelianMonoid

- 1: % if R has CharacteristicNonZero or R has CharacteristicZero
from MagmaWithUnit

- *: (%, %) -> %
from Magma

- *: (%, R) -> %
from RightModule R

- *: (Integer, %) -> %
from AbelianGroup

- *: (NonNegativeInteger, %) -> %
from AbelianMonoid

- *: (PositiveInteger, %) -> %
from AbelianSemiGroup

- *: (R, %) -> %
from LeftModule R

- +: (%, %) -> %
from AbelianSemiGroup

- -: % -> %
from AbelianGroup

- -: (%, %) -> %
from AbelianGroup

- <=: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- <: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- >=: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- >: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- ^: (%, NonNegativeInteger) -> % if R has CharacteristicNonZero or R has CharacteristicZero
from MagmaWithUnit

- ^: (%, PositiveInteger) -> %
from Magma

- abs: % -> R if R has RealNumberSystem
from OctonionCategory R

- alternative?: () -> Boolean

- annihilate?: (%, %) -> Boolean if R has CharacteristicNonZero or R has CharacteristicZero
from Rng

- antiAssociative?: () -> Boolean

- antiCommutative?: () -> Boolean

- antiCommutator: (%, %) -> %

- apply: (Matrix R, %) -> %
from FramedNonAssociativeAlgebra R

- associative?: () -> Boolean

- associator: (%, %, %) -> %
from NonAssociativeRng

- associatorDependence: () -> List Vector R if R has IntegralDomain

- basis: () -> Vector %
from FramedModule R

- characteristic: () -> NonNegativeInteger if R has CharacteristicNonZero or R has CharacteristicZero
from NonAssociativeRing

- charthRoot: % -> Union(%, failed) if R has CharacteristicNonZero

- coerce: % -> OutputForm
from CoercibleTo OutputForm

- coerce: Fraction Integer -> % if Quaternion R has RetractableTo Fraction Integer or R has RetractableTo Fraction Integer
from CoercibleFrom Fraction Integer

- coerce: Integer -> % if Quaternion R has RetractableTo Integer or R has RetractableTo Integer or R has CharacteristicZero or R has CharacteristicNonZero
from NonAssociativeRing

- coerce: Quaternion R -> %
from CoercibleFrom Quaternion R

- coerce: R -> %
from CoercibleFrom R

- commutative?: () -> Boolean

- commutator: (%, %) -> %
from NonAssociativeRng

- conditionsForIdempotents: () -> List Polynomial R
from FramedNonAssociativeAlgebra R

- conditionsForIdempotents: Vector % -> List Polynomial R

- conjugate: % -> %
from OctonionCategory R

- convert: % -> InputForm if R has ConvertibleTo InputForm
from ConvertibleTo InputForm

- convert: % -> Vector R
from FramedModule R

- convert: Vector R -> %
from FramedModule R

- coordinates: % -> Vector R
from FramedModule R

- coordinates: (%, Vector %) -> Vector R
- coordinates: (Vector %, Vector %) -> Matrix R
- coordinates: Vector % -> Matrix R
from FramedModule R

- elt: (%, Integer) -> R
from FramedNonAssociativeAlgebra R

- elt: (%, R) -> % if R has Eltable(R, R)
from Eltable(R, %)

- eval: (%, Equation R) -> % if R has Evalable R
from Evalable R

- eval: (%, List Equation R) -> % if R has Evalable R
from Evalable R

- eval: (%, List R, List R) -> % if R has Evalable R
from InnerEvalable(R, R)

- eval: (%, List Symbol, List R) -> % if R has InnerEvalable(Symbol, R)
from InnerEvalable(Symbol, R)

- eval: (%, R, R) -> % if R has Evalable R
from InnerEvalable(R, R)

- eval: (%, Symbol, R) -> % if R has InnerEvalable(Symbol, R)
from InnerEvalable(Symbol, R)

- hash: % -> SingleInteger if R has Hashable
from Hashable

- hashUpdate!: (HashState, %) -> HashState if R has Hashable
from Hashable

- imagE: % -> R
from OctonionCategory R

- imagi: % -> R
from OctonionCategory R

- imagI: % -> R
from OctonionCategory R

- imagj: % -> R
from OctonionCategory R

- imagJ: % -> R
from OctonionCategory R

- imagk: % -> R
from OctonionCategory R

- imagK: % -> R
from OctonionCategory R

- index: PositiveInteger -> % if R has Finite
from Finite

- inv: % -> % if R has Field
from OctonionCategory R

- jacobiIdentity?: () -> Boolean

- jordanAdmissible?: () -> Boolean

- jordanAlgebra?: () -> Boolean

- latex: % -> String
from SetCategory

- leftAlternative?: () -> Boolean

- leftDiscriminant: () -> R
from FramedNonAssociativeAlgebra R

- leftDiscriminant: Vector % -> R

- leftMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain

- leftNorm: % -> R

- leftPower: (%, NonNegativeInteger) -> % if R has CharacteristicNonZero or R has CharacteristicZero
from MagmaWithUnit

- leftPower: (%, PositiveInteger) -> %
from Magma

- leftRankPolynomial: () -> SparseUnivariatePolynomial Polynomial R if R has Field
from FramedNonAssociativeAlgebra R

- leftRecip: % -> Union(%, failed) if R has CharacteristicZero or R has IntegralDomain or R has CharacteristicNonZero
from MagmaWithUnit

- leftRegularRepresentation: % -> Matrix R
from FramedNonAssociativeAlgebra R

- leftRegularRepresentation: (%, Vector %) -> Matrix R

- leftTrace: % -> R

- leftTraceMatrix: () -> Matrix R
from FramedNonAssociativeAlgebra R

- leftTraceMatrix: Vector % -> Matrix R

- leftUnit: () -> Union(%, failed) if R has IntegralDomain

- leftUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain

- lieAdmissible?: () -> Boolean

- lieAlgebra?: () -> Boolean

- lookup: % -> PositiveInteger if R has Finite
from Finite

- map: (R -> R, %) -> %
from FullyEvalableOver R

- max: (%, %) -> % if R has OrderedSet
from OrderedSet

- min: (%, %) -> % if R has OrderedSet
from OrderedSet

- norm: % -> R
from OctonionCategory R

- octon: (Quaternion R, Quaternion R) -> %
`octon(qe, qE)`

constructs an octonion from two quaternions using the relation*O = Q + QE*.- octon: (R, R, R, R, R, R, R, R) -> %
from OctonionCategory R

- one?: % -> Boolean if R has CharacteristicNonZero or R has CharacteristicZero
from MagmaWithUnit

- opposite?: (%, %) -> Boolean
from AbelianMonoid

- plenaryPower: (%, PositiveInteger) -> %
from NonAssociativeAlgebra R

- powerAssociative?: () -> Boolean

- rank: () -> PositiveInteger

- rational?: % -> Boolean if R has IntegerNumberSystem
from OctonionCategory R

- rational: % -> Fraction Integer if R has IntegerNumberSystem
from OctonionCategory R

- rationalIfCan: % -> Union(Fraction Integer, failed) if R has IntegerNumberSystem
from OctonionCategory R

- real: % -> R
from OctonionCategory R

- recip: % -> Union(%, failed) if R has CharacteristicZero or R has IntegralDomain or R has CharacteristicNonZero
from MagmaWithUnit

- represents: (Vector R, Vector %) -> %
- represents: Vector R -> %
from FramedModule R

- retract: % -> Fraction Integer if Quaternion R has RetractableTo Fraction Integer or R has RetractableTo Fraction Integer
from RetractableTo Fraction Integer

- retract: % -> Integer if Quaternion R has RetractableTo Integer or R has RetractableTo Integer
from RetractableTo Integer

- retract: % -> Quaternion R
from RetractableTo Quaternion R

- retract: % -> R
from RetractableTo R

- retractIfCan: % -> Union(Fraction Integer, failed) if Quaternion R has RetractableTo Fraction Integer or R has RetractableTo Fraction Integer
from RetractableTo Fraction Integer

- retractIfCan: % -> Union(Integer, failed) if Quaternion R has RetractableTo Integer or R has RetractableTo Integer
from RetractableTo Integer

- retractIfCan: % -> Union(Quaternion R, failed)
from RetractableTo Quaternion R

- retractIfCan: % -> Union(R, failed)
from RetractableTo R

- rightAlternative?: () -> Boolean

- rightDiscriminant: () -> R
from FramedNonAssociativeAlgebra R

- rightDiscriminant: Vector % -> R

- rightMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain

- rightNorm: % -> R

- rightPower: (%, NonNegativeInteger) -> % if R has CharacteristicNonZero or R has CharacteristicZero
from MagmaWithUnit

- rightPower: (%, PositiveInteger) -> %
from Magma

- rightRankPolynomial: () -> SparseUnivariatePolynomial Polynomial R if R has Field
from FramedNonAssociativeAlgebra R

- rightRecip: % -> Union(%, failed) if R has CharacteristicZero or R has IntegralDomain or R has CharacteristicNonZero
from MagmaWithUnit

- rightRegularRepresentation: % -> Matrix R
from FramedNonAssociativeAlgebra R

- rightRegularRepresentation: (%, Vector %) -> Matrix R

- rightTrace: % -> R

- rightTraceMatrix: () -> Matrix R
from FramedNonAssociativeAlgebra R

- rightTraceMatrix: Vector % -> Matrix R

- rightUnit: () -> Union(%, failed) if R has IntegralDomain

- rightUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain

- sample: %
from AbelianMonoid

- size: () -> NonNegativeInteger if R has Finite
from Finite

- smaller?: (%, %) -> Boolean if R has Finite or R has OrderedSet
from Comparable

- structuralConstants: () -> Vector Matrix R
from FramedNonAssociativeAlgebra R

- structuralConstants: Vector % -> Vector Matrix R

- subtractIfCan: (%, %) -> Union(%, failed)

- unit: () -> Union(%, failed) if R has IntegralDomain

- zero?: % -> Boolean
from AbelianMonoid

BiModule(%, %) if R has CharacteristicNonZero or R has CharacteristicZero

BiModule(R, R)

CharacteristicNonZero if R has CharacteristicNonZero

CharacteristicZero if R has CharacteristicZero

CoercibleFrom Fraction Integer if Quaternion R has RetractableTo Fraction Integer or R has RetractableTo Fraction Integer

CoercibleFrom Integer if Quaternion R has RetractableTo Integer or R has RetractableTo Integer

Comparable if R has Finite or R has OrderedSet

ConvertibleTo InputForm if R has ConvertibleTo InputForm

Eltable(R, %) if R has Eltable(R, R)

Evalable R if R has Evalable R

FiniteRankNonAssociativeAlgebra R

FullyRetractableTo Quaternion R

InnerEvalable(R, R) if R has Evalable R

InnerEvalable(Symbol, R) if R has InnerEvalable(Symbol, R)

LeftModule % if R has CharacteristicNonZero or R has CharacteristicZero

MagmaWithUnit if R has CharacteristicNonZero or R has CharacteristicZero

Module R

Monoid if R has CharacteristicNonZero or R has CharacteristicZero

NonAssociativeRing if R has CharacteristicNonZero or R has CharacteristicZero

NonAssociativeSemiRing if R has CharacteristicNonZero or R has CharacteristicZero

OrderedSet if R has OrderedSet

PartialOrder if R has OrderedSet

RetractableTo Fraction Integer if Quaternion R has RetractableTo Fraction Integer or R has RetractableTo Fraction Integer

RetractableTo Integer if Quaternion R has RetractableTo Integer or R has RetractableTo Integer

RightModule % if R has CharacteristicNonZero or R has CharacteristicZero

Ring if R has CharacteristicNonZero or R has CharacteristicZero

Rng if R has CharacteristicNonZero or R has CharacteristicZero

SemiGroup if R has CharacteristicNonZero or R has CharacteristicZero

SemiRing if R has CharacteristicNonZero or R has CharacteristicZero

SemiRng if R has CharacteristicNonZero or R has CharacteristicZero

unitsKnown if R has CharacteristicZero or R has IntegralDomain or R has CharacteristicNonZero