((function exp
   (signature float
     (parameters
       (declare (in) float arg0))
     ((return (expression float exp (var_ref arg0)))))

   (signature vec2
     (parameters
       (declare (in) vec2 arg0))
     ((return (expression vec2 exp (var_ref arg0)))))

   (signature vec3
     (parameters
       (declare (in) vec3 arg0))
     ((return (expression vec3 exp (var_ref arg0)))))

   (signature vec4
     (parameters
       (declare (in) vec4 arg0))
     ((return (expression vec4 exp (var_ref arg0)))))
))
