cppmat::symmetric¶
cppmat::symmetric::matrix¶
[var_symmetric_matrix.h
, var_symmetric_matrix.hpp
]
Square, symmetric, matrix, whereby only the upper-diagonal components are stored:
[ X, X, X ;
X, X ;
X ]
The remaining components are inferred from symmetry. This offers memory advantages, but also computational advantages as the library is fed with additional knowledge of the matrix.
#include <cppmat/cppmat.h>
int main()
{
cppmat::symmetric::matrix<double> A(3,3);
A(0,0) = ...
// A(0,1) = ... -> same as A(1,0) = ...
...
std::cout << A << std::endl;
return 0;
}
Storage¶
The storage order is as follows:
[ 0, 1, 2 ;
3, 4 ;
5 ]
For an NxN
matrix (square by definition), the component (i,j)
can be extracted by
if (i <= j) i*N - (i-1)*i/2 + j - i;
else j*N - (j-1)*j/2 + i - j;