Regina 7.3 Calculation Engine
|
Used by LPInitialTableaux<LPConstraint> to store a single column of the adjusted matching equation matrix in sparse form. More...
#include <enumerate/treelp.h>
Public Member Functions | |
LPCol () | |
Initialises an empty column. More... | |
LPCol (const LPCol &)=default | |
Creates a new copy of the given column. More... | |
LPCol (LPCol &&)=default | |
Moves the contents of the given column into this new column. More... | |
LPCol & | operator= (const LPCol &)=default |
Sets this to be a copy of the given column. More... | |
LPCol & | operator= (LPCol &&)=default |
Moves the contents of the given column into this column. More... | |
void | push (size_t row, int val) |
Adds the given entry in the given row to this column. More... | |
Public Attributes | |
int | nPlus |
The total number of +1 entries in this column. More... | |
size_t | plus [4] |
The rows containing these +1 entries, in any order. More... | |
int | nMinus |
The total number of -1 entries in this column. More... | |
size_t | minus [4] |
The rows containing these -1 entries, in any order. More... | |
std::array< typename LPConstraint::Coefficient, LPConstraint::nConstraints > | extra |
The coefficients for this column that appear in each extra linear constraint defined by the LPConstraint class. More... | |
Used by LPInitialTableaux<LPConstraint> to store a single column of the adjusted matching equation matrix in sparse form.
See the LPInitialTableaux class notes for details on what the "adjusted matching equation matrix" means.
Specifically, an LPCol object stores the location of each +1 entry, and the location of each -1 entry. If some entry in the matrix is greater than +1 or less than -1, we represent it using multiple +1 or -1 entries in the same matrix location.
For any additional rows that represent extra linear constraints described by the LPConstraint class, an LPCol object stores the coefficients for those rows explicitly. The number of such rows is assumed to be very small (at the time of writing, this is no larger than 2 for all of Regina's constraint classes).
These column objects have full value semantics. Assuming the number of rows from any extra linear constraints is very small (as noted above), these column objects are cheap to move, cheap to copy, and cheap to swap via std::swap().
|
inline |
Initialises an empty column.
|
default |
Creates a new copy of the given column.
|
default |
Moves the contents of the given column into this new column.
This move operation is not marked noexcept
, since this depends upon the underlying LPConstraint class.
After this operation, the given column will no longer be usable.
|
default |
Sets this to be a copy of the given column.
|
default |
Moves the contents of the given column into this column.
This move operation is not marked noexcept
, since this depends upon the underlying LPConstraint class.
After this operation, the given column will no longer be usable.
|
inline |
Adds the given entry in the given row to this column.
row | the row containing the given value. |
val | the value at this location in the matrix. |
std::array<typename LPConstraint::Coefficient, LPConstraint::nConstraints> regina::LPCol< LPConstraint >::extra |
The coefficients for this column that appear in each extra linear constraint defined by the LPConstraint class.
size_t regina::LPCol< LPConstraint >::minus[4] |
The rows containing these -1 entries, in any order.
The same row may appear in this list more than once (indicating a -2, -3 or -4 entry in the matrix).
int regina::LPCol< LPConstraint >::nMinus |
The total number of -1 entries in this column.
int regina::LPCol< LPConstraint >::nPlus |
The total number of +1 entries in this column.
size_t regina::LPCol< LPConstraint >::plus[4] |
The rows containing these +1 entries, in any order.
The same row may appear in this list more than once (indicating a +2, +3 or +4 entry in the matrix).