home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntinc25.zoo / math.h < prev    next >
C/C++ Source or Header  |  1992-09-05  |  6KB  |  200 lines

  1. #ifndef _MATH_H
  2. #define _MATH_H
  3.  
  4. /************************************************************************
  5.  *                                    *
  6.  *                N O T I C E                *
  7.  *                                    *
  8.  *            Copyright Abandoned, 1987, Fred Fish        *
  9.  *                                    *
  10.  *    This previously copyrighted work has been placed into the    *
  11.  *    public domain by the author (Fred Fish) and may be freely used    *
  12.  *    for any purpose, private or commercial.  I would appreciate    *
  13.  *    it, as a courtesy, if this notice is left in all copies and    *
  14.  *    derivative works.  Thank you, and enjoy...            *
  15.  *                                    *
  16.  *    The author makes no warranty of any kind with respect to this    *
  17.  *    product and explicitly disclaims any implied warranties of    *
  18.  *    merchantability or fitness for any particular purpose.        *
  19.  *                                    *
  20.  ************************************************************************
  21.  */
  22.  
  23.  
  24. /*
  25.  *  FILE
  26.  *
  27.  *    math.h    include file for users of portable math library
  28.  *
  29.  *  SYNOPSIS
  30.  *
  31.  *    #include <math.h>
  32.  *
  33.  *  DESCRIPTION
  34.  *
  35.  *    This file should be included in any user compilation module
  36.  *    which accesses routines from the Portable Math Library (PML).
  37.  *
  38.  */
  39.  
  40.  
  41. #ifndef _COMPILER_H
  42. #include <compiler.h>
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #ifdef __TURBOC__
  50.  
  51. #include <tcmath.h>
  52.  
  53. #else
  54.  
  55. #ifndef __STRICT_ANSI__
  56. /*
  57.  *    Create the type "COMPLEX".  This is an obvious extension that I
  58.  *    hope becomes a part of standard C someday.
  59.  *
  60.  */
  61.  
  62. typedef struct cmplx {            /* Complex structure */
  63.     double real;            /* Real part */
  64.     double imag;            /* Imaginary part */
  65. } COMPLEX;
  66.  
  67. /* exceptions ++jrb */
  68. typedef enum  {
  69.     DOMAIN      = 1,
  70.     SING        = 2,
  71.     OVERFLOW    = 3,
  72.     UNDERFLOW   = 4,
  73.     TLOSS       = 5,
  74.     PLOSS       = 6
  75. } exception_type;
  76.  
  77. struct exception {
  78.     exception_type    type;    /* exception type */
  79.     char        *name;    /* function in which it occured */
  80.     double        arg1;    /* an arg */
  81.     double        arg2;    /* another arg */
  82.     double        retval; /* val to return */
  83. };
  84.  
  85. #define M_LN2                0.69314718055994530942
  86. #define M_PI         3.14159265358979323846
  87. #define M_SQRT2              1.41421356237309504880
  88. #define M_E          2.7182818284590452354
  89. #define M_LOG2E              1.4426950408889634074
  90. #define M_LOG10E     0.43429448190325182765
  91. #define M_LN10               2.30258509299404568402
  92. #define M_PI_2               1.57079632679489661923
  93. #define M_PI_4               0.78539816339744830962
  94. #define M_1_PI               0.31830988618379067154
  95. #define M_2_PI               0.63661977236758134308
  96. #define M_2_SQRTPI   1.12837916709551257390
  97. #define M_SQRT1_2    0.70710678118654752440
  98.  
  99. #endif /* __STRICT_ANSI__ */
  100.  
  101. extern const double _infinitydf;    /* in normdf.cpp */
  102.  
  103. #define HUGE_VAL  (_infinitydf)
  104. #define HUGE HUGE_VAL
  105.  
  106. #ifdef _M68881
  107. #include <math-68881.h>
  108. #endif
  109.  
  110. #ifdef __GNUC__
  111. # ifndef __cplusplus
  112. #  ifndef max
  113. #   define max(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x>_y) _y=_x; _y;})
  114. #   define min(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x<_y) _y=_x; _y;})
  115. #  endif
  116. # endif
  117. #endif
  118.  
  119. #ifndef _M68881
  120. __EXTERN double    acos    __PROTO((double));
  121. __EXTERN double asin    __PROTO((double));
  122. __EXTERN double atan    __PROTO((double));
  123. __EXTERN double atanh    __PROTO((double));
  124. __EXTERN double cos    __PROTO((double));
  125. __EXTERN double cosh    __PROTO((double));
  126. __EXTERN double fabs    __PROTO((double));
  127. __EXTERN double dabs    __PROTO((double));
  128.  
  129. __EXTERN double exp    __PROTO((double));
  130. __EXTERN double log    __PROTO((double));
  131. __EXTERN double log10    __PROTO((double));
  132. __EXTERN double fmod    __PROTO((double, double));
  133. __EXTERN double sin    __PROTO((double));
  134. __EXTERN double sinh    __PROTO((double));
  135. __EXTERN double sqrt    __PROTO((double));
  136. __EXTERN double hypot   __PROTO((double, double));
  137. __EXTERN double tan    __PROTO((double));
  138. __EXTERN double tanh    __PROTO((double));
  139. __EXTERN double floor    __PROTO((double));
  140. __EXTERN double ceil    __PROTO((double));
  141. __EXTERN double rint    __PROTO((double));
  142.  
  143. __EXTERN double acosh    __PROTO((double));
  144. __EXTERN double asinh    __PROTO((double));
  145. __EXTERN double atan2    __PROTO((double, double));
  146. __EXTERN double pow    __PROTO((double, double));
  147. #endif
  148.  
  149. #ifndef __STRICT_ANSI__
  150.  
  151. #ifdef _M68881
  152. #  define dabs(x) fabs(x)
  153. #endif
  154.  
  155. __EXTERN double copysign    __PROTO((double, double));
  156. __EXTERN int matherr    __PROTO((struct exception *));
  157. __EXTERN double cabs    __PROTO((COMPLEX));
  158. __EXTERN COMPLEX cmult    __PROTO((COMPLEX, COMPLEX));
  159. __EXTERN COMPLEX csqrt    __PROTO((COMPLEX));
  160. #ifndef __GNUG__
  161. __EXTERN COMPLEX clog    __PROTO((COMPLEX));
  162. #endif
  163. __EXTERN COMPLEX cacos    __PROTO((COMPLEX));
  164. __EXTERN COMPLEX cadd    __PROTO((COMPLEX,COMPLEX));
  165. __EXTERN COMPLEX casin    __PROTO((COMPLEX));
  166. __EXTERN COMPLEX catan    __PROTO((COMPLEX));
  167. __EXTERN COMPLEX ccosh    __PROTO((COMPLEX));
  168. __EXTERN COMPLEX crcp    __PROTO((COMPLEX));
  169. __EXTERN COMPLEX csinh    __PROTO((COMPLEX));
  170. __EXTERN COMPLEX ctan    __PROTO((COMPLEX));
  171. __EXTERN COMPLEX ctanh    __PROTO((COMPLEX));
  172. __EXTERN COMPLEX cexp    __PROTO((COMPLEX));
  173. __EXTERN COMPLEX ccos    __PROTO((COMPLEX));
  174. __EXTERN COMPLEX csin    __PROTO((COMPLEX));
  175. __EXTERN COMPLEX cdiv    __PROTO((COMPLEX, COMPLEX));
  176. __EXTERN COMPLEX csubt    __PROTO((COMPLEX,COMPLEX));
  177.  
  178. __EXTERN int pmlcfs    __PROTO((int, int));
  179. __EXTERN int pmlcnt    __PROTO((void));
  180. __EXTERN int pmlerr    __PROTO((int));
  181. __EXTERN int pmllim    __PROTO((int));
  182. __EXTERN int pmlsfs    __PROTO((int, int));
  183. __EXTERN double poly    __PROTO((int, double *, double));
  184.  
  185. #endif /* __STRICT_ANSI__ */
  186.  
  187. #ifndef _M68881
  188. __EXTERN double modf    __PROTO((double, double *));
  189. __EXTERN double ldexp    __PROTO((double, int));
  190. __EXTERN double frexp    __PROTO((double, int *));
  191. #endif /* !_M68881 */
  192.  
  193. #endif /* __TURBOC__ */
  194.  
  195. #ifdef __cplusplus
  196. }
  197. #endif
  198.  
  199. #endif /* _MATH_H */
  200.