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);
}
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;
{