Boost logo

Ublas :

Subject: Re: [ublas] [bindings] Problem with assertion in GGES
From: Rutger ter Borg (rutger_at_[hidden])
Date: 2010-07-14 15:48:56


Marco Guazzone wrote:

>
> Looking inside the gges.hpp code, the failing assertion
>
> BOOST_ASSERT( bindings::size(work.select(real_type())) >=
> min_size_work( bindings::size_column(a) ));
>
> fails because for this example:
>
> bindings::size(work.select(real_type())) --> 28
> min_size_work(size_column(a)) --> 32
>
> I've tried to comment this assertion and all works and the computations
> are OK.
>
> So, where am I wrong?
>
> Thank you for your patience!!
>
> Cheers,
>

I am guessing the documentation in GGES concerning the minimal dimensions of
the real work array are not correct. I.e., the optimal workspace query (=let
lapack answer the workspace requirements) is returning something else than
what is described as minimal requirements.

We have seen this kind of error before (for gelsd, IIRC). It requires
reading the Fortran code for gges, to figure out the true minimal workspace
requirements. IOW, is it about the formula in min_size_work (max(1,8n+16))
being incorrect, but I verified that it does match the Fortran description.

Fix is rather trivial once the correct formula has been found in the Fortran
code.

Cheers,

Rutger