builtins: Add atan().
This commit is contained in:
@@ -199,6 +199,163 @@ static const char *builtins_110_asin = {
|
||||
"))\n"
|
||||
};
|
||||
|
||||
static const char *builtins_110_atan = {
|
||||
"((function atan\n"
|
||||
" (signature float\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) float x))\n"
|
||||
" ((return (call asin ((expression float *\n"
|
||||
" (var_ref x)\n"
|
||||
" (expression float rsq\n"
|
||||
" (expression float +\n"
|
||||
" (expression float *\n"
|
||||
" (var_ref x)\n"
|
||||
" (var_ref x))\n"
|
||||
" (constant float (1.0))))))))))\n"
|
||||
"\n"
|
||||
" (signature vec2\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec2 y_over_x))\n"
|
||||
" ((return (call asin ((expression vec2 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (expression vec2 rsq\n"
|
||||
" (expression vec2 +\n"
|
||||
" (expression vec2 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (var_ref y_over_x))\n"
|
||||
" (constant float (1.0))))))))))\n"
|
||||
"\n"
|
||||
" (signature vec3\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec3 y_over_x))\n"
|
||||
" ((return (call asin ((expression vec3 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (expression vec3 rsq\n"
|
||||
" (expression vec3 +\n"
|
||||
" (expression vec3 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (var_ref y_over_x))\n"
|
||||
" (constant float (1.0))))))))))\n"
|
||||
"\n"
|
||||
" (signature vec4\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec4 y_over_x))\n"
|
||||
" ((return (call asin ((expression vec4 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (expression vec4 rsq\n"
|
||||
" (expression vec4 +\n"
|
||||
" (expression vec4 *\n"
|
||||
" (var_ref y_over_x)\n"
|
||||
" (var_ref y_over_x))\n"
|
||||
" (constant float (1.0))))))))))\n"
|
||||
"\n"
|
||||
" (signature float\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) float y)\n"
|
||||
" (declare (in) float x))\n"
|
||||
" ((declare () float r)\n"
|
||||
" (if (expression bool >\n"
|
||||
" (expression float abs (var_ref x))\n"
|
||||
" (constant float (.0001)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r) (call atan ((expression float /\n"
|
||||
" (var_ref y)\n"
|
||||
" (var_ref x)))))\n"
|
||||
" (if (expression bool <\n"
|
||||
" (var_ref x)\n"
|
||||
" (constant float (0.0)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression float +\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression float *\n"
|
||||
" (expression int sign (var_ref y))\n"
|
||||
" (constant float (3.1415926))))))\n"
|
||||
" ()))\n"
|
||||
" ())\n"
|
||||
" (return (var_ref r))))\n"
|
||||
"\n"
|
||||
" (signature vec2\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec2 y)\n"
|
||||
" (declare (in) vec2 x))\n"
|
||||
" ((declare () vec2 r)\n"
|
||||
" (if (expression bool >\n"
|
||||
" (expression vec2 abs (var_ref x))\n"
|
||||
" (constant float (.0001)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r) (call atan ((expression vec2 /\n"
|
||||
" (var_ref y)\n"
|
||||
" (var_ref x)))))\n"
|
||||
" (if (expression bool <\n"
|
||||
" (var_ref x)\n"
|
||||
" (constant float (0.0)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec2 +\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec2 *\n"
|
||||
" (expression int sign (var_ref y))\n"
|
||||
" (constant float (3.1415926))))))\n"
|
||||
" ()))\n"
|
||||
" ())\n"
|
||||
" (return (var_ref r))))\n"
|
||||
"\n"
|
||||
" (signature vec3\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec3 y)\n"
|
||||
" (declare (in) vec3 x))\n"
|
||||
" ((declare () vec3 r)\n"
|
||||
" (if (expression bool >\n"
|
||||
" (expression vec3 abs (var_ref x))\n"
|
||||
" (constant float (.0001)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r) (call atan ((expression vec3 /\n"
|
||||
" (var_ref y)\n"
|
||||
" (var_ref x)))))\n"
|
||||
" (if (expression bool <\n"
|
||||
" (var_ref x)\n"
|
||||
" (constant float (0.0)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec3 +\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec3 *\n"
|
||||
" (expression int sign (var_ref y))\n"
|
||||
" (constant float (3.1415926))))))\n"
|
||||
" ()))\n"
|
||||
" ())\n"
|
||||
" (return (var_ref r))))\n"
|
||||
"\n"
|
||||
" (signature vec4\n"
|
||||
" (parameters\n"
|
||||
" (declare (in) vec4 y)\n"
|
||||
" (declare (in) vec4 x))\n"
|
||||
" ((declare () vec4 r)\n"
|
||||
" (if (expression bool >\n"
|
||||
" (expression vec4 abs (var_ref x))\n"
|
||||
" (constant float (.0001)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r) (call atan ((expression vec4 /\n"
|
||||
" (var_ref y)\n"
|
||||
" (var_ref x)))))\n"
|
||||
" (if (expression bool <\n"
|
||||
" (var_ref x)\n"
|
||||
" (constant float (0.0)))\n"
|
||||
" ((assign (constant bool (1))\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec4 +\n"
|
||||
" (var_ref r)\n"
|
||||
" (expression vec4 *\n"
|
||||
" (expression int sign (var_ref y))\n"
|
||||
" (constant float (3.1415926))))))\n"
|
||||
" ()))\n"
|
||||
" ())\n"
|
||||
" (return (var_ref r))))\n"
|
||||
"\n"
|
||||
"))\n"
|
||||
};
|
||||
|
||||
static const char *builtins_110_ceil = {
|
||||
"((function ceil\n"
|
||||
" (signature float\n"
|
||||
@@ -1563,6 +1720,7 @@ static const char *functions_for_110 [] = {
|
||||
builtins_110_all,
|
||||
builtins_110_any,
|
||||
builtins_110_asin,
|
||||
builtins_110_atan,
|
||||
builtins_110_ceil,
|
||||
builtins_110_clamp,
|
||||
builtins_110_cos,
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
((function atan
|
||||
(signature float
|
||||
(parameters
|
||||
(declare (in) float x))
|
||||
((return (call asin ((expression float *
|
||||
(var_ref x)
|
||||
(expression float rsq
|
||||
(expression float +
|
||||
(expression float *
|
||||
(var_ref x)
|
||||
(var_ref x))
|
||||
(constant float (1.0))))))))))
|
||||
|
||||
(signature vec2
|
||||
(parameters
|
||||
(declare (in) vec2 y_over_x))
|
||||
((return (call asin ((expression vec2 *
|
||||
(var_ref y_over_x)
|
||||
(expression vec2 rsq
|
||||
(expression vec2 +
|
||||
(expression vec2 *
|
||||
(var_ref y_over_x)
|
||||
(var_ref y_over_x))
|
||||
(constant float (1.0))))))))))
|
||||
|
||||
(signature vec3
|
||||
(parameters
|
||||
(declare (in) vec3 y_over_x))
|
||||
((return (call asin ((expression vec3 *
|
||||
(var_ref y_over_x)
|
||||
(expression vec3 rsq
|
||||
(expression vec3 +
|
||||
(expression vec3 *
|
||||
(var_ref y_over_x)
|
||||
(var_ref y_over_x))
|
||||
(constant float (1.0))))))))))
|
||||
|
||||
(signature vec4
|
||||
(parameters
|
||||
(declare (in) vec4 y_over_x))
|
||||
((return (call asin ((expression vec4 *
|
||||
(var_ref y_over_x)
|
||||
(expression vec4 rsq
|
||||
(expression vec4 +
|
||||
(expression vec4 *
|
||||
(var_ref y_over_x)
|
||||
(var_ref y_over_x))
|
||||
(constant float (1.0))))))))))
|
||||
|
||||
(signature float
|
||||
(parameters
|
||||
(declare (in) float y)
|
||||
(declare (in) float x))
|
||||
((declare () float r)
|
||||
(if (expression bool >
|
||||
(expression float abs (var_ref x))
|
||||
(constant float (.0001)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r) (call atan ((expression float /
|
||||
(var_ref y)
|
||||
(var_ref x)))))
|
||||
(if (expression bool <
|
||||
(var_ref x)
|
||||
(constant float (0.0)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r)
|
||||
(expression float +
|
||||
(var_ref r)
|
||||
(expression float *
|
||||
(expression int sign (var_ref y))
|
||||
(constant float (3.1415926))))))
|
||||
()))
|
||||
())
|
||||
(return (var_ref r))))
|
||||
|
||||
(signature vec2
|
||||
(parameters
|
||||
(declare (in) vec2 y)
|
||||
(declare (in) vec2 x))
|
||||
((declare () vec2 r)
|
||||
(if (expression bool >
|
||||
(expression vec2 abs (var_ref x))
|
||||
(constant float (.0001)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r) (call atan ((expression vec2 /
|
||||
(var_ref y)
|
||||
(var_ref x)))))
|
||||
(if (expression bool <
|
||||
(var_ref x)
|
||||
(constant float (0.0)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r)
|
||||
(expression vec2 +
|
||||
(var_ref r)
|
||||
(expression vec2 *
|
||||
(expression int sign (var_ref y))
|
||||
(constant float (3.1415926))))))
|
||||
()))
|
||||
())
|
||||
(return (var_ref r))))
|
||||
|
||||
(signature vec3
|
||||
(parameters
|
||||
(declare (in) vec3 y)
|
||||
(declare (in) vec3 x))
|
||||
((declare () vec3 r)
|
||||
(if (expression bool >
|
||||
(expression vec3 abs (var_ref x))
|
||||
(constant float (.0001)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r) (call atan ((expression vec3 /
|
||||
(var_ref y)
|
||||
(var_ref x)))))
|
||||
(if (expression bool <
|
||||
(var_ref x)
|
||||
(constant float (0.0)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r)
|
||||
(expression vec3 +
|
||||
(var_ref r)
|
||||
(expression vec3 *
|
||||
(expression int sign (var_ref y))
|
||||
(constant float (3.1415926))))))
|
||||
()))
|
||||
())
|
||||
(return (var_ref r))))
|
||||
|
||||
(signature vec4
|
||||
(parameters
|
||||
(declare (in) vec4 y)
|
||||
(declare (in) vec4 x))
|
||||
((declare () vec4 r)
|
||||
(if (expression bool >
|
||||
(expression vec4 abs (var_ref x))
|
||||
(constant float (.0001)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r) (call atan ((expression vec4 /
|
||||
(var_ref y)
|
||||
(var_ref x)))))
|
||||
(if (expression bool <
|
||||
(var_ref x)
|
||||
(constant float (0.0)))
|
||||
((assign (constant bool (1))
|
||||
(var_ref r)
|
||||
(expression vec4 +
|
||||
(var_ref r)
|
||||
(expression vec4 *
|
||||
(expression int sign (var_ref y))
|
||||
(constant float (3.1415926))))))
|
||||
()))
|
||||
())
|
||||
(return (var_ref r))))
|
||||
|
||||
))
|
||||
Reference in New Issue
Block a user