/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;