Physics Library
 An open source physics library
Encyclopedia | Forums | Docs | Random | Template Test |  
Login
create new user
Username:
Password:
forget your password?
Main Menu
Sections

Meta

Talkback

Downloads

Information
quaternion norm (Definition)

Quaternion Norm

The quaternion norm measures the magnitude of a quaternion in the same way that the Euclidean norm measures the length of a real vector.

For

$\displaystyle q=q_w+q_x\mathbf i+q_y\mathbf j+q_z\mathbf k = q_w+\mathbf q, $

the PhysicsLibrary quaternion norm is

$\displaystyle \lVert q\rVert = \sqrt{ q_w^2+q_x^2+q_y^2+q_z^2 }.$ (1)

Using the quaternion conjugate,

$\displaystyle q^*=q_w-\mathbf q, $

the same quantity can be written

$\displaystyle \lVert q\rVert = \sqrt{q q^*} = \sqrt{q^* q}.$ (2)

The squared norm is therefore

$\displaystyle \lVert q\rVert^2 = q q^* = q^* q = q_w^2+q_x^2+q_y^2+q_z^2.$ (3)

The norm is always a nonnegative real number. It is zero only for the zero quaternion.

The norm is fundamental because it is multiplicative,

$\displaystyle \lVert pq\rVert = \lVert p\rVert\,\lVert q\rVert,$ (4)

and because a quaternion with norm one is a unit quaternion. Unit quaternions are the objects used in later PhysicsLibrary articles to represent passive frame orientation.

Definition

Let

$\displaystyle q=q_w+\mathbf q $

with

$\displaystyle \mathbf q=q_x\mathbf i+q_y\mathbf j+q_z\mathbf k. $

The quaternion norm is defined by

$\displaystyle \lVert q\rVert = \sqrt{ q_w^2+\mathbf q\cdot\mathbf q }.$ (5)

Since

$\displaystyle \mathbf q\cdot\mathbf q = q_x^2+q_y^2+q_z^2, $

equation (5) is the ordinary Euclidean norm of the four real quaternion components.

In scalar first component notation,

$\displaystyle [q]_{\mathrm{PL}} = \begin{bmatrix} q_w\ q_x\ q_y\ q_z \end{bmatrix}, $

so

$\displaystyle \lVert q\rVert $

is exactly the Euclidean length of this four component coefficient vector.

This observation concerns the magnitude of the coefficient array. It does not imply that quaternion multiplication is ordinary four dimensional vector multiplication.

Derivation from the conjugate

The conjugate of

$\displaystyle q=q_w+\mathbf q $

is

$\displaystyle q^*=q_w-\mathbf q. $

Using the Hamilton scalar vector product,

$\displaystyle (q_w,\mathbf q)(q_w,-\mathbf q) $

has scalar part

$\displaystyle q_w^2-\mathbf q\cdot(-\mathbf q) = q_w^2+\mathbf q\cdot\mathbf q $

and vector part

$\displaystyle q_w(-\mathbf q) + q_w\mathbf q + \mathbf q\times(-\mathbf q) = \mathbf 0. $

Therefore

$\displaystyle q q^* = q_w^2+\mathbf q\cdot\mathbf q.$ (6)

The same calculation gives

$\displaystyle q^*q = q_w^2+\mathbf q\cdot\mathbf q.$ (7)

Hence

$\displaystyle q q^*=q^*q $

even though quaternion multiplication is not generally commutative.

Taking the nonnegative square root gives equation (2).

Basic properties

The quaternion norm has the standard properties expected of a norm.

Nonnegativity

For every quaternion $q$,

$\displaystyle \lVert q\rVert\ge 0.$ (8)

This follows because the squared norm is a sum of squares.

Definiteness

The norm vanishes only for the zero quaternion:

$\displaystyle \lVert q\rVert=0 \quad\Longleftrightarrow\quad q=0.$ (9)

Indeed,

$\displaystyle q_w^2+q_x^2+q_y^2+q_z^2=0 $

with real components requires every component to be zero.

Real scalar scaling

For a real scalar $a$,

$\displaystyle \lVert aq\rVert = \vert a\vert\,\lVert q\rVert.$ (10)

Conjugation preserves norm

Since conjugation changes only the signs of the vector components,

$\displaystyle \lVert q^*\rVert = \lVert q\rVert.$ (11)

