|
Dedekind 0.0.0
A structuralist C++23 Module Library
|
The Quaternion Division Ring (ℍ). More...
#include <concepts>import dedekind.numbers:rational;import dedekind.geometry;import dedekind.category;
Classes | |
| class | dedekind::numbers::Quaternion< R > |
| Hamilton's hypercomplex numbers q = a + bi + cj + dk. More... | |
Namespaces | |
| namespace | dedekind::numbers |
Concepts | |
| concept | dedekind::numbers::IsQuaternionScalar |
| Scalar type suitable as quaternion components. | |
Typedefs | |
| using | dedekind::numbers::ℍ_ℚ = Quaternion<Rational<>> |
Variables | |
| constexpr ℍ_ℚ | dedekind::numbers::q_i |
| constexpr ℍ_ℚ | dedekind::numbers::q_j |
| constexpr ℍ_ℚ | dedekind::numbers::q_k |
| constexpr ℍ_ℚ | dedekind::numbers::q_neg1 |
The Quaternion Division Ring (ℍ).
@partition :quaternion
The quaternions ℍ form a non-commutative division ring (a skew-field):
Quaternions embed into ℝ⁴ via q = a + bi + cj + dk ↦ (a, b, c, d). This identifies ℍ as a 4-dimensional real vector space.
The left-multiplication map L_q : ℍ → ℍ, p ↦ q×p, is an ℝ-linear map. In the basis {1, i, j, k} its matrix is: L_q = ⎡ a -b -c -d ⎤ ⎢ b a -d c ⎥ ⎢ c d a -b ⎥ ⎣ d -c b a ⎦
This satisfies: as_matrix(q) * as_vector(p) == as_vector(q * p).