long double TSolver::gcalc(const char f,const long double a,const long double b,const long double step) //calculates function { #define ain(x) (a-step<=x && a+step>=x) #define bin(x) (b-step<=x && b+step>=x) #define angin(x) (torad(a)-step<x && torad(a)+step>x) switch (f) {case '+' : return a+b; case '-' : return a-b; case '*' : return a*b; case '/' : if (bin(0)) {Err=E_DEV_ZERO;return 0;};return a/b; case '!' : if (floorl(a)!=a) {Err=E_ARG;return 0;}return factor(a); case '_' : return -a; case cpi : return M_PI; case cx : return X; case fexp : return exp(a); case fln : if (a<0) {Err=E_ARG;return 0;}return logl(a); case flog : if (a<0) {Err=E_ARG;return 0;}return log10l(a); case flogn : if (a<0) {Err=E_ARG;return 0;}return log(a)/log(b); case '^': case f_op_pow: case fpow : if (a<0 && b<1 && b>0 && (!fmodl(b,2))) {Err=E_ARG;return 0;}return powl(a,b); case fsqr : return a*a; case f_op_root: case froot : if (a<0 && (!fmodl(b,2))){Err=E_ARG;return 0;} return (a>0 || (!fmodl(b,2)))?powl(a,1/b):-powl(-a,1/b); case fsqrt : if (a<0) {Err=E_ARG;return 0;}return sqrtl(a); case f_abs : return fabsl(a); case fsin : return sinl(a); case fcos : return cosl(a); case ftan : if (angin(M_PI_2) || angin(M_PI_2+M_PI)) {Err=E_ARG;return 0;} return tanl(a); case fctan : if (angin(0) || angin(M_PI)) {Err=E_ARG;return 0;} return 1/tanl(a); case fsin+ARC : if (fabsl(a)>1) {Err=E_ARG;return 0;} return asinl(a); case fcos+ARC : if (fabsl(a)>1) {Err=E_ARG;return 0;} return acosl(a); case ftan+ARC : return atanl(a); case fctan+ARC: return atanl(1/a); case fsin+HYP : return sinhl(a); case fcos+HYP : return coshl(a); case ftan+HYP : return tanhl(a); case fctan+HYP : return 1/tanhl(a); #ifndef _OLD_ case fsin+HYP+ARC : return asinhl(a); case fcos+HYP+ARC : return acoshl(a); case ftan+HYP+ARC : if (fabsl(a)>=1) {Err=E_ARG;return 0;} return atanhl(a); case fctan+HYP+ARC : if (angin(0)) {Err=E_ARG;return 0;} return atanhl(1/a); #endif default: return 0; } }
ld cal(ld x){ ld res = x * W * L; for(int i = 0; i < (n); ++i){ ld v = calcu(r[i], x); ld vball = 4 * (ld)(1.0) / 3 * (2 * acosl((ld)0)) * r[i] * r[i] * r[i]; if(v >= vball * w[i]) res -= vball * w[i]; else res -= v; } return res; }
long double angleBetween(const Vector2d &V1, const Vector2d &V2) { long double dotproduct = V1.dot(V2); long double length = V1.length() * V2.length(); if (length==0) return 0; long double quot = dotproduct / length; if (quot > 1 && quot < 1.0001) quot = 1; if (quot < -1 && quot > -1.0001) quot = -1; long double result = acosl( quot ); // 0 .. pi if (isleftof(Vector2d(0,0), V2, V1)) result = -result; return result; }
long double angleBetween(Vector2d V1, Vector2d V2) { long double result, dotproduct, lengtha, lengthb; dotproduct = (V1.x * V2.x) + (V1.y * V2.y); lengtha = V1.length();//sqrt(V1.x * V1.x + V1.y * V1.y); lengthb = V2.length();//sqrt(V2.x * V2.x + V2.y * V2.y); result = acosl( dotproduct / (lengtha * lengthb) ); if(result < 0) result += M_PI; else result -= M_PI; return result; }
/* Equ 20.2, 20.4 pg 126 */ void ln_get_equ_prec2 (struct ln_equ_posn * mean_position, double fromJD, double toJD, struct ln_equ_posn * position) { long double t, t2, t3, A, B, C, zeta, eta, theta, ra, dec, mean_ra, mean_dec, T, T2; /* change original ra and dec to radians */ mean_ra = ln_deg_to_rad (mean_position->ra); mean_dec = ln_deg_to_rad (mean_position->dec); /* calc t, T, zeta, eta and theta Equ 20.2 */ T = ((long double) (fromJD - JD2000)) / 36525.0; T *= 1.0 / 3600.0; t = ((long double) (toJD - fromJD)) / 36525.0; t *= 1.0 / 3600.0; T2 = T * T; t2 = t * t; t3 = t2 *t; zeta = (2306.2181 + 1.39656 * T - 0.000139 * T2) * t + (0.30188 - 0.000344 * T) * t2 + 0.017998 * t3; eta = (2306.2181 + 1.39656 * T - 0.000139 * T2) * t + (1.09468 + 0.000066 * T) * t2 + 0.018203 * t3; theta = (2004.3109 - 0.85330 * T - 0.000217 * T2) * t - (0.42665 + 0.000217 * T) * t2 - 0.041833 * t3; zeta = ln_deg_to_rad (zeta); eta = ln_deg_to_rad (eta); theta = ln_deg_to_rad (theta); /* calc A,B,C equ 20.4 */ A = cosl (mean_dec) * sinl (mean_ra + zeta); B = cosl (theta) * cosl (mean_dec) * cosl (mean_ra + zeta) - sinl (theta) * sinl (mean_dec); C = sinl (theta) * cosl (mean_dec) * cosl (mean_ra + zeta) + cosl (theta) * sinl (mean_dec); ra = atan2l (A,B) + eta; /* check for object near celestial pole */ if (mean_dec > (0.4 * M_PI) || mean_dec < (-0.4 * M_PI)) { /* close to pole */ dec = acosl (sqrt(A * A + B * B)); if (mean_dec < 0.) dec *= -1; /* 0 <= acos() <= PI */ } else { /* not close to pole */ dec = asinl (C); } /* change to degrees */ position->ra = ln_range_degrees (ln_rad_to_deg (ra)); position->dec = ln_rad_to_deg (dec); }
LONG_DOUBLE eval_expr_func(eval_context *ctx, ast_node *tree) { expr_func_data *func_data = (expr_func_data*)tree->data; if (strcmp(func_data->name, "sin") == 0) return sinl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "cos") == 0) return cosl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "tan") == 0) return tanl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "acos") == 0) return acosl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "asin") == 0) return asinl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "atan") == 0) return atanl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "cosh") == 0) return coshl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "sinh") == 0) return sinhl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "tanh") == 0) return tanhl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "log") == 0) return logl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "log10") == 0) return log10l(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "ceil") == 0) return ceill(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "fabs") == 0) return fabsl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "floor") == 0) return floorl(eval_expr(ctx, func_data->rhs)); else if (strcmp(func_data->name, "sqrt") == 0) return sqrtl(eval_expr(ctx, func_data->rhs)); else return eval_emit_error(ctx, "Unknown function %s.", func_data->name); }
/** * Calculate the distance between two geodetic location in miles. */ double shgeo_dist(shgeo_t *f_geo, shgeo_t *t_geo) { static const shnum_t mile_mod = 90.9; shnum_t theta, dist; shnum_t lat1, lat2; shnum_t lon1, lon2; shgeo_loc(f_geo, &lat1, &lon1, NULL); shgeo_loc(t_geo, &lat2, &lon2, NULL); theta = lon1 - lon2; dist = (sinl(_deg2rad(lat1)) * sinl(_deg2rad(lat2))) + (cosl(_deg2rad(lat1)) * cosl(_deg2rad(lat2)) * cosl(_deg2rad(theta))); dist = acosl(dist); dist = _rad2deg(dist); dist = dist * mile_mod; return ((double)dist); }
static TACommandVerdict acosl_cmd(TAThread thread,TAInputStream stream) { long double x, res; x = readLongDouble(&stream); START_TARGET_OPERATION(thread); errno = 0; res = acosl(x); END_TARGET_OPERATION(thread); writeInt(thread, errno); writeLongDouble(thread, res); sendResponse(thread); return taDefaultVerdict; }
/* Equ 20.3, 20.4 pg 126 */ void ln_get_equ_prec (struct ln_equ_posn * mean_position, double JD, struct ln_equ_posn * position) { long double t, t2, t3, A, B, C, zeta, eta, theta, ra, dec, mean_ra, mean_dec; /* change original ra and dec to radians */ mean_ra = ln_deg_to_rad (mean_position->ra); mean_dec = ln_deg_to_rad (mean_position->dec); /* calc t, zeta, eta and theta for J2000.0 Equ 20.3 */ t = (JD - JD2000) / 36525.0; t *= 1.0 / 3600.0; t2 = t * t; t3 = t2 *t; zeta = 2306.2181 * t + 0.30188 * t2 + 0.017998 * t3; eta = 2306.2181 * t + 1.09468 * t2 + 0.041833 * t3; theta = 2004.3109 * t - 0.42665 * t2 - 0.041833 * t3; zeta = ln_deg_to_rad (zeta); eta = ln_deg_to_rad (eta); theta = ln_deg_to_rad (theta); /* calc A,B,C equ 20.4 */ A = cosl (mean_dec) * sinl (mean_ra + zeta); B = cosl (theta) * cosl (mean_dec) * cosl (mean_ra + zeta) - sinl (theta) * sinl (mean_dec); C = sinl (theta) * cosl (mean_dec) * cosl (mean_ra + zeta) + cosl (theta) * sinl (mean_dec); ra = atan2l (A,B) + eta; /* check for object near celestial pole */ if (mean_dec > (0.4 * M_PI) || mean_dec < (-0.4 * M_PI)) { /* close to pole */ dec = acosl (sqrt(A * A + B * B)); if (mean_dec < 0.) dec *= -1; /* 0 <= acos() <= PI */ } else { /* not close to pole */ dec = asinl (C); } /* change to degrees */ position->ra = ln_range_degrees (ln_rad_to_deg (ra)); position->dec = ln_rad_to_deg (dec); }
/* Tests along the real and imaginary axes. */ void test_axes(void) { static const long double nums[] = { -2, -1, -0.5, 0.5, 1, 2 }; long double complex z; int i; for (i = 0; i < sizeof(nums) / sizeof(nums[0]); i++) { /* Real axis */ z = CMPLXL(nums[i], 0.0); if (fabs(nums[i]) <= 1) { testall_tol(cacosh, z, CMPLXL(0.0, acos(nums[i])), 1); testall_tol(cacos, z, CMPLXL(acosl(nums[i]), -0.0), 1); testall_tol(casin, z, CMPLXL(asinl(nums[i]), 0.0), 1); testall_tol(catanh, z, CMPLXL(atanh(nums[i]), 0.0), 1); } else { testall_tol(cacosh, z, CMPLXL(acosh(fabs(nums[i])), (nums[i] < 0) ? pi : 0), 1); testall_tol(cacos, z, CMPLXL((nums[i] < 0) ? pi : 0, -acosh(fabs(nums[i]))), 1); testall_tol(casin, z, CMPLXL(copysign(pi / 2, nums[i]), acosh(fabs(nums[i]))), 1); testall_tol(catanh, z, CMPLXL(atanh(1 / nums[i]), pi / 2), 1); } testall_tol(casinh, z, CMPLXL(asinh(nums[i]), 0.0), 1); testall_tol(catan, z, CMPLXL(atan(nums[i]), 0), 1); /* TODO: Test the imaginary axis. */ } }
void domathl (void) { #ifndef NO_LONG_DOUBLE long double f1; long double f2; int i1; f1 = acosl(0.0); fprintf( stdout, "acosl : %Lf\n", f1); f1 = acoshl(0.0); fprintf( stdout, "acoshl : %Lf\n", f1); f1 = asinl(1.0); fprintf( stdout, "asinl : %Lf\n", f1); f1 = asinhl(1.0); fprintf( stdout, "asinhl : %Lf\n", f1); f1 = atanl(M_PI_4); fprintf( stdout, "atanl : %Lf\n", f1); f1 = atan2l(2.3, 2.3); fprintf( stdout, "atan2l : %Lf\n", f1); f1 = atanhl(1.0); fprintf( stdout, "atanhl : %Lf\n", f1); f1 = cbrtl(27.0); fprintf( stdout, "cbrtl : %Lf\n", f1); f1 = ceill(3.5); fprintf( stdout, "ceill : %Lf\n", f1); f1 = copysignl(3.5, -2.5); fprintf( stdout, "copysignl : %Lf\n", f1); f1 = cosl(M_PI_2); fprintf( stdout, "cosl : %Lf\n", f1); f1 = coshl(M_PI_2); fprintf( stdout, "coshl : %Lf\n", f1); f1 = erfl(42.0); fprintf( stdout, "erfl : %Lf\n", f1); f1 = erfcl(42.0); fprintf( stdout, "erfcl : %Lf\n", f1); f1 = expl(0.42); fprintf( stdout, "expl : %Lf\n", f1); f1 = exp2l(0.42); fprintf( stdout, "exp2l : %Lf\n", f1); f1 = expm1l(0.00042); fprintf( stdout, "expm1l : %Lf\n", f1); f1 = fabsl(-1.123); fprintf( stdout, "fabsl : %Lf\n", f1); f1 = fdiml(1.123, 2.123); fprintf( stdout, "fdiml : %Lf\n", f1); f1 = floorl(0.5); fprintf( stdout, "floorl : %Lf\n", f1); f1 = floorl(-0.5); fprintf( stdout, "floorl : %Lf\n", f1); f1 = fmal(2.1, 2.2, 3.01); fprintf( stdout, "fmal : %Lf\n", f1); f1 = fmaxl(-0.42, 0.42); fprintf( stdout, "fmaxl : %Lf\n", f1); f1 = fminl(-0.42, 0.42); fprintf( stdout, "fminl : %Lf\n", f1); f1 = fmodl(42.0, 3.0); fprintf( stdout, "fmodl : %Lf\n", f1); /* no type-specific variant */ i1 = fpclassify(1.0); fprintf( stdout, "fpclassify : %d\n", i1); f1 = frexpl(42.0, &i1); fprintf( stdout, "frexpl : %Lf\n", f1); f1 = hypotl(42.0, 42.0); fprintf( stdout, "hypotl : %Lf\n", f1); i1 = ilogbl(42.0); fprintf( stdout, "ilogbl : %d\n", i1); /* no type-specific variant */ i1 = isfinite(3.0); fprintf( stdout, "isfinite : %d\n", i1); /* no type-specific variant */ i1 = isgreater(3.0, 3.1); fprintf( stdout, "isgreater : %d\n", i1); /* no type-specific variant */ i1 = isgreaterequal(3.0, 3.1); fprintf( stdout, "isgreaterequal : %d\n", i1); /* no type-specific variant */ i1 = isinf(3.0); fprintf( stdout, "isinf : %d\n", i1); /* no type-specific variant */ i1 = isless(3.0, 3.1); fprintf( stdout, "isless : %d\n", i1); /* no type-specific variant */ i1 = islessequal(3.0, 3.1); fprintf( stdout, "islessequal : %d\n", i1); /* no type-specific variant */ i1 = islessgreater(3.0, 3.1); fprintf( stdout, "islessgreater : %d\n", i1); /* no type-specific variant */ i1 = isnan(0.0); fprintf( stdout, "isnan : %d\n", i1); /* no type-specific variant */ i1 = isnormal(3.0); fprintf( stdout, "isnormal : %d\n", i1); /* no type-specific variant */ f1 = isunordered(1.0, 2.0); fprintf( stdout, "isunordered : %d\n", i1); f1 = j0l(1.2); fprintf( stdout, "j0l : %Lf\n", f1); f1 = j1l(1.2); fprintf( stdout, "j1l : %Lf\n", f1); f1 = jnl(2,1.2); fprintf( stdout, "jnl : %Lf\n", f1); f1 = ldexpl(1.2,3); fprintf( stdout, "ldexpl : %Lf\n", f1); f1 = lgammal(42.0); fprintf( stdout, "lgammal : %Lf\n", f1); f1 = llrintl(-0.5); fprintf( stdout, "llrintl : %Lf\n", f1); f1 = llrintl(0.5); fprintf( stdout, "llrintl : %Lf\n", f1); f1 = llroundl(-0.5); fprintf( stdout, "lroundl : %Lf\n", f1); f1 = llroundl(0.5); fprintf( stdout, "lroundl : %Lf\n", f1); f1 = logl(42.0); fprintf( stdout, "logl : %Lf\n", f1); f1 = log10l(42.0); fprintf( stdout, "log10l : %Lf\n", f1); f1 = log1pl(42.0); fprintf( stdout, "log1pl : %Lf\n", f1); f1 = log2l(42.0); fprintf( stdout, "log2l : %Lf\n", f1); f1 = logbl(42.0); fprintf( stdout, "logbl : %Lf\n", f1); f1 = lrintl(-0.5); fprintf( stdout, "lrintl : %Lf\n", f1); f1 = lrintl(0.5); fprintf( stdout, "lrintl : %Lf\n", f1); f1 = lroundl(-0.5); fprintf( stdout, "lroundl : %Lf\n", f1); f1 = lroundl(0.5); fprintf( stdout, "lroundl : %Lf\n", f1); f1 = modfl(42.0,&f2); fprintf( stdout, "lmodfl : %Lf\n", f1); f1 = nanl(""); fprintf( stdout, "nanl : %Lf\n", f1); f1 = nearbyintl(1.5); fprintf( stdout, "nearbyintl : %Lf\n", f1); f1 = nextafterl(1.5,2.0); fprintf( stdout, "nextafterl : %Lf\n", f1); f1 = powl(3.01, 2.0); fprintf( stdout, "powl : %Lf\n", f1); f1 = remainderl(3.01,2.0); fprintf( stdout, "remainderl : %Lf\n", f1); f1 = remquol(29.0,3.0,&i1); fprintf( stdout, "remquol : %Lf\n", f1); f1 = rintl(0.5); fprintf( stdout, "rintl : %Lf\n", f1); f1 = rintl(-0.5); fprintf( stdout, "rintl : %Lf\n", f1); f1 = roundl(0.5); fprintf( stdout, "roundl : %Lf\n", f1); f1 = roundl(-0.5); fprintf( stdout, "roundl : %Lf\n", f1); f1 = scalblnl(1.2,3); fprintf( stdout, "scalblnl : %Lf\n", f1); f1 = scalbnl(1.2,3); fprintf( stdout, "scalbnl : %Lf\n", f1); /* no type-specific variant */ i1 = signbit(1.0); fprintf( stdout, "signbit : %i\n", i1); f1 = sinl(M_PI_4); fprintf( stdout, "sinl : %Lf\n", f1); f1 = sinhl(M_PI_4); fprintf( stdout, "sinhl : %Lf\n", f1); f1 = sqrtl(9.0); fprintf( stdout, "sqrtl : %Lf\n", f1); f1 = tanl(M_PI_4); fprintf( stdout, "tanl : %Lf\n", f1); f1 = tanhl(M_PI_4); fprintf( stdout, "tanhl : %Lf\n", f1); f1 = tgammal(2.1); fprintf( stdout, "tgammal : %Lf\n", f1); f1 = truncl(3.5); fprintf( stdout, "truncl : %Lf\n", f1); f1 = y0l(1.2); fprintf( stdout, "y0l : %Lf\n", f1); f1 = y1l(1.2); fprintf( stdout, "y1l : %Lf\n", f1); f1 = ynl(3,1.2); fprintf( stdout, "ynl : %Lf\n", f1); #endif }
ldcomplex cacosl(ldcomplex z) { long double x, y, t, R, S, A, Am1, B, y2, xm1, xp1, Apx; int ix, iy, hx, hy; ldcomplex ans; x = LD_RE(z); y = LD_IM(z); hx = HI_XWORD(x); hy = HI_XWORD(y); ix = hx & 0x7fffffff; iy = hy & 0x7fffffff; /* x is 0 */ if (x == zero) { if (y == zero || (iy >= 0x7fff0000)) { LD_RE(ans) = pi_2 + pi_2_l; LD_IM(ans) = -y; return (ans); } } /* |y| is inf or NaN */ if (iy >= 0x7fff0000) { if (isinfl(y)) { /* cacos(x + i inf) = pi/2 - i inf */ LD_IM(ans) = -y; if (ix < 0x7fff0000) { LD_RE(ans) = pi_2 + pi_2_l; } else if (isinfl(x)) { if (hx >= 0) LD_RE(ans) = pi_4 + pi_4_l; else LD_RE(ans) = pi3_4 + pi3_4_l; } else { LD_RE(ans) = x; } } else { /* cacos(x + i NaN) = NaN + i NaN */ LD_RE(ans) = y + x; if (isinfl(x)) LD_IM(ans) = -fabsl(x); else LD_IM(ans) = y; } return (ans); } y = fabsl(y); if (ix >= 0x7fff0000) { /* x is inf or NaN */ if (isinfl(x)) { /* x is INF */ LD_IM(ans) = -fabsl(x); if (iy >= 0x7fff0000) { if (isinfl(y)) { /* INDENT OFF */ /* cacos(inf + i inf) = pi/4 - i inf */ /* cacos(-inf+ i inf) =3pi/4 - i inf */ /* INDENT ON */ if (hx >= 0) LD_RE(ans) = pi_4 + pi_4_l; else LD_RE(ans) = pi3_4 + pi3_4_l; } else /* INDENT OFF */ /* cacos(inf + i NaN) = NaN - i inf */ /* INDENT ON */ LD_RE(ans) = y + y; } else { /* INDENT OFF */ /* cacos(inf + iy ) = 0 - i inf */ /* cacos(-inf+ iy ) = pi - i inf */ /* INDENT ON */ if (hx >= 0) LD_RE(ans) = zero; else LD_RE(ans) = pi + pi_l; } } else { /* x is NaN */ /* INDENT OFF */ /* * cacos(NaN + i inf) = NaN - i inf * cacos(NaN + i y ) = NaN + i NaN * cacos(NaN + i NaN) = NaN + i NaN */ /* INDENT ON */ LD_RE(ans) = x + y; if (iy >= 0x7fff0000) { LD_IM(ans) = -y; } else { LD_IM(ans) = x; } } if (hy < 0) LD_IM(ans) = -LD_IM(ans); return (ans); } if (y == zero) { /* region 1: y=0 */ if (ix < 0x3fff0000) { /* |x| < 1 */ LD_RE(ans) = acosl(x); LD_IM(ans) = zero; } else { LD_RE(ans) = zero; x = fabsl(x); if (ix >= ip1) /* i386 ? 2**65 : 2**114 */ LD_IM(ans) = ln2 + logl(x); else if (ix >= 0x3fff8000) /* x > Acrossover */ LD_IM(ans) = logl(x + sqrtl((x - one) * (x + one))); else { xm1 = x - one; LD_IM(ans) = log1pl(xm1 + sqrtl(xm1 * (x + one))); } } } else if (y <= E * fabsl(fabsl(x) - one)) { /* region 2: y < tiny*||x|-1| */ if (ix < 0x3fff0000) { /* x < 1 */ LD_RE(ans) = acosl(x); x = fabsl(x); LD_IM(ans) = y / sqrtl((one + x) * (one - x)); } else if (ix >= ip1) { /* i386 ? 2**65 : 2**114 */ if (hx >= 0) LD_RE(ans) = y / x; else { if (ix >= ip1 + 0x00040000) LD_RE(ans) = pi + pi_l; else { t = pi_l + y / x; LD_RE(ans) = pi + t; } } LD_IM(ans) = ln2 + logl(fabsl(x)); } else { x = fabsl(x); t = sqrtl((x - one) * (x + one)); LD_RE(ans) = (hx >= 0)? y / t : pi - (y / t - pi_l); if (ix >= 0x3fff8000) /* x > Acrossover */ LD_IM(ans) = logl(x + t); else LD_IM(ans) = log1pl(t - (one - x)); } } else if (y < Foursqrtu) { /* region 3 */ t = sqrtl(y); LD_RE(ans) = (hx >= 0)? t : pi + pi_l; LD_IM(ans) = t; } else if (E * y - one >= fabsl(x)) { /* region 4 */ LD_RE(ans) = pi_2 + pi_2_l; LD_IM(ans) = ln2 + logl(y); } else if (ix >= 0x5ffb0000 || iy >= 0x5ffb0000) { /* region 5: x+1 and y are both (>= sqrt(max)/8) i.e. 2**8188 */ t = x / y; LD_RE(ans) = atan2l(y, x); LD_IM(ans) = ln2 + logl(y) + half * log1pl(t * t); } else if (fabsl(x) < Foursqrtu) { /* region 6: x is very small, < 4sqrt(min) */ LD_RE(ans) = pi_2 + pi_2_l; A = sqrtl(one + y * y); if (iy >= 0x3fff8000) /* if y > Acrossover */ LD_IM(ans) = logl(y + A); else LD_IM(ans) = half * log1pl((y + y) * (y + A)); } else { /* safe region */ t = fabsl(x); y2 = y * y; xp1 = t + one; xm1 = t - one; R = sqrtl(xp1 * xp1 + y2); S = sqrtl(xm1 * xm1 + y2); A = half * (R + S); B = t / A; if (B <= Bcrossover) LD_RE(ans) = (hx >= 0)? acosl(B) : acosl(-B); else { /* use atan and an accurate approx to a-x */ Apx = A + t; if (t <= one) LD_RE(ans) = atan2l(sqrtl(half * Apx * (y2 / (R + xp1) + (S - xm1))), x); else LD_RE(ans) = atan2l((y * sqrtl(half * (Apx / (R + xp1) + Apx / (S + xm1)))), x); } if (A <= Acrossover) { /* use log1p and an accurate approx to A-1 */ if (ix < 0x3fff0000) Am1 = half * (y2 / (R + xp1) + y2 / (S - xm1)); else Am1 = half * (y2 / (R + xp1) + (S + xm1)); LD_IM(ans) = log1pl(Am1 + sqrtl(Am1 * (A + one))); } else { LD_IM(ans) = logl(A + sqrtl(A * A - one)); } } if (hy >= 0) LD_IM(ans) = -LD_IM(ans); return (ans); }
static long double cosacosl(long double x) { return (cosl(acosl(x))); }
sfloat math_arccos(const sfloat val) { return acosl(val); }
#include "Game.h" #include <iostream> #include <cmath> #include <cstdlib> #include <vector> const long double PI = acosl(-1.0); Game::Game(int cantidad): numero_asteroides(cantidad) { } void Game::init(const char* titulo, int xpos, int ypos, int alto, int ancho, int banderas){ SDL_Init(SDL_INIT_EVERYTHING); win = SDL_CreateWindow(titulo, xpos, ypos, alto, ancho, banderas); ren = SDL_CreateRenderer(win, -1, 0); frames = 0; setm_bRunning(1); } void Game::setm_bRunning(int mb) { m_bRunning = mb; } void Game::setFrames(int f) { frames = f; } int Game::getFrames() { return frames; } int Game::getNumeroAsteroides()
float acosf(float x) { return (float)acosl(x); }
inline long double MathTrait<long double>::acos( const long double val ) { return acosl( val ) ; }
static int testl(long double long_double_x, int int_x, long long_x) { int r = 0; r += __finitel(long_double_x); r += __fpclassifyl(long_double_x); r += __isinfl(long_double_x); r += __isnanl(long_double_x); r += __signbitl(long_double_x); r += acoshl(long_double_x); r += acosl(long_double_x); r += asinhl(long_double_x); r += asinl(long_double_x); r += atan2l(long_double_x, long_double_x); r += atanhl(long_double_x); r += atanl(long_double_x); r += cbrtl(long_double_x); r += ceill(long_double_x); r += copysignl(long_double_x, long_double_x); r += coshl(long_double_x); r += cosl(long_double_x); r += erfcl(long_double_x); r += erfl(long_double_x); r += exp2l(long_double_x); r += expl(long_double_x); r += expm1l(long_double_x); r += fabsl(long_double_x); r += fdiml(long_double_x, long_double_x); r += floorl(long_double_x); r += fmal(long_double_x, long_double_x, long_double_x); r += fmaxl(long_double_x, long_double_x); r += fminl(long_double_x, long_double_x); r += fmodl(long_double_x, long_double_x); r += frexpl(long_double_x, &int_x); r += hypotl(long_double_x, long_double_x); r += ilogbl(long_double_x); r += ldexpl(long_double_x, int_x); r += lgammal(long_double_x); r += llrintl(long_double_x); r += llroundl(long_double_x); r += log10l(long_double_x); r += log1pl(long_double_x); r += log2l(long_double_x); r += logbl(long_double_x); r += logl(long_double_x); r += lrintl(long_double_x); r += lroundl(long_double_x); r += modfl(long_double_x, &long_double_x); r += nearbyintl(long_double_x); r += nextafterl(long_double_x, long_double_x); r += nexttowardl(long_double_x, long_double_x); r += powl(long_double_x, long_double_x); r += remainderl(long_double_x, long_double_x); r += remquol(long_double_x, long_double_x, &int_x); r += rintl(long_double_x); r += roundl(long_double_x); r += scalblnl(long_double_x, long_x); r += scalbnl(long_double_x, int_x); r += sinhl(long_double_x); r += sinl(long_double_x); r += sqrtl(long_double_x); r += tanhl(long_double_x); r += tanl(long_double_x); r += tgammal(long_double_x); r += truncl(long_double_x); return r; }
npy_longdouble npy_acosl(npy_longdouble x) { return acosl(x); }
int main(int argc, char *argv[]) { long double x = 0.0; if (argv) x = acosl((long double) argc); return 0; }
TEST(math, acosl) { ASSERT_DOUBLE_EQ(M_PI/2.0L, acosl(0.0L)); }
double acos(double x) { return (double)acosl(x); }
inline long double _acos(long double value) { return acosl(value); }
TEST(math, acosl) { ASSERT_FLOAT_EQ(M_PI/2.0, acosl(0.0)); }
int main(int argc, char *argv[]) { long double x; x = acosl((long double) argc); return 0; }
double acos(double x) { return acosl(x); }