((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))
		     ))))))))))))
))
