diff --git a/modules/ml/src/em.cpp b/modules/ml/src/em.cpp index 130c9b87ab..f2f3520f11 100644 --- a/modules/ml/src/em.cpp +++ b/modules/ml/src/em.cpp @@ -503,8 +503,11 @@ void EM::computeProbabilities(const Mat& sample, int& label, Mat* probs, double* return; Mat buf, *sampleProbs = probs ? probs : &buf; - Mat expL_Lmax; - exp(L - L.at(label), expL_Lmax); + Mat expL_Lmax(L.size(), CV_64FC1); + double maxLVal = L.at(label); + for(int i = 0; i < L.cols; i++) + expL_Lmax.at(i) = std::exp(L.at(i) - maxLVal); + double partSum = 0, // sum_j!=q (exp(L_ij - L_iq)) factor; // 1/(1 + partExpSum) for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++)