((function asin
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float *
	       (expression float sign (var_ref x))
	       (expression float -
		(expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression float *
		 (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 vec2 sign (var_ref x))
	       (expression vec2 -
		(expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec2 *
		 (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 sign (var_ref x))
	       (expression vec3 -
		(expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec3 *
		 (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 sign (var_ref x))
	       (expression vec4 -
		(expression float *
		 (constant float (3.1415926))
		 (constant float (0.5)))
		(expression vec4 *
		 (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))))))))))))
))