xref: /csrg-svn/old/libm/liboldnm/acos.c (revision 20002)
1*20002Sdist /*
2*20002Sdist acos(arg) return the arccos,
3*20002Sdist 	respectively of their arguments.
4*20002Sdist 
5*20002Sdist 	Arctan is called after appropriate range reduction.
6*20002Sdist */
7*20002Sdist 
8*20002Sdist #include	<errno.h>
9*20002Sdist int errno;
10*20002Sdist double atan();
11*20002Sdist double asin();
12*20002Sdist static double pio2	= 1.570796326794896619;
13*20002Sdist 
14*20002Sdist double
15*20002Sdist acos(arg) double arg; {
16*20002Sdist 
17*20002Sdist 	asm("	bispsw	$0xe0");
18*20002Sdist 	if(arg > 1.|| arg < -1.){
19*20002Sdist 		errno = EDOM;
20*20002Sdist 		return(0.);
21*20002Sdist 	}
22*20002Sdist 
23*20002Sdist 	return(pio2 - asin(arg));
24*20002Sdist }
25