diff options
author | Eli Zaretskii <eliz@gnu.org> | 2002-02-19 10:58:07 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2002-02-19 10:58:07 +0000 |
commit | 250ffca65ee61183ebab25a4a301444cb9a51e9c (patch) | |
tree | e50a7e012c77c4c75805a419738d27a6de42adc1 /src/floatfns.c | |
parent | 9b2d1d408c023cc436b5cf251e9c814376f4c200 (diff) | |
download | emacs-250ffca65ee61183ebab25a4a301444cb9a51e9c.tar.gz |
(Fatan): Accept an optional second arg and call atan2 if passed 2 args.
Diffstat (limited to 'src/floatfns.c')
-rw-r--r-- | src/floatfns.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/floatfns.c b/src/floatfns.c index fabbffb4408..08405c307a7 100644 --- a/src/floatfns.c +++ b/src/floatfns.c @@ -255,13 +255,25 @@ DEFUN ("asin", Fasin, Sasin, 1, 1, 0, return make_float (d); } -DEFUN ("atan", Fatan, Satan, 1, 1, 0, - doc: /* Return the inverse tangent of ARG. */) - (arg) - register Lisp_Object arg; +DEFUN ("atan", Fatan, Satan, 1, 2, 0, + doc: /* Return the inverse tangent of the arguments. +If only one argument Y is given, return the inverse tangent of Y. +If two arguments Y and X are given, return the inverse tangent of Y +divided by X, i.e. the angle in radians between the vector (X, Y) +and the x-axis. */) + (y, x) + register Lisp_Object y, x; { - double d = extract_float (arg); - IN_FLOAT (d = atan (d), "atan", arg); + double d = extract_float (y); + + if (NILP (x)) + IN_FLOAT (d = atan (d), "atan", y); + else + { + double d2 = extract_float (x); + + IN_FLOAT2 (d = atan2 (d, d2), "atan", y, x); + } return make_float (d); } |