Sign reversal preserves norm

Similarly,

$\displaystyle \lVert -q\rVert = \lVert q\rVert.$ (12)

This property later helps explain why $q$ and $-q$ can represent the same physical orientation when $q$ is a unit quaternion.

Multiplicative property

One of the most important facts about the quaternion norm is

$\displaystyle \lVert pq\rVert = \lVert p\rVert\lVert q\rVert. $

A clean proof uses conjugation.

Start with

$\displaystyle \lVert pq\rVert^2 = (pq)(pq)^*. $

Quaternion conjugation reverses product order:

$\displaystyle (pq)^*=q^*p^*. $

Therefore

\begin{equation*} \begin{aligned} \lVert pq\rVert^2 &= (pq)(q^*p^*)\ &= p(qq^*)p^*. \end{aligned}\end{equation*}

The quantity $qq^*$ is real, so it commutes with every quaternion:

$\displaystyle p(qq^*)p^* = (qq^*)pp^*. $

Thus

$\displaystyle \lVert pq\rVert^2 = \lVert q\rVert^2 \lVert p\rVert^2.$ (13)

Both norms are nonnegative, so taking square roots gives

$\displaystyle \lVert pq\rVert = \lVert p\rVert \lVert q\rVert.$ (14)

The order on the right is irrelevant because the norms are ordinary real numbers.

Why multiplicativity matters

The multiplicative norm has several immediate consequences.

First, if $p$ and $q$ are both unit quaternions,

$\displaystyle \lVert p\rVert=\lVert q\rVert=1, $

then

$\displaystyle \lVert pq\rVert=1. $

Therefore unit quaternions are closed under quaternion multiplication.

Second, if $q\neq0$, then

$\displaystyle \lVert q\rVert>0, $

so the expression

$\displaystyle \frac{q^*}{\lVert q\rVert^2} $

is well defined. The next PhysicsLibrary article shows that this is precisely $q^{-1}$.

Third, norm multiplicativity is a strong implementation check. A software routine intended to compute Hamilton products should satisfy

$\displaystyle \lVert pq\rVert \approx \lVert p\rVert\lVert q\rVert $

up to numerical roundoff.

Unit quaternions

A quaternion is called a unit quaternion when

$\displaystyle \lVert q\rVert=1.$ (15)

Equivalently,

$\displaystyle q_w^2+q_x^2+q_y^2+q_z^2=1.$ (16)

Thus unit quaternions lie on the unit sphere in four dimensional real coefficient space.

For a unit quaternion,

$\displaystyle q q^*=q^*q=1.$ (17)

Therefore

$\displaystyle q^{-1}=q^*.$ (18)

This relation is the key reason unit quaternions are so convenient for orientation calculations.

Normalization

Any nonzero quaternion can be converted into a unit quaternion by dividing by its norm:

$\displaystyle \widehat q = \frac{q}{\lVert q\rVert}.$ (19)

Then

\begin{equation*} \begin{aligned} \lVert\widehat q\rVert &= \left\lVert \frac{q}... ... &= \frac{\lVert q\rVert}{\lVert q\rVert}\ &=1. \end{aligned}\end{equation*}

Normalization changes the quaternion magnitude while preserving its direction in four dimensional coefficient space.

When a quaternion is intended to represent orientation, normalization is often used to remove small numerical drift from floating point propagation.

Normalization should not be used blindly to hide a serious integration or convention error. Large norm drift is a diagnostic that the underlying algorithm should be checked.

Norm and passive frame orientation

The definition of quaternion norm is algebraic and does not depend on active or passive rotation interpretation.

PhysicsLibrary uses a unit quaternion

$\displaystyle {}^{B}q_A $

to map coordinate components from frame $A$ into frame $B$:

$\displaystyle {}^{B}v = {}^{B}q_A\, {}^{A}v\, ({}^{B}q_A)^*.$ (20)

The frame quaternion must satisfy

$\displaystyle \lVert{}^{B}q_A\rVert=1.$ (21)

Because of unit norm,

$\displaystyle ({}^{B}q_A)^{-1} = ({}^{B}q_A)^*. $

Thus the inverse frame map is represented by the conjugate,

$\displaystyle {}^{A}q_B = ({}^{B}q_A)^*. $

The unit norm constraint is therefore what turns the simple conjugate into the exact inverse needed for a reversible frame coordinate transformation.

