Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fpgetround(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

isnan(S)


 fpgetround(S)                  6 January 1993                  fpgetround(S)


 Name

    fpgetround, fpsetround, fpgetmask, fpsetmask, fpgetsticky, fpsetsticky -
    IEEE floating point environment control

 Syntax


    cc  . . .  -lc


    #include  <ieeefp.h>

    typedef enum {

            FP_RN=0,        /* round to nearest */
            FP_RM=1,        /* round toward minus infinity */
            FP_RP=2,        /* round toward plus infinity */
            FP_RZ=3         /* round to zero (truncate) */

    } fp_rnd;

    fp_rnd fpgetround()

    fp_rnd fpsetround(rnd_dir)
    fp_rnd rnd_dir;

    #define  fp_except    int
    #define  FP_X_INV     0x01      /* invalid operation exception*/
    #define  FP_X_OFL     0x08      /* overflow exception*/
    #define  FP_X_UFL     0x10      /* underflow exception*/
    #define  FP_X_DZ      0x04      /* divide-by-zero exception*/
    #define  FP_X_IMP     0x20      /* imprecise (loss of precision)*/
    #define  FP_X_DNML    0x02      /* denormalization exception */

    fp_except fpgetmask()

    fp_except fpsetmask(mask)
    fp_except mask;

    fp_except fpgetsticky()

    fp_except fpsetsticky(sticky)
    fp_except sticky;


 Description

    There are six floating point exceptions: divide-by-zero, overflow, under-
    flow, imprecise (inexact) result, denormalization, and invalid operation.
    When a floating point exception occurs, the corresponding sticky bit is
    set; if the mask bit is enabled, the trap takes place.  These routines
    let the user change the behavior if any of these exceptions occur, as
    well as change the rounding mode for floating point operations.


    fpgetround     returns the current rounding mode.

    fpsetround     sets the rounding mode and returns the previous rounding
                   mode.

    fpgetmask      returns the current exception masks.

    fpsetmask      sets the exception masks and returns the previous setting.

    fpgetsticky    returns the current exception sticky flags.

    fpsetsticky    sets (clears) the exception sticky flags and returns the
                   previous setting.

    The default environment on the Intel 80386 processor family is:


                  Rounding mode set to nearest (FPRN),
                  Divide-by-zero, Floating point overflow, and
                  Invalid  operation traps enabled.


 See also

    isnan(S)

 Warnings

    fpsetsticky modifies all sticky flags. fpsetmask changes all mask bits.

    C requires truncation (round to zero) for floating point to integral
    conversions.  The current rounding mode has no effect on these conver-
    sions.

 Notes

    You must clear the sticky bit to recover from the trap and to proceed.
    If the sticky bit is not cleared before the next floating point instruc-
    tion is executed, a wrong exception type may be signaled.

    When you call fpsetmask make sure that the sticky bit corresponding to
    the enabled exception is cleared.

 Standards conformance

    fpgetround is not part of any currently supported standard; it is an
    extension of AT&T System V provided by the Santa Cruz Operation.


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026