Nonlinear optimization moves x to a new point x' on the unit sphere.
The quaternion difference between these two quaternions is Deltaq = x' x^{-1}
(multiplication between two quaternions)
Deltaq is a unit quaternion since x and x' are unit quaternions.
Thus, there exists a vector v \in R^3, ||v|| = 1 and theta \in R such that Deltaq = [cos(theta), sin(theta) v].
(Proposition 12, Erik B. Dam, Quaternions, Interpolation and Animation, 1998).
The vector Deltax is defined by Deltax = theta v.
Finally, the update operator is defined by the multiplication between two quaternions
x' = [cos(||Deltax||), sin(||Deltax||) Deltax / ||Deltax||] x
Note that, Deltax is not angle-axis representation of quaternion Deltaq.
2 theta v is the angle-axis representation of Deltaq.
Topic closed.
Thanks for the excellent library.
Kyle