Intel® Fortran Compiler 16.0 User and Reference Guide
Portability Subroutine: Clears the exception flags in the floating-point processor status word.
USE IFPORT
CALL CLEARSTATUSFPQQ()
The floating-point status word indicates which floating-point exception conditions have occurred. Intel® Fortran initially clears (sets to 0) all floating-point status flags, but as exceptions occur, the status flags accumulate until the program clears the flags again. CLEARSTATUSFPQQ will clear the flags.
CLEARSTATUSFPQQ is appropriate for use in applications that poll the floating-point status register as the method for detecting a floating-point exception has occurred.
For a full description of the floating-point status word, exceptions, and error handling, see Floating-Point Operations: Floating-Point Environment.
! Program to demonstrate CLEARSTATUSFPQQ. ! This program uses polling to detect that a ! floating-point exception has occurred. ! So, build this console application with the default ! floating-point exception behavior, fpe3. ! You need to specify compiler option /debug or /Od (Windows) ! or -O0 (Linux) to get the correct results. ! ! PROGRAM CLEARFP USE IFPORT REAL*4 A,B,C INTEGER*2 STS A = 2.0E0 B = 0.0E0 ! Poll and display initial floating point status CALL GETSTATUSFPQQ(STS) WRITE(*,'(1X,A,Z4.4)') 'Initial fp status = ',STS ! Cause a divide-by-zero exception ! Poll and display the new floating-point status C = A/B CALL GETSTATUSFPQQ(STS) WRITE(*,'(1X,A,Z4.4)') 'After div-by-zero fp status = ',STS ! If a divide by zero error occurred, clear the floating-point ! status register so future exceptions can be detected. IF ((STS .AND. FPSW$ZERODIVIDE) > 0) THEN CALL CLEARSTATUSFPQQ() CALL GETSTATUSFPQQ(STS) WRITE(*,'(1X,A,Z4.4)') 'After CLEARSTATUSFPQQ fp status = ',STS ENDIF END
This program is available in the online samples.