Trapping and counting underflows

By default, floating point underflows do not raise a runtime exception. An initial call to PERMIT_UNDERFLOWS@(0_2) will cause underflows to be trapped.

SUBROUTINE PERMIT_UNDERFLOW@(opt)
INTEGER(2),INTENT(IN)::opt

Set opt=0 to trap underflows. Other values of opt cause underflows to be enabled.

When underflows are permitted, the total number of underflows can be returned by calling UNDERFLOW_COUNT@ but only after calling SET_SOFTWARE_UNDERFLOWS@(1) which adds a significant overhead and should not be used in production mode.

SUBROUTINE UNDERFLOW_COUNT@(count)
INTEGER,INTENT(OUT)::count

SUBROUTINE SET_SOFTWARE_UNDERFLOWS@(opt)
INTEGER,INTENT(IN)::opt

opt = 0 Use hardware to convert underflows to zero.
opt = 1 Use software to handle underflows - enabling underflow counting.
opt = 2 Treat underflows as errors.

The 32 bit routine MASK_UNDERFLOWS@ is not implemented for 64 bits.

Basket
Empty
 
Copyright © 1999-2021 Silverfrost Limited