Re: [eigen] Blocked QR algorithm - lapack compatible ?

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


I'm pretty sure that out householder stuff isn't LAPACK compatible:
either our hCoeffs or our housholder vectors are different. Don't
remember which. Since Gael says the hCoeffs are compatible, I guess
it's the vectors then, that are different.

Benoit



2010/6/7  <vincent.lejeune@xxxxxxxxxx>:
> Hi,
>
>
>
> so there is some error in my code, but I don't see where...
>
>
>
> I wished to write a blocked-Householder applying function like DLARFB in
>
> Lapack.
>
> This routine compute C:=C-V*T*V'*C, where the i-th column of V store the
>
> vector that defines the i-th householder factor.
>
> Indeed H = H1 * H2 * H3... * Hn can be written H = I - V * T * V', where T
>
> is a triangular factor, whose elements depends on V and on taus factor.
>
> T is computed by DLARFT in Lapack.
>
>
>
> I've attached a header file that contain my implemantation of such
>
> functions. It seems that they return the same results than Lapack routines,
>
> but the result of a QR decomposition is not the same than Eigen's one.
>
> Maybe you could give it an eye and find where is the issue...Thanks
>
>
>
> Vincent
>
>
>
>
>
> On Wed, 2 Jun 2010 11:33:13 +0200, Gael Guennebaud
>
> <gael.guennebaud@xxxxxxxxx> wrote:
>
>> sorry but our householder factor should really be the same than Lapack.
>
> Our
>
>> makeHouseholder computes the same thing than the Lapack dlarfg routine.
>
>>
>
>> gael
>
>>
>
>> On Fri, May 21, 2010 at 6:30 PM, Benoit Jacob
>
>> <jacob.benoit.1@xxxxxxxxx>wrote:
>
>>
>
>>> True, our hCoeffs aren't quite the same as LAPACK's tau. I don't
>
>>> remember exactly but I'm sure Gael does, as he coded that, so, pinging
>
>>> him.
>
>>>
>
>>> Benoit
>
>>>
>
>>> 2010/5/21  <vincent.lejeune@xxxxxxxxxx>:
>
>>> >
>
>>> > Hi,
>
>>> >
>
>>> >
>
>>> >
>
>>> > I'm trying to implement a blocked QR algorithm, using the code from
>
>>> >
>
>>> > HouseholderQR.
>
>>> >
>
>>> > I'm using the algorithm used in lapack routine dgeqrf : first I make
>
>>> > the
>
>>> >
>
>>> > reduction of a panel of the input matrix, then I build the "T"
>
>>> > triangular
>
>>> >
>
>>> > factor in H=I-VT'V' that defines the blocked householder
>
>>> > transformation,
>
>>> >
>
>>> > then I apply this transformation to the trailing submatrix by a left
>
>>> >
>
>>> > multiplication. Then I iterate the process.
>
>>> >
>
>>> >
>
>>> >
>
>>> > I think that the current implemantation of householderQR does not
>
>>> > comply
>
>>> >
>
>>> > with lapack routine. The coefficients in hCoeffs() does actually not
>
>>> > have
>
>>> >
>
>>> > the same meaning than the one in the TAU vector found in dgeqrf. When
>
>>> >
>
>>> > applying dlarft and dlarfb with hCoeffs to a partially reduced
>
> matrix,
>
>>> > I
>
>>> >
>
>>> > end with mostly different results than the one furnished by a
>
> complete
>
>>> >
>
>>> > eigen householder decomposition (strangly the first row is correct).
>
>>> >
>
>>> >
>
>>> >
>
>>> > I suspect that the applyhousolderfrom the left use the coefficient in
>
> a
>
>>> >
>
>>> > different war than dlarf in lapack does.
>
>>> >
>
>>> >
>
>>> >
>
>>> > Is there some doc on how hcoeffs from eigen and tau from lapack are
>
>>> >
>
>>> > related ?
>
>>> >
>
>>> >
>
>>> >
>
>>> > Thanks, Vincent
>
>>> >
>
>>> >
>
>>> >
>
>>>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/