1/*
2 * Written by J.T. Conklin <jtc@netbsd.org>.
3 * Public domain.
4 *
5 * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
6 */
7
8#include <math_private.h>
9#include <libm-alias-finite.h>
10
11long double
12__ieee754_acosl (long double x)
13{
14 long double res;
15
16 /* acosl = atanl (sqrtl((1-x) (1+x)) / x) */
17 asm ( "fld %%st\n"
18 "fld1\n"
19 "fsubp\n"
20 "fld1\n"
21 "fadd %%st(2)\n"
22 "fmulp\n" /* 1 - x^2 */
23 "fsqrt\n" /* sqrtl (1 - x^2) */
24 "fabs\n"
25 "fxch %%st(1)\n"
26 "fpatan"
27 : "=t" (res) : "0" (x) : "st(1)");
28 return res;
29}
30libm_alias_finite (__ieee754_acosl, __acosl)
31