[BACK]Return to ctrl87.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot

Annotation of OpenXM_contrib/gnuplot/ctrl87.h, Revision 1.1.1.1

1.1       maekawa     1: /* $Id: ctrl87.h,v 1.2 1998/03/22 22:31:27 drd Exp $ */
                      2:
                      3: /* GNUPLOT - ctrl87.h */
                      4:
                      5: /*[
                      6:  * Copyright 1986 - 1993, 1998   Thomas Williams, Colin Kelley
                      7:  *
                      8:  * Permission to use, copy, and distribute this software and its
                      9:  * documentation for any purpose with or without fee is hereby granted,
                     10:  * provided that the above copyright notice appear in all copies and
                     11:  * that both that copyright notice and this permission notice appear
                     12:  * in supporting documentation.
                     13:  *
                     14:  * Permission to modify the software is granted, but not the right to
                     15:  * distribute the complete modified source code.  Modifications are to
                     16:  * be distributed as patches to the released version.  Permission to
                     17:  * distribute binaries produced by compiling modified sources is granted,
                     18:  * provided you
                     19:  *   1. distribute the corresponding source modifications from the
                     20:  *    released version in the form of a patch file along with the binaries,
                     21:  *   2. add special version identification to distinguish your version
                     22:  *    in addition to the base release version number,
                     23:  *   3. provide your name and address as the primary contact for the
                     24:  *    support of your modified version, and
                     25:  *   4. retain our contact information in regard to use of the base
                     26:  *    software.
                     27:  * Permission to distribute the released version of the source code along
                     28:  * with corresponding source modifications in the form of a patch file is
                     29:  * granted with same provisions 2 through 4 for binary distributions.
                     30:  *
                     31:  * This software is provided "as is" without express or implied warranty
                     32:  * to the extent permitted by applicable law.
                     33: ]*/
                     34:
                     35:
                     36: #ifndef __CONTROL87_H__
                     37:
                     38:
                     39: #define __CONTROL87_H__
                     40:
                     41:
                     42: #ifdef __CONTROL87_C__
                     43: #define EXTERN
                     44: #else
                     45: #define EXTERN extern
                     46: #endif
                     47:
                     48:
                     49: /* 8087/80287 Status Word format   */
                     50:
                     51: #define SW_INVALID      0x0001  /* Invalid operation            */
                     52: #define SW_DENORMAL     0x0002  /* Denormalized operand         */
                     53: #define SW_ZERODIVIDE   0x0004  /* Zero divide                  */
                     54: #define SW_OVERFLOW     0x0008  /* Overflow                     */
                     55: #define SW_UNDERFLOW    0x0010  /* Underflow                    */
                     56: #define SW_INEXACT      0x0020  /* Precision (Inexact result)   */
                     57:
                     58: /* 8087/80287 Control Word format */
                     59:
                     60: #define MCW_EM              0x003f  /* interrupt Exception Masks*/
                     61: #define     EM_INVALID      0x0001  /*   invalid                */
                     62: #define     EM_DENORMAL     0x0002  /*   denormal               */
                     63: #define     EM_ZERODIVIDE   0x0004  /*   zero divide            */
                     64: #define     EM_OVERFLOW     0x0008  /*   overflow               */
                     65: #define     EM_UNDERFLOW    0x0010  /*   underflow              */
                     66: #define     EM_INEXACT      0x0020  /*   inexact (precision)    */
                     67:
                     68: #define MCW_IC              0x1000  /* Infinity Control */
                     69: #define     IC_AFFINE       0x1000  /*   affine         */
                     70: #define     IC_PROJECTIVE   0x0000  /*   projective     */
                     71:
                     72: #define MCW_RC          0x0c00  /* Rounding Control     */
                     73: #define     RC_CHOP     0x0c00  /*   chop               */
                     74: #define     RC_UP       0x0800  /*   up                 */
                     75: #define     RC_DOWN     0x0400  /*   down               */
                     76: #define     RC_NEAR     0x0000  /*   near               */
                     77:
                     78: #define MCW_PC          0x0300  /* Precision Control    */
                     79: #define     PC_24       0x0000  /*    24 bits           */
                     80: #define     PC_53       0x0200  /*    53 bits           */
                     81: #define     PC_64       0x0300  /*    64 bits           */
                     82:
                     83: /**************************************************************************/
                     84: /*************************   Type declarations   **************************/
                     85: /**************************************************************************/
                     86:
                     87: /**************************************************************************/
                     88: /************************   Function declarations   ***********************/
                     89: /**************************************************************************/
                     90:
                     91: /*
                     92:    _control87 changes floating-point control word.
                     93:
                     94:    Declaration:
                     95:    ------------
                     96:      unsigned short _control87(unsigned short newcw, unsigned short mask);
                     97:
                     98:    Remarks:
                     99:    --------
                    100:   _control87 retrieves or changes the floating-point control word.
                    101:
                    102:   The floating-point control word is an unsigned short that specifies the
                    103:   following modes in the 80x87 FPU:
                    104:    o  allowed exceptions
                    105:    o  infinity mode
                    106:    o  rounding mode
                    107:    o  precision mode
                    108:
                    109:   Changing these modes allows you to mask or unmask floating-point exceptions.
                    110:
                    111:   _control87 matches the bits in mask to the bits in newcw.
                    112:
                    113:   If any mask bit = 1, the corresponding bit in newcw contains the new value
                    114:   for the same bit in the floating-point control word.
                    115:
                    116:   If mask = 0000, _control87 returns the floating-point control word without
                    117:   altering it.
                    118:
                    119:    Examples:
                    120:    ---------
                    121:   Switching to projective infinity mode:
                    122:      _control87(IC_PROJECTIVE, MCW_IC);
                    123:
                    124:   Disabling all exceptions:
                    125:      _control87(MCW_EM, MCW_EM);
                    126:
                    127:    Return Value:
                    128:    -------------
                    129:   The bits in the value returned reflect the new floating-point control word.
                    130: */
                    131: EXTERN unsigned short _control87(unsigned short newcw, unsigned short mask);
                    132:
                    133:
                    134: /**************************************************************************/
                    135: /**************************   Global variables   **************************/
                    136: /**************************************************************************/
                    137:
                    138:
                    139:
                    140: #ifdef __CONTROL87_C__
                    141: #else
                    142: #endif
                    143:
                    144:
                    145: #undef EXTERN
                    146:
                    147:
                    148: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>