From: Bowen Meng
Date: Thu, 4 Dec 2014 18:09:22 -0500
I've using DGESDD for SVD and observed some numerical issues within it. So
I have a very specific question about the DGESDD.
When studying the code of Lapacke, I found that DGESDD calls DBDSDC (
which does the divide and conquer of bidiagonal matrix. When DBDSDC handles
bidiagonal matrix, it first check if the diagonal value less than machine
epsilon (in line 403 - 407) and upscale the small values. We found that in
our application, this affects our numerical result. And if we comment this
out, we can achieve same accuracy of DGESDD compared with DGESVD.
We conjecture that the upscale helps for later deflation and reduce the
number of roots to solve for secular equation. But after trying several
matrix, we couldn't find an good example. Need your help for:
1. Could you help to look into your code to see such kind of code and help
me to explain why this is used?
2. Could you provide some example such that with upscale, it helps to
reduce the roots to solve for secular equation?
3. Explain why DGESDD speed up DGESVD specificly?
In terms of speed up, I measured the number of roots for secular equation
and number of iterations to solve each root. I look forward to your reply.
-------------- next part --------------
An HTML attachment was scrubbed...
<Prev in Thread]
[Next in Thread>
[Lapack] numerical issue with DGESDD function,