glsl2: Fix asin() implementation.
[mesa.git] / src / glsl / builtins / 110 / asin
index fe93337bffc7856b78319836b1bfff8254dab5a6..d26bde364b1f373b1edc87d3e1376544fcc22052 100644 (file)
@@ -3,90 +3,98 @@
      (parameters
        (declare (in) float x))
      ((return (expression float *
-              (expression float -
-               (expression float *
+              (expression float sign (var_ref x))
+              (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))))))))))
+               (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 float -
-               (expression float *
+              (expression vec2 sign (var_ref x))
+              (expression vec2 -
+               (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))))))))))
+               (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 -
-               (expression float *
+              (expression vec3 sign (var_ref x))
+              (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))))))))))
+               (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 -
-               (expression float *
+              (expression vec4 sign (var_ref x))
+              (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))))))))))
-)
+               (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)))))))))))
+))
 
  (function acos
    (signature float