diff --git a/Code/Mantid/Framework/CurveFitting/src/GaussianAutoDiff.cpp b/Code/Mantid/Framework/CurveFitting/src/GaussianAutoDiff.cpp index 4d195bde2b28..302be7f523e8 100644 --- a/Code/Mantid/Framework/CurveFitting/src/GaussianAutoDiff.cpp +++ b/Code/Mantid/Framework/CurveFitting/src/GaussianAutoDiff.cpp @@ -24,7 +24,8 @@ void GaussianAutoDiff::function1DAutoDiff(const FunctionDomain1D &domain, std::v adept::adouble sigma = parameters.getParameter("Sigma"); for(size_t i = 0; i < y.size(); ++i) { - y[i] = height * exp(-0.5 * pow( (domain[i] - centre)/sigma, 2.0) ); + adept::adouble term = (domain[i] - centre)/sigma; + y[i] = height * exp(-0.5 * term * term); } } diff --git a/Code/Mantid/Framework/CurveFitting/src/GaussianHandCoded.cpp b/Code/Mantid/Framework/CurveFitting/src/GaussianHandCoded.cpp index 0763f4d598d9..7500bd9037f7 100644 --- a/Code/Mantid/Framework/CurveFitting/src/GaussianHandCoded.cpp +++ b/Code/Mantid/Framework/CurveFitting/src/GaussianHandCoded.cpp @@ -27,7 +27,8 @@ using namespace API; double sigma = getParameter("Sigma"); for(size_t i = 0; i < nData; ++i) { - out[i] = height * exp(-0.5 * pow( (xValues[i] - centre)/sigma, 2.0) ); + double diffTerm = (xValues[i] - centre)/sigma; + out[i] = height * exp(-0.5 * diffTerm * diffTerm ); } } @@ -39,11 +40,12 @@ using namespace API; for(size_t i = 0; i < nData; ++i) { double xDiff = xValues[i] - centre; - double expTerm = exp(-0.5 * pow( (xDiff)/sigma, 2.0)); + double term = (xDiff)/sigma; + double expTerm = exp(-0.5 * term * term); out->set(i, 0, expTerm); - out->set(i, 1, (height*expTerm*(2 * xDiff))/(2*pow(sigma, 2))); - out->set(i, 2, (height*expTerm*pow(xDiff, 2))/pow(sigma, 3)); + out->set(i, 1, (height*expTerm*(xDiff))/(sigma * sigma)); + out->set(i, 2, (height*expTerm*term * term)/(sigma)); } } diff --git a/Code/Mantid/Framework/CurveFitting/src/GaussianNumDiff.cpp b/Code/Mantid/Framework/CurveFitting/src/GaussianNumDiff.cpp index 7de2199f7956..fb54d99ab07d 100644 --- a/Code/Mantid/Framework/CurveFitting/src/GaussianNumDiff.cpp +++ b/Code/Mantid/Framework/CurveFitting/src/GaussianNumDiff.cpp @@ -27,7 +27,8 @@ namespace CurveFitting double sigma = getParameter("Sigma"); for(size_t i = 0; i < nData; ++i) { - out[i] = height * exp(-0.5 * pow( (xValues[i] - centre)/sigma, 2.0) ); + double term = (xValues[i] - centre)/sigma; + out[i] = height * exp(-0.5 * term * term ); } }