((function atanh
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float * (constant float (0.5))
                (expression float log
		  (expression float /
                    (expression float + (constant float (1)) (var_ref x))
                    (expression float - (constant float (1)) (var_ref x))))))))

   (signature vec2
     (parameters
       (declare (in) vec2 x))
     ((return (expression vec2 * (constant vec2 (0.5))
                (expression vec2 log
		  (expression vec2 /
                    (expression vec2 + (constant vec2 (1)) (var_ref x))
                    (expression vec2 - (constant vec2 (1)) (var_ref x))))))))

   (signature vec3
     (parameters
       (declare (in) vec3 x))
     ((return (expression vec3 * (constant vec3 (0.5))
                (expression vec3 log
		  (expression vec3 /
                    (expression vec3 + (constant vec3 (1)) (var_ref x))
                    (expression vec3 - (constant vec3 (1)) (var_ref x))))))))

   (signature vec4
     (parameters
       (declare (in) vec4 x))
     ((return (expression vec4 * (constant vec4 (0.5))
                (expression vec4 log
		  (expression vec4 /
                    (expression vec4 + (constant vec4 (1)) (var_ref x))
                    (expression vec4 - (constant vec4 (1)) (var_ref x))))))))
))
