|
|
1.1 root 1: /***
2: *math.h - definitions and declarations for math library
3: *
4: * Copyright (c) 1985-1991, Microsoft Corporation. All rights reserved.
5: *
6: *Purpose:
7: * This file contains constant definitions and external subroutine
8: * declarations for the math subroutine library.
9: * [ANSI/System V]
10: *
11: ****/
12:
13: #ifndef _INC_MATH
14:
15: #ifdef __cplusplus
16: extern "C" {
17: #endif
18:
19:
20: #if (_MSC_VER <= 600)
21: #define __cdecl _cdecl
22: #endif
23:
24: /* definition of _exception struct - this struct is passed to the matherr
25: * routine when a floating point exception is detected
26: */
27:
28: #ifndef _EXCEPTION_DEFINED
29: struct _exception {
30: int type; /* exception type - see below */
31: char *name; /* name of function where error occured */
32: double arg1; /* first argument to function */
33: double arg2; /* second argument (if any) to function */
34: double retval; /* value to be returned by function */
35: } ;
36:
37: #if !__STDC__
38: /* Non-ANSI name for compatibility */
39: #define exception _exception
40: #endif
41:
42: #define _EXCEPTION_DEFINED
43: #endif
44:
45:
46: /* definition of a _complex struct to be used by those who use cabs and
47: * want type checking on their argument
48: */
49:
50: #ifndef _COMPLEX_DEFINED
51: struct _complex {
52: double x,y; /* real and imaginary parts */
53: } ;
54:
55: #if !__STDC__
56: /* Non-ANSI name for compatibility */
57: #define complex _complex
58: #endif
59:
60: #define _COMPLEX_DEFINED
61: #endif
62:
63:
64: /* Constant definitions for the exception type passed in the _exception struct
65: */
66:
67: #define _DOMAIN 1 /* argument domain error */
68: #define _SING 2 /* argument singularity */
69: #define _OVERFLOW 3 /* overflow range error */
70: #define _UNDERFLOW 4 /* underflow range error */
71: #define _TLOSS 5 /* total loss of precision */
72: #define _PLOSS 6 /* partial loss of precision */
73:
74: #define EDOM 33
75: #define ERANGE 34
76:
77:
78: /* definitions of _HUGE and HUGE_VAL - respectively the XENIX and ANSI names
79: * for a value returned in case of error by a number of the floating point
80: * math routines
81: */
82:
83: extern double _HUGE;
84: #define HUGE_VAL _HUGE
85:
86: /* function prototypes */
87:
88: int abs(int);
89: double acos(double);
90: double asin(double);
91: double atan(double);
92: double atan2(double, double);
93: double atof(const char *);
94: double _cabs(struct _complex);
95: double ceil(double);
96: double cos(double);
97: double cosh(double);
98: int _dieeetomsbin(double *, double *);
99: int _dmsbintoieee(double *, double *);
100: double exp(double);
101: double fabs(double);
102: int _fieeetomsbin(float *, float *);
103: double floor(double);
104: double fmod(double, double);
105: int _fmsbintoieee(float *, float *);
106: double frexp(double, int *);
107: double _hypot(double, double);
108: double _j0(double);
109: double _j1(double);
110: double _jn(int, double);
111: long labs(long);
112: double ldexp(double, int);
113: double log(double);
114: double log10(double);
115: int _matherr(struct _exception *);
116: double modf(double, double *);
117: double pow(double, double);
118: double sin(double);
119: double sinh(double);
120: double sqrt(double);
121: double tan(double);
122: double tanh(double);
123: double _y0(double);
124: double _y1(double);
125: double _yn(int, double);
126:
127:
128: #ifdef i386
129: #pragma function(acos, asin, atan, atan2, cos, cosh, exp, fmod, log, log10, pow, sin, sinh, sqrt, tan, tanh)
130: #endif
131:
132: #if !__STDC__
133: /* Non-ANSI names for compatibility */
134:
135: #define DOMAIN _DOMAIN
136: #define SING _SING
137: #define OVERFLOW _OVERFLOW
138: #define UNDERFLOW _UNDERFLOW
139: #define TLOSS _TLOSS
140: #define PLOSS _PLOSS
141:
142: #define matherr _matherr
143:
144: extern double HUGE;
145:
146: #define cabs _cabs
147: #define dieeetomsbin _dieeetomsbin
148: #define dmsbintoieee _dmsbintoieee
149: #define fieeetomsbin _fieeetomsbin
150: #define fmsbintoieee _fmsbintoieee
151: #define hypot _hypot
152: #define j0 _j0
153: #define j1 _j1
154: #define jn _jn
155: #define matherr _matherr
156: #define y0 _y0
157: #define y1 _y1
158: #define yn _yn
159:
160: #define cabsl _cabsl
161: #define hypotl _hypotl
162: #endif /* __STDC__ */
163:
164: #ifdef __cplusplus
165: }
166: #endif
167:
168: #define _INC_MATH
169: #endif /* _INC_MATH */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.