home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0400 / CCE_0423.ZIP / CCE_0423.PD / INCLUD83.ZOO / math.h < prev    next >
C/C++ Source or Header  |  1992-07-20  |  5KB  |  192 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. #ifndef __STRICT_ANSI__
  50. /*
  51.  *    Create the type "COMPLEX".  This is an obvious extension that I
  52.  *    hope becomes a part of standard C someday.
  53.  *
  54.  */
  55.  
  56. typedef struct cmplx {            /* Complex structure */
  57.     double real;            /* Real part */
  58.     double imag;            /* Imaginary part */
  59. } COMPLEX;
  60.  
  61. /* exceptions ++jrb */
  62. typedef enum  {
  63.     DOMAIN      = 1,
  64.     SING        = 2,
  65.     OVERFLOW    = 3,
  66.     UNDERFLOW   = 4,
  67.     TLOSS       = 5,
  68.     PLOSS       = 6
  69. } exception_type;
  70.  
  71. struct exception {
  72.     exception_type    type;    /* exception type */
  73.     char        *name;    /* function in which it occured */
  74.     double        arg1;    /* an arg */
  75.     double        arg2;    /* another arg */
  76.     double        retval; /* val to return */
  77. };
  78.  
  79. #define M_LN2        0.69314718055994530942
  80. #define M_PI        3.14159265358979323846
  81. #define M_SQRT2        1.41421356237309504880
  82. #define M_E        2.7182818284590452354
  83. #define M_LOG2E        1.4426950408889634074
  84. #define M_LOG10E    0.43429448190325182765
  85. #define M_LN10        2.30258509299404568402
  86. #define M_PI_2        1.57079632679489661923
  87. #define M_PI_4        0.78539816339744830962
  88. #define M_1_PI        0.31830988618379067154
  89. #define M_2_PI        0.63661977236758134308
  90. #define M_2_SQRTPI    1.12837916709551257390
  91. #define M_SQRT1_2    0.70710678118654752440
  92.  
  93. #endif /* __STRICT_ANSI__ */
  94.  
  95. extern const double _infinitydf;    /* in normdf.cpp */
  96.  
  97. #define HUGE_VAL  (_infinitydf)
  98. #define HUGE HUGE_VAL
  99.  
  100. #ifdef _M68881
  101. #include <math-68881.h>
  102. #endif
  103.  
  104. #ifdef __GNUC__
  105. # ifndef __cplusplus
  106. #  ifndef max
  107. #   define max(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x>_y) _y=_x; _y;})
  108. #   define min(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x<_y) _y=_x; _y;})
  109. #  endif
  110. # endif
  111. #endif
  112.  
  113. #ifndef _M68881
  114. __EXTERN double    acos    __PROTO((double));
  115. __EXTERN double asin    __PROTO((double));
  116. __EXTERN double atan    __PROTO((double));
  117. __EXTERN double atanh    __PROTO((double));
  118. __EXTERN double cos    __PROTO((double));
  119. __EXTERN double cosh    __PROTO((double));
  120. __EXTERN double fabs    __PROTO((double));
  121. __EXTERN double dabs    __PROTO((double));
  122.  
  123. __EXTERN double exp    __PROTO((double));
  124. __EXTERN double log    __PROTO((double));
  125. __EXTERN double log10    __PROTO((double));
  126. __EXTERN double fmod    __PROTO((double, double));
  127. __EXTERN double sin    __PROTO((double));
  128. __EXTERN double sinh    __PROTO((double));
  129. __EXTERN double sqrt    __PROTO((double));
  130. __EXTERN double hypot   __PROTO((double, double));
  131. __EXTERN double tan    __PROTO((double));
  132. __EXTERN double tanh    __PROTO((double));
  133. __EXTERN double floor    __PROTO((double));
  134. __EXTERN double ceil    __PROTO((double));
  135. __EXTERN double rint    __PROTO((double));
  136.  
  137. __EXTERN double acosh    __PROTO((double));
  138. __EXTERN double asinh    __PROTO((double));
  139. __EXTERN double atan2    __PROTO((double, double));
  140. __EXTERN double pow    __PROTO((double, double));
  141. #endif
  142.  
  143. #ifndef __STRICT_ANSI__
  144.  
  145. #ifdef _M68881
  146. #  define dabs(x) fabs(x)
  147. #endif
  148.  
  149. __EXTERN double copysign    __PROTO((double, double));
  150. __EXTERN int matherr    __PROTO((struct exception *));
  151. __EXTERN double cabs    __PROTO((COMPLEX));
  152. __EXTERN COMPLEX cmult    __PROTO((COMPLEX, COMPLEX));
  153. __EXTERN COMPLEX csqrt    __PROTO((COMPLEX));
  154. #ifndef __GNUG__
  155. __EXTERN COMPLEX clog    __PROTO((COMPLEX));
  156. #endif
  157. __EXTERN COMPLEX cacos    __PROTO((COMPLEX));
  158. __EXTERN COMPLEX cadd    __PROTO((COMPLEX,COMPLEX));
  159. __EXTERN COMPLEX casin    __PROTO((COMPLEX));
  160. __EXTERN COMPLEX catan    __PROTO((COMPLEX));
  161. __EXTERN COMPLEX ccosh    __PROTO((COMPLEX));
  162. __EXTERN COMPLEX crcp    __PROTO((COMPLEX));
  163. __EXTERN COMPLEX csinh    __PROTO((COMPLEX));
  164. __EXTERN COMPLEX ctan    __PROTO((COMPLEX));
  165. __EXTERN COMPLEX ctanh    __PROTO((COMPLEX));
  166. __EXTERN COMPLEX cexp    __PROTO((COMPLEX));
  167. __EXTERN COMPLEX ccos    __PROTO((COMPLEX));
  168. __EXTERN COMPLEX csin    __PROTO((COMPLEX));
  169. __EXTERN COMPLEX cdiv    __PROTO((COMPLEX, COMPLEX));
  170. __EXTERN COMPLEX csubt    __PROTO((COMPLEX,COMPLEX));
  171.  
  172. __EXTERN int pmlcfs    __PROTO((int, int));
  173. __EXTERN int pmlcnt    __PROTO((void));
  174. __EXTERN int pmlerr    __PROTO((int));
  175. __EXTERN int pmllim    __PROTO((int));
  176. __EXTERN int pmlsfs    __PROTO((int, int));
  177. __EXTERN double poly    __PROTO((int, double *, double));
  178.  
  179. #endif /* __STRICT_ANSI__ */
  180.  
  181. #ifndef _M68881
  182. __EXTERN double modf    __PROTO((double, double *));
  183. __EXTERN double ldexp    __PROTO((double, int));
  184. __EXTERN double frexp    __PROTO((double, int *));
  185. #endif /* !_M68881 */
  186.  
  187. #ifdef __cplusplus
  188. }
  189. #endif
  190.  
  191. #endif /* _MATH_H */
  192.