1((function reflect
2   (signature float
3     (parameters
4       (declare (in) float i)
5       (declare (in) float n))
6     ((return (expression float -
7	       (var_ref i)
8	       (expression float *
9		(constant float (2.0))
10		(expression float *
11		 (expression float *
12		  (var_ref n)
13		  (var_ref i))
14		 (var_ref n)))))))
15
16   (signature vec2
17     (parameters
18       (declare (in) vec2 i)
19       (declare (in) vec2 n))
20     ((return (expression vec2 -
21	       (var_ref i)
22	       (expression vec2 *
23		(constant float (2.0))
24		(expression vec2 *
25		 (expression float dot
26		  (var_ref n)
27		  (var_ref i))
28		 (var_ref n)))))))
29
30   (signature vec3
31     (parameters
32       (declare (in) vec3 i)
33       (declare (in) vec3 n))
34     ((return (expression vec3 -
35	       (var_ref i)
36	       (expression vec3 *
37		(constant float (2.0))
38		(expression vec3 *
39		 (expression float dot
40		  (var_ref n)
41		  (var_ref i))
42		 (var_ref n)))))))
43
44   (signature vec4
45     (parameters
46       (declare (in) vec4 i)
47       (declare (in) vec4 n))
48     ((return (expression vec4 -
49	       (var_ref i)
50	       (expression vec4 *
51		(constant float (2.0))
52		(expression vec4 *
53		 (expression float dot
54		  (var_ref n)
55		  (var_ref i))
56		 (var_ref n)))))))
57
58))
59