Page 1 of 1

magma_dsyevd wrong optimal IWORK array size for jobz='N'?

PostPosted: Mon Jul 23, 2012 6:52 am
by jgpallero
Hello:

Using the function magma_dsyevd with jobz='N' I obtain the error:

** On entry to magma_dsytrd parameter number 9 had an illegal value

The optimal lwork and liwork computed parameters are 2032 and 1, so I think that liwork is erroneous. I think yhis is a bug

Attached I send a test program and a matrix

Cheers

Re: magma_dsyevd wrong optimal IWORK array size for jobz='N'

PostPosted: Tue Jul 24, 2012 2:46 pm
by mgates3
The lwork size is incorrect. When queried, it appears to be returning a value of 2*N + nb, but I think the value needs to be 2*N + N*nb. The blocking size nb can be found with magma_get_dsytrd_nb( N ).

I will see about updating the documentation and code to have the correct workspace sizes.

dsytrd does not use iwork, so the liwork is not a factor there. From the documentation for syevd, liwork is suppose to be 1 for jobz=N. (Most probably, iwork is unused in that case, but I didn't verify that.)

Code: Select all
    LIWORK  (input) INTEGER   
            The dimension of the array IWORK.   
            If N <= 1,                LIWORK must be at least 1.   
            If JOBZ  = 'N' and N > 1, LIWORK must be at least 1.   
            If JOBZ  = 'V' and N > 1, LIWORK must be at least 3 + 5*N.   


-mark