summaryrefslogtreecommitdiff
path: root/src/floatfns.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2002-02-19 10:58:07 +0000
committerEli Zaretskii <eliz@gnu.org>2002-02-19 10:58:07 +0000
commit250ffca65ee61183ebab25a4a301444cb9a51e9c (patch)
treee50a7e012c77c4c75805a419738d27a6de42adc1 /src/floatfns.c
parent9b2d1d408c023cc436b5cf251e9c814376f4c200 (diff)
downloademacs-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.c24
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);
}