1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 23:33:05 +04:00

Merge branch 4.x

This commit is contained in:
Alexander Smorkalov
2026-05-25 16:29:45 +03:00
54 changed files with 523 additions and 414 deletions
+87
View File
@@ -1978,6 +1978,93 @@ TEST(Core_SolvePoly, regression_5599)
}
}
TEST(Core_SolvePoly, regression_23644)
{
// x^2 - 2x - 3 = 0, roots: 3, -1
cv::Mat coefs = (cv::Mat_<float>(1,3) << -3, -2, 1 );
cv::Mat r;
double prec;
prec = cv::solvePoly(coefs, r);
EXPECT_LE(prec, 1e-6);
EXPECT_EQ(2u, r.total());
ASSERT_EQ(CV_32FC2, r.type());
checkRoot<float>(r, 3, 0);
checkRoot<float>(r, -1, 0);
}
TEST(Core_SolvePoly, degree_2_polynomials)
{
cv::Mat_<float> coefs(1,3);
cv::Mat r;
double prec;
for (float c0 = -20; c0 <= 20; c0++)
{
coefs.at<float>(0) = c0;
for (float c1 = -20; c1 <= 20; c1++)
{
coefs.at<float>(1) = c1;
for (float c2 = -20; c2 <= 20; c2++)
{
coefs.at<float>(2) = c2;
prec = cv::solvePoly(coefs, r);
EXPECT_LE(prec, 1e-6);
}
}
}
}
TEST(Core_SolvePoly, degree_4_polynomials)
{
applyTestTag(CV_TEST_TAG_VERYLONG);
cv::Mat_<float> coefs(1,5);
cv::Mat r;
double prec;
for (float c0 = -10; c0 <= 10; c0++)
{
coefs.at<float>(0) = c0;
for (float c1 = -10; c1 <= 10; c1++)
{
coefs.at<float>(1) = c1;
for (float c2 = -10; c2 <= 10; c2++)
{
coefs.at<float>(2) = c2;
for (float c3 = -10; c3 <= 10; c3++)
{
coefs.at<float>(3) = c3;
for (float c4 = -10; c4 <= 10; c4++)
{
coefs.at<float>(4) = c4;
prec = cv::solvePoly(coefs, r);
EXPECT_LE(prec, 1e-3);
}
}
}
}
}
}
TEST(Core_SolvePoly, different_magnitudes_polynomials)
{
cv::Mat_<float> coefs(1,3);
cv::Mat r;
double prec;
for (float i = -10; i < 10; i++)
{
coefs.at<float>(0) = pow(2.f, i);
for (float j = -10; j < 10; j++)
{
coefs.at<float>(1) = pow(2.f, j);
for (float k = -10; k < 10; k++)
{
coefs.at<float>(2) = pow(2.f, k);
prec = cv::solvePoly(coefs, r);
EXPECT_LE(prec, 1e-6);
}
}
}
}
class Core_PhaseTest : public cvtest::BaseTest
{
int t;