ZHEEVD использует метод «разделяй и властвуй» для вычисления собственных значений.
Если ваши матрицы имеют размер 40 x 40, а собственные значения находятся в диапазоне [1e-2, 1e1], тогда
у вас не должно быть абсолютно никаких числовых проблем. Вы можете использовать любую рутину.