A Julia module with quaternion, octonion and dual-quaternion functionality
Quaternions are best known for their suitability as representations of 3D rotational orientation. They can also be viewed as an extension of complex numbers.
Implemented functions are:
+-*/^ real imag (a vector) conj abs abs2 exp log normalize normalizea (return normalized quaternion and absolute value as a pair) angleaxis (taken as an orientation, return the angle and axis (3 vector) as a tuple) angle axis exp log sin cos sqrt linpol (interpolate between 2 normalized quaternions)
There are two conjugation concepts here
conj (quaternion conjugation) dconj (dual conjugation)
further implemented here:
Q0 (the 'real' quaternion) Qe ( the 'dual' part) +-*/^ abs abs2 normalize normalizea angleaxis angle axis exp log sqrt
Octonions form the logical next step on the Complex-Quaternion path. They play a role, for instance, in the mathematical foundation of String theory.
+-*/^ real imag (a vector) conj abs abs2 exp log normalize normalizea (return normalized octonion and absolute value as a tuple) exp log sqrt