summaryrefslogtreecommitdiffstats
path: root/src/glsl/builtins/110/asin
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-07-20 12:22:37 -0700
committerEric Anholt <[email protected]>2010-07-20 12:24:01 -0700
commit1245babe0c69846d227a78a11429584433e77a9e (patch)
treeec175906824124f6b32e7754c6532ee3a6a43cdb /src/glsl/builtins/110/asin
parent117d154b4d877e8c4d7880432af0a80b8f717dc6 (diff)
glsl2: Fix asin() implementation.
I'd flipped around the order of two operations in paren-balancing adventures, and left out the multiply by sign(x) required for negative x. Fixes: glsl1-acos(vec4) function glsl1-asin(vec4) function glsl1-atan(vec4) function
Diffstat (limited to 'src/glsl/builtins/110/asin')
-rw-r--r--src/glsl/builtins/110/asin130
1 files changed, 69 insertions, 61 deletions
diff --git a/src/glsl/builtins/110/asin b/src/glsl/builtins/110/asin
index fe93337bffc..d26bde364b1 100644
--- a/src/glsl/builtins/110/asin
+++ b/src/glsl/builtins/110/asin
@@ -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