Norm preservation under passive coordinate mapping

Let $v$ be represented as a pure quaternion. Under the passive coordinate map,

$\displaystyle {}^{B}v = {}^{B}q_A\,{}^{A}v\,({}^{B}q_A)^*. $

Using norm multiplicativity,

\begin{equation*} \begin{aligned} \lVert{}^{B}v\rVert &= \lVert{}^{B}q_A\rVert \lVert{}^{A}v\rVert \lVert({}^{B}q_A)^*\rVert. \end{aligned}\end{equation*}

For a unit frame quaternion,

$\displaystyle \lVert{}^{B}q_A\rVert = \lVert({}^{B}q_A)^*\rVert = 1. $

Therefore

$\displaystyle \lVert{}^{B}v\rVert = \lVert{}^{A}v\rVert.$ (22)

This is exactly what a change of orthonormal coordinates should do: the physical vector is unchanged, so its Euclidean magnitude is unchanged.

Norm and the axis angle form

For a positive frame rotation through angle $\theta$ about unit axis $\widehat{\mathbf u}$, the PhysicsLibrary passive quaternion is

$\displaystyle {}^{B}q_A = \cos\frac{\theta}{2} - \widehat{\mathbf u}\sin\frac{\theta}{2}.$ (23)

Its squared norm is

\begin{equation*} \begin{aligned} \lVert{}^{B}q_A\rVert^2 &= \cos^2\frac{\theta}... ...\widehat{\mathbf u}\rVert^2 \sin^2\frac{\theta}{2}. \end{aligned}\end{equation*}

Since

$\displaystyle \lVert\widehat{\mathbf u}\rVert=1, $

we obtain

$\displaystyle \lVert{}^{B}q_A\rVert^2 = \cos^2\frac{\theta}{2} + \sin^2\frac{\theta}{2} = 1.$ (24)

Thus the axis angle construction automatically produces a unit quaternion.

Historical terminology: tensor and norm

Historical quaternion texts do not always use the modern words norm and squared norm in the same way as current engineering literature.

In much classical quaternion notation, the quantity now written

$\displaystyle \lVert q\rVert $

was called the tensor of the quaternion and written $Tq$.

Some historical sources then used the word norm for

$\displaystyle (Tq)^2 = q q^* = q_w^2+q_x^2+q_y^2+q_z^2. $

Modern engineering and applied mathematics usually call

$\displaystyle \sqrt{ q_w^2+q_x^2+q_y^2+q_z^2 } $

the quaternion norm and call its square the squared norm.

PhysicsLibrary follows this modern convention. When reading Hamilton, Tait, Joly, or other historical sources, one should check whether the author's “norm” means the modern norm or the modern squared norm.

Worked example 1: computing a norm

Let

$\displaystyle q=2-3\mathbf i+4\mathbf j+5\mathbf k. $

Then

\begin{equation*} \begin{aligned} \lVert q\rVert^2 &= 2^2+(-3)^2+4^2+5^2\ &= 4+9+16+25\ &= 54. \end{aligned}\end{equation*}

Therefore

$\displaystyle \lVert q\rVert = \sqrt{54} = 3\sqrt6.$ (25)

The conjugate has the same norm:

$\displaystyle q^* = 2+3\mathbf i-4\mathbf j-5\mathbf k, $

and

$\displaystyle \lVert q^*\rVert=3\sqrt6. $

Worked example 2: normalization

Let

$\displaystyle q=1+\mathbf i+\mathbf j+\mathbf k. $

Its norm is

$\displaystyle \lVert q\rVert = \sqrt{1+1+1+1} = 2. $

Therefore the normalized quaternion is

$\displaystyle \widehat q = \frac12 \left( 1+\mathbf i+\mathbf j+\mathbf k \right).$ (26)

A direct check gives

$\displaystyle \lVert\widehat q\rVert^2 = 4\left(\frac12\right)^2 = 1. $

Worked example 3: multiplicative norm

Take

$\displaystyle p=1+\mathbf i, \qquad q=1+\mathbf j. $

Their norms are

$\displaystyle \lVert p\rVert=\sqrt2, \qquad \lVert q\rVert=\sqrt2. $

Their product is

$\displaystyle pq = 1+\mathbf i+\mathbf j+\mathbf k. $

Hence

