oxifft_codegen_impl/
winograd_constants.rs1pub const C3_1: f64 = -0.5_f64;
16pub const C3_2: f64 = 0.866_025_403_784_438_7_f64;
18
19pub const C5_COS1: f64 = 0.309_016_994_374_947_45_f64;
24pub const C5_COS2: f64 = -0.809_016_994_374_947_3_f64;
26pub const C5_SIN1: f64 = 0.951_056_516_295_153_5_f64;
28pub const C5_SIN2: f64 = 0.587_785_252_292_473_2_f64;
30
31pub const C7_COS1: f64 = 0.623_489_801_858_733_6_f64;
36pub const C7_COS2: f64 = -0.222_520_933_956_314_34_f64;
38pub const C7_COS3: f64 = -0.900_968_867_902_419_f64;
40pub const C7_SIN1: f64 = 0.781_831_482_468_029_8_f64;
42pub const C7_SIN2: f64 = 0.974_927_912_181_823_6_f64;
44pub const C7_SIN3: f64 = 0.433_883_739_117_558_23_f64;
46
47pub const C9_COS1: f64 = 0.766_044_443_118_978_f64;
52pub const C9_COS2: f64 = 0.173_648_177_666_930_41_f64;
54pub const C9_COS3: f64 = -0.5_f64;
56pub const C9_COS4: f64 = -0.939_692_620_785_908_3_f64;
58pub const C9_SIN1: f64 = 0.642_787_609_686_539_3_f64;
60pub const C9_SIN2: f64 = 0.984_807_753_012_208_f64;
62pub const C9_SIN3: f64 = 0.866_025_403_784_438_7_f64;
64pub const C9_SIN4: f64 = 0.342_020_143_325_668_9_f64;
66
67pub const C11_COS1: f64 = 0.841_253_532_831_181_2_f64;
72pub const C11_COS2: f64 = 0.415_415_013_001_886_44_f64;
74pub const C11_COS3: f64 = -0.142_314_838_273_285_f64;
76pub const C11_COS4: f64 = -0.654_860_733_945_285_1_f64;
78pub const C11_COS5: f64 = -0.959_492_973_614_497_4_f64;
80pub const C11_SIN1: f64 = 0.540_640_817_455_597_6_f64;
82pub const C11_SIN2: f64 = 0.909_631_995_354_518_3_f64;
84pub const C11_SIN3: f64 = 0.989_821_441_880_932_8_f64;
86pub const C11_SIN4: f64 = 0.755_749_574_354_258_3_f64;
88pub const C11_SIN5: f64 = 0.281_732_556_841_429_67_f64;
90
91pub const C13_COS1: f64 = 0.885_456_025_653_209_9_f64;
96pub const C13_COS2: f64 = 0.568_064_746_731_155_8_f64;
98pub const C13_COS3: f64 = 0.120_536_680_255_323_f64;
100pub const C13_COS4: f64 = -0.354_604_887_042_535_45_f64;
102pub const C13_COS5: f64 = -0.748_510_748_171_101_2_f64;
104pub const C13_COS6: f64 = -0.970_941_817_426_052_f64;
106pub const C13_SIN1: f64 = 0.464_723_172_043_768_5_f64;
108pub const C13_SIN2: f64 = 0.822_983_865_893_656_4_f64;
110pub const C13_SIN3: f64 = 0.992_708_874_098_054_f64;
112pub const C13_SIN4: f64 = 0.935_016_242_685_414_8_f64;
114pub const C13_SIN5: f64 = 0.663_122_658_240_795_2_f64;
116pub const C13_SIN6: f64 = 0.239_315_664_287_557_68_f64;
118
119#[cfg(test)]
122pub(crate) fn verify_constants_match_runtime() {
123 let tol = 1e-13;
126 let two_pi = 2.0 * std::f64::consts::PI;
127
128 assert!((C3_1 - f64::cos(two_pi / 3.0)).abs() < tol, "C3_1");
130 assert!((C3_2 - f64::sin(two_pi / 3.0)).abs() < tol, "C3_2");
131
132 assert!((C5_COS1 - f64::cos(two_pi / 5.0)).abs() < tol, "C5_COS1");
134 assert!(
135 (C5_COS2 - f64::cos(2.0 * two_pi / 5.0)).abs() < tol,
136 "C5_COS2"
137 );
138 assert!((C5_SIN1 - f64::sin(two_pi / 5.0)).abs() < tol, "C5_SIN1");
139 assert!(
140 (C5_SIN2 - f64::sin(2.0 * two_pi / 5.0)).abs() < tol,
141 "C5_SIN2"
142 );
143
144 assert!((C7_COS1 - f64::cos(two_pi / 7.0)).abs() < tol, "C7_COS1");
146 assert!(
147 (C7_COS2 - f64::cos(2.0 * two_pi / 7.0)).abs() < tol,
148 "C7_COS2"
149 );
150 assert!(
151 (C7_COS3 - f64::cos(3.0 * two_pi / 7.0)).abs() < tol,
152 "C7_COS3"
153 );
154 assert!((C7_SIN1 - f64::sin(two_pi / 7.0)).abs() < tol, "C7_SIN1");
155 assert!(
156 (C7_SIN2 - f64::sin(2.0 * two_pi / 7.0)).abs() < tol,
157 "C7_SIN2"
158 );
159 assert!(
160 (C7_SIN3 - f64::sin(3.0 * two_pi / 7.0)).abs() < tol,
161 "C7_SIN3"
162 );
163}