// Explicit trait-method promotions (see core AGENTS.md "Trait-method promotion").

///|
pub extend Quaternion with Add::{add}

///|
pub extend Quaternion with Sub::{sub}

///|
pub extend Quaternion with Mul::{mul}

///|
pub extend Quaternion with Div::{div}

///|
pub extend Quaternion with Neg::{neg}

///|
pub extend Quaternion with Eq::{equal}

///|
pub extend Quaternion with Hash::{hash}

///|
/// `a + bi + cj + dk` is the canonical text form of a quaternion.
pub extend Quaternion with Show::{to_string}

///|
/// The quaternion conjugate `r - xi - yj - zk`.
pub extend Quaternion with @lg.Conjugate::{conjugate}

///|
/// `Quaternion::zero()` is the additive identity.
pub extend Quaternion with @lg.Zero::{zero}

///|
/// `Quaternion::one()` is the multiplicative identity.
pub extend Quaternion with @lg.One::{one}

///|
/// The two-sided multiplicative inverse `conj(q) / |q|^2`.
pub extend Quaternion with @lg.Inverse::{inv}

///|
#deprecated("Use `!=` instead", skip_current_package=true)
#doc(hidden)
pub extend Quaternion with Eq::{not_equal}

///|
#deprecated("Use `Hash::hash_combine` via the trait instead", skip_current_package=true)
#doc(hidden)
pub extend Quaternion with Hash::{hash_combine}

///|
#deprecated("Use `to_string` or `\"\\{x}\"` instead", skip_current_package=true)
#doc(hidden)
pub extend Quaternion with Show::{output}

///|
#deprecated("Use `id()` or `Default::default()` instead", skip_current_package=true)
#doc(hidden)
pub extend Quaternion with Default::{default}

///|
#deprecated("Use `Repr(x)` or `@debug.Debug::to_repr` instead", skip_current_package=true)
#doc(hidden)
pub extend Quaternion with @debug.Debug::{to_repr}