diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
commit | 2c60951ba0efef23e2b765964b5dc0f1f49438a9 (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/java/lang/w_atan2.c | |
parent | 1135eed2207f8f82c589e42ce113a1c2f0310778 (diff) | |
download | ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.tar.gz ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.zip |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26263 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/w_atan2.c')
-rw-r--r-- | libjava/java/lang/w_atan2.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/libjava/java/lang/w_atan2.c b/libjava/java/lang/w_atan2.c new file mode 100644 index 00000000000..91742c72b91 --- /dev/null +++ b/libjava/java/lang/w_atan2.c @@ -0,0 +1,117 @@ + +/* @(#)w_atan2.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* +FUNCTION + <<atan2>>, <<atan2f>>---arc tangent of y/x + +INDEX + atan2 +INDEX + atan2f + +ANSI_SYNOPSIS + #include <math.h> + double atan2(double <[y]>,double <[x]>); + float atan2f(float <[y]>,float <[x]>); + +TRAD_SYNOPSIS + #include <math.h> + double atan2(<[y]>,<[x]>); + double <[y]>; + double <[x]>; + + float atan2f(<[y]>,<[x]>); + float <[y]>; + float <[x]>; + +DESCRIPTION + +<<atan2>> computes the inverse tangent (arc tangent) of <[y]>/<[x]>. +<<atan2>> produces the correct result even for angles near +@ifinfo +pi/2 or -pi/2 +@end ifinfo +@tex +$\pi/2$ or $-\pi/2$ +@end tex +(that is, when <[x]> is near 0). + +<<atan2f>> is identical to <<atan2>>, save that it takes and returns +<<float>>. + +RETURNS +<<atan2>> and <<atan2f>> return a value in radians, in the range of +@ifinfo +-pi to pi. +@end ifinfo +@tex +$-\pi$ to $\pi$. +@end tex + +If both <[x]> and <[y]> are 0.0, <<atan2>> causes a <<DOMAIN>> error. + +You can modify error handling for these functions using <<matherr>>. + +PORTABILITY +<<atan2>> is ANSI C. <<atan2f>> is an extension. + + +*/ + +/* + * wrapper atan2(y,x) + */ + +#include "fdlibm.h" +#include <errno.h> + +#ifndef _DOUBLE_IS_32BITS + +#ifdef __STDC__ + double atan2(double y, double x) /* wrapper atan2 */ +#else + double atan2(y,x) /* wrapper atan2 */ + double y,x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_atan2(y,x); +#else + double z; + struct exception exc; + z = __ieee754_atan2(y,x); + if(_LIB_VERSION == _IEEE_||isnan(x)||isnan(y)) return z; + if(x==0.0&&y==0.0) { + /* atan2(+-0,+-0) */ + exc.arg1 = y; + exc.arg2 = x; + exc.type = DOMAIN; + exc.name = "atan2"; + exc.err = 0; + exc.retval = 0.0; + if(_LIB_VERSION == _POSIX_) + errno = EDOM; + else if (!matherr(&exc)) { + errno = EDOM; + } + if (exc.err != 0) + errno = exc.err; + return exc.retval; + } else + return z; +#endif +} + +#endif /* defined(_DOUBLE_IS_32BITS) */ |