/* acos = atan (sqrt(1 - x^2) / x) */
ENTRY(__ieee754_acos)
fldl 4(%esp) /* x */
- fst %st(1)
- fmul %st(0) /* x^2 */
- fld1
- fsubp /* 1 - x^2 */
- fsqrt /* sqrt (1 - x^2) */
- fxch %st(1)
- fpatan
+ fld %st /* x : x */
+ fmul %st(0) /* x^2 : x */
+ fld1 /* 1 : x^2 : x */
+ fsubp /* 1 - x^2 : x */
+ fsqrt /* sqrt (1 - x^2) : x */
+ fxch %st(1) /* x : sqrt (1 - x^2) */
+ fpatan /* atan (sqrt(1 - x^2) / x) */
ret
END (__ieee754_acos)
/* acos = atan (sqrt(1 - x^2) / x) */
ENTRY(__ieee754_acosf)
flds 4(%esp) /* x */
- fst %st(1)
+ fld %st
fmul %st(0) /* x^2 */
fld1
fsubp /* 1 - x^2 */
/* acosl = atanl (sqrtl(1 - x^2) / x) */
ENTRY(__ieee754_acosl)
fldt 4(%esp) /* x */
- fst %st(1)
+ fld %st
fmul %st(0) /* x^2 */
fld1
fsubp /* 1 - x^2 */
/* asin = atan (x / sqrt(1 - x^2)) */
ENTRY(__ieee754_asin)
fldl 4(%esp) /* x */
- fst %st(1)
+ fld %st
fmul %st(0) /* x^2 */
fld1
fsubp /* 1 - x^2 */
/* asin = atan (x / sqrt(1 - x^2)) */
ENTRY(__ieee754_asinf)
flds 4(%esp) /* x */
- fst %st(1)
+ fld %st
fmul %st(0) /* x^2 */
fld1
fsubp /* 1 - x^2 */
/* asinl = atanl (x / sqrtl(1 - x^2)) */
ENTRY(__ieee754_asinl)
fldt 4(%esp) /* x */
- fst %st(1)
+ fld %st
fmul %st(0) /* x^2 */
fld1
fsubp /* 1 - x^2 */
je 1f /* Is +-Inf, jump. */
fldl2e
fmulp /* x * log2(e) */
- fstl %st(1)
+ fld %st
frndint /* int(x * log2(e)) */
fsubr %st,%st(1) /* fract(x * log2(e)) */
fxch
1: testl $0x200, %eax /* Test sign. */
jz 2f /* If positive, jump. */
+ fstp %st
fldz /* Set result to 0. */
2: ret
END (__ieee754_exp)
je 1f /* Is +-Inf, jump. */
fldl2e
fmulp /* x * log2(e) */
- fstl %st(1)
+ fld %st
frndint /* int(x * log2(e)) */
fsubr %st,%st(1) /* fract(x * log2(e)) */
fxch
1: testl $0x200, %eax /* Test sign. */
jz 2f /* If positive, jump. */
+ fstp %st
fldz /* Set result to 0. */
2: ret
END (__ieee754_expf)
je 1f /* Is +-Inf, jump. */
fldl2e
fmulp /* x * log2(e) */
- fstl %st(1)
+ fld %st
frndint /* int(x * log2(e)) */
fsubr %st,%st(1) /* fract(x * log2(e)) */
fxch
1: testl $0x200, %eax /* Test sign. */
jz 2f /* If positive, jump. */
+ fstp %st
fldz /* Set result to 0. */
2: ret
END (__ieee754_expl)
fildl 12(%esp)
fldl 4(%esp)
fscale
+ fstp %st(1)
ret
END (__scalbn)
weak_alias (__scalbn, scalbn)
fildl 8(%esp)
flds 4(%esp)
fscale
+ fstp %st(1)
ret
END (__scalbnf)
weak_alias (__scalbnf, scalbnf)
fildl 16(%esp)
fldt 4(%esp)
fscale
+ fstp %st(1)
ret
END (__scalbnl)
weak_alias (__scalbnl, scalbnl)