PageRenderTime 32ms CodeModel.GetById 23ms app.highlight 6ms RepoModel.GetById 0ms app.codeStats 0ms

/haveged-1.4/nist/mconf.h

#
C Header | 169 lines | 28 code | 21 blank | 120 comment | 0 complexity | acc191e07612a8da30e35cccf02203d1 MD5 | raw file
Possible License(s): GPL-3.0
  1/*                                                      mconf.h
  2 *
  3 *     Common include file for math routines
  4 *
  5 *
  6 *
  7 * SYNOPSIS:
  8 *
  9 * #include "mconf.h"
 10 *
 11 *
 12 *
 13 * DESCRIPTION:
 14 *
 15 * This file contains definitions for error codes that are
 16 * passed to the common error handling routine mtherr()
 17 * (which see).
 18 *
 19 * The file also includes a conditional assembly definition
 20 * for the type of computer arithmetic (IEEE, DEC, Motorola
 21 * IEEE, or UNKnown).
 22 *
 23 * For Digital Equipment PDP-11 and VAX computers, certain
 24 * IBM systems, and others that use numbers with a 56-bit
 25 * significand, the symbol DEC should be defined.  In this
 26 * mode, most floating point constants are given as arrays
 27 * of octal integers to eliminate decimal to binary conversion
 28 * errors that might be introduced by the compiler.
 29 *
 30 * For little-endian computers, such as IBM PC, that follow the
 31 * IEEE Standard for Binary Floating Point Arithmetic (ANSI/IEEE
 32 * Std 754-1985), the symbol IBMPC should be defined.  These
 33 * numbers have 53-bit significands.  In this mode, constants
 34 * are provided as arrays of hexadecimal 16 bit integers.
 35 *
 36 * Big-endian IEEE format is denoted MIEEE.  On some RISC
 37 * systems such as Sun SPARC, double precision constants
 38 * must be stored on 8-byte address boundaries.  Since integer
 39 * arrays may be aligned differently, the MIEEE configuration
 40 * may fail on such machines.
 41 *
 42 * To accommodate other types of computer arithmetic, all
 43 * constants are also provided in a normal decimal radix
 44 * which one can hope are correctly converted to a suitable
 45 * format by the available C language compiler.  To invoke
 46 * this mode, define the symbol UNK.
 47 *
 48 * An important difference among these modes is a predefined
 49 * set of machine arithmetic constants for each.  The numbers
 50 * MACHEP (the machine roundoff error), MAXNUM (largest number
 51 * represented), and several other parameters are preset by
 52 * the configuration symbol.  Check the file const.c to
 53 * ensure that these values are correct for your computer.
 54 *
 55 * Configurations NANS, INFINITIES, MINUSZERO, and DENORMAL
 56 * may fail on many systems.  Verify that they are supposed
 57 * to work on your computer.
 58 */
 59
 60/*
 61Cephes Math Library Release 2.3:  June, 1995
 62Copyright 1984, 1987, 1989, 1995 by Stephen L. Moshier
 63*/
 64
 65
 66/* Constant definitions for math error conditions
 67 */
 68#ifndef DOMAIN
 69#define DOMAIN          1       /* argument domain error */
 70#define SING            2       /* argument singularity */
 71#define OVERFLOW        3       /* overflow range error */
 72#define UNDERFLOW       4       /* underflow range error */
 73#define TLOSS           5       /* total loss of precision */
 74#define PLOSS           6       /* partial loss of precision */
 75
 76#define EDOM            33
 77#define ERANGE          34
 78#endif
 79
 80/* Complex numeral.  */
 81typedef struct
 82       {
 83       double r;
 84       double i;
 85       } cmplx;
 86
 87/* Long double complex numeral.  */
 88/*
 89typedef struct
 90       {
 91       long double r;
 92       long double i;
 93       } cmplxl;
 94*/
 95
 96/* Type of computer arithmetic */
 97
 98/* PDP-11, Pro350, VAX:
 99 */
100/* #define DEC 1 */
101
102/* Intel IEEE, low order words come first:
103 */
104/*#define IBMPC 1 */
105
106/* Motorola IEEE, high order words come first
107 * (Sun 680x0 workstation):
108 */
109/* #define MIEEE 1 */
110
111/* UNKnown arithmetic, invokes coefficients given in
112 * normal decimal format.  Beware of range boundary
113 * problems (MACHEP, MAXLOG, etc. in const.c) and
114 * roundoff problems in pow.c:
115 * (Sun SPARCstation)
116 */
117#define UNK 1
118
119/* If you define UNK, then be sure to set BIGENDIAN properly. */
120#define BIGENDIAN 0
121
122/* Define this `volatile' if your compiler thinks
123 * that floating point arithmetic obeys the associative
124 * and distributive laws.  It will defeat some optimizations
125 * (but probably not enough of them).
126 *
127 * #define VOLATILE volatile
128 */
129#define VOLATILE
130
131/* For 12-byte long doubles on an i386, pad a 16-bit short 0
132 * to the end of real constants initialized by integer arrays.
133 *
134 * #define XPD 0,
135 *
136 * Otherwise, the type is 10 bytes long and XPD should be
137 * defined blank (e.g., Microsoft C).
138 *
139 * #define XPD
140 */
141#define XPD 0,
142
143/* Define to support tiny denormal numbers, else undefine. */
144#define DENORMAL 1
145
146/* Define to ask for infinity support, else undefine. */
147/* #define INFINITIES 1 */
148
149/* Define to ask for support of numbers that are Not-a-Number,
150   else undefine.  This may automatically define INFINITIES in some files. */
151/* #define NANS 1 */
152
153/* Define to distinguish between -0.0 and +0.0.  */
154/* #define MINUSZERO 1 */
155
156/* Define 1 for ANSI C atan2() function
157   See atan.c and clog.c. */
158#define ANSIC 1
159
160/* Get ANSI function prototypes, if you want them. */
161#ifdef __STDC__
162#define ANSIPROT
163#include "cephes-protos.h"
164#else
165int mtherr();
166#endif
167
168/* Variable for error reporting.  See mtherr.c.  */
169extern int merror;