Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::numbers::Quaternion< R > Class Template Referenceexport

Hamilton's hypercomplex numbers q = a + bi + cj + dk. More...

Public Types

using scalar_type = R

Public Member Functions

constexpr Quaternion (R a=R{}, R b=R{}, R c=R{}, R d=R{})
constexpr R w () const
constexpr R x () const
constexpr R y () const
constexpr R z () const
constexpr Quaternion operator- () const
 Additive inverse.
constexpr Quaternion conj () const
 Conjugate q* = a - bi - cj - dk. Satisfies q * conj(q) = |q|^2.
constexpr R norm_squared () const
 Squared Euclidean norm |q|^2 = a^2 + b^2 + c^2 + d^2.

Friends

constexpr bool operator== (const Quaternion &, const Quaternion &)=default
constexpr Quaternion operator+ (const Quaternion &q, const Quaternion &p)
 q + p component-wise.
constexpr Quaternion operator- (const Quaternion &q, const Quaternion &p)
 q - p component-wise.
constexpr Quaternion operator* (const R &s, const Quaternion &q)
 Scalar left-multiplication.
constexpr Quaternion operator* (const Quaternion &q, const R &s)
 Scalar right-multiplication.
constexpr Quaternion operator* (const Quaternion &q, const Quaternion &p)
 Quaternion multiplication q * p (non-commutative).

Detailed Description

template<typename R>
requires IsQuaternionScalar<R>
class dedekind::numbers::Quaternion< R >

Hamilton's hypercomplex numbers q = a + bi + cj + dk.

Template Parameters
RThe scalar component type (an exact ring, e.g. Rational<>).

Multiplication is non-commutative: ij = k but ji = -k.

◆ operator*

template<typename R>
Quaternion operator* ( const Quaternion< R > & q,
const Quaternion< R > & p )
friend

Quaternion multiplication q * p (non-commutative).

Using the Hamilton product formula: (a1 + b1 i + c1 j + d1 k)(a2 + b2 i + c2 j + d2 k)


The documentation for this class was generated from the following file: