From fa6928e23fb6dcff6ba9e409ac82c76e777dfdaa Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Fri, 3 Feb 2023 13:27:31 -0400 Subject: sdk: Use `NMWException.h`, and `fdlibm.h` from prime decomp project --- include/fdlibm.h | 152 ++++++++++++++----------------------------------------- 1 file changed, 37 insertions(+), 115 deletions(-) (limited to 'include/fdlibm.h') diff --git a/include/fdlibm.h b/include/fdlibm.h index 2b3388c..5040cae 100644 --- a/include/fdlibm.h +++ b/include/fdlibm.h @@ -1,46 +1,34 @@ -#ifndef _FDLIBM_H -#define _FDLIBM_H - -/* @(#)fdlibm.h 1.5 04/04/22 */ +/* @(#)fdlibm.h 1.2 95/01/04 */ /* * ==================================================== - * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. * + * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ - -#ifdef __cplusplus -extern "C" { -#endif // ifdef __cplusplus - -/* Sometimes it's necessary to define __LITTLE_ENDIAN explicitly - but these catch some common cases. */ - -#if defined(i386) || defined(i486) || defined(intel) || defined(x86) || defined(i86pc) || defined(__alpha) || defined(__osf__) -#define __LITTLE_ENDIAN +#ifdef __STDC__ +#include +#include #endif -#ifdef __LITTLE_ENDIAN -#define __HI(x) *(1 + (int*)&x) -#define __LO(x) *(int*)&x -#define __HIp(x) *(1 + (int*)x) -#define __LOp(x) *(int*)x +#define _IEEE_LIBM + +#if __option(little_endian) +#define __HIp(x) *(1 + (_INT32*)x) +#define __LOp(x) *(_INT32*)x #else -#define __HI(x) *(int*)&x -#define __LO(x) *(1 + (int*)&x) -#define __HIp(x) *(int*)x -#define __LOp(x) *(1 + (int*)x) +#define __HIp(x) *(_INT32*)x +#define __LOp(x) *(1 + (_INT32*)x) #endif -// TODO: should __STDC__ actually be defined? -// #ifdef __STDC__ +#ifdef __STDC__ #define __P(p) p -// #else -// #define __P(p) () -// #endif +#else +#define __P(p) () +#endif /* * ANSI/POSIX @@ -50,10 +38,10 @@ extern int signgam; #define MAXFLOAT ((float)3.40282346638528860e+38) -enum fdversion { fdlibmIeee = -1, fdlibmSvid, fdlibmXopen, fdlibmPosix }; +enum fdversion { fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix }; #define _LIB_VERSION_TYPE enum fdversion -#define _LIB_VERSION _fdlib_version +#define _LIB_VERSION _fdlib_version /* if global variable _LIB_VERSION is not desirable, one may * change the following to be a constant by: @@ -64,17 +52,17 @@ enum fdversion { fdlibmIeee = -1, fdlibmSvid, fdlibmXopen, fdlibmPosix }; */ extern _LIB_VERSION_TYPE _LIB_VERSION; -#define _IEEE_ fdlibmIeee -#define _SVID_ fdlibmSvid -#define _XOPEN_ fdlibmXopen -#define _POSIX_ fdlibmPosix +#define _IEEE_ fdlibm_ieee +#define _SVID_ fdlibm_svid +#define _XOPEN_ fdlibm_xopen +#define _POSIX_ fdlibm_posix struct exception { - int type; - char* name; - double arg1; - double arg2; - double retval; + int type; + char* name; + double arg1; + double arg2; + double retval; }; #define HUGE MAXFLOAT @@ -86,69 +74,16 @@ struct exception { #define X_TLOSS 1.41484755040568800000e+16 -#define DOMAIN 1 -#define SING 2 -#define OVERFLOW 3 +#define DOMAIN 1 +#define SING 2 +#define OVERFLOW 3 #define UNDERFLOW 4 -#define TLOSS 5 -#define PLOSS 6 +#define TLOSS 5 +#define PLOSS 6 /* * ANSI/POSIX */ -extern double acos __P((double)); -extern double asin __P((double)); -extern double atan __P((double)); -extern double atan2 __P((double, double)); -extern double cos __P((double)); -extern double sin __P((double)); -extern double tan __P((double)); - -extern double cosh __P((double)); -extern double sinh __P((double)); -extern double tanh __P((double)); - -extern double exp __P((double)); -extern double frexp __P((double, int*)); -extern double ldexp __P((double, int)); -extern double log __P((double)); -extern double log10 __P((double)); -extern double modf __P((double, double*)); - -extern double pow __P((double, double)); -extern double sqrt __P((double)); - -extern double ceil __P((double)); -extern double fabs __P((double)); -extern double floor __P((double)); -extern double fmod __P((double, double)); - -extern double erf __P((double)); -extern double erfc __P((double)); -extern double gamma __P((double)); -extern double hypot __P((double, double)); -extern int isnan __P((double)); -extern int finite __P((double)); -extern double j0 __P((double)); -extern double j1 __P((double)); -extern double jn __P((int, double)); -extern double lgamma __P((double)); -extern double y0 __P((double)); -extern double y1 __P((double)); -extern double yn __P((int, double)); - -extern double acosh __P((double)); -extern double asinh __P((double)); -extern double atanh __P((double)); -extern double cbrt __P((double)); -extern double logb __P((double)); -extern double nextafter __P((double, double)); -extern double remainder __P((double, double)); -#ifdef _SCALB_INT -extern double scalb __P((double, int)); -#else -extern double scalb __P((double, double)); -#endif extern int matherr __P((struct exception*)); @@ -160,16 +95,12 @@ extern double significand __P((double)); /* * Functions callable from C, intended to support IEEE arithmetic. */ -extern double copysign __P((double, double)); + extern int ilogb __P((double)); -extern double rint __P((double)); -extern double scalbn __P((double, int)); /* * BSD math library entry points */ -extern double expm1 __P((double)); -extern double log1p __P((double)); /* * Reentrant version of gamma & lgamma; passes signgam back by reference @@ -206,22 +137,13 @@ extern double __ieee754_y1 __P((double)); extern double __ieee754_jn __P((int, double)); extern double __ieee754_yn __P((int, double)); extern double __ieee754_remainder __P((double, double)); -extern int __ieee754_remPio2 __P((double, double*)); -#ifdef _SCALB_INT +extern int __ieee754_rem_pio2 __P((double, double*)); + extern double __ieee754_scalb __P((double, int)); -#else -extern double __ieee754_scalb __P((double, double)); -#endif /* fdlibm kernel function */ extern double __kernel_standard __P((double, double, int)); extern double __kernel_sin __P((double, double, int)); extern double __kernel_cos __P((double, double)); extern double __kernel_tan __P((double, double, int)); -extern int __kernel_remPio2 __P((double*, double*, int, int, int, const int*)); - -#ifdef __cplusplus -}; -#endif // ifdef __cplusplus - -#endif +extern int __kernel_rem_pio2 __P((double*, double*, int, int, int, const int*)); -- cgit v1.2.3-13-gbd6f