DISABLE_IEEE_INTERRUPT(3I) Last changed: 1-6-98
DISABLE_IEEE_INTERRUPT - Disables floating-point interrupt
DISABLE_IEEE_INTERRUPT ([INTERRUPT=]interrupt)
UNICOS/mk and IRIX systems
CRAY T90 systems that support IEEE floating-point arithmetic
CF90 and MIPSpro 7 Fortran 90 compiler extension to Fortran 90
IEEE Standard for Binary Floating-point Arithmetic
The DISABLE_IEEE_INTERRUPT intrinsic subroutine disables the specified
floating-point interrupt. It accepts the following argument:
interrupt Must be of an integer type that occupies a full word. If
interrupt is an array, it must be 1-dimensional. The
single value in the scalar argument case, or each element
in the array argument case, must be set to one of the
values represented by one of the following named constants:
* IEEE_NTPT_CRI_INVALID_OPND (accepted only on CRAY T90
systems that support IEEE floating-point arithmetic)
* IEEE_NTPT_INEXACT_RESULT
* IEEE_NTPT_UNDERFLOW
* IEEE_NTPT_OVERFLOW
* IEEE_NTPT_DIV_BY_ZERO
* IEEE_NTPT_INVALID_OPR
* IEEE_NTPT_ALL
The name of this intrinsic cannot be passed as an argument.
The IEEE intrinsic procedures use the named constants contained in a
system module, so you must include one of the following statements in
your program:
* On UNICOS and UNICOS/mk systems: USE CRI_IEEE_DEFINITIONS
* On UNICOS, UNICOS/mk, and IRIX systems: USE FTN_IEEE_DEFINITIONS
The CRI_IEEE_DEFINITIONS module is obsolescent. It will be removed
for the CF90 4.0 release.
On UNICOS/mk systems, you cannot use DISABLE_IEEE_INTERRUPT to set the
following bits:
* Bit 49, invalid operation disable
* Bit 50, division by zero disable
* Bit 51, overflow disable
The hardware ignores attempts to set these bits.
Upon return, the interrupt, or each element of interrupt, is disabled.
If interrupt, or any element of interrupt, has the value
IEEE_NTPT_ALL, all interrupts are disabled.
The following program can be run on a UNICOS, UNICOS/mk, or IRIX
system:
SUBROUTINE calculate
USE FTN_IEEE_DEFINITIONS
INTEGER interrupt_status
! Save the current floating point interrupt status.
CALL GET_IEEE_INTERRUPTS(interrupt_status)
! Enable interrupt on divide by zero if it hasn't already been
! enabled.
IF (.NOT. TEST_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO)) &
CALL ENABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO)
! Perform a floating point divide.
! If z = 0, the program error terminates.
x = y / z
! Disable interrupt on divide by zero.
CALL DISABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO))
! If z = 0, q = Infinity (quietly).
q = y / z
! Restore the floating point interrupt status to what it was
! when this procedure was called.
CALL SET_IEEE_INTERRUPTS(interrupt_status)
END SUBROUTINE
Intrinsic Procedures Reference Manual, publication SR-2138, for the
printed version of this man page.
DISABLE_IEEE_INTERRUPT(3I) Last changed: 1-6-98
DISABLE_IEEE_INTERRUPT - Disables floating-point interrupt
DISABLE_IEEE_INTERRUPT ([INTERRUPT=]interrupt)
UNICOS/mk and IRIX systems
CRAY T90 systems that support IEEE floating-point arithmetic
CF90 and MIPSpro 7 Fortran 90 compiler extension to Fortran 90
IEEE Standard for Binary Floating-point Arithmetic
The DISABLE_IEEE_INTERRUPT intrinsic subroutine disables the specified
floating-point interrupt. It accepts the following argument:
interrupt Must be of an integer type that occupies a full word. If
interrupt is an array, it must be 1-dimensional. The
single value in the scalar argument case, or each element
in the array argument case, must be set to one of the
values represented by one of the following named constants:
* IEEE_NTPT_CRI_INVALID_OPND (accepted only on CRAY T90
systems that support IEEE floating-point arithmetic)
* IEEE_NTPT_INEXACT_RESULT
* IEEE_NTPT_UNDERFLOW
* IEEE_NTPT_OVERFLOW
* IEEE_NTPT_DIV_BY_ZERO
* IEEE_NTPT_INVALID_OPR
* IEEE_NTPT_ALL
The name of this intrinsic cannot be passed as an argument.
The IEEE intrinsic procedures use the named constants contained in a
system module, so you must include one of the following statements in
your program:
* On UNICOS and UNICOS/mk systems: USE CRI_IEEE_DEFINITIONS
* On UNICOS, UNICOS/mk, and IRIX systems: USE FTN_IEEE_DEFINITIONS
The CRI_IEEE_DEFINITIONS module is obsolescent. It will be removed
for the CF90 4.0 release.
On UNICOS/mk systems, you cannot use DISABLE_IEEE_INTERRUPT to set the
following bits:
* Bit 49, invalid operation disable
* Bit 50, division by zero disable
* Bit 51, overflow disable
The hardware ignores attempts to set these bits.
Upon return, the interrupt, or each element of interrupt, is disabled.
If interrupt, or any element of interrupt, has the value
IEEE_NTPT_ALL, all interrupts are disabled.
The following program can be run on a UNICOS, UNICOS/mk, or IRIX
system:
SUBROUTINE calculate
USE FTN_IEEE_DEFINITIONS
INTEGER interrupt_status
! Save the current floating point interrupt status.
CALL GET_IEEE_INTERRUPTS(interrupt_status)
! Enable interrupt on divide by zero if it hasn't already been
! enabled.
IF (.NOT. TEST_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO)) &
CALL ENABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO)
! Perform a floating point divide.
! If z = 0, the program error terminates.
x = y / z
! Disable interrupt on divide by zero.
CALL DISABLE_IEEE_INTERRUPT(IEEE_NTPT_DIV_BY_ZERO))
! If z = 0, q = Infinity (quietly).
q = y / z
! Restore the floating point interrupt status to what it was
! when this procedure was called.
CALL SET_IEEE_INTERRUPTS(interrupt_status)
END SUBROUTINE
Intrinsic Procedures Reference Manual, publication SR-2138, for the
printed version of this man page.
[ Back ]
|