A Julia implementation of quaternions.
Quaternions are best known for their suitability as representations of 3D rotational orientation. They can also be viewed as an extension of complex numbers.
julia> using Quaternions
julia> k = quat(0, 0, 0, 1)
Quaternion{Int64}(0, 0, 0, 1)
julia> j = quat(0, 0, 1, 0)
Quaternion{Int64}(0, 0, 1, 0)
julia> i = j*k
Quaternion{Int64}(0, 1, 0, 0)
julia> i^2 == j^2 == k^2 == i*j*k == -1 # Similar to `im^2`.
true
julia> 1 + i + k + j # Compatible with arithmetic operations as a `Number`.
Quaternion{Int64}(1, 1, 1, 1)
Check out the docs for further instructions.
In JuliaGeometry organization, there is also Octonions.jl package.