- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 QB as 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 QTBAQB = B. Could you look into the algorithm (and my program if necessary) to find out the issue?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for pointing to the code. It would be great if the MKL code or documentation could be appropriately updated as well.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page