29 #include "gtest/gtest.h"
61 EXPECT_TRUE(SylvesterContinuous::hasUniqueSolution(
A,
B));
64 bool solve_success = SylvesterContinuous::solve(
A,
B, C,
X);
65 EXPECT_TRUE(solve_success);
78 Eigen::Matrix2d
B =
A.transpose();
83 EXPECT_TRUE(SylvesterContinuous::hasUniqueSolution(
A,
B));
86 bool solve_success = SylvesterContinuous::solve(
A,
B, C,
X);
87 EXPECT_TRUE(solve_success);
89 Eigen::Matrix2d X_sol;
90 X_sol << 6.166666, -3.8333333, -3.8333333, 3;
100 Eigen::MatrixXd
A(5, 5);
101 A << -2.5, -2.3, -0.95, -0.1689, -0.095, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0;
103 Eigen::MatrixXd
B(5, 5);
104 B << -2, -1, -0.5, -0.1, -0.005, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0;
106 Eigen::MatrixXd C = Eigen::MatrixXd::Identity(5, 5);
108 EXPECT_TRUE(SylvesterContinuous::hasUniqueSolution(
A,
B));
111 bool solve_success = SylvesterContinuous::solve(
A,
B, C,
X);
112 EXPECT_TRUE(solve_success);
114 Eigen::MatrixXd X_sol(5, 5);
115 X_sol << -0.2099, -0.8702, -0.0400, 0.0221, 0.0016, 0.3106, 0.8311, 0.1808, 0.1953, 0.0089, 1.7890, 3.2674, 0.9579, -0.2863, -0.0164, -3.2772,
116 -8.3434, -6.5446, -2.5965, -1.0414, -8.2753, -13.2734, 0.0681, 2.4069, 1.7689;
123 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(4, 4);
124 Eigen::MatrixXd
B = Eigen::MatrixXd::Random(5, 5);
125 Eigen::MatrixXd C = Eigen::MatrixXd::Random(5, 4);
128 EXPECT_DEBUG_DEATH(SylvesterContinuous::solve(
A,
B, C,
X),
"");
133 Eigen::Matrix3d
A = Eigen::Matrix3d::Ones();
134 Eigen::Matrix3d
B =
A.transpose();
136 EXPECT_FALSE(SylvesterContinuous::hasUniqueSolution(
A,
B));
141 Eigen::MatrixXd
A = Eigen::MatrixXd::Zero(10, 10);
142 Eigen::MatrixXd
B = Eigen::MatrixXd::Zero(10, 10);
144 EXPECT_FALSE(SylvesterContinuous::hasUniqueSolution(
A,
B));
149 Eigen::MatrixXd
A = Eigen::MatrixXd::Random(5, 4);
150 Eigen::MatrixXd
B = Eigen::MatrixXd::Random(5, 5);
153 EXPECT_FALSE(SylvesterContinuous::hasUniqueSolution(
A,
B));
154 EXPECT_FALSE(SylvesterContinuous::hasUniqueSolution(
B,
A));