Search
lxdream.org :: lxdream/test/include/math.h :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename test/include/math.h
changeset 185:6755a04c447f
author nkeynes
date Wed Aug 02 04:13:15 2006 +0000 (17 years ago)
permissions -rw-r--r--
last change Add many more TA test cases (a couple of corner cases aren't 100% correct
yet, TBA)
Add new test "testregs" to check register masks (currently just PVR registers)
file annotate diff log raw
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/test/include/math.h Wed Aug 02 04:13:15 2006 +0000
1.3 @@ -0,0 +1,273 @@
1.4 +/* math.h -- Definitions for the math floating point package. */
1.5 +
1.6 +#ifndef _MATH_H_
1.7 +#ifdef __cplusplus
1.8 +extern "C" {
1.9 +#endif
1.10 +#define _MATH_H_
1.11 +
1.12 +#include <sys/reent.h>
1.13 +#include <machine/ieeefp.h>
1.14 +#include "_ansi.h"
1.15 +
1.16 +#ifndef HUGE_VAL
1.17 +
1.18 +/* Define HUGE_VAL as infinity, unless HUGE_VAL is already defined
1.19 + (which might have been done by something like math-68881.h). */
1.20 +
1.21 +union __dmath
1.22 +{
1.23 + __uint32_t i[2];
1.24 + double d;
1.25 +};
1.26 +
1.27 +extern const union __dmath __infinity;
1.28 +
1.29 +#define HUGE_VAL (__infinity.d)
1.30 +
1.31 +#endif /* ! defined (HUGE_VAL) */
1.32 +
1.33 +/* Reentrant ANSI C functions. */
1.34 +
1.35 +#ifndef __math_68881
1.36 +extern double atan _PARAMS((double));
1.37 +extern double cos _PARAMS((double));
1.38 +extern double sin _PARAMS((double));
1.39 +extern double tan _PARAMS((double));
1.40 +extern double tanh _PARAMS((double));
1.41 +extern double frexp _PARAMS((double, int *));
1.42 +extern double modf _PARAMS((double, double *));
1.43 +extern double ceil _PARAMS((double));
1.44 +extern double fabs _PARAMS((double));
1.45 +extern double floor _PARAMS((double));
1.46 +#endif /* ! defined (__math_68881) */
1.47 +
1.48 +/* Non reentrant ANSI C functions. */
1.49 +
1.50 +#ifndef _REENT_ONLY
1.51 +#ifndef __math_6881
1.52 +extern double acos _PARAMS((double));
1.53 +extern double asin _PARAMS((double));
1.54 +extern double atan2 _PARAMS((double, double));
1.55 +extern double cosh _PARAMS((double));
1.56 +extern double sinh _PARAMS((double));
1.57 +extern double exp _PARAMS((double));
1.58 +extern double ldexp _PARAMS((double, int));
1.59 +extern double log _PARAMS((double));
1.60 +extern double log10 _PARAMS((double));
1.61 +extern double pow _PARAMS((double, double));
1.62 +extern double sqrt _PARAMS((double));
1.63 +extern double fmod _PARAMS((double, double));
1.64 +#endif /* ! defined (__math_68881) */
1.65 +#endif /* ! defined (_REENT_ONLY) */
1.66 +
1.67 +#ifndef __STRICT_ANSI__
1.68 +
1.69 +/* Non ANSI double precision functions. */
1.70 +
1.71 +extern double infinity _PARAMS((void));
1.72 +extern double nan _PARAMS((void));
1.73 +extern int isnan _PARAMS((double));
1.74 +extern int isinf _PARAMS((double));
1.75 +extern int finite _PARAMS((double));
1.76 +extern double copysign _PARAMS((double, double));
1.77 +extern int ilogb _PARAMS((double));
1.78 +
1.79 +extern double asinh _PARAMS((double));
1.80 +extern double cbrt _PARAMS((double));
1.81 +extern double nextafter _PARAMS((double, double));
1.82 +extern double rint _PARAMS((double));
1.83 +extern double scalbn _PARAMS((double, int));
1.84 +
1.85 +#ifndef __math_68881
1.86 +extern double log1p _PARAMS((double));
1.87 +extern double expm1 _PARAMS((double));
1.88 +#endif /* ! defined (__math_68881) */
1.89 +
1.90 +#ifndef _REENT_ONLY
1.91 +extern double acosh _PARAMS((double));
1.92 +extern double atanh _PARAMS((double));
1.93 +extern double remainder _PARAMS((double, double));
1.94 +extern double gamma _PARAMS((double));
1.95 +extern double gamma_r _PARAMS((double, int *));
1.96 +extern double lgamma _PARAMS((double));
1.97 +extern double lgamma_r _PARAMS((double, int *));
1.98 +extern double erf _PARAMS((double));
1.99 +extern double erfc _PARAMS((double));
1.100 +extern double y0 _PARAMS((double));
1.101 +extern double y1 _PARAMS((double));
1.102 +extern double yn _PARAMS((int, double));
1.103 +extern double j0 _PARAMS((double));
1.104 +extern double j1 _PARAMS((double));
1.105 +extern double jn _PARAMS((int, double));
1.106 +#define log2(x) (log (x) / M_LOG2_E)
1.107 +
1.108 +#ifndef __math_68881
1.109 +extern double hypot _PARAMS((double, double));
1.110 +#endif
1.111 +
1.112 +extern double cabs();
1.113 +extern double drem _PARAMS((double, double));
1.114 +
1.115 +#endif /* ! defined (_REENT_ONLY) */
1.116 +
1.117 +/* Single precision versions of ANSI functions. */
1.118 +
1.119 +extern float atanf _PARAMS((float));
1.120 +extern float cosf _PARAMS((float));
1.121 +extern float sinf _PARAMS((float));
1.122 +extern float tanf _PARAMS((float));
1.123 +extern float tanhf _PARAMS((float));
1.124 +extern float frexpf _PARAMS((float, int *));
1.125 +extern float modff _PARAMS((float, float *));
1.126 +extern float ceilf _PARAMS((float));
1.127 +extern float fabsf _PARAMS((float));
1.128 +extern float floorf _PARAMS((float));
1.129 +
1.130 +#ifndef _REENT_ONLY
1.131 +extern float acosf _PARAMS((float));
1.132 +extern float asinf _PARAMS((float));
1.133 +extern float atan2f _PARAMS((float, float));
1.134 +extern float coshf _PARAMS((float));
1.135 +extern float sinhf _PARAMS((float));
1.136 +extern float expf _PARAMS((float));
1.137 +extern float ldexpf _PARAMS((float, int));
1.138 +extern float logf _PARAMS((float));
1.139 +extern float log10f _PARAMS((float));
1.140 +extern float powf _PARAMS((float, float));
1.141 +extern float sqrtf _PARAMS((float));
1.142 +extern float fmodf _PARAMS((float, float));
1.143 +#endif /* ! defined (_REENT_ONLY) */
1.144 +
1.145 +/* Other single precision functions. */
1.146 +
1.147 +extern float infinityf _PARAMS((void));
1.148 +extern float nanf _PARAMS((void));
1.149 +extern int isnanf _PARAMS((float));
1.150 +extern int isinff _PARAMS((float));
1.151 +extern int finitef _PARAMS((float));
1.152 +extern float copysignf _PARAMS((float, float));
1.153 +extern int ilogbf _PARAMS((float));
1.154 +
1.155 +extern float asinhf _PARAMS((float));
1.156 +extern float cbrtf _PARAMS((float));
1.157 +extern float nextafterf _PARAMS((float, float));
1.158 +extern float rintf _PARAMS((float));
1.159 +extern float scalbnf _PARAMS((float, int));
1.160 +extern float log1pf _PARAMS((float));
1.161 +extern float expm1f _PARAMS((float));
1.162 +
1.163 +#ifndef _REENT_ONLY
1.164 +extern float acoshf _PARAMS((float));
1.165 +extern float atanhf _PARAMS((float));
1.166 +extern float remainderf _PARAMS((float, float));
1.167 +extern float gammaf _PARAMS((float));
1.168 +extern float gammaf_r _PARAMS((float, int *));
1.169 +extern float lgammaf _PARAMS((float));
1.170 +extern float lgammaf_r _PARAMS((float, int *));
1.171 +extern float erff _PARAMS((float));
1.172 +extern float erfcf _PARAMS((float));
1.173 +extern float y0f _PARAMS((float));
1.174 +extern float y1f _PARAMS((float));
1.175 +extern float ynf _PARAMS((int, float));
1.176 +extern float j0f _PARAMS((float));
1.177 +extern float j1f _PARAMS((float));
1.178 +extern float jnf _PARAMS((int, float));
1.179 +#define log2f(x) (logf (x) / (float) M_LOG2_E)
1.180 +extern float hypotf _PARAMS((float, float));
1.181 +
1.182 +extern float cabsf();
1.183 +extern float dremf _PARAMS((float, float));
1.184 +
1.185 +#endif /* ! defined (_REENT_ONLY) */
1.186 +
1.187 +/* The gamma functions use a global variable, signgam. */
1.188 +
1.189 +extern int signgam;
1.190 +
1.191 +/* The exception structure passed to the matherr routine. */
1.192 +
1.193 +#ifdef __cplusplus
1.194 +struct __exception
1.195 +#else
1.196 +struct exception
1.197 +#endif
1.198 +{
1.199 + int type;
1.200 + char *name;
1.201 + double arg1;
1.202 + double arg2;
1.203 + double retval;
1.204 + int err;
1.205 +};
1.206 +
1.207 +#ifdef __cplusplus
1.208 +extern int matherr _PARAMS((struct __exception *e));
1.209 +#else
1.210 +extern int matherr _PARAMS((struct exception *e));
1.211 +#endif
1.212 +
1.213 +/* Values for the type field of struct exception. */
1.214 +
1.215 +#define DOMAIN 1
1.216 +#define SING 2
1.217 +#define OVERFLOW 3
1.218 +#define UNDERFLOW 4
1.219 +#define TLOSS 5
1.220 +#define PLOSS 6
1.221 +
1.222 +/* Useful constants. */
1.223 +
1.224 +#define M_E 2.7182818284590452354
1.225 +#define M_LOG2E 1.4426950408889634074
1.226 +#define M_LOG10E 0.43429448190325182765
1.227 +#define M_LN2 0.69314718055994530942
1.228 +#define M_LN10 2.30258509299404568402
1.229 +#define M_PI 3.14159265358979323846
1.230 +#define M_TWOPI (M_PI * 2.0)
1.231 +#define M_PI_2 1.57079632679489661923
1.232 +#define M_PI_4 0.78539816339744830962
1.233 +#define M_3PI_4 2.3561944901923448370E0
1.234 +#define M_SQRTPI 1.77245385090551602792981
1.235 +#define M_1_PI 0.31830988618379067154
1.236 +#define M_2_PI 0.63661977236758134308
1.237 +#define M_2_SQRTPI 1.12837916709551257390
1.238 +#define M_SQRT2 1.41421356237309504880
1.239 +#define M_SQRT1_2 0.70710678118654752440
1.240 +#define M_LN2LO 1.9082149292705877000E-10
1.241 +#define M_LN2HI 6.9314718036912381649E-1
1.242 +#define M_SQRT3 1.73205080756887719000
1.243 +#define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */
1.244 +#define M_LOG2_E 0.693147180559945309417
1.245 +#define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */
1.246 +
1.247 +/* Global control over fdlibm error handling. */
1.248 +
1.249 +enum __fdlibm_version
1.250 +{
1.251 + __fdlibm_ieee = -1,
1.252 + __fdlibm_svid,
1.253 + __fdlibm_xopen,
1.254 + __fdlibm_posix
1.255 +};
1.256 +
1.257 +#define _LIB_VERSION_TYPE enum __fdlibm_version
1.258 +#define _LIB_VERSION __fdlib_version
1.259 +
1.260 +extern _CONST _LIB_VERSION_TYPE _LIB_VERSION;
1.261 +
1.262 +#define _IEEE_ __fdlibm_ieee
1.263 +#define _SVID_ __fdlibm_svid
1.264 +#define _XOPEN_ __fdlibm_xopen
1.265 +#define _POSIX_ __fdlibm_posix
1.266 +
1.267 +#endif /* ! defined (__STRICT_ANSI__) */
1.268 +
1.269 +#ifdef __FAST_MATH__
1.270 +#include <machine/fastmath.h>
1.271 +#endif
1.272 +
1.273 +#ifdef __cplusplus
1.274 +}
1.275 +#endif
1.276 +#endif /* _MATH_H_ */
.