diff options
Diffstat (limited to 'public/sdk/inc/crt/math.h')
-rw-r--r-- | public/sdk/inc/crt/math.h | 429 |
1 files changed, 429 insertions, 0 deletions
diff --git a/public/sdk/inc/crt/math.h b/public/sdk/inc/crt/math.h new file mode 100644 index 000000000..7f777e753 --- /dev/null +++ b/public/sdk/inc/crt/math.h @@ -0,0 +1,429 @@ +/*** +*math.h - definitions and declarations for math library +* +* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved. +* +*Purpose: +* This file contains constant definitions and external subroutine +* declarations for the math subroutine library. +* [ANSI/System V] +* +* [Public] +* +****/ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifndef _INC_MATH +#define _INC_MATH + +#if !defined(_WIN32) && !defined(_MAC) +#error ERROR: Only Mac or Win32 targets supported! +#endif + + +#ifdef _MSC_VER +/* + * Currently, all MS C compilers for Win32 platforms default to 8 byte + * alignment. + */ +#pragma pack(push,8) +#endif /* _MSC_VER */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __assembler /* Protect from assembler */ + +/* Define _CRTAPI1 (for compatibility with the NT SDK) */ + +#ifndef _CRTAPI1 +#if _MSC_VER >= 800 && _M_IX86 >= 300 +#define _CRTAPI1 __cdecl +#else +#define _CRTAPI1 +#endif +#endif + + +/* Define _CRTAPI2 (for compatibility with the NT SDK) */ + +#ifndef _CRTAPI2 +#if _MSC_VER >= 800 && _M_IX86 >= 300 +#define _CRTAPI2 __cdecl +#else +#define _CRTAPI2 +#endif +#endif + + +/* Define _CRTIMP */ + +#ifndef _CRTIMP +#ifdef _NTSDK +/* definition compatible with NT SDK */ +#define _CRTIMP +#else /* ndef _NTSDK */ +/* current definition */ +#ifdef _DLL +#define _CRTIMP __declspec(dllimport) +#else /* ndef _DLL */ +#define _CRTIMP +#endif /* _DLL */ +#endif /* _NTSDK */ +#endif /* _CRTIMP */ + + +/* Define __cdecl for non-Microsoft compilers */ + +#if ( !defined(_MSC_VER) && !defined(__cdecl) ) +#define __cdecl +#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 *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 */ + } ; + +#if !__STDC__ +/* Non-ANSI name for compatibility */ +#define complex _complex +#endif + +#define _COMPLEX_DEFINED +#endif +#endif /* __assembler */ + + +/* 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 __assembler /* Protect from assembler */ +#ifdef _NTSDK +/* definition compatible with NT SDK */ +#ifdef _DLL +#define _HUGE (*_HUGE_dll) +extern double * _HUGE_dll; +#else /* ndef _DLL */ +extern double _HUGE; +#endif /* _DLL */ +#else /* ndef _NTSDK */ +/* current definition */ +_CRTIMP extern double _HUGE; +#endif /* _NTSDK */ +#endif /* __assembler */ + +#define HUGE_VAL _HUGE + + +/* Function prototypes */ + +#if !defined(__assembler) /* Protect from assembler */ +#if _M_MRX000 +_CRTIMP int __cdecl abs(int); +_CRTIMP double __cdecl acos(double); +_CRTIMP double __cdecl asin(double); +_CRTIMP double __cdecl atan(double); +_CRTIMP double __cdecl atan2(double, double); +_CRTIMP double __cdecl cos(double); +_CRTIMP double __cdecl cosh(double); +_CRTIMP double __cdecl exp(double); +_CRTIMP double __cdecl fabs(double); +_CRTIMP double __cdecl fmod(double, double); +_CRTIMP long __cdecl labs(long); +_CRTIMP double __cdecl log(double); +_CRTIMP double __cdecl log10(double); +_CRTIMP double __cdecl pow(double, double); +_CRTIMP double __cdecl sin(double); +_CRTIMP double __cdecl sinh(double); +_CRTIMP double __cdecl tan(double); +_CRTIMP double __cdecl tanh(double); +_CRTIMP double __cdecl sqrt(double); +#else + int __cdecl abs(int); + double __cdecl acos(double); + double __cdecl asin(double); + double __cdecl atan(double); + double __cdecl atan2(double, double); + double __cdecl cos(double); + double __cdecl cosh(double); + double __cdecl exp(double); + double __cdecl fabs(double); + double __cdecl fmod(double, double); + long __cdecl labs(long); + double __cdecl log(double); + double __cdecl log10(double); + double __cdecl pow(double, double); + double __cdecl sin(double); + double __cdecl sinh(double); + double __cdecl tan(double); + double __cdecl tanh(double); + double __cdecl sqrt(double); +#endif +_CRTIMP double __cdecl atof(const char *); +_CRTIMP double __cdecl _cabs(struct _complex); +_CRTIMP double __cdecl ceil(double); +_CRTIMP double __cdecl floor(double); +_CRTIMP double __cdecl frexp(double, int *); +_CRTIMP double __cdecl _hypot(double, double); +_CRTIMP double __cdecl _j0(double); +_CRTIMP double __cdecl _j1(double); +_CRTIMP double __cdecl _jn(int, double); +_CRTIMP double __cdecl ldexp(double, int); + int __cdecl _matherr(struct _exception *); +_CRTIMP double __cdecl modf(double, double *); + +_CRTIMP double __cdecl _y0(double); +_CRTIMP double __cdecl _y1(double); +_CRTIMP double __cdecl _yn(int, double); + + +#ifdef _M_MRX000 + +/* MIPS fast prototypes for float */ +/* ANSI C, 4.5 Mathematics */ + +/* 4.5.2 Trigonometric functions */ + +_CRTIMP float __cdecl acosf( float ); +_CRTIMP float __cdecl asinf( float ); +_CRTIMP float __cdecl atanf( float ); +_CRTIMP float __cdecl atan2f( float , float ); +_CRTIMP float __cdecl cosf( float ); +_CRTIMP float __cdecl sinf( float ); +_CRTIMP float __cdecl tanf( float ); + +/* 4.5.3 Hyperbolic functions */ +_CRTIMP float __cdecl coshf( float ); +_CRTIMP float __cdecl sinhf( float ); +_CRTIMP float __cdecl tanhf( float ); + +/* 4.5.4 Exponential and logarithmic functions */ +_CRTIMP float __cdecl expf( float ); +_CRTIMP float __cdecl logf( float ); +_CRTIMP float __cdecl log10f( float ); +_CRTIMP float __cdecl modff( float , float* ); + +/* 4.5.5 Power functions */ +_CRTIMP float __cdecl powf( float , float ); + float __cdecl sqrtf( float ); + +/* 4.5.6 Nearest integer, absolute value, and remainder functions */ + float __cdecl ceilf( float ); + float __cdecl fabsf( float ); + float __cdecl floorf( float ); +_CRTIMP float __cdecl fmodf( float , float ); + +_CRTIMP float __cdecl hypotf(float, float); + +#endif /* _M_MRX000 */ + +#if !defined(_M_M68K) +/* Macros defining long double functions to be their double counterparts + * (long double is synonymous with double in this implementation). + */ + + +#define acosl(x) ((long double)acos((double)(x))) +#define asinl(x) ((long double)asin((double)(x))) +#define atanl(x) ((long double)atan((double)(x))) +#define atan2l(x,y) ((long double)atan2((double)(x), (double)(y))) +#define _cabsl _cabs +#define ceill(x) ((long double)ceil((double)(x))) +#define cosl(x) ((long double)cos((double)(x))) +#define coshl(x) ((long double)cosh((double)(x))) +#define expl(x) ((long double)exp((double)(x))) +#define fabsl(x) ((long double)fabs((double)(x))) +#define floorl(x) ((long double)floor((double)(x))) +#define fmodl(x,y) ((long double)fmod((double)(x), (double)(y))) +#define frexpl(x,y) ((long double)frexp((double)(x), (y))) +#define _hypotl(x,y) ((long double)_hypot((double)(x), (double)(y))) +#define ldexpl(x,y) ((long double)ldexp((double)(x), (y))) +#define logl(x) ((long double)log((double)(x))) +#define log10l(x) ((long double)log10((double)(x))) +#define _matherrl _matherr +#define modfl(x,y) ((long double)modf((double)(x), (double *)(y))) +#define powl(x,y) ((long double)pow((double)(x), (double)(y))) +#define sinl(x) ((long double)sin((double)(x))) +#define sinhl(x) ((long double)sinh((double)(x))) +#define sqrtl(x) ((long double)sqrt((double)(x))) +#define tanl(x) ((long double)tan((double)(x))) +#define tanhl(x) ((long double)tanh((double)(x))) +#endif /* _M_M68K */ +#endif /* __assembler */ + +#if !__STDC__ + +/* Non-ANSI names for compatibility */ + +#define DOMAIN _DOMAIN +#define SING _SING +#define OVERFLOW _OVERFLOW +#define UNDERFLOW _UNDERFLOW +#define TLOSS _TLOSS +#define PLOSS _PLOSS + +#if !defined(_M_MPPC) && !defined(_M_M68K) +#define matherr _matherr +#endif /* !defined(_M_MPPC) && !defined(_M_M68K) */ + +#ifndef __assembler /* Protect from assembler */ + +#ifdef _NTSDK + +/* Definitions and declarations compatible with NT SDK */ + +#ifdef _DLL +#define HUGE (*HUGE_dll) +extern double * HUGE_dll; +#else /* ndef _DLL */ +extern double HUGE; +#endif /* _DLL */ + +#define cabs _cabs +#define hypot _hypot +#define j0 _j0 +#define j1 _j1 +#define jn _jn +#define y0 _y0 +#define y1 _y1 +#define yn _yn + +#else /* ndef _NTSDK */ + +/* Current definitions and declarations */ + +_CRTIMP extern double HUGE; + +_CRTIMP double __cdecl cabs(struct complex); +_CRTIMP double __cdecl hypot(double, double); +_CRTIMP double __cdecl j0(double); +_CRTIMP double __cdecl j1(double); +_CRTIMP double __cdecl jn(int, double); + int __cdecl matherr(struct _exception *); +_CRTIMP double __cdecl y0(double); +_CRTIMP double __cdecl y1(double); +_CRTIMP double __cdecl yn(int, double); + +#endif /* _NTSDK */ +#endif /* __assembler */ + +#endif /* __STDC__ */ + +#ifdef _M_M68K +/* 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 *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 + + +long double __cdecl acosl(long double); +long double __cdecl asinl(long double); +long double __cdecl atanl(long double); +long double __cdecl atan2l(long double, long double); +long double __cdecl _atold(const char *); +long double __cdecl _cabsl(struct _complexl); +long double __cdecl ceill(long double); +long double __cdecl cosl(long double); +long double __cdecl coshl(long double); +long double __cdecl expl(long double); +long double __cdecl fabsl(long double); +long double __cdecl floorl(long double); +long double __cdecl fmodl(long double, long double); +long double __cdecl frexpl(long double, int *); +long double __cdecl _hypotl(long double, long double); +long double __cdecl _j0l(long double); +long double __cdecl _j1l(long double); +long double __cdecl _jnl(int, long double); +long double __cdecl ldexpl(long double, int); +long double __cdecl logl(long double); +long double __cdecl log10l(long double); +int __cdecl _matherrl(struct _exceptionl *); +long double __cdecl modfl(long double, long double *); +long double __cdecl powl(long double, long double); +long double __cdecl sinl(long double); +long double __cdecl sinhl(long double); +long double __cdecl sqrtl(long double); +long double __cdecl tanl(long double); +long double __cdecl tanhl(long double); +long double __cdecl _y0l(long double); +long double __cdecl _y1l(long double); +long double __cdecl _ynl(int, long double); + +#endif /* _M_M68K */ + + +#ifdef __cplusplus +} +#endif + + +#ifdef _MSC_VER +#pragma pack(pop) +#endif /* _MSC_VER */ + +#endif /* _INC_MATH */ + |