((function sinh
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float * (constant float (0.5))
                (expression float -
		  (expression float exp (var_ref x))
		  (expression float exp (expression float neg (var_ref x))))))))
   (signature vec2
     (parameters
       (declare (in) vec2 x))
     ((return (expression vec2 * (constant float (0.5))
                (expression vec2 -
		  (expression vec2 exp (var_ref x))
		  (expression vec2 exp (expression vec2 neg (var_ref x))))))))
   (signature vec3
     (parameters
       (declare (in) vec3 x))
     ((return (expression vec3 * (constant float (0.5))
                (expression vec3 -
		  (expression vec3 exp (var_ref x))
		  (expression vec3 exp (expression vec3 neg (var_ref x))))))))
   (signature vec4
     (parameters
       (declare (in) vec4 x))
     ((return (expression vec4 * (constant float (0.5))
                (expression vec4 -
		  (expression vec4 exp (var_ref x))
		  (expression vec4 exp (expression vec4 neg (var_ref x))))))))
))
