((function asin
   (signature float
     (parameters
       (declare (in) float x))
     ((return (expression float *
	       (expression float sign (var_ref x))
	       (expression float -
		(constant float (1.5707964))
		(expression float *
		 (expression float sqrt
		  (expression float -
		   (constant float (1.0))
		   (expression float abs (var_ref x))))
		 (expression float +
		  (constant float (1.5707964))
		  (expression float *
		   (expression float abs (var_ref x))
		   (expression float +
		    (constant float (-0.21460183))
		    (expression float *
		     (expression float abs (var_ref x))
                     (expression float +
                      (constant float (0.086566724))
                      (expression float *
                       (expression float abs (var_ref x))
                       (constant float (-0.03102955))
		     ))))))))))))

   (signature vec2
     (parameters
       (declare (in) vec2 x))
     ((return (expression vec2 *
	       (expression vec2 sign (var_ref x))
	       (expression vec2 -
		(constant float (1.5707964))
		(expression vec2 *
		 (expression vec2 sqrt
		  (expression vec2 -
		   (constant float (1.0))
		   (expression vec2 abs (var_ref x))))
		 (expression vec2 +
		  (constant float (1.5707964))
		  (expression vec2 *
		   (expression vec2 abs (var_ref x))
		   (expression vec2 +
		    (constant float (-0.21460183))
		    (expression vec2 *
		     (expression vec2 abs (var_ref x))
                     (expression vec2 +
                      (constant float (0.086566724))
                      (expression vec2 *
                       (expression vec2 abs (var_ref x))
                       (constant float (-0.03102955))
		     ))))))))))))

   (signature vec3
     (parameters
       (declare (in) vec3 x))
     ((return (expression vec3 *
	       (expression vec3 sign (var_ref x))
	       (expression vec3 -
		(constant float (1.5707964))
		(expression vec3 *
		 (expression vec3 sqrt
		  (expression vec3 -
		   (constant float (1.0))
		   (expression vec3 abs (var_ref x))))
		 (expression vec3 +
		  (constant float (1.5707964))
		  (expression vec3 *
		   (expression vec3 abs (var_ref x))
		   (expression vec3 +
		    (constant float (-0.21460183))
		    (expression vec3 *
		     (expression vec3 abs (var_ref x))
                     (expression vec3 +
                      (constant float (0.086566724))
                      (expression vec3 *
                       (expression vec3 abs (var_ref x))
                       (constant float (-0.03102955))
		     ))))))))))))

   (signature vec4
     (parameters
       (declare (in) vec4 x))
     ((return (expression vec4 *
	       (expression vec4 sign (var_ref x))
	       (expression vec4 -
		(constant float (1.5707964))
		(expression vec4 *
		 (expression vec4 sqrt
		  (expression vec4 -
		   (constant float (1.0))
		   (expression vec4 abs (var_ref x))))
		 (expression vec4 +
		  (constant float (1.5707964))
		  (expression vec4 *
		   (expression vec4 abs (var_ref x))
		   (expression vec4 +
		    (constant float (-0.21460183))
		    (expression vec4 *
		     (expression vec4 abs (var_ref x))
                     (expression vec4 +
                      (constant float (0.086566724))
                      (expression vec4 *
                       (expression vec4 abs (var_ref x))
                       (constant float (-0.03102955))
		     ))))))))))))
))