Annotation of src/include/math.h, Revision 1.1
1.1 ! deraadt 1: /* $NetBSD: math.h,v 1.10 1994/10/26 00:56:05 cgd Exp $ */
! 2:
! 3: /*
! 4: * ====================================================
! 5: * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
! 6: *
! 7: * Developed at SunPro, a Sun Microsystems, Inc. business.
! 8: * Permission to use, copy, modify, and distribute this
! 9: * software is freely granted, provided that this notice
! 10: * is preserved.
! 11: * ====================================================
! 12: */
! 13:
! 14: /*
! 15: * @(#)fdlibm.h 5.1 93/09/24
! 16: */
! 17:
! 18: #ifndef _MATH_H_
! 19: #define _MATH_H_
! 20:
! 21: /*
! 22: * ANSI/POSIX
! 23: */
! 24: extern char __infinity[];
! 25: #define HUGE_VAL (*(double *) __infinity)
! 26:
! 27: /*
! 28: * XOPEN/SVID
! 29: */
! 30: #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
! 31: #define M_E 2.7182818284590452354 /* e */
! 32: #define M_LOG2E 1.4426950408889634074 /* log 2e */
! 33: #define M_LOG10E 0.43429448190325182765 /* log 10e */
! 34: #define M_LN2 0.69314718055994530942 /* log e2 */
! 35: #define M_LN10 2.30258509299404568402 /* log e10 */
! 36: #define M_PI 3.14159265358979323846 /* pi */
! 37: #define M_PI_2 1.57079632679489661923 /* pi/2 */
! 38: #define M_PI_4 0.78539816339744830962 /* pi/4 */
! 39: #define M_1_PI 0.31830988618379067154 /* 1/pi */
! 40: #define M_2_PI 0.63661977236758134308 /* 2/pi */
! 41: #define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
! 42: #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
! 43: #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
! 44:
! 45: #define MAXFLOAT ((float)3.40282346638528860e+38)
! 46: extern int signgam;
! 47:
! 48: #if !defined(_XOPEN_SOURCE)
! 49: enum fdversion {fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix};
! 50:
! 51: #define _LIB_VERSION_TYPE enum fdversion
! 52: #define _LIB_VERSION _fdlib_version
! 53:
! 54: /* if global variable _LIB_VERSION is not desirable, one may
! 55: * change the following to be a constant by:
! 56: * #define _LIB_VERSION_TYPE const enum version
! 57: * In that case, after one initializes the value _LIB_VERSION (see
! 58: * s_lib_version.c) during compile time, it cannot be modified
! 59: * in the middle of a program
! 60: */
! 61: extern _LIB_VERSION_TYPE _LIB_VERSION;
! 62:
! 63: #define _IEEE_ fdlibm_ieee
! 64: #define _SVID_ fdlibm_svid
! 65: #define _XOPEN_ fdlibm_xopen
! 66: #define _POSIX_ fdlibm_posix
! 67:
! 68: struct exception {
! 69: int type;
! 70: char *name;
! 71: double arg1;
! 72: double arg2;
! 73: double retval;
! 74: };
! 75:
! 76: #define HUGE MAXFLOAT
! 77:
! 78: /*
! 79: * set X_TLOSS = pi*2**52, which is possibly defined in <values.h>
! 80: * (one may replace the following line by "#include <values.h>")
! 81: */
! 82:
! 83: #define X_TLOSS 1.41484755040568800000e+16
! 84:
! 85: #define DOMAIN 1
! 86: #define SING 2
! 87: #define OVERFLOW 3
! 88: #define UNDERFLOW 4
! 89: #define TLOSS 5
! 90: #define PLOSS 6
! 91:
! 92: #endif /* !_XOPEN_SOURCE */
! 93: #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
! 94:
! 95:
! 96: #include <sys/cdefs.h>
! 97: __BEGIN_DECLS
! 98: /*
! 99: * ANSI/POSIX
! 100: */
! 101: extern double acos __P((double));
! 102: extern double asin __P((double));
! 103: extern double atan __P((double));
! 104: extern double atan2 __P((double, double));
! 105: extern double cos __P((double));
! 106: extern double sin __P((double));
! 107: extern double tan __P((double));
! 108:
! 109: extern double cosh __P((double));
! 110: extern double sinh __P((double));
! 111: extern double tanh __P((double));
! 112:
! 113: extern double exp __P((double));
! 114: extern double frexp __P((double, int *));
! 115: extern double ldexp __P((double, int));
! 116: extern double log __P((double));
! 117: extern double log10 __P((double));
! 118: extern double modf __P((double, double *));
! 119:
! 120: extern double pow __P((double, double));
! 121: extern double sqrt __P((double));
! 122:
! 123: extern double ceil __P((double));
! 124: extern double fabs __P((double));
! 125: extern double floor __P((double));
! 126: extern double fmod __P((double, double));
! 127:
! 128: #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
! 129: extern double erf __P((double));
! 130: extern double erfc __P((double));
! 131: extern double gamma __P((double));
! 132: extern double hypot __P((double, double));
! 133: extern int isinf __P((double));
! 134: extern int isnan __P((double));
! 135: extern int finite __P((double));
! 136: extern double j0 __P((double));
! 137: extern double j1 __P((double));
! 138: extern double jn __P((int, double));
! 139: extern double lgamma __P((double));
! 140: extern double y0 __P((double));
! 141: extern double y1 __P((double));
! 142: extern double yn __P((int, double));
! 143:
! 144: #if !defined(_XOPEN_SOURCE)
! 145: extern double acosh __P((double));
! 146: extern double asinh __P((double));
! 147: extern double atanh __P((double));
! 148: extern double cbrt __P((double));
! 149: extern double logb __P((double));
! 150: extern double nextafter __P((double, double));
! 151: extern double remainder __P((double, double));
! 152: extern double scalb __P((double, double));
! 153:
! 154: extern int matherr __P((struct exception *));
! 155:
! 156: /*
! 157: * IEEE Test Vector
! 158: */
! 159: extern double significand __P((double));
! 160:
! 161: /*
! 162: * Functions callable from C, intended to support IEEE arithmetic.
! 163: */
! 164: extern double copysign __P((double, double));
! 165: extern int ilogb __P((double));
! 166: extern double rint __P((double));
! 167: extern double scalbn __P((double, int));
! 168:
! 169: /*
! 170: * BSD math library entry points
! 171: */
! 172: extern double cabs();
! 173: extern double drem __P((double, double));
! 174: extern double expm1 __P((double));
! 175: extern double log1p __P((double));
! 176:
! 177: /*
! 178: * Reentrant version of gamma & lgamma; passes signgam back by reference
! 179: * as the second argument; user must allocate space for signgam.
! 180: */
! 181: #ifdef _REENTRANT
! 182: extern double gamma_r __P((double, int *));
! 183: extern double lgamma_r __P((double, int *));
! 184: #endif /* _REENTRANT */
! 185:
! 186:
! 187: /* float versions of ANSI/POSIX functions */
! 188: extern float acosf __P((float));
! 189: extern float asinf __P((float));
! 190: extern float atanf __P((float));
! 191: extern float atan2f __P((float, float));
! 192: extern float cosf __P((float));
! 193: extern float sinf __P((float));
! 194: extern float tanf __P((float));
! 195:
! 196: extern float coshf __P((float));
! 197: extern float sinhf __P((float));
! 198: extern float tanhf __P((float));
! 199:
! 200: extern float expf __P((float));
! 201: extern float frexpf __P((float, int *));
! 202: extern float ldexpf __P((float, int));
! 203: extern float logf __P((float));
! 204: extern float log10f __P((float));
! 205: extern float modff __P((float, float *));
! 206:
! 207: extern float powf __P((float, float));
! 208: extern float sqrtf __P((float));
! 209:
! 210: extern float ceilf __P((float));
! 211: extern float fabsf __P((float));
! 212: extern float floorf __P((float));
! 213: extern float fmodf __P((float, float));
! 214:
! 215: extern float erff __P((float));
! 216: extern float erfcf __P((float));
! 217: extern float gammaf __P((float));
! 218: extern float hypotf __P((float, float));
! 219: extern int isnanf __P((float));
! 220: extern int finitef __P((float));
! 221: extern float j0f __P((float));
! 222: extern float j1f __P((float));
! 223: extern float jnf __P((int, float));
! 224: extern float lgammaf __P((float));
! 225: extern float y0f __P((float));
! 226: extern float y1f __P((float));
! 227: extern float ynf __P((int, float));
! 228:
! 229: extern float acoshf __P((float));
! 230: extern float asinhf __P((float));
! 231: extern float atanhf __P((float));
! 232: extern float cbrtf __P((float));
! 233: extern float logbf __P((float));
! 234: extern float nextafterf __P((float, float));
! 235: extern float remainderf __P((float, float));
! 236: extern float scalbf __P((float, float));
! 237:
! 238: /*
! 239: * float version of IEEE Test Vector
! 240: */
! 241: extern float significandf __P((float));
! 242:
! 243: /*
! 244: * Float versions of functions callable from C, intended to support
! 245: * IEEE arithmetic.
! 246: */
! 247: extern float copysignf __P((float, float));
! 248: extern int ilogbf __P((float));
! 249: extern float rintf __P((float));
! 250: extern float scalbnf __P((float, int));
! 251:
! 252: /*
! 253: * float versions of BSD math library entry points
! 254: */
! 255: extern float cabsf ();
! 256: extern float dremf __P((float, float));
! 257: extern float expm1f __P((float));
! 258: extern float log1pf __P((float));
! 259:
! 260: /*
! 261: * Float versions of reentrant version of gamma & lgamma; passes
! 262: * signgam back by reference as the second argument; user must
! 263: * allocate space for signgam.
! 264: */
! 265: #ifdef _REENTRANT
! 266: extern float gammaf_r __P((float, int *));
! 267: extern float lgammaf_r __P((float, int *));
! 268: #endif /* _REENTRANT */
! 269:
! 270: #endif /* !_XOPEN_SOURCE */
! 271: #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
! 272: __END_DECLS
! 273:
! 274: #endif /* _MATH_H_ */