Boost logo

Ublas :

Subject: Re: [ublas] matrix_row fails with symmetric matrix
From: Andrea Cassioli (cassioliandre_at_[hidden])
Date: 2010-05-19 07:20:01


Hi Gunter,
I agree with you in using the range and project machinery to get what
I need, and I have to say I missed (probably for my lazynesss) this
set of functionalities the first time I looked the documentation.

Apart from the expressiveness, my major concern is that is not clear
at all that ublas vectors are not as std::vector. Indeed, from the
very beginning, it is stated : " The glue between containers, views
and expression templated operations is a mostly STL conforming
iterator interface.". What does it exactly mean "mostly conforming"?

Probably It should be better to say that it is not STL conforming,
despite some similarity. I fancy if no iterators at all would be
provided and only ragne and project functions would be needed...

In my opinion, such uncertainties are a major reason for people not to
choose or support ublas. I like it and it is very nice to me also
because my code is already boost oriented. I think that before going
on with new functionalities, a major revision of documentation and
tuorial should be started.

Andrea

On Wed, May 19, 2010 at 1:41 AM, Gunter Winkler <guwi17_at_[hidden]> wrote:
> Hello Andrea,
>
> Andrea Cassioli schrieb:
>> 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??
>>
>
> I am not sure if I understand you code. However, a ublas::vector is
> _not_ a STL vector. The reason is that ublas' vectors and matrices
> represent object for linear algebra, where STL vectors are simply
> containers. An ublas vector is much more like a std::valarray than like
> any other STL container. Thus it is not possible to assign a vector of
> length n to a vector of length (n+1).
>
> Despite that: you can use the free functions project(), row() and
> column() to get more expressive code. For example:
>
> matrix<double> A(10,10);
> vector<double> v(5);
>
> // untested
> v = project( row(A, 3), range(0,5) );
> project( column(A, 4), range(5,10) ) = v;
>
> see also
> http://www.boost.org/doc/libs/1_43_0/libs/numeric/ublas/doc/operations_overview.htm#sub
>
> mfg
> Gunter
>
>
>
> __________ Hinweis von ESET NOD32 Antivirus, Signaturdatenbank-Version 5125 (20100518) __________
>
> E-Mail wurde geprüft mit ESET NOD32 Antivirus.
>
> http://www.eset.com
>
>
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/ublas
> Sent to: cassioliandre_at_[hidden]
>

-- 
Andrea Cassioli