# HG changeset patch # User Eli Zaretskii # Date 1014116287 0 # Node ID 0f448bd1bf9a219dee17ae99e4fe2670a6b3ccb1 # Parent ce181770fa8ea16ec9d14ced275688a0d0777ce5 (Fatan): Accept an optional second arg and call atan2 if passed 2 args. diff -r ce181770fa8e -r 0f448bd1bf9a src/floatfns.c --- a/src/floatfns.c Tue Feb 19 10:30:30 2002 +0000 +++ b/src/floatfns.c Tue Feb 19 10:58:07 2002 +0000 @@ -255,13 +255,25 @@ 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); }