Boost logo

Ublas :

Subject: Re: [ublas] matrix_row fails with symmetric matrix
From: David Bellot (david.bellot_at_[hidden])
Date: 2010-05-18 02:49:27

by the way, I sent my previous message too fast and forgot to tell you you
can directly use a matrix_row as a vector in any expression.

In my previous example, there is a hard copy induced by the assignment,
however in an expression, you can avoid this memory overhead substituting
the vector by its initial declaration too, if it makes sense in your case,
like that:

    matrix_row<symm_mat> row0(mat,0);
    matrix_row<symm_mat> lastrow(mat,mat.size1()-1);

    std::cout<<"this is the matrix:\n "<<mat<<std::endl;
    std::cout<<"is this the first row?\n"<<row0<<std::endl;
    std::cout<<"is this the last row?\n"<<lastrow<<std::endl;

it works well too.

On Mon, May 17, 2010 at 23:03, Andrea Cassioli <cassioliandre_at_[hidden]>wrote:

> Hi guys,
> I've just experienced a quite silly bug. I'm currently using a
> symmetric matrix to perform some linear algebra calculations, after
> that I need to copy one row at the time in a bigger vector. Till now I
> have been performing row copying by means of simple hand-made loops.
> Now I would like to clean the code, so I 've decided to use matrix_row
> adaptors to iterate among all matrix row and use std::copy to perform
> the copy operation.
> It sounds clean and simple but surprise it does not work! I've write
> down a very simple example, which is attached to the message. In fact
> the copy is performed accessing the underlying triangular matrix used
> to store the symmetric one.
> I'm pretty sure I'm doing something wrong, but I would expect the
> matrix_row adaptor to behave as a normal vector, that is I would like
> to play with it seamlessly.
> Am I wrong or it is a bug??
> Best Regards,
> Andrea Cassioli
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> Sent to: david.bellot_at_[hidden]

David Bellot, PhD