Following suggesion of user Annalee (Intel)
in her reply: "The NAN may occur within the zheevr calculations but not cause the final result to NAN. Alternatively, flush to zero may result in a NAN that does not otherwise occur. If your question is specific to MKL, I would suggest posting on the MKL forum as well."
I would like ask about details of the feature above. Is it possible to skip catching NaN in zheevr exceptions with -fpe0 using fotran compiler and track NaNs only in the remaining code? So far I am not able to track a real source of NaN in my program due to artificial NaNs detected inside a zheevr and happening before true source of NaN is located. (input and output contains no NaN, also stat variable is set to 0 after evaluation of zheevr. Ouput was checked, when I recompiled my program without -fpe0 flag).
I have recompiled file containing the call to zheevr withouf -fpe0 flag and linked it this way to my program, but this did not really help: It seem that NaN trapping is unable to locate a particular line which throws NaN, but it is able to locate the envelopping routine that contains zheevr. I have reducer the "resolution" of tracking, but the triggering factor is still zheevr.
- Disable exception handling in your whole program, this will allow analisys of results
- Try the functionality from NETLIB LAPACK where it is provided in source form (Fortran). It should behave same way as MKL does and you will be able to dig into exact operations where exception happens. zheevr + dependencies could be downloaded here.