- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- 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 Q
_{B }as well, which doesn't make sense as there is one matrix already. - Z is written by Q - which is correct as Q
^{T}AQ gives me a tridiagonal matrix.

I would like access to Q_{B} such that Q^{T}_{B}AQ_{B }= 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
- Email to a Friend
- 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
- Email to a Friend
- 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 matrixBand details of the orthogonal matrixQBto reduceAtoBas specified by uplo.

Neither do I see B nor do I see Q_{B}. 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
- Email to a Friend
- 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
- Email to a Friend
- 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