delpi  0.0.1
DElta-complete LP solver
Loading...
Searching...
No Matches
LpRowSense.cpp
1
6#include "delpi/solver/LpRowSense.h"
7
8#include <ostream>
9
10#include "delpi/util/error.h"
11
12namespace delpi {
13
14LpRowSense parseLpSense(const char sense) {
15 switch (sense) {
16 case 'g':
17 case '>':
18 return LpRowSense::GT;
19 case 'G':
20 return LpRowSense::GE;
21 case '=':
22 case 'E':
23 return LpRowSense::EQ;
24 case 'N':
25 return LpRowSense::NQ;
26 case 'L':
27 return LpRowSense::LE;
28 case '<':
29 case 'l':
30 return LpRowSense::LT;
31 case 'I':
32 return LpRowSense::IN;
33 default:
34 DELPI_UNREACHABLE();
35 }
36}
37
38char toChar(const LpRowSense sense) {
39 switch (sense) {
40 case LpRowSense::GT:
41 return 'g';
42 case LpRowSense::GE:
43 return 'G';
44 case LpRowSense::EQ:
45 return 'E';
46 case LpRowSense::NQ:
47 return 'N';
48 case LpRowSense::LE:
49 return 'L';
50 case LpRowSense::LT:
51 return 'l';
52 case LpRowSense::IN:
53 return 'I';
54 default:
55 DELPI_UNREACHABLE();
56 }
57}
58
60 switch (sense) {
61 case LpRowSense::GT:
62 return LpRowSense::LE;
63 case LpRowSense::GE:
64 return LpRowSense::LT;
65 case LpRowSense::EQ:
66 return LpRowSense::NQ;
67 case LpRowSense::NQ:
68 return LpRowSense::EQ;
69 case LpRowSense::LE:
70 return LpRowSense::GT;
71 case LpRowSense::LT:
72 return LpRowSense::GE;
73 case LpRowSense::IN:
74 return LpRowSense::IN;
75 default:
76 DELPI_UNREACHABLE();
77 }
78}
79
81 switch (sense) {
82 case LpRowSense::GE:
83 return LpRowSense::LE;
84 case LpRowSense::EQ:
85 return LpRowSense::NQ;
86 case LpRowSense::LE:
87 return LpRowSense::GE;
88 case LpRowSense::IN:
89 return LpRowSense::IN;
90 default:
91 DELPI_UNREACHABLE();
92 }
93}
94
96 switch (sense) {
97 case LpRowSense::GT:
98 return LpRowSense::GE;
99 case LpRowSense::LT:
100 return LpRowSense::LE;
101 default:
102 return sense;
103 }
104}
105
106std::ostream &operator<<(std::ostream &os, const LpRowSense &lp_result) { return os << toChar(lp_result); }
107
108} // namespace delpi
Global namespace for the delpi library.
LpRowSense parseLpSense(const char sense)
Parse the sense from a character.
LpResult operator~(const LpResult result)
Relax the result of the theory solver (i.e.
Definition LpResult.cpp:33
char toChar(const LpRowSense sense)
Convert the sense to a character.
LpRowSense
Sense of a linear programming row describing a constraint.
Definition LpRowSense.h:20
@ NQ
Not equal to.
Definition LpRowSense.h:26
@ EQ
Equal to.
Definition LpRowSense.h:22
@ LT
Less than.
Definition LpRowSense.h:21
@ IN
Inactive.
Definition LpRowSense.h:27
@ GT
Greater than.
Definition LpRowSense.h:25
@ LE
Less than or equal to.
Definition LpRowSense.h:23
@ GE
Greater than or equal to.
Definition LpRowSense.h:24
LpRowSense operator!(const LpRowSense sense)
Invert the sense with delta == 0.
LpRowSense operator-(const LpRowSense sense)
Invert the sense with delta > 0.