From 7ef8a7379f7f7d09e71ccae2a0b688c3cd80423f Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Fri, 8 Feb 2019 18:42:39 -0500 Subject: merge sources into single tree --- src/math/atan2.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/math/atan2.c (limited to 'src/math/atan2.c') diff --git a/src/math/atan2.c b/src/math/atan2.c new file mode 100644 index 00000000..be5b9dd6 --- /dev/null +++ b/src/math/atan2.c @@ -0,0 +1,41 @@ +# define TGSOURCE "atan2.c" +#include +#include "nonstd/tgmath.h" +#include "errno.h" +#include "nonstd/assert.h" + +/** arc tangent **/ +TYPE TGFN(atan2)(TYPE y, TYPE x) +{ + ASSERT_NONZERO(x); + + if (y == 0 && x == 0) { + errno = EDOM; /* ARGUMENT(y) and ARGUMENT(x) are both LITERAL(0)) */ + return TGHUGE; + } + + if (0) { + errno = ERANGE; /* The result cannot be represented */ + /* RETURN_FAILURE(CONSTANT(HUGE_VAL), A range error occurred); */ + return TGHUGE; + } + + TYPE ret = TGFN(tan)(y / x); + /* FIXME: quadrant */ + /* RETURN_SUCCESS(a value in range `[-PI(), +PI()]'); */ + return ret; +} + +/*** +functions compute the principal value of the arc tangent of +ARGUMENT(y)/ARGUMENT(x), using the signs of both to place the return value in +the correct quadrant. +***/ + +/* +IMPLEMENTATION(The value returned on a domain error, CONSTANT(HUGE_VAL)) +LINK(m) +*/ +/* +STDC(1) +*/ -- cgit v1.2.1