]> code.delx.au - gnu-emacs/blobdiff - src/floatfns.c
(syms_of_lread) <load-history>: Doc fix.
[gnu-emacs] / src / floatfns.c
index 708dfab547a794187a4b248b1b4ab9dae829fafc..08405c307a7c3d21d2eb976c2b0d08bd4041c7d8 100644 (file)
@@ -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);
 }
 
@@ -864,7 +876,7 @@ With optional DIVISOR, return the nearest integer to ARG/DIVISOR.
 Rounding a value equidistant between two integers may choose the
 integer closer to zero, or it may prefer an even integer, depending on
 your machine.  For example, \(round 2.5\) can return 3 on some
-systems, but 3 on others.  */)
+systems, but 2 on others.  */)
      (arg, divisor)
      Lisp_Object arg, divisor;
 {