1/*
2 * Public domain.
3 */
4
5#include <machine/asm.h>
6#include <libm-alias-finite.h>
7
8RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/08 23:44:37 jtc Exp $")
9
10/* acos = atan (sqrt((1-x) (1+x)) / x) */
11ENTRY(__ieee754_acos)
12 fldl 4(%esp) /* x */
13 fld %st /* x : x */
14 fld1 /* 1 : x : x */
15 fsubp /* 1 - x : x */
16 fld1 /* 1 : 1 - x : x */
17 fadd %st(2) /* 1 + x : 1 - x : x */
18 fmulp /* 1 - x^2 : x */
19 fsqrt /* sqrt (1 - x^2) : x */
20 fabs
21 fxch %st(1) /* x : sqrt (1 - x^2) */
22 fpatan /* atan (sqrt(1 - x^2) / x) */
23 ret
24END (__ieee754_acos)
25libm_alias_finite (__ieee754_acos, __acos)
26

source code of glibc/sysdeps/i386/fpu/e_acos.S