1 | /*
|
---|
2 | Redefine secondary simulation function names to become primary names
|
---|
3 | for systems without a Numeric Data Processor.
|
---|
4 | */
|
---|
5 |
|
---|
6 | #ifdef NONDP
|
---|
7 | #define _acos acos
|
---|
8 | #define _asin asin
|
---|
9 | #define _atan atan
|
---|
10 | #define _cos cos
|
---|
11 | #define _cosh cosh
|
---|
12 | #define _cot cot
|
---|
13 | #define _exp exp
|
---|
14 | #define _fabs fabs
|
---|
15 | #define _ldexp ldexp
|
---|
16 | #define _log log
|
---|
17 | #define _log10 log10
|
---|
18 | #define _modf modf
|
---|
19 | #define _pow pow
|
---|
20 | #define _pow2 pow2
|
---|
21 | #define _sin sin
|
---|
22 | #define _sinh sinh
|
---|
23 | #define _sqrt sqrt
|
---|
24 | #define _tan tan
|
---|
25 | #define _tanh tanh
|
---|
26 | #endif
|
---|
27 |
|
---|
28 | /* Structure to hold information about math exceptions */
|
---|
29 |
|
---|
30 | struct exception
|
---|
31 | {
|
---|
32 | int type; /* error type */
|
---|
33 | char *name; /* math function name */
|
---|
34 | double arg1, arg2; /* function arguments */
|
---|
35 | double retval; /* proposed return value */
|
---|
36 | };
|
---|
37 |
|
---|
38 | /* Exception type codes, found in exception.type */
|
---|
39 |
|
---|
40 | #define DOMAIN 1 /* domain error */
|
---|
41 | #define SING 2 /* singularity */
|
---|
42 | #define OVERFLOW 3 /* overflow */
|
---|
43 | #define UNDERFLOW 4 /* underflow */
|
---|
44 | #define TLOSS 5 /* total loss of significance */
|
---|
45 | #define PLOSS 6 /* partial loss of significance */
|
---|
46 |
|
---|
47 | /* Error codes generated by basic arithmetic operations (+ - * /) */
|
---|
48 |
|
---|
49 | #define FPEUND 1 /* underflow */
|
---|
50 | #define FPEOVF 2 /* overflow */
|
---|
51 | #define FPEZDV 3 /* zero divisor */
|
---|
52 | #define FPENAN 4 /* not a number (invalid operation) */
|
---|
53 |
|
---|
54 | /* Constants */
|
---|
55 |
|
---|
56 | #define PI 3.14159265358979323846
|
---|
57 | #define PID2 1.57079632679489661923 /* PI divided by 2 */
|
---|
58 | #define PID4 0.78539816339744830962 /* PI divided by 4 */
|
---|
59 | #define I_PI 0.31830988618379067154 /* Inverse of PI */
|
---|
60 | #define I_PID2 0.63661977236758134308 /* Inverse of PID2 */
|
---|
61 |
|
---|
62 | #define HUGE 1.797693e308 /* huge value */
|
---|
63 | #define TINY 2.2e-308 /* tiny value */
|
---|
64 | #define LOGHUGE 709.778 /* natural log of huge value */
|
---|
65 | #define LOGTINY -708.396 /* natural log of tiny value */
|
---|
66 |
|
---|
67 | /* External declarations */
|
---|
68 |
|
---|
69 | extern int _fperr; /* floating point arithmetic error */
|
---|
70 | extern int errno; /* UNIX error code */
|
---|
71 |
|
---|
72 | extern char *ecvt();
|
---|
73 | extern short *seed48();
|
---|
74 | extern int atoi(),matherr();
|
---|
75 | extern long atol(),strtol(),lrand48(),nrand48(),mrand48(),jrand48();
|
---|
76 | extern double atof(),exp(),log(),log10(),pow(),sqrt();
|
---|
77 | extern double floor(),ceil(),fmod(),fabs(),frexp(),ldexp(),modf();
|
---|
78 | extern double sinh(),cosh(),tanh(),sin(),cos(),tan(),cot(),asin(),acos();
|
---|
79 | extern double atan(),atan2(),except();
|
---|
80 | extern double drand48(),erand48();
|
---|