((function asin
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float *
     	       (expression float -
	        (expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression float sqrt
		 (expression float -
		  (constant float (1.0))
		  (expression float abs (var_ref x)))))
     	       (expression float +
     	        (constant float (1.5707288))
	        (expression float *
     	         (expression float abs (var_ref x))
     	         (expression float +
	          (constant float (-0.2121144))
     	          (expression float *
     	           (constant float (0.0742610))
	           (expression float abs (var_ref x))))))))))

   (signature vec2
     (parameters
       (declare (in) vec2 x))
     ((return (expression vec2 *
     	       (expression float -
	        (expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec2 sqrt
		 (expression vec2 -
		  (constant float (1.0))
		  (expression vec2 abs (var_ref x)))))
     	       (expression vec2 +
     	        (constant float (1.5707288))
	        (expression vec2 *
     	         (expression vec2 abs (var_ref x))
     	         (expression vec2 +
	          (constant float (-0.2121144))
     	          (expression vec2 *
     	           (constant float (0.0742610))
	           (expression vec2 abs (var_ref x))))))))))

   (signature vec3
     (parameters
       (declare (in) vec3 x))
     ((return (expression vec3 *
     	       (expression vec3 -
	        (expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec3 sqrt
		 (expression vec3 -
		  (constant float (1.0))
		  (expression vec3 abs (var_ref x)))))
     	       (expression vec3 +
     	        (constant float (1.5707288))
	        (expression vec3 *
     	         (expression vec3 abs (var_ref x))
     	         (expression vec3 +
	          (constant float (-0.2121144))
     	          (expression vec3 *
     	           (constant float (0.0742610))
	           (expression vec3 abs (var_ref x))))))))))

   (signature vec4
     (parameters
       (declare (in) vec4 x))
     ((return (expression vec4 *
     	       (expression vec4 -
	        (expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec4 sqrt
		 (expression vec4 -
		  (constant float (1.0))
		  (expression vec4 abs (var_ref x)))))
     	       (expression vec4 +
     	        (constant float (1.5707288))
	        (expression vec4 *
     	         (expression vec4 abs (var_ref x))
     	         (expression vec4 +
	          (constant float (-0.2121144))
     	          (expression vec4 *
     	           (constant float (0.0742610))
	           (expression vec4 abs (var_ref x))))))))))
)

 (function acos
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float - (constant float (1.5707963))
                                  (call asin ((var_ref x)))))))
   (signature vec2
     (parameters
       (declare (in) vec2 x))
     ((return (expression vec2 - (constant float (1.5707963))
                                 (call asin ((var_ref x)))))))
   (signature vec3
     (parameters
       (declare (in) vec3 x))
     ((return (expression vec3 - (constant float (1.5707963))
                                 (call asin ((var_ref x)))))))
   (signature vec4
     (parameters
       (declare (in) vec4 x))
     ((return (expression vec4 - (constant float (1.5707963))
                                 (call asin ((var_ref x)))))))
))