$\displaystyle \lVert pq\rVert = \sqrt{1+1+1+1} = 2. $

The multiplicative property predicts

$\displaystyle \lVert p\rVert\lVert q\rVert = \sqrt2\sqrt2 = 2, $

which agrees.

Worked example 4: passive frame quaternion

Consider a positive $90^\circ$ frame rotation about $+z$. The passive PhysicsLibrary quaternion is

$\displaystyle {}^{B}q_A = \frac{\sqrt2}{2} - \frac{\sqrt2}{2}\mathbf k. $

Its norm is

\begin{equation*} \begin{aligned} \lVert{}^{B}q_A\rVert^2 &= \frac12+\frac12\ &=1. \end{aligned}\end{equation*}

Therefore its conjugate is also its inverse:

$\displaystyle {}^{A}q_B = ({}^{B}q_A)^* = \frac{\sqrt2}{2} + \frac{\sqrt2}{2}\mathbf k. $

Numerical considerations

In exact mathematics, a properly constructed orientation quaternion has norm one. In numerical simulation, finite precision integration may slowly move the stored quaternion away from unit norm.

A common numerical correction is

$\displaystyle q \leftarrow \frac{q}{\lVert q\rVert}.$ (27)

For small numerical drift this keeps the state on the unit quaternion constraint.

Several practical cautions are important:

  1. Check for a norm near zero before dividing.
  2. Do not use normalization to compensate for a wrong propagation equation or a frame convention error.
  3. If norm drift is unexpectedly large, inspect time step size, integration method, angular rate units, multiplication order, and frame definitions.
  4. When comparing two orientation quaternions, remember that $q$ and $-q$ have the same norm and later will be shown to represent the same orientation.

Common pitfalls

  1. Confusing norm with squared norm. PhysicsLibrary uses

    $\displaystyle \lVert q\rVert = \sqrt{q q^*}, $
    not $q q^*$ itself.
  2. Importing historical terminology without checking definitions. Some classical sources use “norm” for what PhysicsLibrary calls the squared norm.
  3. Assuming every quaternion used in algebra has unit norm. Only unit quaternions satisfy $\lVert q\rVert=1$.
  4. Assuming conjugation changes the norm. Conjugation preserves norm exactly.
  5. Forgetting norm multiplicativity. Quaternion multiplication is not commutative, but the norm still satisfies

    $\displaystyle \lVert pq\rVert = \lVert p\rVert\lVert q\rVert. $
  6. Normalizing the zero quaternion. The expression $q/\lVert q\rVert$ is undefined for $q=0$.
  7. Changing the norm formula because an attitude convention is passive. The norm is algebraic and is unchanged by active or passive interpretation.
  8. Treating normalization as a substitute for correct dynamics. Small numerical drift may be corrected by normalization; large drift should be investigated.

Exercises

The exercises are stated first so the article can be used for self study. Complete solutions follow afterward.

  1. Direct norm. For

    $\displaystyle q=3-2\mathbf i+4\mathbf j-\mathbf k, $
    compute $\lVert q\rVert^2$ and $\lVert q\rVert$.
  2. Conjugate invariance. For the quaternion in Exercise 1, compute $q^*$ and verify

    $\displaystyle \lVert q^*\rVert=\lVert q\rVert. $
  3. Product with conjugate. Show directly that

    $\displaystyle q q^*=q^*q=\lVert q\rVert^2 $
    for

    $\displaystyle q=1+2\mathbf i-\mathbf j+2\mathbf k. $
  4. Normalization. Normalize

    $\displaystyle q=2+2\mathbf i+\mathbf j-\mathbf k. $
  5. Multiplicative norm. Let

    $\displaystyle p=1+\mathbf i, \qquad q=2+\mathbf j. $
    Compute $pq$ and verify

    $\displaystyle \lVert pq\rVert = \lVert p\rVert\lVert q\rVert. $
  6. Unit quaternion product. Prove that the product of two unit quaternions is a unit quaternion.
  7. Inverse of a unit quaternion. Use

    $\displaystyle q q^*=\lVert q\rVert^2 $
    to prove that $q^{-1}=q^*$ when $\lVert q\rVert=1$.
  8. Passive frame norm. Show that

    $\displaystyle {}^{B}q_A = \cos\frac{\theta}{2} - \widehat{\mathbf u}\sin\frac{\theta}{2} $
    has unit norm when $\widehat{\mathbf u}$ is a unit vector.
  9. Vector magnitude preservation. Using multiplicativity of the quaternion norm, prove that the passive map

    $\displaystyle {}^{B}v = {}^{B}q_A\,{}^{A}v\,({}^{B}q_A)^* $
    preserves vector magnitude when ${}^{B}q_A$ is unit.
  10. Historical terminology. A nineteenth century source states that the “norm” of

    $\displaystyle q=1+2\mathbf i+2\mathbf j $
    is $9$. Is this necessarily inconsistent with the PhysicsLibrary definition? Explain.

