home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / INCLUDE / MATH.H < prev    next >
Text File  |  1993-09-17  |  7KB  |  195 lines

  1. #pragma info( none )
  2. #ifndef __CHKHDR__
  3.    #pragma info( none )
  4. #endif
  5. #pragma info( restore )
  6.  
  7. #ifndef __math_h
  8.    #define __math_h
  9.  
  10.    #ifdef __cplusplus
  11.       extern "C" {
  12.    #endif
  13.  
  14.    /********************************************************************/
  15.    /*  <math.h> header file                                            */
  16.    /*                                                                  */
  17.    /*  Licensed Materials - Property of IBM                            */
  18.    /*                                                                  */
  19.    /*  IBM C/C++ Tools Version 2.01                                    */
  20.    /*  Copyright (C) International Business Machines Corp., 1991,1993  */
  21.    /*  All rights reserved                                             */
  22.    /*                                                                  */
  23.    /*  US Government Users Restricted Rights -                         */
  24.    /*  Use, duplication, or disclosure restricted                      */
  25.    /*  by GSA ADP Schedule Contract with IBM Corp.                     */
  26.    /*                                                                  */
  27.    /********************************************************************/
  28.  
  29.    extern const double _infinity;
  30.    #define HUGE_VAL    _infinity
  31.  
  32.    /* function prototypes */
  33.  
  34.    double _Builtin __fabs( double );
  35.    double _Optlink acos( double );
  36.    double _Optlink asin( double );
  37.    double _Optlink atan( double );
  38.    double _Optlink atan2( double, double );
  39.    double _Optlink ceil( double );
  40.    double _Optlink cos( double );
  41.    double _Optlink cosh( double );
  42.    double _Optlink exp( double );
  43.    double _Optlink fabs( double );
  44.    double _Optlink floor( double );
  45.    double _Optlink fmod( double, double );
  46.    double _Optlink frexp( double, int * );
  47.    double _Optlink ldexp( double, int );
  48.    double _Optlink log( double );
  49.    double _Optlink log10( double );
  50.    double _Optlink modf( double, double * );
  51.    double _Optlink pow( double, double );
  52.    double _Optlink sin( double );
  53.    double _Optlink sinh( double );
  54.    double _Optlink sqrt( double );
  55.    double _Optlink tan( double );
  56.    double _Optlink tanh( double );
  57.  
  58.  
  59. #if (defined( _FP_INLINE ))
  60.  
  61.    double _Builtin __fsin ( double );
  62.    double _Builtin __fcos ( double );
  63.    double _Builtin __fptan ( double );
  64.    double _Builtin __fpatan ( double );
  65.    double _Builtin __facos ( double );
  66.    double _Builtin __fasin ( double );
  67.    double _Builtin __fsqrt ( double );
  68.  
  69.    #ifdef __cplusplus
  70.       inline double sin ( double x ) { return __fsin  ( x ); }
  71.       inline double cos ( double x ) { return __fcos  ( x ); }
  72.       inline double tan ( double x ) { return __fptan ( x ); }
  73.       inline double atan( double x ) { return __fpatan( x ); }
  74.       inline double acos( double x ) { return __facos ( x ); }
  75.       inline double asin( double x ) { return __fasin ( x ); }
  76.       inline double sqrt( double x ) { return __fsqrt ( x ); }
  77.    #else
  78.       #define sin( x )       __fsin( (x) )
  79.       #define cos( x )       __fcos( (x) )
  80.       #define tan( x )       __fptan( (x) )
  81.       #define atan( x )      __fpatan( (x) )
  82.       #define acos( x )      __facos( (x) )
  83.       #define asin( x )      __fasin( (x) )
  84.       #define sqrt( x )      __fsqrt( (x) )
  85.    #endif
  86.  
  87. #endif
  88.  
  89.    #ifdef __cplusplus
  90.       inline double fabs( double x ) { return __fabs( x ); }
  91.    #else
  92.       #pragma info( none )
  93.       #define fabs( x ) __fabs( (x) )
  94.       #pragma info( restore )
  95.    #endif
  96.  
  97.    #ifndef __ANSI__
  98.  
  99.       #pragma map( erf, "_erf" )
  100.       #pragma map( erfc, "_erfc" )
  101.       #pragma map( gamma, "_gamma" )
  102.       #pragma map( hypot, "_hypot" )
  103.       #pragma map( j0, "_j0" )
  104.       #pragma map( j1, "_j1" )
  105.       #pragma map( jn, "_jn" )
  106.       #pragma map( y0, "_y0" )
  107.       #pragma map( y1, "_y1" )
  108.       #pragma map( yn, "_yn" )
  109.  
  110.       double _Optlink _erf( double );
  111.       double _Optlink _erfc( double );
  112.       double _Optlink _gamma( double );
  113.       double _Optlink _hypot( double, double );
  114.       double _Optlink _j0( double );
  115.       double _Optlink _j1( double );
  116.       double _Optlink _jn( int, double );
  117.       double _Optlink _y0( double );
  118.       double _Optlink _y1( double );
  119.       double _Optlink _yn( int, double );
  120.       double _Optlink erf( double );
  121.       double _Optlink erfc( double );
  122.       double _Optlink gamma( double );
  123.       double _Optlink hypot( double, double );
  124.       double _Optlink j0( double );
  125.       double _Optlink j1( double );
  126.       double _Optlink jn( int, double );
  127.       double _Optlink y0( double );
  128.       double _Optlink y1( double );
  129.       double _Optlink yn( int, double );
  130.  
  131.       #ifndef __SAA_L2__
  132.          extern const long double _LHUGE_VAL;
  133.          #define _LHUGE _LHUGE_VAL
  134.       #endif
  135.  
  136.       #if  defined(__EXTENDED__)
  137.  
  138.          #define HUGE   HUGE_VAL
  139.  
  140.          #define DOMAIN           1       /* argument domain error */
  141.          #define SING             2       /* argument singularity */
  142.          #define OVERFLOW         3       /* overflow range error */
  143.          #define UNDERFLOW        4       /* underflow range error */
  144.          #define TLOSS            5       /* total loss of precision */
  145.          #define PLOSS            6       /* partial loss of precision */
  146.          #define UNKNOWN          7       /* unknown error probably caused by */
  147.                                           /* changing the 80387 control word */
  148.  
  149.          #if (!defined(__cplusplus) || defined(__C_complex))
  150.             struct complex
  151.                {
  152.                double x,y;             /* real and imaginary parts */
  153.                };
  154.  
  155.             double      _Optlink _cabs( struct complex );
  156.          #endif
  157.  
  158.          #pragma info( none )
  159.          #define _cabs( z ) _hypot( (z).x, (z).y )
  160.          #define cabs( a ) _cabs( a )
  161.          #pragma info( restore )
  162.  
  163.          struct exception
  164.             {
  165.             int type;               /* exception type - see below */
  166.             char *name;             /* name of function where error occured */
  167.             double arg1;            /* first argument to function */
  168.             double arg2;            /* second argument (if any) to function */
  169.             double retval;          /* value to be returned by function */
  170.             };
  171.  
  172.          /* _matherr is defined by the user */
  173.  
  174.          int _matherr( struct exception * );
  175.          int  matherr( struct exception * );
  176.          #pragma map( matherr, "_matherr" )
  177.  
  178.          long double _Optlink _atold( const char * );
  179.  
  180.       #endif
  181.  
  182.    #endif
  183.  
  184.    #ifdef __cplusplus
  185.       }
  186.    #endif
  187.  
  188. #endif
  189.  
  190. #pragma info( none )
  191. #ifndef __CHKHDR__
  192.    #pragma info( restore )
  193. #endif
  194. #pragma info( restore )
  195.