fixed a bug which caused incorrect work of function eigen()
authorAlexander Reshetnikov <no@email>
Wed, 25 Jan 2012 16:01:59 +0000 (16:01 +0000)
committerAlexander Reshetnikov <no@email>
Wed, 25 Jan 2012 16:01:59 +0000 (16:01 +0000)
modules/core/src/lapack.cpp
modules/core/test/test_eigen.cpp

index 6af62fa..968000b 100644 (file)
@@ -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++ )
index 60da9d2..b518846 100644 (file)
@@ -98,18 +98,26 @@ Core_EigenTest_Scalar_64::~Core_EigenTest_Scalar_64() {}
 \r
 void Core_EigenTest_Scalar_32::run(int) \r
 {\r
-    float value = cv::randu<float>();\r
-    cv::Mat src(1, 1, CV_32FC1, Scalar::all((float)value));\r
-    test_values(src);\r
-    src.~Mat();\r
+    const size_t MATRIX_COUNT = 500;\r
+    for (size_t i = 0; i < MATRIX_COUNT; ++i)\r
+    {\r
+        float value = cv::randu<float>();\r
+        cv::Mat src(1, 1, CV_32FC1, Scalar::all((float)value));\r
+        test_values(src);\r
+        src.~Mat();\r
+    }\r
 }\r
 \r
 void Core_EigenTest_Scalar_64::run(int)\r
 {\r
-    float value = cv::randu<float>();\r
-    cv::Mat src(1, 1, CV_64FC1, Scalar::all((double)value));\r
-    test_values(src);\r
-    src.~Mat();\r
+    const size_t MATRIX_COUNT = 500;\r
+    for (size_t i = 0; i < MATRIX_COUNT; ++i)\r
+    {\r
+        float value = cv::randu<float>();\r
+        cv::Mat src(1, 1, CV_64FC1, Scalar::all((double)value));\r
+        test_values(src);\r
+        src.~Mat();\r
+    }\r
 }\r
 \r
 void Core_EigenTest_32::run(int) { check_full(CV_32FC1); }\r
@@ -358,7 +366,7 @@ bool Core_EigenTest::check_full(int type)
     return true;\r
 }\r
 \r
-// TEST(Core_Eigen_Scalar_32, accuracy) {Core_EigenTest_Scalar_32 test; test.safe_run(); }\r
-// TEST(Core_Eigen_Scalar_64, accuracy) {Core_EigenTest_Scalar_64 test; test.safe_run(); }\r
-TEST(Core_Eigen_32, accuracy) { Core_EigenTest_32 test; test.safe_run(); }\r
-TEST(Core_Eigen_64, accuracy) { Core_EigenTest_64 test; test.safe_run(); }\r
+TEST(Core_Eigen, scalar_32) {Core_EigenTest_Scalar_32 test; test.safe_run(); }\r
+TEST(Core_Eigen, scalar_64) {Core_EigenTest_Scalar_64 test; test.safe_run(); }\r
+TEST(Core_Eigen, vector_32) { Core_EigenTest_32 test; test.safe_run(); }\r
+TEST(Core_Eigen, vector_64) { Core_EigenTest_64 test; test.safe_run(); }\r