A HepLorentzRotation may be decomposed either into the form or the form . Here we will refer to the first form as and the second as .
When decomposing into the product , the boost
will have the same last column as the HepLorentzRotation . Using the value of
read off , one can apply equation () to
find the matrix for that boost. Then
When decomposing into the product , the boost
will have the same last row as the HepLorentzRotation . Again
one can apply equation () to
find the matrix (this time ) for that boost. Then
Naively applying the above equations leads to non-neglible round-off errors in the components of the Rotation--of order if the boost has . Since a Rotation representation which is non-orthogonal on that scale would lead to errors in distance measures of more than one part in , the decompose() method rectifies the Rotation before returning.