octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

## the latest LAPACK

 From: John W. Eaton Subject: the latest LAPACK Date: Tue, 22 Jun 1999 12:15:18 -0500 (CDT)

```On 22-Jun-1999, Ross A. Lippert <address@hidden> wrote:

| > (there is a shifting policy that you can confuse badly with the
| > right counterexample, and presently, octave's barfs on this).

Can you explain how this is `octave barfing'?  Isn't it more like
LAPACK barfing?

I believe there was also at least one bug in LAPACK's SVD calculation
that was reported here but for which I never saw a fix.  I did ask
someone to report it to the LAPACK maintainers as I did not have time
to pursue it, though I did manage to put together a Fortran-only
example that demonstrated the bug.  It is appended below.  Can you
verify that this works correctly now, and if not, can you please
report the problem?  If it is a bug in the way I am using the LAPACK
routines, can you tell me what the problem (and fix) is?

Thanks,

jwe

program main
integer info
double precision a(3,6), s(3), u(3,3), vt(6,6), work(1000)
data a /18*0.0/

a(1,1) = 1.0
a(2,2) = 1.0
a(3,3) = 1.0

a(1,4) = 1.0
a(2,5) = 1.0
a(3,6) = 1.0

print *, 'a'
print *, a

* this fails, returning sigma = [ -sqrt(2), -sqrt(2), -sqrt(2) ]
* instead of [ sqrt(2), sqrt(2), sqrt(2) ].

call dgesvd ('N', 'N', 3, 6, a, 3, s, u, 3, vt, 6,
\$     work, 1000, info)

print *, 's'
print *, s

do j = 1, 6
do i = 1, 3
a(i,j) = 0.0
enddo
enddo

a(1,1) = 1.0
a(2,2) = 1.0
a(3,3) = 1.0

a(1,4) = 1.0
a(2,5) = 1.0
a(3,6) = 1.0

print *, 'a'
print *, a

* this works correctly, but shouldn't we be able to avoid computing
* *both* the right and left singular matrices if all we need is the
* vector of singular values?

call dgesvd ('O', 'N', 3, 6, a, 3, s, u, 3, vt, 6,
\$     work, 1000, info)

print *, 's'
print *, s

end

```

reply via email to

 [Prev in Thread] Current Thread [Next in Thread]