12 {
14 struct Conflict {
15 D existing;
16 std::initializer_list<D> incoming;
17 };
18 const Conflict conflicts[] = {
19 {D::PositiveDefinite, {D::NegativeDefinite, D::NegativeSemiDefinite, D::Indefinite}},
20 {D::NegativeDefinite, {D::PositiveDefinite, D::PositiveSemiDefinite, D::Indefinite}},
21 {D::PositiveSemiDefinite, {D::NegativeDefinite, D::Indefinite}},
22 {D::NegativeSemiDefinite, {D::PositiveDefinite, D::Indefinite}},
23 {D::Indefinite, {D::PositiveDefinite, D::NegativeDefinite,
24 D::PositiveSemiDefinite, D::NegativeSemiDefinite}}
25 };
26 for (const auto& conflict : conflicts) {
27 if (existing != conflict.existing) {
28 continue;
29 }
30 return std::find(conflict.incoming.begin(), conflict.incoming.end(), incoming)
31 != conflict.incoming.end();
32 }
33 return false;
34}
Definiteness
Matrix definiteness classification.