Solutions

1. Direct norm

For

$\displaystyle q=3-2\mathbf i+4\mathbf j-\mathbf k, $

the squared norm is

$\displaystyle \lVert q\rVert^2 = 3^2+(-2)^2+4^2+(-1)^2 = 30. $

Therefore

$\displaystyle \lVert q\rVert=\sqrt{30}. $

2. Conjugate invariance

The conjugate is

$\displaystyle q^* = 3+2\mathbf i-4\mathbf j+\mathbf k. $

Its squared norm is

$\displaystyle 3^2+2^2+(-4)^2+1^2 = 30. $

Hence

$\displaystyle \lVert q^*\rVert = \sqrt{30} = \lVert q\rVert. $

3. Product with conjugate

For

$\displaystyle q=1+2\mathbf i-\mathbf j+2\mathbf k, $

the squared norm is

$\displaystyle 1^2+2^2+(-1)^2+2^2 = 10. $

The conjugate is

$\displaystyle q^* = 1-2\mathbf i+\mathbf j-2\mathbf k. $

By the conjugate product identity,

$\displaystyle q q^*=q^*q=10. $

4. Normalization

For

$\displaystyle q=2+2\mathbf i+\mathbf j-\mathbf k, $

the squared norm is

$\displaystyle 4+4+1+1=10. $

Therefore

$\displaystyle \widehat q = \frac{1}{\sqrt{10}} \left( 2+2\mathbf i+\mathbf j-\mathbf k \right). $

5. Multiplicative norm

First,

\begin{equation*} \begin{aligned} pq &=(1+\mathbf i)(2+\mathbf j)\ &=2+2\mathbf i+\mathbf j+\mathbf k. \end{aligned}\end{equation*}

Therefore

$\displaystyle \lVert pq\rVert^2 = 2^2+2^2+1^2+1^2 = 10, $

so

$\displaystyle \lVert pq\rVert=\sqrt{10}. $

Also,

$\displaystyle \lVert p\rVert=\sqrt2 $

and

$\displaystyle \lVert q\rVert=\sqrt5. $

Hence

$\displaystyle \lVert p\rVert\lVert q\rVert = \sqrt2\sqrt5 = \sqrt{10} = \lVert pq\rVert. $

6. Unit quaternion product

If

$\displaystyle \lVert p\rVert=1 $

and

$\displaystyle \lVert q\rVert=1, $

then multiplicativity gives

$\displaystyle \lVert pq\rVert = \lVert p\rVert\lVert q\rVert = 1. $

Thus $pq$ is unit.

7. Inverse of a unit quaternion

For a unit quaternion,

$\displaystyle \lVert q\rVert^2=1. $

Therefore

$\displaystyle q q^*=q^*q=1. $

By definition of multiplicative inverse,

$\displaystyle q^{-1}=q^*. $

8. Passive frame norm

For

$\displaystyle {}^{B}q_A = \cos\frac{\theta}{2} - \widehat{\mathbf u}\sin\frac{\theta}{2}, $

the squared norm is

$\displaystyle \cos^2\frac{\theta}{2} + \lVert\widehat{\mathbf u}\rVert^2 \sin^2\frac{\theta}{2}. $

Since

$\displaystyle \lVert\widehat{\mathbf u}\rVert=1, $

this becomes

$\displaystyle \cos^2\frac{\theta}{2} + \sin^2\frac{\theta}{2} = 1. $

Therefore

$\displaystyle \lVert{}^{B}q_A\rVert=1. $

9. Vector magnitude preservation

Using multiplicativity,

\begin{equation*} \begin{aligned} \lVert{}^{B}v\rVert &= \lVert{}^{B}q_A\rVert \lVert{}^{A}v\rVert \lVert({}^{B}q_A)^*\rVert. \end{aligned}\end{equation*}

