const float3 x( 1.0f, 0.0f, 0.0f), z( 0.0f, 0.0f, 1.0f);

if( dot( z, m[2] ) >= 0.0f)
return acos( dot( x, m[0]));
else
return 2.0f * pi - acos( dot( x, m[0]));