# Octonion RΒΆ

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 CharacteristicZero or R has CharacteristicNonZero
- 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
- from BasicType
- >: (%, %) -> Boolean if R has OrderedSet
- from PartialOrder
- >=: (%, %) -> Boolean if R has OrderedSet
- from PartialOrder
- ^: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
- from MagmaWithUnit
- ^: (%, PositiveInteger) -> %
- from Magma
- ~=: (%, %) -> Boolean
- from BasicType
- abs: % -> R if R has RealNumberSystem
- from OctonionCategory R
- alternative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- annihilate?: (%, %) -> Boolean if R has CharacteristicZero or R has CharacteristicNonZero
- from Rng
- antiAssociative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- antiCommutative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- antiCommutator: (%, %) -> %
- from NonAssociativeSemiRng
- apply: (Matrix R, %) -> %
- from FramedNonAssociativeAlgebra R
- associative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- associator: (%, %, %) -> %
- from NonAssociativeRng
- associatorDependence: () -> List Vector R if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- basis: () -> Vector %
- from FramedModule R
- characteristic: () -> NonNegativeInteger if R has CharacteristicZero or R has CharacteristicNonZero
- from NonAssociativeRing
- charthRoot: % -> Union(%, failed) if R has CharacteristicNonZero
- from CharacteristicNonZero
- coerce: % -> OutputForm
- from CoercibleTo OutputForm
- coerce: Fraction Integer -> % if R has RetractableTo Fraction Integer or Quaternion R has RetractableTo Fraction Integer
- from RetractableTo Fraction Integer
- coerce: Integer -> % if R has CharacteristicNonZero or R has CharacteristicZero or Quaternion R has RetractableTo Integer or R has RetractableTo Integer
- from RetractableTo Integer
- coerce: Quaternion R -> %
- from RetractableTo Quaternion R
- coerce: R -> %
- from RetractableTo R
- commutative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- commutator: (%, %) -> %
- from NonAssociativeRng
- conditionsForIdempotents: () -> List Polynomial R
- from FramedNonAssociativeAlgebra R
- conditionsForIdempotents: Vector % -> List Polynomial R
- from FiniteRankNonAssociativeAlgebra 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
- from FiniteRankNonAssociativeAlgebra R
- coordinates: (Vector %, Vector %) -> Matrix R
- from FiniteRankNonAssociativeAlgebra 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, %)
- enumerate: () -> List % if R has Finite
- from Finite
- 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)
- flexible?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- 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
- from FiniteRankNonAssociativeAlgebra R
- jordanAdmissible?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- jordanAlgebra?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- latex: % -> String
- from SetCategory
- leftAlternative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- leftCharacteristicPolynomial: % -> SparseUnivariatePolynomial R
- from FiniteRankNonAssociativeAlgebra R
- leftDiscriminant: () -> R
- from FramedNonAssociativeAlgebra R
- leftDiscriminant: Vector % -> R
- from FiniteRankNonAssociativeAlgebra R
- leftMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- leftNorm: % -> R
- from FiniteRankNonAssociativeAlgebra R
- leftPower: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
- 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 CharacteristicNonZero or R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- leftRegularRepresentation: % -> Matrix R
- from FramedNonAssociativeAlgebra R
- leftRegularRepresentation: (%, Vector %) -> Matrix R
- from FiniteRankNonAssociativeAlgebra R
- leftTrace: % -> R
- from FiniteRankNonAssociativeAlgebra R
- leftTraceMatrix: () -> Matrix R
- from FramedNonAssociativeAlgebra R
- leftTraceMatrix: Vector % -> Matrix R
- from FiniteRankNonAssociativeAlgebra R
- leftUnit: () -> Union(%, failed) if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- leftUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- lieAdmissible?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- lieAlgebra?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- 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
- noncommutativeJordanAlgebra?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- 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 CharacteristicZero or R has CharacteristicNonZero
- from MagmaWithUnit
- opposite?: (%, %) -> Boolean
- from AbelianMonoid
- plenaryPower: (%, PositiveInteger) -> %
- from NonAssociativeAlgebra R
- powerAssociative?: () -> Boolean
- from FiniteRankNonAssociativeAlgebra R
- random: () -> % if R has Finite
- from Finite
- rank: () -> PositiveInteger
- from FramedModule R
- rational: % -> Fraction Integer if R has IntegerNumberSystem
- from OctonionCategory R
- rational?: % -> Boolean 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 CharacteristicNonZero or R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- represents: (Vector R, Vector %) -> %
- from FiniteRankNonAssociativeAlgebra R
- represents: Vector R -> %
- from FramedModule R
- retract: % -> Fraction Integer if R has RetractableTo Fraction Integer or Quaternion R has RetractableTo Fraction Integer
- from RetractableTo Fraction Integer
- retract: % -> Integer if R has RetractableTo Integer or Quaternion 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 R has RetractableTo Fraction Integer or Quaternion R has RetractableTo Fraction Integer
- from RetractableTo Fraction Integer
- retractIfCan: % -> Union(Integer, failed) if R has RetractableTo Integer or Quaternion 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
- from FiniteRankNonAssociativeAlgebra R
- rightCharacteristicPolynomial: % -> SparseUnivariatePolynomial R
- from FiniteRankNonAssociativeAlgebra R
- rightDiscriminant: () -> R
- from FramedNonAssociativeAlgebra R
- rightDiscriminant: Vector % -> R
- from FiniteRankNonAssociativeAlgebra R
- rightMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- rightNorm: % -> R
- from FiniteRankNonAssociativeAlgebra R
- rightPower: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
- 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 CharacteristicNonZero or R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- rightRegularRepresentation: % -> Matrix R
- from FramedNonAssociativeAlgebra R
- rightRegularRepresentation: (%, Vector %) -> Matrix R
- from FiniteRankNonAssociativeAlgebra R
- rightTrace: % -> R
- from FiniteRankNonAssociativeAlgebra R
- rightTraceMatrix: () -> Matrix R
- from FramedNonAssociativeAlgebra R
- rightTraceMatrix: Vector % -> Matrix R
- from FiniteRankNonAssociativeAlgebra R
- rightUnit: () -> Union(%, failed) if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- rightUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- sample: %
- from AbelianMonoid
- size: () -> NonNegativeInteger if R has Finite
- from Finite
- smaller?: (%, %) -> Boolean if R has Finite or R has OrderedSet
- from Comparable
- someBasis: () -> Vector %
- from FiniteRankNonAssociativeAlgebra R
- structuralConstants: () -> Vector Matrix R
- from FramedNonAssociativeAlgebra R
- structuralConstants: Vector % -> Vector Matrix R
- from FiniteRankNonAssociativeAlgebra R
- subtractIfCan: (%, %) -> Union(%, failed)
- from CancellationAbelianMonoid
- unit: () -> Union(%, failed) if R has IntegralDomain
- from FiniteRankNonAssociativeAlgebra R
- zero?: % -> Boolean
- from AbelianMonoid

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

BiModule(R, R)

CharacteristicNonZero if R has CharacteristicNonZero

CharacteristicZero if R has CharacteristicZero

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 CharacteristicZero or R has CharacteristicNonZero

MagmaWithUnit if R has CharacteristicZero or R has CharacteristicNonZero

Module R

Monoid if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeRing if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeSemiRing if R has CharacteristicZero or R has CharacteristicNonZero

OrderedSet if R has OrderedSet

PartialOrder if R has OrderedSet

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

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

RightModule % if R has CharacteristicZero or R has CharacteristicNonZero

Ring if R has CharacteristicZero or R has CharacteristicNonZero

Rng if R has CharacteristicZero or R has CharacteristicNonZero

SemiGroup if R has CharacteristicZero or R has CharacteristicNonZero

SemiRing if R has CharacteristicZero or R has CharacteristicNonZero

SemiRng if R has CharacteristicZero or R has CharacteristicNonZero

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