1#[inline(always)]
2#[rustfmt::skip]
3pub(crate) fn grad2(index: usize) -> [f64; 2] {
4 const DIAG : f64 = core::f64::consts::FRAC_1_SQRT_2;
7
8 match index % 8 {
9 0 => [ 1.0, 0.0],
10 1 => [ -1.0, 0.0],
11 2 => [ 0.0, 1.0],
12 3 => [ 0.0, -1.0],
13 4 => [ DIAG, DIAG],
14 5 => [-DIAG, DIAG],
15 6 => [ DIAG, -DIAG],
16 7 => [-DIAG, -DIAG],
17 _ => panic!("Attempt to access gradient {} of 8", index % 8),
18 }
19}
20
21#[inline(always)]
22#[rustfmt::skip]
23pub(crate) fn grad3(index: usize) -> [f64; 3] {
24 const DIAG : f64 = core::f64::consts::FRAC_1_SQRT_2;
27 const DIAG2 : f64 = 0.577_350_269_189_625_8;
28
29 match index % 32 {
30 0 | 12 => [ DIAG, DIAG, 0.0],
32 1 | 13 => [ -DIAG, DIAG, 0.0],
33 2 | 14 => [ DIAG, -DIAG, 0.0],
34 3 | 15 => [ -DIAG, -DIAG, 0.0],
35 4 | 16 => [ DIAG, 0.0, DIAG],
36 5 | 17 => [ -DIAG, 0.0, DIAG],
37 6 | 18 => [ DIAG, 0.0, -DIAG],
38 7 | 19 => [ -DIAG, 0.0, -DIAG],
39 8 | 20 => [ 0.0, DIAG, DIAG],
40 9 | 21 => [ 0.0, -DIAG, DIAG],
41 10 | 22 => [ 0.0, DIAG, -DIAG],
42 11 | 23 => [ 0.0, -DIAG, -DIAG],
43 24 => [ DIAG2, DIAG2, DIAG2],
44 25 => [-DIAG2, DIAG2, DIAG2],
45 26 => [ DIAG2, -DIAG2, DIAG2],
46 27 => [-DIAG2, -DIAG2, DIAG2],
47 28 => [ DIAG2, DIAG2, -DIAG2],
48 29 => [-DIAG2, DIAG2, -DIAG2],
49 30 => [ DIAG2, -DIAG2, -DIAG2],
50 31 => [-DIAG2, -DIAG2, -DIAG2],
51 _ => panic!("Attempt to access gradient {} of 32", index % 32),
52 }
53}
54
55#[inline(always)]
56#[rustfmt::skip]
57pub(crate) fn grad4(index: usize) -> [f64; 4] {
58 const DIAG : f64 = 0.577_350_269_189_625_8;
61 const DIAG2 : f64 = 0.5;
62
63 match index % 64 {
64 0 => [ 0.0, DIAG, DIAG, DIAG],
66 1 => [ 0.0, DIAG, DIAG, -DIAG],
67 2 => [ 0.0, DIAG, -DIAG, DIAG],
68 3 => [ 0.0, DIAG, -DIAG, -DIAG],
69 4 => [ 0.0, -DIAG, DIAG, DIAG],
70 5 => [ 0.0, -DIAG, DIAG, -DIAG],
71 6 => [ 0.0, -DIAG, -DIAG, DIAG],
72 7 => [ 0.0, -DIAG, -DIAG, -DIAG],
73 8 => [ DIAG, 0.0, DIAG, DIAG],
74 9 => [ DIAG, 0.0, DIAG, -DIAG],
75 10 => [ DIAG, 0.0, -DIAG, DIAG],
76 11 => [ DIAG, 0.0, -DIAG, -DIAG],
77 12 => [ -DIAG, 0.0, DIAG, DIAG],
78 13 => [ -DIAG, 0.0, DIAG, -DIAG],
79 14 => [ -DIAG, 0.0, -DIAG, DIAG],
80 15 => [ -DIAG, 0.0, -DIAG, -DIAG],
81 16 => [ DIAG, DIAG, 0.0, DIAG],
82 17 => [ DIAG, DIAG, 0.0, -DIAG],
83 18 => [ DIAG, -DIAG, 0.0, DIAG],
84 19 => [ DIAG, -DIAG, 0.0, -DIAG],
85 20 => [ -DIAG, DIAG, 0.0, DIAG],
86 21 => [ -DIAG, DIAG, 0.0, -DIAG],
87 22 => [ -DIAG, -DIAG, 0.0, DIAG],
88 23 => [ -DIAG, -DIAG, 0.0, -DIAG],
89 24 => [ DIAG, DIAG, DIAG, 0.0],
90 25 => [ DIAG, DIAG, -DIAG, 0.0],
91 26 => [ DIAG, -DIAG, DIAG, 0.0],
92 27 => [ DIAG, -DIAG, -DIAG, 0.0],
93 28 => [ -DIAG, DIAG, DIAG, 0.0],
94 29 => [ -DIAG, DIAG, -DIAG, 0.0],
95 30 => [ -DIAG, -DIAG, DIAG, 0.0],
96 31 => [ -DIAG, -DIAG, -DIAG, 0.0],
97 32 | 48 => [ DIAG2, DIAG2, DIAG2, DIAG2],
98 33 | 49 => [-DIAG2, DIAG2, DIAG2, DIAG2],
99 34 | 50 => [ DIAG2, -DIAG2, DIAG2, DIAG2],
100 35 | 51 => [-DIAG2, -DIAG2, DIAG2, DIAG2],
101 36 | 52 => [ DIAG2, DIAG2, -DIAG2, DIAG2],
102 37 | 53 => [-DIAG2, DIAG2, -DIAG2, DIAG2],
103 38 | 54 => [ DIAG2, DIAG2, DIAG2, -DIAG2],
104 39 | 55 => [-DIAG2, DIAG2, DIAG2, -DIAG2],
105 40 | 56 => [ DIAG2, -DIAG2, -DIAG2, DIAG2],
106 41 | 57 => [-DIAG2, -DIAG2, -DIAG2, DIAG2],
107 42 | 58 => [ DIAG2, -DIAG2, DIAG2, -DIAG2],
108 43 | 59 => [-DIAG2, -DIAG2, DIAG2, -DIAG2],
109 44 | 60 => [ DIAG2, DIAG2, -DIAG2, -DIAG2],
110 45 | 61 => [-DIAG2, DIAG2, -DIAG2, -DIAG2],
111 46 | 62 => [ DIAG2, -DIAG2, -DIAG2, -DIAG2],
112 47 | 63 => [-DIAG2, -DIAG2, -DIAG2, -DIAG2],
113 _ => panic!("Attempt to access gradient {} of 64", index % 64),
114 }
115}