Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Documentation of Lapack ?GBSV()

mecej4
Black Belt
147 Views

The documentation of Lapack routine ?GBSV omits one important detail. The page for the routine states correctly at https://software.intel.com/en-us/node/468882#02FA8CF5-DE40-4016-BCD2-8ACFF4236AAD that argument ab should be of dimension (Ldab X n), where Ldab >= 2 kl + ku +1. The page also refers to https://software.intel.com/en-us/node/468672 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
Gennady_F_Intel
Moderator
147 Views

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

Reply