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

syevr help

I want to use syevr to do matrix diagonalization. There's an option (abstol), however, puzzled me somehow.
How could I set this variable? I read the MKL manual, but I'm still confused.
Thank you in advance!
0 Kudos
1 Reply
Black Belt
You did not state which programming language was used.

If you are using the Fortran-9x interface, here is the abbreviated call from the example syevr.f90 :
[fortran]CALL SYEVR( A, W, IL=1, IU=2, M=M )
You could add, for example, "AbsTol=1e-4" as an optional parameter to this call, if you do not wish to use the default value.

If you are calling the routine from either C or Fortran 77, you have to provide all arguments listed in the MKL manual. However, you can pass a trigger value of -1.0 for abstol; if you do so, the library routine will choose a default value.

Using Lapack_E makes it easier to call Lapack routines from C. Lapack_E libraries are included with Intel C in Version 12. With Version 11, you would need to download the sources from Netlib and build the interface library yourself.

There are a pair of complete examples, "lapacke_ssyevr_col.c" and "lapacke_ssyevr_row.c", in the .../ComposerXE-2011/mkl/examples/lapacke/source directory. Here is the call, from the _row example:

[cpp]info = LAPACKE_ssyevr( LAPACK_COL_MAJOR, 'V', 'I', 'U', n, a, lda,
vl, vu, il, iu, abstol, &m, w, z, ldz, isuppz );