Reference Number : dpd200178477
Version : Intel® Fortran Compiler Versions 12, 13, 14, 15 and 16.
Operating System : Windows*, Linux*, OS X*, 32 bit versions only.
Problem Description : For certain values of the argument, the result of a call to QERFC, the REAL(16) version of the complementary error function ERFC, can be influenced by a floating-point exception that occurred during a preceding call, resulting in the return of an inaccurate or incorrect result. This behavior occurs only when floating-point exceptions have been unmasked, for example by compiling the main routine with /fpe:0 (Windows*) or -fpe0 (Linux* or OS X*), or by a call to IEEE_SET_HALTING_MODE. The issue does not occur on 64 bit operating systems. It does not occur for single or double precision versions of ERFC.
Status : There are no plans to change this behavior.
Workaround : Either:
Ensure that floating-point exceptions are masked when calling a REAL(16) function such as QERFC or the generic equivalent ERFC with a REAL(16) argument. Floating-point exceptions are masked by default in the Intel compiler at all optimization levels.
Before calling a REAL(16) function such as QERFC or the generic equivalent ERFC with a REAL(16) argument, clear the floating-point status word to ensure that any exception flag caused by an earlier floating-point exception does not remain set. This can be done by a call to the compiler run-time library routine CLEARSTATUSFPQQ() described in the Intel Fortran Compiler User and Reference Guide.