For the scalapack, when I set the lwork = -1, I can get a result from work.
For example, the work == 900000000.
So the lwork = 900000000.
How about the length of work? is it lwork * sizeof(double), or just lwork?
should I use work = new double or work = (double *)malloc(900000000)?
MKL routine arguments with the name 'work' and 'iwork' have corresponding arguments that are equal to the size (i.e., the number of elements in the array) of the 'work' and 'iwork' arrays.
It is best not to think in terms of bytes in this context, since the number of bytes = lwork X byte size of one element of 'work', and 'work' may be float, double, complex or double complex.