diff --git a/DetectorDescription/GeoModel/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx b/DetectorDescription/GeoModel/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx index 3cf5e51be2fbbd9397be8aec2ad5eba014500e0b..14622421621cb5df04ac42309ba69ff8103e838c 100755 --- a/DetectorDescription/GeoModel/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx +++ b/DetectorDescription/GeoModel/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx @@ -21,22 +21,17 @@ using namespace Gaudi::Units; void LArWheelCalculator::parameterized_sin(const double r, double &sin_a, double &cos_a) const { - const double r2 = r*r; - const double r3 = r2*r; - const double r4 = r2*r2; -#if LARWC_SINCOS_POLY > 4 - const double r5 = r4*r; -#endif - sin_a = m_sin_parametrization[0] - + m_sin_parametrization[1]*r - + m_sin_parametrization[2]*r2 - + m_sin_parametrization[3]*r3 - + m_sin_parametrization[4]*r4 + + sin_a=(((( #if LARWC_SINCOS_POLY > 4 - + m_sin_parametrization[5]*r5 + (m_sin_parametrization[5])*r+ #endif - ; - cos_a = sqrt(1. - sin_a*sin_a); + m_sin_parametrization[4])*r+m_sin_parametrization[3])*r+m_sin_parametrization[2])*r+m_sin_parametrization[1])*r+m_sin_parametrization[0]; + double u=1.-sin_a*sin_a; + //put sqrt(u) in cos_a using sqrtsd instruction rather than function call + __asm__ ("sqrtsd %1, %0" : "=x" (cos_a) : "x" (u)); +// Generic code, for re-insertion once the compiler does this for us +// cos_a = sqrt(1. - sin_a*sin_a); } void LArWheelCalculator::parameterized_sincos(const double r, double &sin_a, double &cos_a) const