diff options
Diffstat (limited to 'sysdeps/i386/fpu/e_acosl.c')
-rw-r--r-- | sysdeps/i386/fpu/e_acosl.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sysdeps/i386/fpu/e_acosl.c b/sysdeps/i386/fpu/e_acosl.c index d249d5a956..ab08931924 100644 --- a/sysdeps/i386/fpu/e_acosl.c +++ b/sysdeps/i386/fpu/e_acosl.c @@ -12,11 +12,13 @@ __ieee754_acosl (long double x) { long double res; - /* acosl = atanl (sqrtl(1 - x^2) / x) */ + /* acosl = atanl (sqrtl((1-x) (1+x)) / x) */ asm ( "fld %%st\n" - "fmul %%st(0)\n" /* x^2 */ "fld1\n" - "fsubp\n" /* 1 - x^2 */ + "fsubp\n" + "fld1\n" + "fadd %%st(2)\n" + "fmulp\n" /* 1 - x^2 */ "fsqrt\n" /* sqrtl (1 - x^2) */ "fabs\n" "fxch %%st(1)\n" |