From 951a3d6c7a2c260a697e965e5dcf623ac927dcd6 Mon Sep 17 00:00:00 2001 From: Alexander Reshetnikov Date: Wed, 25 Jan 2012 16:01:59 +0000 Subject: [PATCH] fixed a bug which caused incorrect work of function eigen() --- modules/core/src/lapack.cpp | 2 +- modules/core/test/test_eigen.cpp | 32 ++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index 6af62fa..968000b 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -278,7 +278,7 @@ JacobiImpl_( _Tp* A, size_t astep, _Tp* W, _Tp* V, size_t vstep, int n, uchar* b } } - for( iters = 0; iters < maxIters; iters++ ) + if( n > 1 ) for( iters = 0; iters < maxIters; iters++ ) { // find index (k,l) of pivot p for( k = 0, mv = maxSR[0], i = 1; i < n-1; i++ ) diff --git a/modules/core/test/test_eigen.cpp b/modules/core/test/test_eigen.cpp index 60da9d2..b518846 100644 --- a/modules/core/test/test_eigen.cpp +++ b/modules/core/test/test_eigen.cpp @@ -98,18 +98,26 @@ Core_EigenTest_Scalar_64::~Core_EigenTest_Scalar_64() {} void Core_EigenTest_Scalar_32::run(int) { - float value = cv::randu(); - cv::Mat src(1, 1, CV_32FC1, Scalar::all((float)value)); - test_values(src); - src.~Mat(); + const size_t MATRIX_COUNT = 500; + for (size_t i = 0; i < MATRIX_COUNT; ++i) + { + float value = cv::randu(); + cv::Mat src(1, 1, CV_32FC1, Scalar::all((float)value)); + test_values(src); + src.~Mat(); + } } void Core_EigenTest_Scalar_64::run(int) { - float value = cv::randu(); - cv::Mat src(1, 1, CV_64FC1, Scalar::all((double)value)); - test_values(src); - src.~Mat(); + const size_t MATRIX_COUNT = 500; + for (size_t i = 0; i < MATRIX_COUNT; ++i) + { + float value = cv::randu(); + cv::Mat src(1, 1, CV_64FC1, Scalar::all((double)value)); + test_values(src); + src.~Mat(); + } } void Core_EigenTest_32::run(int) { check_full(CV_32FC1); } @@ -358,7 +366,7 @@ bool Core_EigenTest::check_full(int type) return true; } -// TEST(Core_Eigen_Scalar_32, accuracy) {Core_EigenTest_Scalar_32 test; test.safe_run(); } -// TEST(Core_Eigen_Scalar_64, accuracy) {Core_EigenTest_Scalar_64 test; test.safe_run(); } -TEST(Core_Eigen_32, accuracy) { Core_EigenTest_32 test; test.safe_run(); } -TEST(Core_Eigen_64, accuracy) { Core_EigenTest_64 test; test.safe_run(); } +TEST(Core_Eigen, scalar_32) {Core_EigenTest_Scalar_32 test; test.safe_run(); } +TEST(Core_Eigen, scalar_64) {Core_EigenTest_Scalar_64 test; test.safe_run(); } +TEST(Core_Eigen, vector_32) { Core_EigenTest_32 test; test.safe_run(); } +TEST(Core_Eigen, vector_64) { Core_EigenTest_64 test; test.safe_run(); } -- 2.7.4