mirror of
https://github.com/opencv/opencv.git
synced 2025-01-22 17:43:12 +08:00
Merge pull request #14089 from alalek:fix_14088
This commit is contained in:
commit
f4c2c4412b
@ -322,6 +322,8 @@ private:
|
||||
// Fortran subroutine in EISPACK.
|
||||
|
||||
// Initialize
|
||||
const int max_iters_count = 1000 * this->n;
|
||||
|
||||
int nn = this->n;
|
||||
int n1 = nn - 1;
|
||||
int low = 0;
|
||||
@ -487,7 +489,9 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
iter = iter + 1; // (Could check iteration count here.)
|
||||
iter = iter + 1;
|
||||
if (iter > max_iters_count)
|
||||
CV_Error(Error::StsNoConv, "Algorithm doesn't converge (complex eigen values?)");
|
||||
|
||||
// Look for two consecutive small sub-diagonal elements
|
||||
int m = n1 - 2;
|
||||
|
@ -519,4 +519,15 @@ TEST_P(Core_EigenZero, double)
|
||||
}
|
||||
INSTANTIATE_TEST_CASE_P(/**/, Core_EigenZero, testing::Values(2, 3, 5));
|
||||
|
||||
TEST(Core_EigenNonSymmetric, convergence)
|
||||
{
|
||||
Matx33d m(
|
||||
0, -1, 0,
|
||||
1, 0, 1,
|
||||
0, -1, 0);
|
||||
Mat eigenvalues, eigenvectors;
|
||||
// eigen values are complex, algorithm doesn't converge
|
||||
EXPECT_THROW(cv::eigenNonSymmetric(m, eigenvalues, eigenvectors), cv::Exception); // exception instead of hang
|
||||
}
|
||||
|
||||
}} // namespace
|
||||
|
Loading…
Reference in New Issue
Block a user