diff --git a/builtin_function.cpp b/builtin_function.cpp
index f9fdd485..1d847a6 100644
--- a/builtin_function.cpp
+++ b/builtin_function.cpp
@@ -199,6 +199,163 @@
    "))\n"
 };
 
+static const char *builtins_110_atan = {
+   "((function atan\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) float x))\n"
+   "     ((return (call asin ((expression float *\n"
+   "			   (var_ref x)\n"
+   "			   (expression float rsq\n"
+   "			    (expression float +\n"
+   "			     (expression float *\n"
+   "			      (var_ref x)\n"
+   "			      (var_ref x))\n"
+   "			     (constant float (1.0))))))))))\n"
+   "\n"
+   "   (signature vec2\n"
+   "     (parameters\n"
+   "       (declare (in) vec2 y_over_x))\n"
+   "     ((return (call asin ((expression vec2 *\n"
+   "			   (var_ref y_over_x)\n"
+   "			   (expression vec2 rsq\n"
+   "			    (expression vec2 +\n"
+   "			     (expression vec2 *\n"
+   "			      (var_ref y_over_x)\n"
+   "			      (var_ref y_over_x))\n"
+   "			     (constant float (1.0))))))))))\n"
+   "\n"
+   "   (signature vec3\n"
+   "     (parameters\n"
+   "       (declare (in) vec3 y_over_x))\n"
+   "     ((return (call asin ((expression vec3 *\n"
+   "			   (var_ref y_over_x)\n"
+   "			   (expression vec3 rsq\n"
+   "			    (expression vec3 +\n"
+   "			     (expression vec3 *\n"
+   "			      (var_ref y_over_x)\n"
+   "			      (var_ref y_over_x))\n"
+   "			     (constant float (1.0))))))))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) vec4 y_over_x))\n"
+   "     ((return (call asin ((expression vec4 *\n"
+   "			   (var_ref y_over_x)\n"
+   "			   (expression vec4 rsq\n"
+   "			    (expression vec4 +\n"
+   "			     (expression vec4 *\n"
+   "			      (var_ref y_over_x)\n"
+   "			      (var_ref y_over_x))\n"
+   "			     (constant float (1.0))))))))))\n"
+   "\n"
+   "   (signature float\n"
+   "     (parameters\n"
+   "       (declare (in) float y)\n"
+   "       (declare (in) float x))\n"
+   "     ((declare () float r)\n"
+   "      (if (expression bool >\n"
+   "	   (expression float abs (var_ref x))\n"
+   "	   (constant float (.0001)))\n"
+   "       ((assign (constant bool (1))\n"
+   "	 (var_ref r) (call atan ((expression float /\n"
+   "				  (var_ref y)\n"
+   "				  (var_ref x)))))\n"
+   "	(if (expression bool <\n"
+   "	     (var_ref x)\n"
+   "	     (constant float (0.0)))\n"
+   "	 ((assign (constant bool (1))\n"
+   "	   (var_ref r)\n"
+   "	   (expression float +\n"
+   "	    (var_ref r)\n"
+   "	    (expression float *\n"
+   "	     (expression int sign (var_ref y))\n"
+   "	     (constant float (3.1415926))))))\n"
+   "	 ()))\n"
+   "       ())\n"
+   "      (return (var_ref r))))\n"
+   "\n"
+   "   (signature vec2\n"
+   "     (parameters\n"
+   "       (declare (in) vec2 y)\n"
+   "       (declare (in) vec2 x))\n"
+   "     ((declare () vec2 r)\n"
+   "      (if (expression bool >\n"
+   "	   (expression vec2 abs (var_ref x))\n"
+   "	   (constant float (.0001)))\n"
+   "       ((assign (constant bool (1))\n"
+   "	 (var_ref r) (call atan ((expression vec2 /\n"
+   "				  (var_ref y)\n"
+   "				  (var_ref x)))))\n"
+   "	(if (expression bool <\n"
+   "	     (var_ref x)\n"
+   "	     (constant float (0.0)))\n"
+   "	 ((assign (constant bool (1))\n"
+   "	   (var_ref r)\n"
+   "	   (expression vec2 +\n"
+   "	    (var_ref r)\n"
+   "	    (expression vec2 *\n"
+   "	     (expression int sign (var_ref y))\n"
+   "	     (constant float (3.1415926))))))\n"
+   "	 ()))\n"
+   "       ())\n"
+   "      (return (var_ref r))))\n"
+   "\n"
+   "   (signature vec3\n"
+   "     (parameters\n"
+   "       (declare (in) vec3 y)\n"
+   "       (declare (in) vec3 x))\n"
+   "     ((declare () vec3 r)\n"
+   "      (if (expression bool >\n"
+   "	   (expression vec3 abs (var_ref x))\n"
+   "	   (constant float (.0001)))\n"
+   "       ((assign (constant bool (1))\n"
+   "	 (var_ref r) (call atan ((expression vec3 /\n"
+   "				  (var_ref y)\n"
+   "				  (var_ref x)))))\n"
+   "	(if (expression bool <\n"
+   "	     (var_ref x)\n"
+   "	     (constant float (0.0)))\n"
+   "	 ((assign (constant bool (1))\n"
+   "	   (var_ref r)\n"
+   "	   (expression vec3 +\n"
+   "	    (var_ref r)\n"
+   "	    (expression vec3 *\n"
+   "	     (expression int sign (var_ref y))\n"
+   "	     (constant float (3.1415926))))))\n"
+   "	 ()))\n"
+   "       ())\n"
+   "      (return (var_ref r))))\n"
+   "\n"
+   "   (signature vec4\n"
+   "     (parameters\n"
+   "       (declare (in) vec4 y)\n"
+   "       (declare (in) vec4 x))\n"
+   "     ((declare () vec4 r)\n"
+   "      (if (expression bool >\n"
+   "	   (expression vec4 abs (var_ref x))\n"
+   "	   (constant float (.0001)))\n"
+   "       ((assign (constant bool (1))\n"
+   "	 (var_ref r) (call atan ((expression vec4 /\n"
+   "				  (var_ref y)\n"
+   "				  (var_ref x)))))\n"
+   "	(if (expression bool <\n"
+   "	     (var_ref x)\n"
+   "	     (constant float (0.0)))\n"
+   "	 ((assign (constant bool (1))\n"
+   "	   (var_ref r)\n"
+   "	   (expression vec4 +\n"
+   "	    (var_ref r)\n"
+   "	    (expression vec4 *\n"
+   "	     (expression int sign (var_ref y))\n"
+   "	     (constant float (3.1415926))))))\n"
+   "	 ()))\n"
+   "       ())\n"
+   "      (return (var_ref r))))\n"
+   "\n"
+   "))\n"
+};
+
 static const char *builtins_110_ceil = {
    "((function ceil\n"
    "   (signature float\n"
@@ -1563,6 +1720,7 @@
    builtins_110_all,
    builtins_110_any,
    builtins_110_asin,
+   builtins_110_atan,
    builtins_110_ceil,
    builtins_110_clamp,
    builtins_110_cos,
