gal/
lib.rs

1#![no_std]
2#![forbid(unsafe_code)]
3#![allow(non_shorthand_field_patterns)]
4
5#[cfg(test)]
6#[macro_use]
7extern crate std;
8
9pub mod cayley;
10pub mod tensor;
11pub mod galois;
12
13#[cfg(test)]
14mod tests {
15    use super::cayley::CayleyPair;
16    use super::galois::{Galois, GF7};
17
18    #[test]
19    fn octonion() {
20        let a = CayleyPair::real(CayleyPair::imagine(CayleyPair::real(<GF7 as Galois>::from(3))));
21        let b = CayleyPair::real(CayleyPair::real(CayleyPair::imagine(<GF7 as Galois>::from(4))));
22        let c = CayleyPair::real(CayleyPair::imagine(CayleyPair::imagine(<GF7 as Galois>::from(2))));
23        assert_eq!(c, a * b);
24    }
25}