source: trunk/gcc/libjava/java/lang/w_asin.c

Last change on this file was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.4 KB
Line 
1
2/* @(#)w_asin.c 5.1 93/09/24 */
3/*
4 * ====================================================
5 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6 *
7 * Developed at SunPro, a Sun Microsystems, Inc. business.
8 * Permission to use, copy, modify, and distribute this
9 * software is freely granted, provided that this notice
10 * is preserved.
11 * ====================================================
12 *
13 */
14
15/*
16FUNCTION
17 <<asin>>, <<asinf>>---arc sine
18
19INDEX
20 asin
21INDEX
22 asinf
23
24ANSI_SYNOPSIS
25 #include <math.h>
26 double asin(double <[x]>);
27 float asinf(float <[x]>);
28
29TRAD_SYNOPSIS
30 #include <math.h>
31 double asin(<[x]>)
32 double <[x]>;
33
34 float asinf(<[x]>)
35 float <[x]>;
36
37
38DESCRIPTION
39
40<<asin>> computes the inverse sine (arc sine) of the argument <[x]>.
41Arguments to <<asin>> must be in the range @minus{}1 to 1.
42
43<<asinf>> is identical to <<asin>>, other than taking and
44returning floats.
45
46You can modify error handling for these routines using <<matherr>>.
47
48RETURNS
49@ifinfo
50<<asin>> returns values in radians, in the range of -pi/2 to pi/2.
51@end ifinfo
52@tex
53<<asin>> returns values in radians, in the range of $-\pi/2$ to $\pi/2$.
54@end tex
55
56If <[x]> is not in the range @minus{}1 to 1, <<asin>> and <<asinf>>
57return NaN (not a number), set the global variable <<errno>> to
58<<EDOM>>, and issue a <<DOMAIN error>> message.
59
60You can change this error treatment using <<matherr>>.
61
62QUICKREF ANSI SVID POSIX RENTRANT
63 asin y,y,y,m
64 asinf n,n,n,m
65
66MATHREF
67 asin, -1<=arg<=1, asin(arg),,,
68 asin, NAN, arg,EDOM, DOMAIN
69
70MATHREF
71 asinf, -1<=arg<=1, asin(arg),,,
72 asinf, NAN, arg,EDOM, DOMAIN
73
74
75*/
76
77/*
78 * wrapper asin(x)
79 */
80
81
82#include "fdlibm.h"
83#include <errno.h>
84
85#ifndef _DOUBLE_IS_32BITS
86
87#ifdef __STDC__
88 double asin(double x) /* wrapper asin */
89#else
90 double asin(x) /* wrapper asin */
91 double x;
92#endif
93{
94#ifdef _IEEE_LIBM
95 return __ieee754_asin(x);
96#else
97 double z;
98 struct exception exc;
99 z = __ieee754_asin(x);
100 if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
101 if(fabs(x)>1.0) {
102 /* asin(|x|>1) */
103 exc.type = DOMAIN;
104 exc.name = "asin";
105 exc.err = 0;
106 exc.arg1 = exc.arg2 = x;
107 exc.retval = 0.0;
108 if(_LIB_VERSION == _POSIX_)
109 errno = EDOM;
110 else if (!matherr(&exc)) {
111 errno = EDOM;
112 }
113 if (exc.err != 0)
114 errno = exc.err;
115 return exc.retval;
116 } else
117 return z;
118#endif
119}
120
121#endif /* defined(_DOUBLE_IS_32BITS) */
Note: See TracBrowser for help on using the repository browser.