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

?syrdb arguments issue

Pavan_G_
Beginner
333 Views

There seems to be an inconsistency in the documentation of ?syrdb(https://software.intel.com/en-us/node/469030)

I've attached my program which you are free to change and is written in Fortran 90. It generates a random symmetric matrix A and tries to reduce it to the banded matrix B, of specified bandwidth. Make sure to compile it with the -mkl flag

On setting the flag jobz to 'U', I am expected to

  • A is supposed to be overwritten by the banded matrix B. It doesn't seem to be the case as I still get a full matrix.
  • The documentation says it will be overwritten by Qas well, which doesn't make sense as there is one matrix already.
  • Z is written by Q - which is correct as QTAQ gives me a tridiagonal matrix.

I would like access to QB such that QTBAQ= B. Could you look into the algorithm (and my program if necessary) to find out the issue?

 

0 Kudos
4 Replies
mecej4
Honored Contributor III
333 Views

Many Lapack routines use rather complex but compact representations of matrices. If that is not kept in mind, the documentation can be confusing. Because of the various combinations of options such as UPLO and JOBZ, there is a single subroutine with different personalities whose descriptions gets interwoven and, again, this can be confusing.

In the case of ?syrdb, the given symmetric matrix A is first reduced to a band matrix B and then to a tridiagonal matrix T. I think that you confuse B with T -- the former is an intermediate result that you probably have no use for, and the latter is not returned as a two-dimensional array, as one may reasonably expect, but as a pair of one-dimensional arrays, D(:) and E(:).

Along the same lines, a phrase such as "A is reduced to T" describes what the algorithm does, and should not be understood to say "A is replaced by T" at exit.

0 Kudos
Pavan_G_
Beginner
333 Views

I think that you confuse B with T -- the former is an intermediate result that you probably have no use for

No. That is exactly what I am looking for. I need an algorithm which uses a set of orthogonal transformations to reduce a full matrix to a banded matrix of specific bandwidth.

Is there a way in which I can recover B from the `dsyrdb` routine? There should be if the routine behaves in the way it is in the documentation

If jobz = 'N' or 'U', then overwritten by the banded matrix B and details of the orthogonal matrix QB to reduce A to B as specified by uplo.

Neither do I see B nor do I see QB. I don't understand what the documentation means by 'the banded matrix and details' overwritten to the same matrix.

0 Kudos
mecej4
Honored Contributor III
333 Views

Sorry, I misunderstood your question. Ch. Bishoff's code is available at http://netlib.org/toms/807.gz, and I think that the argument list given there is slightly different from the one used in MKL.

0 Kudos
Pavan_G_
Beginner
333 Views

Thanks for pointing to the code. It would be great if the MKL code or documentation could be appropriately updated as well.

0 Kudos
Reply