Showing results for 
Search instead for 
Did you mean: 
Black Belt

Documentation of Lapack ?GBSV()

The documentation of Lapack routine ?GBSV omits one important detail. The page for the routine states correctly at that argument ab should be of dimension (Ldab X n), where Ldab >= 2 kl + ku +1. The page also refers to for details on the band matrix storage scheme, where we find the statement

Band storage: an m-by-n band matrix with kl sub-diagonals and ku superdiagonals is stored compactly in a two-dimensional array ab with kl+ku+1 rows and n columns. 

This seems at first sight to be inconsistent (2 kl + ku + 1 OR kl + ku +1 ?), and leaves out one crucial piece of information, which we can find in the Lapack documentation at Netlib, for example, where it says:

          On entry, the matrix A in band storage, in rows KL+1 to
          2*KL+KU+1; rows 1 to KL of the array need not be set.
          The j-th column of A is stored in the j-th column of the
          array AB as follows:
          AB(KL+KU+1+i-j,j) = A(i,j) for max(1,j-KU)<=i<=min(N,j+KL)

Without this additional information, a user might declare array ab(2 kl + ku + 1, n) and fill the first kl + ku +1 rows of the array with the diagonals of the input matrix, and the solution returned would be totally wrong.

0 Kudos
1 Reply

Mecej, thanks for very useful comment. we will check and update this description. with regards.

0 Kudos