MSC: unsigned _control87( unsigned new, unsigned mask )
- prototype in float.h
- used to change floating point handling and exception masking
- new = contains corresponding bit values for any bit set in "mask"
to be moved into the coprocessor control word
- mask = zero; gets floating-point coprocessor control word
= non-zero; if any bit is set, the corresponding bit in
"new" is moved into the coprocessor control word
- returns floating-point coprocessor control word
- default control word is the logical OR of: IC_AFFINE, RC_NEAR,
PC_64, EM_DENORMAL, EM_UNDERFLOW, EM_INEXACT
Control Word Mask and Bits
MCW_EM interrupt exception control
MCW_IC infinity control
MCW_RC rounding control
MCW_PC precision control
Exception Masks
EM_INVALID invalid
EM_DENORMAL denormal
EM_ZERODIVIDE zero divide
EM_OVERFLOW overflow
EM_UNDERFLOW underflow
EM_INEXACT inexact (precision)
Infinity Control
IC_AFFINE affine
IC_PROJECTIVE projective
Rounding Control
RC_CHOP truncate
RC_UP round up
RC_DOWN round down
RC_NEAR near
Precision Control
PC_24 24 bits precision
PC_53 53 bits precision
PC_64 64 bits precision
User Status Word Bits
SW_INVALID invalid
SW_DENORMAL denormal
SW_ZERODIVIDE zero divide
SW_OVERFLOW overflow
SW_UNDERFLOW underflow
SW_INEXACT inexact precision
Invalid Subconditions (if SW_INVALID)
SW_UNEMULATED unemulated instruction
SW_SQRTNEG square root of a neg number
SW_STACKOVERFLOW FP stack overflow
SW_STACKUNDERFLOW FP stack underflow
Floating Point Errors
FPE_INVALID
FPE_DENORMAL
FPE_ZERODIVIDE
FPE_OVERFLOW
FPE_UNDERFLOW
FPE_INEXACT
FPE_UNEMULATED
FPE_SQRTNEG
FPE_STACKOVERFLOW
FPE_STACKUNDERFLOW
FPE_EXPLICITGEN
- see _clear87() _status87()