A unit quaternion and its conjugate both have norm one. Therefore

$\displaystyle \lVert{}^{B}v\rVert = \lVert{}^{A}v\rVert. $

10. Historical terminology

For

$\displaystyle q=1+2\mathbf i+2\mathbf j, $

PhysicsLibrary gives

$\displaystyle \lVert q\rVert = \sqrt{1+4+4} = 3. $

Its squared norm is

$\displaystyle \lVert q\rVert^2=9. $

A historical source may call this squared quantity the “norm” and call the modern norm the “tensor.” Therefore the value $9$ is not necessarily an error; the terminology must be checked.

What comes next

The norm and conjugate together give the inverse of every nonzero quaternion:

$\displaystyle q^{-1} = \frac{q^*}{\lVert q\rVert^2}. $

The next PhysicsLibrary quaternion article derives this formula, explains why left and right division must be treated carefully in a noncommutative algebra, and specializes the result to unit and pure quaternions.

Later orientation articles use unit norm as the defining constraint that makes quaternion frame maps invertible by simple conjugation and makes quaternion coordinate transformations preserve physical vector length.

Sources and historical notes

Classical quaternion authors often distinguished the tensor from the norm. In Tait's terminology, the tensor corresponds to the modern quaternion norm, while the historical norm is its square. Modern engineering literature normally uses “norm” for the square root quantity.

The PhysicsLibrary convention follows modern Euclidean norm terminology and uses

$\displaystyle \lVert q\rVert = \sqrt{q q^*}. $

The historical distinction is retained here because it is important when reading older quaternion literature.

Bibliography

1
W. R. Hamilton, Elements of Quaternions, 2nd ed., edited by C. J. Joly, Longmans, Green, and Co., 1899. Public domain historical source. Internet Archive scan
2
P. G. Tait, An Elementary Treatise on Quaternions, 3rd ed., Cambridge University Press, 1890. Public domain historical source. Internet Archive search
3
C. J. Joly, A Manual of Quaternions, Macmillan and Co., London, 1905. Public domain historical source. Internet Archive scan
4
A. S. Hathaway, A Primer of Quaternions, 1896. Public domain historical source. Project Gutenberg edition

License

Unless otherwise noted, this PhysicsLibrary entry is intended for release under the Creative Commons Attribution ShareAlike 4.0 International license.



"quaternion norm" is owned by bloftin.
(view preamble)
View style:
See Also: quaternion series overview and article guide, Notation Quaternions for Physics and Engineering: Orientation, quaternion definition and basic algebra, example of quaternion definition and basic algebra, quaternion product, example of quaternion product, quaternion conjugate, example of quaternion conjugate, example of quaternion norm, quaternion inverse, example of quaternion inverse, Axis Angle Representation and Unit Quaternion, example of Axis Angle Representation and Unit Quaternion, rotating vectors with quaternions, example of rotating vectors with quaternions, composition of rotations and quaternion order, example of composition of rotations and quaternion order, quaternions and direction cosine matrices, example of quaternions and direction cosine matrices, quaternions and Euler angles, example of quaternions and Euler angles, quaternion kinematics and angular velocity, example of quaternion kinematics and angular velocity, relative attitude and error quaternions, example of relative attitude and error quaternions, numerical quaternion propagation and IMU attitude state integration, example of numerical quaternion propagation and IMU attitude state integration, quaternion exercises for physics and engineering

Keywords:  quaternion, norm, magnitude, tensor, unit quaternion

Attachments:
example of quaternion norm (Example) by bloftin

Cross-references: noncommutative, identity, unit vector, formula, tensor, algebraic, algorithm, relation, commutes, conjugation, square, vector product, quaternion multiplication, scalar, quaternion conjugate, vector, norm, quaternion, magnitude
There are 8 references to this object.

This is version 3 of quaternion norm, born on 2026-08-23, modified 2026-08-28.
Object id is 1093, canonical name is QuaternionNorm.
Accessed 152 times total.

Classification:
Physics Classification02.10.Hh (Rings and algebras)
 02.10.Ud (Linear algebra)
Pending Errata and Addenda
None.
Discussion
Style: Expand: Order:

No messages.

Interact
rate | post | correct | update request | add derivation | add example | add (any)