Dear Sven,
Thanks for your note. I had realized that the intent of xLARFP was to
construct TAU and V such that (I  TAU*V*V')(ALPHA; X')' = (BETA; 0')' with
BETA > 0 and I had read LAWN 203 discussing these changes. In addition to my
previously proposed change (which constructed bounded TAU but at the price of
needing to store V(1) separately) I have thought of another way to change
xLARFP, which I believe preserves the desired nonnegative diagonal behavior.
Essentially, one could maintain exactly the construction of xLARFG, however if
BETA comes out negative, set it to be positive and mark TAU to be negative.
Then, when applying the reflector, if TAU < 0, apply TAU*V*V'  I instead of
the usual I  TAU*V*V'. That is, if xLARFG wants to construct a reflector to
make BETA negative, construct that reflector (call it H) but apply H instead,
using the sign of TAU as a sentinel to indicate this behavior. Also, if I
understand correctly, one could do the same thing for the complex versions of
these codes by keying off the real part of TAU.
An annoyance with this approach is that xGER only allows A = A + a*x*y'. I'd
really like to be able to say A = b*A + a*x*y', where in this case b = 1.
Without such a call, one needs to make an extra pass over the memory to scale
by 1, which is bothersome.
I've attached some code (dlarfp3.f, dlarf2.f) based on LAPACK 3.2.1 which
follows this approach. Again, all comments and advice are welcome. We are
getting close to a foundation change freeze (Monday 17 August) here at The
MathWorks, and we'd like to have some resolution to these xLARFP issues.
Thanks.
Pat.
Original Message
From: Sven Hammarling [mailto:sven.hammarling@Domain.Removed]
Sent: Wednesday, August 05, 2009 5:16 AM
To: Pat Quillen
Cc: lapack@Domain.Removed; Bobby Cheng; Duncan Po; Penny Anderson; Cleve
Moler
Subject: Re: [Lapack] xLARFP and scaling.
Dear Pat,
Thank you for pointing out this behaviour. Although I was not involved
in writing this routine, I don't imagine that this behaviour was
intended. I shall try to take a look at xLARFP in the next few days
and
see if I can suggest anything to improve this.
As I am sure that you realise, xLARFP was written to produce a
nonnegative BETA, so that in a factorization such as the QR, R would
have nonnegative diagonals. (Although I notice that the comments in
xGEQRF and xGEQR2 do not actually say that the diagonals are real and
nonnegative.)
Best wishes,
Sven.
 next part 
A nontext attachment was scrubbed...
Name: dlarfp3.f
Type: application/octetstream
Size: 3904 bytes
Desc: dlarfp3.f
Url :
http://lists.eecs.utk.edu/mailman/private/lapack/attachments/20090810/ff5fe813/dlarfp3.obj
 next part 
A nontext attachment was scrubbed...
Name: dlarf2.f
Type: application/octetstream
Size: 4907 bytes
Desc: dlarf2.f
Url :
http://lists.eecs.utk.edu/mailman/private/lapack/attachments/20090810/ff5fe813/dlarf2.obj
