/*** *math.h - definitions and declarations for math library * * Copyright (c) 1985-1990, Microsoft Corporation. All rights reserved. * *Purpose: * This file contains constant definitions and external subroutine * declarations for the math subroutine library. * [ANSI/System V] * ****/ #if defined(_DLL) && !defined(_MT) #error Cannot define _DLL without _MT #endif #ifdef _MT #define _FAR_ _far #else #define _FAR_ #endif /* definition of exception struct - this struct is passed to the matherr * routine when a floating point exception is detected */ #ifndef _EXCEPTION_DEFINED struct exception { int type; /* exception type - see below */ char _FAR_ *name; /* name of function where error occured */ double arg1; /* first argument to function */ double arg2; /* second argument (if any) to function */ double retval; /* value to be returned by function */ } ; #define _EXCEPTION_DEFINED #endif /* definition of a complex struct to be used by those who use cabs and * want type checking on their argument */ #ifndef _COMPLEX_DEFINED struct complex { double x,y; /* real and imaginary parts */ } ; #define _COMPLEX_DEFINED #endif /* Constant definitions for the exception type passed in the exception struct */ #define DOMAIN 1 /* argument domain error */ #define SING 2 /* argument singularity */ #define OVERFLOW 3 /* overflow range error */ #define UNDERFLOW 4 /* underflow range error */ #define TLOSS 5 /* total loss of precision */ #define PLOSS 6 /* partial loss of precision */ #define EDOM 33 #define ERANGE 34 /* definitions of HUGE and HUGE_VAL - respectively the XENIX and ANSI names * for a value returned in case of error by a number of the floating point * math routines */ #ifndef _DLL extern double _near _cdecl HUGE; #define HUGE_VAL HUGE #else /* _DLL */ extern double _FAR_ _cdecl HUGE; #define HUGE_VAL HUGE #endif /* _DLL */ /* function prototypes */ #ifdef _MT /* function prototypes for _MT version */ int _FAR_ _cdecl abs(int); double _FAR_ _pascal acos(double); double _FAR_ _pascal asin(double); double _FAR_ _pascal atan(double); double _FAR_ _pascal atan2(double, double); double _FAR_ _pascal atof(const char _FAR_ *); double _FAR_ _pascal cabs(struct complex); double _FAR_ _pascal ceil(double); double _FAR_ _pascal cos(double); double _FAR_ _pascal cosh(double); int _FAR_ _cdecl dieeetomsbin(double _FAR_ *, double _FAR_ *); int _FAR_ _cdecl dmsbintoieee(double _FAR_ *, double _FAR_ *); double _FAR_ _pascal exp(double); double _FAR_ _pascal fabs(double); int _FAR_ _cdecl fieeetomsbin(float _FAR_ *, float _FAR_ *); double _FAR_ _pascal floor(double); double _FAR_ _pascal fmod(double, double); int _FAR_ _cdecl fmsbintoieee(float _FAR_ *, float _FAR_ *); double _FAR_ _pascal frexp(double, int _FAR_ *); double _FAR_ _pascal hypot(double, double); double _FAR_ _pascal j0(double); double _FAR_ _pascal j1(double); double _FAR_ _pascal jn(int, double); long _FAR_ _cdecl labs(long); double _FAR_ _pascal ldexp(double, int); double _FAR_ _pascal log(double); double _FAR_ _pascal log10(double); int _FAR_ _cdecl matherr(struct exception _FAR_ *); double _FAR_ _pascal modf(double, double _FAR_ *); double _FAR_ _pascal pow(double, double); double _FAR_ _pascal sin(double); double _FAR_ _pascal sinh(double); double _FAR_ _pascal sqrt(double); double _FAR_ _pascal tan(double); double _FAR_ _pascal tanh(double); double _FAR_ _pascal y0(double); double _FAR_ _pascal y1(double); double _FAR_ _pascal yn(int, double); #else /* function prototypes for non _MT version */ int _FAR_ _cdecl abs(int); double _FAR_ _cdecl acos(double); double _FAR_ _cdecl asin(double); double _FAR_ _cdecl atan(double); double _FAR_ _cdecl atan2(double, double); double _FAR_ _cdecl atof(const char _FAR_ *); double _FAR_ _cdecl cabs(struct complex); double _FAR_ _cdecl ceil(double); double _FAR_ _cdecl cos(double); double _FAR_ _cdecl cosh(double); int _FAR_ _cdecl dieeetomsbin(double _FAR_ *, double _FAR_ *); int _FAR_ _cdecl dmsbintoieee(double _FAR_ *, double _FAR_ *); double _FAR_ _cdecl exp(double); double _FAR_ _cdecl fabs(double); int _FAR_ _cdecl fieeetomsbin(float _FAR_ *, float _FAR_ *); double _FAR_ _cdecl floor(double); double _FAR_ _cdecl fmod(double, double); int _FAR_ _cdecl fmsbintoieee(float _FAR_ *, float _FAR_ *); double _FAR_ _cdecl frexp(double, int _FAR_ *); double _FAR_ _cdecl hypot(double, double); double _FAR_ _cdecl j0(double); double _FAR_ _cdecl j1(double); double _FAR_ _cdecl jn(int, double); long _FAR_ _cdecl labs(long); double _FAR_ _cdecl ldexp(double, int); double _FAR_ _cdecl log(double); double _FAR_ _cdecl log10(double); int _FAR_ _cdecl matherr(struct exception _FAR_ *); double _FAR_ _cdecl modf(double, double _FAR_ *); double _FAR_ _cdecl pow(double, double); double _FAR_ _cdecl sin(double); double _FAR_ _cdecl sinh(double); double _FAR_ _cdecl sqrt(double); double _FAR_ _cdecl tan(double); double _FAR_ _cdecl tanh(double); double _FAR_ _cdecl y0(double); double _FAR_ _cdecl y1(double); double _FAR_ _cdecl yn(int, double); #endif /* definition of _exceptionl struct - this struct is passed to the _matherrl * routine when a floating point exception is detected in a long double routine */ #ifndef _LD_EXCEPTION_DEFINED struct _exceptionl { int type; /* exception type - see below */ char _FAR_ *name; /* name of function where error occured */ long double arg1; /* first argument to function */ long double arg2; /* second argument (if any) to function */ long double retval; /* value to be returned by function */ } ; #define _LD_EXCEPTION_DEFINED #endif /* definition of a _complexl struct to be used by those who use _cabsl and * want type checking on their argument */ #ifndef _LD_COMPLEX_DEFINED struct _complexl { long double x,y; /* real and imaginary parts */ } ; #define _LD_COMPLEX_DEFINED #endif #ifndef _DLL extern long double _near _cdecl _LHUGE; #define _LHUGE_VAL _LHUGE #else /* _DLL */ extern long double _FAR_ _cdecl _LHUGE; #define _LHUGE_VAL _LHUGE #endif /* _DLL */ long double _FAR_ _cdecl acosl(long double); long double _FAR_ _cdecl asinl(long double); long double _FAR_ _cdecl atanl(long double); long double _FAR_ _cdecl atan2l(long double, long double); long double _FAR_ _cdecl _atold(const char _FAR_ *); long double _FAR_ _cdecl cabsl(struct _complexl); long double _FAR_ _cdecl ceill(long double); long double _FAR_ _cdecl cosl(long double); long double _FAR_ _cdecl coshl(long double); long double _FAR_ _cdecl expl(long double); long double _FAR_ _cdecl fabsl(long double); long double _FAR_ _cdecl floorl(long double); long double _FAR_ _cdecl fmodl(long double, long double); long double _FAR_ _cdecl frexpl(long double, int _FAR_ *); long double _FAR_ _cdecl hypotl(long double, long double); long double _FAR_ _cdecl _j0l(long double); long double _FAR_ _cdecl _j1l(long double); long double _FAR_ _cdecl _jnl(int, long double); long double _FAR_ _cdecl ldexpl(long double, int); long double _FAR_ _cdecl logl(long double); long double _FAR_ _cdecl log10l(long double); int _FAR_ _cdecl _matherrl(struct _exceptionl _FAR_ *); long double _FAR_ _cdecl modfl(long double, long double _FAR_ *); long double _FAR_ _cdecl powl(long double, long double); long double _FAR_ _cdecl sinl(long double); long double _FAR_ _cdecl sinhl(long double); long double _FAR_ _cdecl sqrtl(long double); long double _FAR_ _cdecl tanl(long double); long double _FAR_ _cdecl tanhl(long double); long double _FAR_ _cdecl _y0l(long double); long double _FAR_ _cdecl _y1l(long double); long double _FAR_ _cdecl _ynl(int, long double);