From fdf549b921a7ec8065db3c8056c4d96757adc43c Mon Sep 17 00:00:00 2001 From: Viet Dinh Date: Sun, 1 Nov 2015 11:08:01 -0500 Subject: [PATCH] fix bug #5599 --- modules/core/src/mathfuncs.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index ed7b61e6d..bca77cce3 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -2469,7 +2469,7 @@ int cv::solveCubic( InputArray _coeffs, OutputArray _roots ) double cv::solvePoly( InputArray _coeffs0, OutputArray _roots0, int maxIters ) { typedef Complex C; - + double maxDiff = 0; int iter, i, j; Mat coeffs0 = _coeffs0.getMat(); @@ -2494,8 +2494,8 @@ double cv::solvePoly( InputArray _coeffs0, OutputArray _roots0, int maxIters ) for( i = 0; i <= n; i++ ) coeffs[i] = C(rcoeffs[i], 0); } - - C p(1, 0), r(1, 1); + + C p(1, 0), r(0.4, 0.9); for( i = 0; i < n; i++ ) { @@ -2514,7 +2514,7 @@ double cv::solvePoly( InputArray _coeffs0, OutputArray _roots0, int maxIters ) for( j = 0; j < n; j++ ) { num = num*p + coeffs[n-j-1]; - if( j != i ) denom = denom * (p - roots[j]); + if( j != i ) denom = denom * (p - roots[j]); } num /= denom; roots[i] = p - num; @@ -2523,7 +2523,7 @@ double cv::solvePoly( InputArray _coeffs0, OutputArray _roots0, int maxIters ) if( maxDiff <= 0 ) break; } - + if( coeffs0.channels() == 1 ) { const double verySmallEps = 1e-100;