
Linear and Affine Algebra 317
e.angle [0] = 0;
e.angle [1] = −sign∗ pi /2;
e.angle [2] = atan2(− sign∗ r(e. axis [1] ,e. axis [0]) ,
r(e. axis [1] ,e. axis [1]));
e. result = NOT
UNIQUE SUM ;
}
}
else
{
// Map (0,2,0), (1,0,1), and (2,1,2) to −1. Map (0,1,0), (1,2,1),
// and (2,0,2) to +1.
int b2 = 3 − e.axis[0] − e. axis [1];
int parity = (((b2 | (e. axis [1] << 2)) >> e. axis [0]) & 1);
Real const sign = ( parity & 1 ? −1 : +1);
if (r(e. axis [0] ,e. axis [0]) < 1)
{
if (r(e.axis[0],e.axis[0]) > −1)
{
e.angle [0] = atan2(r(e. axis [1] ,e. axis [0]) ,
sign∗ r(b2,e. axis [0]));
e.angle[1] = acos(r(e.axis[0],e.axis [0]));
e.angle [2] = atan2(r(e. axis [0] ,e. axis [1]) ...