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