003 File Manager
Current Path:
/usr/src/lib/msun/src
usr
/
src
/
lib
/
msun
/
src
/
📁
..
📄
catrig.c
(18.56 KB)
📄
catrigf.c
(9.27 KB)
📄
catrigl.c
(10.37 KB)
📄
e_acos.c
(3.38 KB)
📄
e_acosf.c
(1.99 KB)
📄
e_acosh.c
(1.63 KB)
📄
e_acoshf.c
(1.27 KB)
📄
e_acoshl.c
(2.19 KB)
📄
e_acosl.c
(2.16 KB)
📄
e_asin.c
(3.55 KB)
📄
e_asinf.c
(1.58 KB)
📄
e_asinl.c
(1.85 KB)
📄
e_atan2.c
(3.74 KB)
📄
e_atan2f.c
(2.63 KB)
📄
e_atan2l.c
(3.42 KB)
📄
e_atanh.c
(1.64 KB)
📄
e_atanhf.c
(1.12 KB)
📄
e_atanhl.c
(1.76 KB)
📄
e_cosh.c
(2.21 KB)
📄
e_coshf.c
(1.45 KB)
📄
e_coshl.c
(4 KB)
📄
e_exp.c
(5.07 KB)
📄
e_expf.c
(2.7 KB)
📄
e_fmod.c
(3.34 KB)
📄
e_fmodf.c
(2.59 KB)
📄
e_fmodl.c
(3.77 KB)
📄
e_gamma.c
(725 B)
📄
e_gamma_r.c
(801 B)
📄
e_gammaf.c
(814 B)
📄
e_gammaf_r.c
(890 B)
📄
e_hypot.c
(3.22 KB)
📄
e_hypotf.c
(2.15 KB)
📄
e_hypotl.c
(3.16 KB)
📄
e_j0.c
(14.39 KB)
📄
e_j0f.c
(10.31 KB)
📄
e_j1.c
(14.12 KB)
📄
e_j1f.c
(9.98 KB)
📄
e_jn.c
(7.08 KB)
📄
e_jnf.c
(4.75 KB)
📄
e_lgamma.c
(819 B)
📄
e_lgamma_r.c
(10.7 KB)
📄
e_lgammaf.c
(820 B)
📄
e_lgammaf_r.c
(5.82 KB)
📄
e_lgammal.c
(599 B)
📄
e_log.c
(4.42 KB)
📄
e_log10.c
(2.5 KB)
📄
e_log10f.c
(1.93 KB)
📄
e_log2.c
(3.64 KB)
📄
e_log2f.c
(2.37 KB)
📄
e_logf.c
(2.36 KB)
📄
e_pow.c
(9.84 KB)
📄
e_powf.c
(7.34 KB)
📄
e_rem_pio2.c
(4.7 KB)
📄
e_rem_pio2f.c
(1.96 KB)
📄
e_remainder.c
(1.75 KB)
📄
e_remainderf.c
(1.41 KB)
📄
e_remainderl.c
(1.55 KB)
📄
e_scalb.c
(1.07 KB)
📄
e_scalbf.c
(1.06 KB)
📄
e_sinh.c
(2.03 KB)
📄
e_sinhf.c
(1.43 KB)
📄
e_sinhl.c
(4.12 KB)
📄
e_sqrt.c
(14.12 KB)
📄
e_sqrtf.c
(1.91 KB)
📄
e_sqrtl.c
(4.28 KB)
📄
fenv-softfloat.h
(4.96 KB)
📄
imprecise.c
(2.08 KB)
📄
k_cos.c
(2.75 KB)
📄
k_cosf.c
(1.23 KB)
📄
k_exp.c
(3.55 KB)
📄
k_expf.c
(2.67 KB)
📄
k_log.h
(3.34 KB)
📄
k_logf.h
(992 B)
📄
k_rem_pio2.c
(15.51 KB)
📄
k_sin.c
(2.27 KB)
📄
k_sincos.h
(1.7 KB)
📄
k_sincosf.h
(1.38 KB)
📄
k_sincosl.h
(4.82 KB)
📄
k_sinf.c
(1.21 KB)
📄
k_tan.c
(3.93 KB)
📄
k_tanf.c
(1.97 KB)
📄
math.h
(13.92 KB)
📄
math_private.h
(24.72 KB)
📄
s_asinh.c
(1.64 KB)
📄
s_asinhf.c
(1.32 KB)
📄
s_asinhl.c
(2.41 KB)
📄
s_atan.c
(4.08 KB)
📄
s_atanf.c
(2.42 KB)
📄
s_atanl.c
(2.32 KB)
📄
s_carg.c
(1.55 KB)
📄
s_cargf.c
(1.55 KB)
📄
s_cargl.c
(1.57 KB)
📄
s_cbrt.c
(4.03 KB)
📄
s_cbrtf.c
(1.85 KB)
📄
s_cbrtl.c
(3.34 KB)
📄
s_ccosh.c
(5.01 KB)
📄
s_ccoshf.c
(3.08 KB)
📄
s_ceil.c
(1.73 KB)
📄
s_ceilf.c
(1.24 KB)
📄
s_ceill.c
(2.38 KB)
📄
s_cexp.c
(2.88 KB)
📄
s_cexpf.c
(2.85 KB)
📄
s_cimag.c
(1.53 KB)
📄
s_cimagf.c
(1.53 KB)
📄
s_cimagl.c
(1.55 KB)
📄
s_clog.c
(5.06 KB)
📄
s_clogf.c
(5.01 KB)
📄
s_clogl.c
(5.49 KB)
📄
s_conj.c
(1.51 KB)
📄
s_conjf.c
(1.52 KB)
📄
s_conjl.c
(1.53 KB)
📄
s_copysign.c
(808 B)
📄
s_copysignf.c
(905 B)
📄
s_copysignl.c
(1.57 KB)
📄
s_cos.c
(2.19 KB)
📄
s_cosf.c
(2.2 KB)
📄
s_cosl.c
(2.55 KB)
📄
s_cpow.c
(1.8 KB)
📄
s_cpowf.c
(1.79 KB)
📄
s_cpowl.c
(1.83 KB)
📄
s_cproj.c
(1.74 KB)
📄
s_cprojf.c
(1.66 KB)
📄
s_cprojl.c
(1.68 KB)
📄
s_creal.c
(1.45 KB)
📄
s_crealf.c
(1.45 KB)
📄
s_creall.c
(1.46 KB)
📄
s_csinh.c
(5.01 KB)
📄
s_csinhf.c
(3.06 KB)
📄
s_csqrt.c
(3.29 KB)
📄
s_csqrtf.c
(2.65 KB)
📄
s_csqrtl.c
(3.78 KB)
📄
s_ctanh.c
(4.32 KB)
📄
s_ctanhf.c
(2.45 KB)
📄
s_erf.c
(11 KB)
📄
s_erff.c
(5.11 KB)
📄
s_exp2.c
(14.03 KB)
📄
s_exp2f.c
(4.14 KB)
📄
s_expm1.c
(7.18 KB)
📄
s_expm1f.c
(3.41 KB)
📄
s_fabs.c
(677 B)
📄
s_fabsf.c
(765 B)
📄
s_fabsl.c
(1.68 KB)
📄
s_fdim.c
(1.7 KB)
📄
s_finite.c
(700 B)
📄
s_finitef.c
(796 B)
📄
s_floor.c
(1.74 KB)
📄
s_floorf.c
(1.41 KB)
📄
s_floorl.c
(2.38 KB)
📄
s_fma.c
(7.92 KB)
📄
s_fmaf.c
(2.57 KB)
📄
s_fmal.c
(7.38 KB)
📄
s_fmax.c
(2.01 KB)
📄
s_fmaxf.c
(1.88 KB)
📄
s_fmaxl.c
(1.98 KB)
📄
s_fmin.c
(2.01 KB)
📄
s_fminf.c
(1.88 KB)
📄
s_fminl.c
(1.98 KB)
📄
s_frexp.c
(1.31 KB)
📄
s_frexpf.c
(1.02 KB)
📄
s_frexpl.c
(2 KB)
📄
s_ilogb.c
(1.14 KB)
📄
s_ilogbf.c
(976 B)
📄
s_ilogbl.c
(1.21 KB)
📄
s_isfinite.c
(1.72 KB)
📄
s_isnan.c
(2.1 KB)
📄
s_isnormal.c
(1.78 KB)
📄
s_llrint.c
(156 B)
📄
s_llrintf.c
(157 B)
📄
s_llrintl.c
(163 B)
📄
s_llround.c
(215 B)
📄
s_llroundf.c
(216 B)
📄
s_llroundl.c
(222 B)
📄
s_log1p.c
(5.6 KB)
📄
s_log1pf.c
(3.14 KB)
📄
s_logb.c
(1.13 KB)
📄
s_logbf.c
(1023 B)
📄
s_logbl.c
(1.24 KB)
📄
s_lrint.c
(2.1 KB)
📄
s_lrintf.c
(151 B)
📄
s_lrintl.c
(157 B)
📄
s_lround.c
(2.45 KB)
📄
s_lroundf.c
(208 B)
📄
s_lroundl.c
(214 B)
📄
s_modf.c
(1.88 KB)
📄
s_modff.c
(1.39 KB)
📄
s_modfl.c
(3.41 KB)
📄
s_nan.c
(3.32 KB)
📄
s_nearbyint.c
(2.29 KB)
📄
s_nextafter.c
(2.03 KB)
📄
s_nextafterf.c
(1.61 KB)
📄
s_nextafterl.c
(2.02 KB)
📄
s_nexttoward.c
(1.75 KB)
📄
s_nexttowardf.c
(1.42 KB)
📄
s_remquo.c
(3.86 KB)
📄
s_remquof.c
(3.02 KB)
📄
s_remquol.c
(4.42 KB)
📄
s_rint.c
(2.33 KB)
📄
s_rintf.c
(1.22 KB)
📄
s_rintl.c
(2.77 KB)
📄
s_round.c
(1.83 KB)
📄
s_roundf.c
(1.74 KB)
📄
s_roundl.c
(1.84 KB)
📄
s_scalbln.c
(1.82 KB)
📄
s_scalbn.c
(1.9 KB)
📄
s_scalbnf.c
(1.67 KB)
📄
s_scalbnl.c
(1.9 KB)
📄
s_signbit.c
(1.7 KB)
📄
s_signgam.c
(61 B)
📄
s_significand.c
(727 B)
📄
s_significandf.c
(691 B)
📄
s_sin.c
(2.18 KB)
📄
s_sincos.c
(1.6 KB)
📄
s_sincosf.c
(2.57 KB)
📄
s_sincosl.c
(2.67 KB)
📄
s_sinf.c
(2.18 KB)
📄
s_sinl.c
(2.49 KB)
📄
s_tan.c
(2.02 KB)
📄
s_tanf.c
(1.97 KB)
📄
s_tanh.c
(2.02 KB)
📄
s_tanhf.c
(1.39 KB)
📄
s_tanhl.c
(5.09 KB)
📄
s_tanl.c
(2.6 KB)
📄
s_tgammaf.c
(1.75 KB)
📄
s_trunc.c
(1.5 KB)
📄
s_truncf.c
(1.21 KB)
📄
s_truncl.c
(1.61 KB)
📄
w_cabs.c
(365 B)
📄
w_cabsf.c
(350 B)
📄
w_cabsl.c
(357 B)
📄
w_drem.c
(211 B)
📄
w_dremf.c
(254 B)
Editing: s_atan.c
/* @(#)s_atan.c 5.1 93/09/24 */ /* * ==================================================== * 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. * ==================================================== */ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); /* atan(x) * Method * 1. Reduce x to positive by atan(x) = -atan(-x). * 2. According to the integer k=4t+0.25 chopped, t=x, the argument * is further reduced to one of the following intervals and the * arctangent of t is evaluated by the corresponding formula: * * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) ) * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) ) * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) ) * [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) * * Constants: * The hexadecimal values are the intended ones for the following * constants. The decimal values may be used, provided that the * compiler will convert from decimal to binary accurately enough * to produce the hexadecimal values shown. */ #include <float.h> #include "math.h" #include "math_private.h" static const double atanhi[] = { 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */ 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */ 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */ 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */ }; static const double atanlo[] = { 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */ 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */ 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */ 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */ }; static const double aT[] = { 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */ -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */ 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */ -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */ 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */ -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */ 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */ -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */ 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */ -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */ 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ }; static const double one = 1.0, huge = 1.0e300; double atan(double x) { double w,s1,s2,z; int32_t ix,hx,id; GET_HIGH_WORD(hx,x); ix = hx&0x7fffffff; if(ix>=0x44100000) { /* if |x| >= 2^66 */ u_int32_t low; GET_LOW_WORD(low,x); if(ix>0x7ff00000|| (ix==0x7ff00000&&(low!=0))) return x+x; /* NaN */ if(hx>0) return atanhi[3]+*(volatile double *)&atanlo[3]; else return -atanhi[3]-*(volatile double *)&atanlo[3]; } if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ if (ix < 0x3e400000) { /* |x| < 2^-27 */ if(huge+x>one) return x; /* raise inexact */ } id = -1; } else { x = fabs(x); if (ix < 0x3ff30000) { /* |x| < 1.1875 */ if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ id = 0; x = (2.0*x-one)/(2.0+x); } else { /* 11/16<=|x|< 19/16 */ id = 1; x = (x-one)/(x+one); } } else { if (ix < 0x40038000) { /* |x| < 2.4375 */ id = 2; x = (x-1.5)/(one+1.5*x); } else { /* 2.4375 <= |x| < 2^66 */ id = 3; x = -1.0/x; } }} /* end of argument reduction */ z = x*x; w = z*z; /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10]))))); s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9])))); if (id<0) return x - x*(s1+s2); else { z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x); return (hx<0)? -z:z; } } #if LDBL_MANT_DIG == 53 __weak_reference(atan, atanl); #endif
Upload File
Create Folder