+struct LUTs {
+ exp_lev: [f32; 16],
+ exp_10: [f32; 32],
+ sqrt_tab: [f32; 32],
+}
+
+impl LUTs {
+ fn new() -> Self {
+ let mut exp_lev: [f32; 16] = [0.0; 16];
+ for lev in 0..16 {
+ exp_lev[lev] = 10.0f32.powf(-(lev as f32) * 0.4375); // almost exp(-lev)
+ }
+
+ let mut exp_10: [f32; 32] = [0.0; 32];
+ for i in 0..32 {
+ exp_10[i] = 10.0f32.powf(((i as f32) - 16.0) * 0.25);
+ }
+
+ let mut sqrt_tab: [f32; 32] = [0.0; 32];
+ for i in 0..32 {
+ sqrt_tab[i] = (i as f32).sqrt();
+ }
+
+ LUTs { exp_lev: exp_lev, exp_10: exp_10, sqrt_tab: sqrt_tab }
+ }
+}
+