Boost logo

Ublas :

Subject: Re: [ublas] [bindings] Redundant parameters in lapack::orm* functions
From: Marco Guazzone (marco.guazzone_at_[hidden])
Date: 2010-08-23 04:25:01


On Mon, Aug 23, 2010 at 9:29 AM, Rutger ter Borg <rutger_at_[hidden]> wrote:
> Marco Guazzone wrote:
>
>> Thank you, Rutger!
>>
>> Unfortunately, this time I have problem to specify parameter when I
>> want to use the transpose variant of the product (i.e., when in
>> LAPACK::?ORMQL functions parameter TRANS == 'T').
>>
>> I've tried to use bindings::trans but with no success.
>>
>> I attach a sample file.
>> If you try to compile it, you'll get a lot of errors, which disappear
>> if you comment the "transpose" cases (lines 62 and 84)
>>
>> My compiler is GCC 4.4.4 and my compiler options are:
>>   -Wall -ansi -pedantic -lm -llapack
>>
>> Can you help me to fix this problem?
>>
>> Thank you very much!!
>>
>> Cheers,
>>
>
> The LAPACK documentation seems to be wrong for ormql,
>
> A       (input) DOUBLE PRECISION array, dimension (LDA,K)
>        The i-th column must contain the vector which defines the
>        elementary reflector H(i), for i = 1,2,...,k, as returned by
>        DGEQLF in the last k columns of its array argument A.
>        A is modified by the routine but restored on exit
>
> the bindings assumed A to be const in this case (due to "(input)"), but the
> last sentence clearly says it needs read/write access. So it may be
> considered (input/workspace), and in other cases (gejsv) we've modified the
> argument to an LValue.
>
> I've added an override for this in the generator, and committed the results
> to svn.
>
> Could you please try your code with adjusted constness for A?
>

It works perfectly.
In the previously posted code, I've removed the "const" identifier
from "QL" parameter of the "prod" function.

I've not tried but I think a similar problem applies to the other
ORM?? (QR, RQ, ...) functions.

Just to be a little pedantic :P ... I get some warnings (see attachment).
So in the future, when you have time, it would be great if you work in
order to remove them.

Thank you very much!!!

Cheers,

-- Marco