1 /* derived from /netlib/fdlibm */ 2 #include "lib9.h" 3 4 /* @(#)fdlibm.h 1.5 95/01/18 */ 5 /* 6 * ==================================================== 7 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 8 * 9 * Developed at SunSoft, a Sun Microsystems, Inc. business. 10 * Permission to use, copy, modify, and distribute this 11 * software is freely granted, provided that this notice 12 * is preserved. 13 * ==================================================== 14 */ 15 16 17 #ifdef USE_FPdbleword 18 #define __HI(x) ((FPdbleword*)&x)->hi 19 #define __LO(x) ((FPdbleword*)&x)->lo 20 #define __HIp(x) ((FPdbleword*)x)->hi 21 #define __LOp(x) ((FPdbleword*)x)->lo 22 #else 23 #ifdef __LITTLE_ENDIAN 24 #define __HI(x) *(1+(int*)&x) 25 #define __LO(x) *(int*)&x 26 #define __HIp(x) *(1+(int*)x) 27 #define __LOp(x) *(int*)x 28 #else 29 #define __HI(x) *(int*)&x 30 #define __LO(x) *(1+(int*)&x) 31 #define __HIp(x) *(int*)x 32 #define __LOp(x) *(1+(int*)x) 33 #endif 34 #endif 35 36 /* 37 * ANSI/POSIX 38 */ 39 extern double acos(double); 40 extern double asin(double); 41 extern double atan(double); 42 extern double atan2(double, double); 43 extern double cos(double); 44 extern double sin(double); 45 extern double tan(double); 46 47 extern double cosh(double); 48 extern double sinh(double); 49 extern double tanh(double); 50 51 extern double exp(double); 52 extern double frexp(double, int *); 53 extern double ldexp(double, int); 54 extern double log(double); 55 extern double log10(double); 56 extern double modf(double, double *); 57 58 extern double pow(double, double); 59 extern double sqrt(double); 60 61 extern double ceil(double); 62 extern double fabs(double); 63 extern double floor(double); 64 extern double fmod(double, double); 65 66 extern double erf(double); 67 extern double erfc(double); 68 extern double gamma(double); 69 extern double hypot(double, double); 70 extern int finite(double); 71 extern double j0(double); 72 extern double j1(double); 73 extern double jn(int, double); 74 extern double lgamma(double); 75 extern double y0(double); 76 extern double y1(double); 77 extern double yn(int, double); 78 79 extern double acosh(double); 80 extern double asinh(double); 81 extern double atanh(double); 82 extern double cbrt(double); 83 extern double logb(double); 84 extern double nextafter(double, double); 85 extern double remainder(double, double); 86 extern double scalb(double, double); 87 88 /* 89 * IEEE Test Vector 90 */ 91 extern double significand(double); 92 93 /* 94 * Functions callable from C, intended to support IEEE arithmetic. 95 */ 96 extern double copysign(double, double); 97 extern int ilogb(double); 98 extern double rint(double); 99 extern double scalbn(double, int); 100 101 /* 102 * BSD math library entry points 103 */ 104 extern double expm1(double); 105 extern double log1p(double); 106 107 /* 108 * Reentrant version of gamma & lgamma; passes signgam back by reference 109 * as the second argument; user must allocate space for signgam. 110 */ 111 #ifdef _REENTRANT 112 extern double gamma_r(double, int *); 113 extern double lgamma_r(double, int *); 114 #endif /* _REENTRANT */ 115 116 /* ieee style elementary functions */ 117 extern double __ieee754_sqrt(double); 118 extern double __ieee754_acos(double); 119 extern double __ieee754_acosh(double); 120 extern double __ieee754_log(double); 121 extern double __ieee754_atanh(double); 122 extern double __ieee754_asin(double); 123 extern double __ieee754_atan2(double,double); 124 extern double __ieee754_exp(double); 125 extern double __ieee754_cosh(double); 126 extern double __ieee754_fmod(double,double); 127 extern double __ieee754_pow(double,double); 128 extern double __ieee754_lgamma_r(double,int *); 129 extern double __ieee754_gamma_r(double,int *); 130 extern double __ieee754_lgamma(double); 131 extern double __ieee754_gamma(double); 132 extern double __ieee754_log10(double); 133 extern double __ieee754_sinh(double); 134 extern double __ieee754_hypot(double,double); 135 extern double __ieee754_j0(double); 136 extern double __ieee754_j1(double); 137 extern double __ieee754_y0(double); 138 extern double __ieee754_y1(double); 139 extern double __ieee754_jn(int,double); 140 extern double __ieee754_yn(int,double); 141 extern double __ieee754_remainder(double,double); 142 extern int __ieee754_rem_pio2(double,double*); 143 extern double __ieee754_scalb(double,int); 144 145 /* fdlibm kernel function */ 146 extern double __kernel_standard(double,double,int); 147 extern double __kernel_sin(double,double,int); 148 extern double __kernel_cos(double,double); 149 extern double __kernel_tan(double,double,int); 150 extern int __kernel_rem_pio2(double*,double*,int,int,int,const int*); 151