home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / gnu / mntinc16 / pmluser.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-29  |  4.6 KB  |  157 lines

  1. #ifndef _PMLUSER_H
  2. #define _PMLUSER_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.  *    pmluser.h    include file for users of portable math library
  28.  *
  29.  *  SYNOPSIS
  30.  *
  31.  *    #include <pmluser.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 __STRICT_ANSI__
  42. /*
  43.  *    Create the type "COMPLEX".  This is an obvious extension that I
  44.  *    hope becomes a part of standard C someday.
  45.  *
  46.  */
  47.  
  48. typedef struct cmplx {            /* Complex structure */
  49.     double real;            /* Real part */
  50.     double imag;            /* Imaginary part */
  51. } COMPLEX;
  52.  
  53. /* exceptions ++jrb */
  54. typedef enum  { DOMAIN, OVERFLOW, UNDERFLOW, PLOSS, SING } exception_type;
  55.  
  56. struct exception {
  57.     exception_type    type;    /* exception type */
  58.     char        *name;    /* function in which it occured */
  59.     double        arg1;    /* an arg */
  60.     double        retval; /* val to return */
  61. };
  62.  
  63. #endif /* __STRICT_ANSI__ */
  64.  
  65. extern const double _infinitydf;    /* in normdf.cpp */
  66.  
  67. #define HUGE_VAL  (_infinitydf)
  68. #define HUGE HUGE_VAL
  69.  
  70. #ifdef _M68881
  71. #include <fpu.h>
  72. #endif
  73.  
  74. #if __GNUC__
  75. #ifndef max
  76. #define max(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x>_y) _y=_x; _y;})
  77. #define min(x,y) ({typeof(x) _x=(x); typeof(y) _y=(y); if (_x<_y) _y=_x; _y;})
  78. #endif
  79. #endif
  80.  
  81. #ifndef _COMPILER_H
  82. #include <compiler.h>
  83. #endif
  84.  
  85. #ifndef _M68881
  86. __EXTERN double    acos    __PROTO((double));
  87. __EXTERN double asin    __PROTO((double));
  88. __EXTERN double atan    __PROTO((double));
  89. __EXTERN double atanh    __PROTO((double));
  90. __EXTERN double cos    __PROTO((double));
  91. __EXTERN double cosh    __PROTO((double));
  92. __EXTERN double fabs    __PROTO((double));
  93. __EXTERN double dabs    __PROTO((double));
  94.  
  95. __EXTERN double exp    __PROTO((double));
  96. __EXTERN double log    __PROTO((double));
  97. __EXTERN double log10    __PROTO((double));
  98. __EXTERN double fmod    __PROTO((double, double));
  99. __EXTERN double sin    __PROTO((double));
  100. __EXTERN double sinh    __PROTO((double));
  101. __EXTERN double sqrt    __PROTO((double));
  102. __EXTERN double tan    __PROTO((double));
  103. __EXTERN double tanh    __PROTO((double));
  104. __EXTERN double floor    __PROTO((double));
  105. __EXTERN double ceil    __PROTO((double));
  106. __EXTERN double rint    __PROTO((double));
  107.  
  108. __EXTERN double acosh    __PROTO((double));
  109. __EXTERN double asinh    __PROTO((double));
  110. __EXTERN double atan2    __PROTO((double, double));
  111. __EXTERN double pow    __PROTO((double, double));
  112. #endif
  113.  
  114. #ifndef __STRICT_ANSI__
  115.  
  116. #ifdef _M68881
  117. #  define dabs(x) fabs(x)
  118. #endif
  119.  
  120. __EXTERN double copysign    __PROTO((double, double));
  121. __EXTERN int matherr    __PROTO((struct exception *));
  122. __EXTERN double cabs    __PROTO((COMPLEX));
  123. __EXTERN COMPLEX cmult    __PROTO((COMPLEX, COMPLEX));
  124. __EXTERN COMPLEX csqrt    __PROTO((COMPLEX));
  125. __EXTERN COMPLEX clog    __PROTO((COMPLEX));
  126. __EXTERN COMPLEX cacos    __PROTO((COMPLEX));
  127. __EXTERN COMPLEX cadd    __PROTO((COMPLEX,COMPLEX));
  128. __EXTERN COMPLEX casin    __PROTO((COMPLEX));
  129. __EXTERN COMPLEX catan    __PROTO((COMPLEX));
  130. __EXTERN COMPLEX ccosh    __PROTO((COMPLEX));
  131. __EXTERN COMPLEX crcp    __PROTO((COMPLEX));
  132. __EXTERN COMPLEX csinh    __PROTO((COMPLEX));
  133. __EXTERN COMPLEX ctan    __PROTO((COMPLEX));
  134. __EXTERN COMPLEX ctanh    __PROTO((COMPLEX));
  135. __EXTERN COMPLEX cexp    __PROTO((COMPLEX));
  136. __EXTERN COMPLEX ccos    __PROTO((COMPLEX));
  137. __EXTERN COMPLEX csin    __PROTO((COMPLEX));
  138. __EXTERN COMPLEX cdiv    __PROTO((COMPLEX, COMPLEX));
  139. __EXTERN COMPLEX csubt    __PROTO((COMPLEX,COMPLEX));
  140.  
  141. __EXTERN int pmlcfs    __PROTO((int, int));
  142. __EXTERN int pmlcnt    __PROTO((void));
  143. __EXTERN int pmlerr    __PROTO((int));
  144. __EXTERN int pmllim    __PROTO((int));
  145. __EXTERN int pmlsfs    __PROTO((int, int));
  146. __EXTERN double poly    __PROTO((int, double *, double));
  147.  
  148. #endif /* __STRICT_ANSI__ */
  149.  
  150. #ifndef _M68881
  151. __EXTERN double modf    __PROTO((double, double *));
  152. __EXTERN double ldexp    __PROTO((double, int));
  153. __EXTERN double frexp    __PROTO((double, int *));
  154. #endif /* !_M68881 */
  155.  
  156. #endif /* _PMLUSER_H */
  157.