#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/symmetric.hpp>
int main()
{
using namespace boost::numeric::ublas;
std::cout << "regular matrix:\n";
matrix<double> m (3, 3);
for(unsigned i = 0; i < m.size1(); ++i)
for(unsigned j = 0; j < m.size2(); ++j)
m(i, j) = 3*i + j;
for (unsigned i = 0; i < m.size1 (); ++i)
{
for (unsigned j = 0; j < m.size2 (); ++j)
std::cout << m(i, j) << ' ';
std::cout << '\n';
}
std::cout << "symmetric matrix:\n";
symmetric_matrix<double, upper> mu (3, 3);
for(unsigned i = 0; i < mu.size1(); ++i)
for(unsigned j = 0; j<=i; ++j)
mu(i,j) = 3*i + j;
for (unsigned i = 0; i < mu.size1 (); ++i)
{
for (unsigned j = 0; j < mu.size2 (); ++j)
std::cout << mu(i, j) << ' ';
std::cout << '\n';
}
std::cout << "attempting assignment...";
mu = m;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy91Ymxhcy9tYXRyaXguaHBwPgojaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy91Ymxhcy9zeW1tZXRyaWMuaHBwPgppbnQgbWFpbigpCnsKICAgIHVzaW5nIG5hbWVzcGFjZSBib29zdDo6bnVtZXJpYzo6dWJsYXM7CgogICAgc3RkOjpjb3V0IDw8ICJyZWd1bGFyIG1hdHJpeDpcbiI7CiAgICBtYXRyaXg8ZG91YmxlPiBtICgzLCAzKTsKICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG0uc2l6ZTEoKTsgKytpKQogICAgICAgIGZvcih1bnNpZ25lZCBqID0gMDsgaiA8IG0uc2l6ZTIoKTsgKytqKQogICAgICAgICAgICBtKGksIGopID0gMyppICsgajsKCiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbS5zaXplMSAoKTsgKytpKQogICAgewogICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtLnNpemUyICgpOyArK2opCiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBtKGksIGopIDw8ICcgJzsKICAgICAgICBzdGQ6OmNvdXQgPDwgJ1xuJzsKICAgIH0KCiAgICBzdGQ6OmNvdXQgPDwgInN5bW1ldHJpYyBtYXRyaXg6XG4iOwogICAgc3ltbWV0cmljX21hdHJpeDxkb3VibGUsIHVwcGVyPiBtdSAoMywgMyk7CiAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCBtdS5zaXplMSgpOyArK2kpCiAgICAgICAgZm9yKHVuc2lnbmVkIGogPSAwOyBqPD1pOyArK2opCiAgICAgICAgICAgICAgIG11KGksaikgPSAzKmkgKyBqOwoKICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtdS5zaXplMSAoKTsgKytpKQogICAgewogICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBtdS5zaXplMiAoKTsgKytqKQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgbXUoaSwgaikgPDwgJyAnOwogICAgICAgIHN0ZDo6Y291dCA8PCAnXG4nOwogICAgfQoKICAgIHN0ZDo6Y291dCA8PCAiYXR0ZW1wdGluZyBhc3NpZ25tZW50Li4uIjsKICAgIG11ID0gbTsKfQo=