1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pub mod traits;
pub mod construct;
pub mod transform;

#[cfg(test)]
mod test;

pub mod prelude {
    pub use crate::traits::{Conj, SqrAbs};
}

pub use traits::{Conj, SqrAbs};
pub use construct::{Construct};


/// 2-dimensional commutative and associative algebra
pub type Complex<T> = Construct<T, T>;

/// 4-dimensional associative but non-commutative algebra
pub type Quaternion<T> = Construct<T, Complex<T>>;

/// 8-dimensional non-commutative and non-associative algebra
pub type Octonion<T> = Construct<T, Quaternion<T>>;

/// 16-dimensional non-commutative and non-associative algebra with nontrivial zero divisors
pub type Sedenion<T> = Construct<T, Octonion<T>>;