#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;
}
