The quaternion library

Dimensioned quaternions. Hamilton's numbers of the form a + bi + cj + dk with a unit of measurement.

Quaternions have homogeneous units of measurement. In a quaternion of type Quaternion(a) the scalar part has unit a and the vector part has unit a*Geom3!.

Synopsis

make_quaternion :: for_unit a: (a, a, a, a) -> Quaternion(a)
make_quaternion2 :: for_unit a: (a, a*Geom3!) -> Quaternion(a)
quaternion2str :: for_unit a: (Quaternion(a), a) -> String
quaternion2string :: for_unit a: (Quaternion(a), decimals, a) -> String
quaternion_conjugate :: for_unit a: (Quaternion(a)) -> Quaternion(a)
quaternion_inverse :: for_unit a: (Quaternion(a)) -> Quaternion(a^-1)
quaternion_norm :: for_unit a: (Quaternion(a)) -> a
quaternion_product :: for_unit a, b: (Quaternion(a), Quaternion(b)) -> Quaternion(a*b)
quaternion_scalar :: for_unit a: (Quaternion(a)) -> a
quaternion_sum :: for_unit a: (Quaternion(a), Quaternion(a)) -> Quaternion(a)
quaternion_vector :: for_unit a: (Quaternion(a)) -> a*Geom3!
scale_quaternion :: for_unit a, b: (a, Quaternion(b)) -> Quaternion(a*b)
unit_quaternion :: for_unit a: (Quaternion(a)) -> Quaternion(1)

Types

Quaternion

for_unit a: Quaternion(a)

The type of Hamilton's quaternions.

Functions

make_quaternion

:: for_unit a: (a, a, a, a) -> Quaternion(a)

Constructs quaternion a + bi + cj + dk from parameters a, b, c and d.

make_quaternion2

:: for_unit a: (a, a*Geom3!) -> Quaternion(a)

Constructs quaternion a + bi + cj + dk from parameters a and v where v = vector3d(b, c, d).

quaternion2str

:: for_unit a: (Quaternion(a), a) -> String

String representation of a quaternion with nr_decimals() decimals.

quaternion2string

:: for_unit a: (Quaternion(a), decimals, a) -> String

String representation of a quaternion.

quaternion_conjugate

:: for_unit a: (Quaternion(a)) -> Quaternion(a)

The conjugate of a quaternion. For some quaternion a + bi + cj + dk it is a - bi - cj - dk.

quaternion_inverse

:: for_unit a: (Quaternion(a)) -> Quaternion(a^-1)

The inverse of a quaternion. quaternion_product(q, inverse(q)) = 1

quaternion_norm

:: for_unit a: (Quaternion(a)) -> a

The norm of a quaternion. For some quaternion a + bi + cj + dk it is the square root of a^2 + b^2 + c^2 + d^2.

quaternion_product

:: for_unit a, b: (Quaternion(a), Quaternion(b)) -> Quaternion(a*b)

Multiplies two quaternions.

quaternion_scalar

:: for_unit a: (Quaternion(a)) -> a

The scalar part of a quaternion. For quaterion a + bi + cj + dk it is scalar a.

quaternion_sum

:: for_unit a: (Quaternion(a), Quaternion(a)) -> Quaternion(a)

Adds two quaternions.

quaternion_vector

:: for_unit a: (Quaternion(a)) -> a*Geom3!

The vector part of a quaternion. For quaterion a + bi + cj + dk it is vector3d(b, c, d).

scale_quaternion

:: for_unit a, b: (a, Quaternion(b)) -> Quaternion(a*b)

Scales a quaternion with some factor.

unit_quaternion

:: for_unit a: (Quaternion(a)) -> Quaternion(1)

Scales a quaternion to one with norm 1.

Version v0.6.0, 2026-03-05T15:49:25.894939013+01:00[Europe/Amsterdam]