1/* 2 * Public domain. 3 */ 4 5#include <machine/asm.h> 6#include <i386-math-asm.h> 7#include <libm-alias-finite.h> 8 9RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/08 23:45:40 jtc Exp $") 10 11DEFINE_DBL_MIN 12 13#ifdef PIC 14# define MO(op) op##@GOTOFF(%ecx) 15#else 16# define MO(op) op 17#endif 18 19 .text 20 21/* asin = atan (x / sqrt((1-x) (1+x))) */ 22ENTRY(__ieee754_asin) 23#ifdef PIC 24 LOAD_PIC_REG (cx) 25#endif 26 fldl 4(%esp) /* x */ 27 fld %st 28 fld1 /* 1 : x : x */ 29 fsubp /* 1 - x : x */ 30 fld1 /* 1 : 1 - x : x */ 31 fadd %st(2) /* 1 + x : 1 - x : x */ 32 fmulp /* 1 - x^2 */ 33 fsqrt /* sqrt (1 - x^2) */ 34 fpatan 35 DBL_CHECK_FORCE_UFLOW 36 ret 37END (__ieee754_asin) 38libm_alias_finite (__ieee754_asin, __asin) 39