home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / h.z / MATH.H < prev    next >
C/C++ Source or Header  |  1996-11-06  |  4KB  |  129 lines

  1. /*
  2.  *  math.h    Math functions
  3.  *
  4.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  5.  */
  6. #ifndef _MATH_H_INCLUDED
  7. #define _MATH_H_INCLUDED
  8. #if !defined(_ENABLE_AUTODEPEND)
  9.   #pragma read_only_file;
  10. #endif
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef _COMDEF_H_INCLUDED
  16.  #include <_comdef.h>
  17. #endif
  18.  
  19. #if defined(_M_IX86)
  20.   #pragma pack(__push,1);
  21. #else
  22.   #pragma pack(__push,8);
  23. #endif
  24.  
  25. #if defined(__FUNCTION_DATA_ACCESS)
  26.  #define _HugeValue (*__get_HugeValue_ptr())
  27. #elif defined(__SW_BR) || defined(_RTDLL) 
  28.   #define _HugeValue _HugeValue_br
  29. #endif
  30. _WCRTLINK extern const double _WCDATA _HugeValue;
  31. #define HUGE_VAL _HugeValue
  32.  
  33. _WMRTLINK extern double ceil( double __x );
  34. _WMRTLINK extern double floor( double __x );
  35. _WMRTLINK extern double frexp( double __value, int *__exp );
  36. _WMRTLINK extern double ldexp( double __x, int __exp );
  37. _WMRTLINK extern double modf( double __value, double *__iptr );
  38. _WMIRTLINK extern double acos( double __x );
  39. _WMIRTLINK extern double asin( double __x );
  40. _WMIRTLINK extern double atan( double __x );
  41. _WMIRTLINK extern double atan2( double __y, double __x );
  42. _WMIRTLINK extern double cos( double __x );
  43. _WMIRTLINK extern double cosh( double __x );
  44. _WMIRTLINK extern double exp( double __x );
  45. _WMIRTLINK extern double fabs( double __x );
  46. _WMIRTLINK extern double fmod( double __x, double __y );
  47. _WMIRTLINK extern double log( double __x );
  48. _WMIRTLINK extern double log10( double __x );
  49. _WMIRTLINK extern double pow( double __x, double __y );
  50. _WMIRTLINK extern double sin( double __x );
  51. _WMIRTLINK extern double sinh( double __x );
  52. _WMIRTLINK extern double sqrt( double __x );
  53. _WMIRTLINK extern double tan( double __x );
  54. _WMIRTLINK extern double tanh( double __x );
  55.  
  56. /* non-ANSI */
  57. #if !defined(NO_EXT_KEYS) /* extensions enabled */
  58.  
  59. struct _complex {
  60.     double    x;
  61.     double    y;
  62. };
  63. #ifndef __cplusplus
  64. struct complex {
  65.     double    x;
  66.     double    y;
  67. };
  68. #endif
  69.  
  70. _WMRTLINK extern double    acosh( double __x );
  71. _WMRTLINK extern double    asinh( double __x );
  72. _WMRTLINK extern double    atanh( double __x );
  73. _WMRTLINK extern double    cabs( struct _complex );
  74. _WMRTLINK extern double    hypot( double __x, double __y );
  75. _WMRTLINK extern double    j0( double __x );
  76. _WMRTLINK extern double    j1( double __x );
  77. _WMRTLINK extern double    jn( int __n, double __x );
  78. _WMRTLINK extern double    log2( double __x );
  79. _WMRTLINK extern double    y0( double __x );
  80. _WMRTLINK extern double    y1( double __x );
  81. _WMRTLINK extern double    yn( int __n, double __x );
  82.  
  83. /* The following struct is used to record errors detected in the math library.
  84.  * matherr is called with a pointer to this struct for possible error recovery.
  85.  */
  86.  
  87. struct _exception {
  88.     int    type;        /* type of error, see below */
  89.     char    *name;        /* name of math function */
  90.     double    arg1;        /* value of first argument to function */
  91.     double    arg2;        /* second argument (if indicated) */
  92.     double    retval;     /* default return value */
  93. };
  94. #ifndef __cplusplus
  95. struct    exception {
  96.     int    type;        /* type of error, see below */
  97.     char    *name;        /* name of math function */
  98.     double    arg1;        /* value of first argument to function */
  99.     double    arg2;        /* second argument (if indicated) */
  100.     double    retval;     /* default return value */
  101. };
  102. #endif
  103.  
  104. #define DOMAIN        1    /* argument domain error */
  105. #define SING        2    /* argument singularity  */
  106. #define OVERFLOW    3    /* overflow range error  */
  107. #define UNDERFLOW    4    /* underflow range error */
  108. #define TLOSS        5    /* total loss of significance */
  109. #define PLOSS        6    /* partial loss of significance */
  110.  
  111. _WMRTLINK extern int    matherr( struct _exception * );
  112. _WMRTLINK extern double    _matherr( struct _exception * );
  113. #endif /* EXTENSIONS */
  114.  
  115.  
  116. #if !defined( __NO_MATH_OPS ) && defined(_M_IX86)
  117. /*
  118.     Defining the __NO_MATH_OPS macro will stop the compiler from recogizing
  119.     the following functions as intrinsic operators.
  120. */
  121.  #pragma intrinsic(log,cos,sin,tan,sqrt,fabs,pow,atan2,fmod)
  122.  #pragma intrinsic(acos,asin,atan,cosh,exp,log10,sinh,tanh)
  123. #endif
  124. #pragma pack(__pop);
  125. #ifdef __cplusplus
  126. };
  127. #endif
  128. #endif
  129.