fastfft.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:82k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * FAAD - Freeware Advanced Audio Decoder
  3.  * Copyright (C) 2001 Menno Bakker
  4.  *
  5.  * This library is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU Lesser General Public
  7.  * License as published by the Free Software Foundation; either
  8.  * version 2.1 of the License, or (at your option) any later version.
  9.  *
  10.  * This library is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * Lesser General Public License for more details.
  14.  * You should have received a copy of the GNU Lesser General Public
  15.  * License along with this library; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  * $Id: fastfft.c,v 1.4 2002/01/09 22:25:41 wmay Exp $
  19.  */
  20. #include "fastfft.h"
  21. #include "all.h"
  22. #ifdef _MSC_VER
  23. #pragma warning(disable:4305)
  24. #endif
  25. static fftw_real K980785280[1] =
  26. {FFTW_KONST(+0.980785280403230449126182236134239036973933731)};
  27. static fftw_real K195090322[1] =
  28. {FFTW_KONST(+0.195090322016128267848284868477022240927691618)};
  29. static fftw_real K555570233[1] =
  30. {FFTW_KONST(+0.555570233019602224742830813948532874374937191)};
  31. static fftw_real K831469612[1] =
  32. {FFTW_KONST(+0.831469612302545237078788377617905756738560812)};
  33. static fftw_real K923879532[1] =
  34. {FFTW_KONST(+0.923879532511286756128183189396788286822416626)};
  35. static fftw_real K382683432[1] =
  36. {FFTW_KONST(+0.382683432365089771728459984030398866761344562)};
  37. static fftw_real K707106781[1] =
  38. {FFTW_KONST(+0.707106781186547524400844362104849039284835938)};
  39. static fftw_complex PFFTW(W_64)[30] = {
  40. { 0.995184726672197, 0.0980171403295606 },
  41. { 0.98078528040323, 0.195090322016128 },
  42. { 0.98078528040323, 0.195090322016128 },
  43. { 0.923879532511287, 0.38268343236509 },
  44. { 0.956940335732209, 0.290284677254462 },
  45. { 0.831469612302545, 0.555570233019602 },
  46. { 0.923879532511287, 0.38268343236509 },
  47. { 0.707106781186548, 0.707106781186547 },
  48. { 0.881921264348355, 0.471396736825998 },
  49. { 0.555570233019602, 0.831469612302545 },
  50. { 0.831469612302545, 0.555570233019602 },
  51. { 0.38268343236509, 0.923879532511287 },
  52. { 0.773010453362737, 0.634393284163645 },
  53. { 0.195090322016128, 0.98078528040323 },
  54. { 0.707106781186548, 0.707106781186547 },
  55. { 6.12303176911189e-17, 1 },
  56. { 0.634393284163645, 0.773010453362737 },
  57. { -0.195090322016128, 0.98078528040323 },
  58. { 0.555570233019602, 0.831469612302545 },
  59. { -0.38268343236509, 0.923879532511287 },
  60. { 0.471396736825998, 0.881921264348355 },
  61. { -0.555570233019602, 0.831469612302545 },
  62. { 0.38268343236509, 0.923879532511287 },
  63. { -0.707106781186547, 0.707106781186548 },
  64. { 0.290284677254462, 0.956940335732209 },
  65. { -0.831469612302545, 0.555570233019602 },
  66. { 0.195090322016128, 0.98078528040323 },
  67. { -0.923879532511287, 0.38268343236509 },
  68. { 0.0980171403295608, 0.995184726672197 },
  69. { -0.98078528040323, 0.195090322016129 },
  70. };
  71. static fftw_complex PFFTW(W_128)[62] = {
  72. { 0.998795456205172, 0.049067674327418 },
  73. { 0.995184726672197, 0.0980171403295606 },
  74. { 0.995184726672197, 0.0980171403295606 },
  75. { 0.98078528040323, 0.195090322016128 },
  76. { 0.989176509964781, 0.146730474455362 },
  77. { 0.956940335732209, 0.290284677254462 },
  78. { 0.98078528040323, 0.195090322016128 },
  79. { 0.923879532511287, 0.38268343236509 },
  80. { 0.970031253194544, 0.242980179903264 },
  81. { 0.881921264348355, 0.471396736825998 },
  82. { 0.956940335732209, 0.290284677254462 },
  83. { 0.831469612302545, 0.555570233019602 },
  84. { 0.941544065183021, 0.33688985339222 },
  85. { 0.773010453362737, 0.634393284163645 },
  86. { 0.923879532511287, 0.38268343236509 },
  87. { 0.707106781186548, 0.707106781186547 },
  88. { 0.903989293123443, 0.427555093430282 },
  89. { 0.634393284163645, 0.773010453362737 },
  90. { 0.881921264348355, 0.471396736825998 },
  91. { 0.555570233019602, 0.831469612302545 },
  92. { 0.857728610000272, 0.514102744193222 },
  93. { 0.471396736825998, 0.881921264348355 },
  94. { 0.831469612302545, 0.555570233019602 },
  95. { 0.38268343236509, 0.923879532511287 },
  96. { 0.803207531480645, 0.595699304492433 },
  97. { 0.290284677254462, 0.956940335732209 },
  98. { 0.773010453362737, 0.634393284163645 },
  99. { 0.195090322016128, 0.98078528040323 },
  100. { 0.740951125354959, 0.671558954847018 },
  101. { 0.0980171403295608, 0.995184726672197 },
  102. { 0.707106781186548, 0.707106781186547 },
  103. { 6.12303176911189e-17, 1 },
  104. { 0.671558954847018, 0.740951125354959 },
  105. { -0.0980171403295606, 0.995184726672197 },
  106. { 0.634393284163645, 0.773010453362737 },
  107. { -0.195090322016128, 0.98078528040323 },
  108. { 0.595699304492433, 0.803207531480645 },
  109. { -0.290284677254462, 0.956940335732209 },
  110. { 0.555570233019602, 0.831469612302545 },
  111. { -0.38268343236509, 0.923879532511287 },
  112. { 0.514102744193222, 0.857728610000272 },
  113. { -0.471396736825998, 0.881921264348355 },
  114. { 0.471396736825998, 0.881921264348355 },
  115. { -0.555570233019602, 0.831469612302545 },
  116. { 0.427555093430282, 0.903989293123443 },
  117. { -0.634393284163645, 0.773010453362737 },
  118. { 0.38268343236509, 0.923879532511287 },
  119. { -0.707106781186547, 0.707106781186548 },
  120. { 0.33688985339222, 0.941544065183021 },
  121. { -0.773010453362737, 0.634393284163645 },
  122. { 0.290284677254462, 0.956940335732209 },
  123. { -0.831469612302545, 0.555570233019602 },
  124. { 0.242980179903264, 0.970031253194544 },
  125. { -0.881921264348355, 0.471396736825998 },
  126. { 0.195090322016128, 0.98078528040323 },
  127. { -0.923879532511287, 0.38268343236509 },
  128. { 0.146730474455362, 0.989176509964781 },
  129. { -0.956940335732209, 0.290284677254462 },
  130. { 0.0980171403295608, 0.995184726672197 },
  131. { -0.98078528040323, 0.195090322016129 },
  132. { 0.0490676743274181, 0.998795456205172 },
  133. { -0.995184726672197, 0.0980171403295608 },
  134. };
  135. static fftw_complex PFFTW(W_512)[254] = {
  136. { 0.999924701839145, 0.0122715382857199 },
  137. { 0.999698818696204, 0.0245412285229123 },
  138. { 0.999698818696204, 0.0245412285229123 },
  139. { 0.998795456205172, 0.049067674327418 },
  140. { 0.99932238458835, 0.0368072229413588 },
  141. { 0.99729045667869, 0.0735645635996674 },
  142. { 0.998795456205172, 0.049067674327418 },
  143. { 0.995184726672197, 0.0980171403295606 },
  144. { 0.998118112900149, 0.0613207363022086 },
  145. { 0.99247953459871, 0.122410675199216 },
  146. { 0.99729045667869, 0.0735645635996674 },
  147. { 0.989176509964781, 0.146730474455362 },
  148. { 0.996312612182778, 0.0857973123444399 },
  149. { 0.985277642388941, 0.170961888760301 },
  150. { 0.995184726672197, 0.0980171403295606 },
  151. { 0.98078528040323, 0.195090322016128 },
  152. { 0.993906970002356, 0.110222207293883 },
  153. { 0.975702130038529, 0.21910124015687 },
  154. { 0.99247953459871, 0.122410675199216 },
  155. { 0.970031253194544, 0.242980179903264 },
  156. { 0.99090263542778, 0.134580708507126 },
  157. { 0.96377606579544, 0.266712757474898 },
  158. { 0.989176509964781, 0.146730474455362 },
  159. { 0.956940335732209, 0.290284677254462 },
  160. { 0.987301418157858, 0.158858143333861 },
  161. { 0.949528180593037, 0.313681740398892 },
  162. { 0.985277642388941, 0.170961888760301 },
  163. { 0.941544065183021, 0.33688985339222 },
  164. { 0.983105487431216, 0.183039887955141 },
  165. { 0.932992798834739, 0.359895036534988 },
  166. { 0.98078528040323, 0.195090322016128 },
  167. { 0.923879532511287, 0.38268343236509 },
  168. { 0.978317370719628, 0.207111376192219 },
  169. { 0.914209755703531, 0.40524131400499 },
  170. { 0.975702130038529, 0.21910124015687 },
  171. { 0.903989293123443, 0.427555093430282 },
  172. { 0.97293995220556, 0.231058108280671 },
  173. { 0.893224301195515, 0.449611329654607 },
  174. { 0.970031253194544, 0.242980179903264 },
  175. { 0.881921264348355, 0.471396736825998 },
  176. { 0.966976471044852, 0.254865659604515 },
  177. { 0.870086991108711, 0.492898192229784 },
  178. { 0.96377606579544, 0.266712757474898 },
  179. { 0.857728610000272, 0.514102744193222 },
  180. { 0.960430519415566, 0.278519689385053 },
  181. { 0.844853565249707, 0.534997619887097 },
  182. { 0.956940335732209, 0.290284677254462 },
  183. { 0.831469612302545, 0.555570233019602 },
  184. { 0.953306040354194, 0.302005949319228 },
  185. { 0.817584813151584, 0.575808191417845 },
  186. { 0.949528180593037, 0.313681740398892 },
  187. { 0.803207531480645, 0.595699304492433 },
  188. { 0.945607325380521, 0.325310292162263 },
  189. { 0.788346427626606, 0.615231590580627 },
  190. { 0.941544065183021, 0.33688985339222 },
  191. { 0.773010453362737, 0.634393284163645 },
  192. { 0.937339011912575, 0.348418680249435 },
  193. { 0.757208846506485, 0.653172842953777 },
  194. { 0.932992798834739, 0.359895036534988 },
  195. { 0.740951125354959, 0.671558954847018 },
  196. { 0.928506080473216, 0.371317193951838 },
  197. { 0.724247082951467, 0.689540544737067 },
  198. { 0.923879532511287, 0.38268343236509 },
  199. { 0.707106781186548, 0.707106781186547 },
  200. { 0.919113851690058, 0.393992040061048 },
  201. { 0.689540544737067, 0.724247082951467 },
  202. { 0.914209755703531, 0.40524131400499 },
  203. { 0.671558954847018, 0.740951125354959 },
  204. { 0.909167983090522, 0.416429560097637 },
  205. { 0.653172842953777, 0.757208846506484 },
  206. { 0.903989293123443, 0.427555093430282 },
  207. { 0.634393284163645, 0.773010453362737 },
  208. { 0.898674465693954, 0.438616238538528 },
  209. { 0.615231590580627, 0.788346427626606 },
  210. { 0.893224301195515, 0.449611329654607 },
  211. { 0.595699304492433, 0.803207531480645 },
  212. { 0.887639620402854, 0.46053871095824 },
  213. { 0.575808191417845, 0.817584813151584 },
  214. { 0.881921264348355, 0.471396736825998 },
  215. { 0.555570233019602, 0.831469612302545 },
  216. { 0.876070094195407, 0.482183772079123 },
  217. { 0.534997619887097, 0.844853565249707 },
  218. { 0.870086991108711, 0.492898192229784 },
  219. { 0.514102744193222, 0.857728610000272 },
  220. { 0.863972856121587, 0.503538383725718 },
  221. { 0.492898192229784, 0.870086991108711 },
  222. { 0.857728610000272, 0.514102744193222 },
  223. { 0.471396736825998, 0.881921264348355 },
  224. { 0.851355193105265, 0.524589682678469 },
  225. { 0.449611329654607, 0.893224301195515 },
  226. { 0.844853565249707, 0.534997619887097 },
  227. { 0.427555093430282, 0.903989293123443 },
  228. { 0.838224705554838, 0.545324988422046 },
  229. { 0.40524131400499, 0.914209755703531 },
  230. { 0.831469612302545, 0.555570233019602 },
  231. { 0.38268343236509, 0.923879532511287 },
  232. { 0.824589302785025, 0.565731810783613 },
  233. { 0.359895036534988, 0.932992798834739 },
  234. { 0.817584813151584, 0.575808191417845 },
  235. { 0.33688985339222, 0.941544065183021 },
  236. { 0.810457198252595, 0.585797857456439 },
  237. { 0.313681740398892, 0.949528180593037 },
  238. { 0.803207531480645, 0.595699304492433 },
  239. { 0.290284677254462, 0.956940335732209 },
  240. { 0.795836904608884, 0.605511041404326 },
  241. { 0.266712757474898, 0.96377606579544 },
  242. { 0.788346427626606, 0.615231590580627 },
  243. { 0.242980179903264, 0.970031253194544 },
  244. { 0.780737228572094, 0.624859488142386 },
  245. { 0.21910124015687, 0.975702130038529 },
  246. { 0.773010453362737, 0.634393284163645 },
  247. { 0.195090322016128, 0.98078528040323 },
  248. { 0.765167265622459, 0.643831542889791 },
  249. { 0.170961888760301, 0.985277642388941 },
  250. { 0.757208846506485, 0.653172842953777 },
  251. { 0.146730474455362, 0.989176509964781 },
  252. { 0.749136394523459, 0.662415777590172 },
  253. { 0.122410675199216, 0.99247953459871 },
  254. { 0.740951125354959, 0.671558954847018 },
  255. { 0.0980171403295608, 0.995184726672197 },
  256. { 0.732654271672413, 0.680600997795453 },
  257. { 0.0735645635996675, 0.99729045667869 },
  258. { 0.724247082951467, 0.689540544737067 },
  259. { 0.0490676743274181, 0.998795456205172 },
  260. { 0.715730825283819, 0.698376249408973 },
  261. { 0.0245412285229123, 0.999698818696204 },
  262. { 0.707106781186548, 0.707106781186547 },
  263. { 6.12303176911189e-17, 1 },
  264. { 0.698376249408973, 0.715730825283819 },
  265. { -0.0245412285229121, 0.999698818696204 },
  266. { 0.689540544737067, 0.724247082951467 },
  267. { -0.049067674327418, 0.998795456205172 },
  268. { 0.680600997795453, 0.732654271672413 },
  269. { -0.0735645635996673, 0.99729045667869 },
  270. { 0.671558954847018, 0.740951125354959 },
  271. { -0.0980171403295606, 0.995184726672197 },
  272. { 0.662415777590172, 0.749136394523459 },
  273. { -0.122410675199216, 0.99247953459871 },
  274. { 0.653172842953777, 0.757208846506484 },
  275. { -0.146730474455362, 0.989176509964781 },
  276. { 0.643831542889791, 0.765167265622459 },
  277. { -0.170961888760301, 0.985277642388941 },
  278. { 0.634393284163645, 0.773010453362737 },
  279. { -0.195090322016128, 0.98078528040323 },
  280. { 0.624859488142386, 0.780737228572094 },
  281. { -0.21910124015687, 0.975702130038529 },
  282. { 0.615231590580627, 0.788346427626606 },
  283. { -0.242980179903264, 0.970031253194544 },
  284. { 0.605511041404326, 0.795836904608883 },
  285. { -0.266712757474898, 0.96377606579544 },
  286. { 0.595699304492433, 0.803207531480645 },
  287. { -0.290284677254462, 0.956940335732209 },
  288. { 0.585797857456439, 0.810457198252595 },
  289. { -0.313681740398891, 0.949528180593037 },
  290. { 0.575808191417845, 0.817584813151584 },
  291. { -0.33688985339222, 0.941544065183021 },
  292. { 0.565731810783613, 0.824589302785025 },
  293. { -0.359895036534988, 0.932992798834739 },
  294. { 0.555570233019602, 0.831469612302545 },
  295. { -0.38268343236509, 0.923879532511287 },
  296. { 0.545324988422046, 0.838224705554838 },
  297. { -0.40524131400499, 0.914209755703531 },
  298. { 0.534997619887097, 0.844853565249707 },
  299. { -0.427555093430282, 0.903989293123443 },
  300. { 0.524589682678469, 0.851355193105265 },
  301. { -0.449611329654607, 0.893224301195515 },
  302. { 0.514102744193222, 0.857728610000272 },
  303. { -0.471396736825998, 0.881921264348355 },
  304. { 0.503538383725718, 0.863972856121587 },
  305. { -0.492898192229784, 0.870086991108711 },
  306. { 0.492898192229784, 0.870086991108711 },
  307. { -0.514102744193222, 0.857728610000272 },
  308. { 0.482183772079123, 0.876070094195407 },
  309. { -0.534997619887097, 0.844853565249707 },
  310. { 0.471396736825998, 0.881921264348355 },
  311. { -0.555570233019602, 0.831469612302545 },
  312. { 0.46053871095824, 0.887639620402854 },
  313. { -0.575808191417845, 0.817584813151584 },
  314. { 0.449611329654607, 0.893224301195515 },
  315. { -0.595699304492433, 0.803207531480645 },
  316. { 0.438616238538528, 0.898674465693954 },
  317. { -0.615231590580627, 0.788346427626606 },
  318. { 0.427555093430282, 0.903989293123443 },
  319. { -0.634393284163645, 0.773010453362737 },
  320. { 0.416429560097637, 0.909167983090522 },
  321. { -0.653172842953777, 0.757208846506485 },
  322. { 0.40524131400499, 0.914209755703531 },
  323. { -0.671558954847018, 0.740951125354959 },
  324. { 0.393992040061048, 0.919113851690058 },
  325. { -0.689540544737067, 0.724247082951467 },
  326. { 0.38268343236509, 0.923879532511287 },
  327. { -0.707106781186547, 0.707106781186548 },
  328. { 0.371317193951838, 0.928506080473215 },
  329. { -0.724247082951467, 0.689540544737067 },
  330. { 0.359895036534988, 0.932992798834739 },
  331. { -0.740951125354959, 0.671558954847019 },
  332. { 0.348418680249435, 0.937339011912575 },
  333. { -0.757208846506485, 0.653172842953777 },
  334. { 0.33688985339222, 0.941544065183021 },
  335. { -0.773010453362737, 0.634393284163645 },
  336. { 0.325310292162263, 0.945607325380521 },
  337. { -0.788346427626606, 0.615231590580627 },
  338. { 0.313681740398892, 0.949528180593037 },
  339. { -0.803207531480645, 0.595699304492433 },
  340. { 0.302005949319228, 0.953306040354194 },
  341. { -0.817584813151584, 0.575808191417845 },
  342. { 0.290284677254462, 0.956940335732209 },
  343. { -0.831469612302545, 0.555570233019602 },
  344. { 0.278519689385053, 0.960430519415566 },
  345. { -0.844853565249707, 0.534997619887097 },
  346. { 0.266712757474898, 0.96377606579544 },
  347. { -0.857728610000272, 0.514102744193222 },
  348. { 0.254865659604515, 0.966976471044852 },
  349. { -0.870086991108711, 0.492898192229784 },
  350. { 0.242980179903264, 0.970031253194544 },
  351. { -0.881921264348355, 0.471396736825998 },
  352. { 0.231058108280671, 0.97293995220556 },
  353. { -0.893224301195515, 0.449611329654607 },
  354. { 0.21910124015687, 0.975702130038529 },
  355. { -0.903989293123443, 0.427555093430282 },
  356. { 0.207111376192219, 0.978317370719628 },
  357. { -0.914209755703531, 0.40524131400499 },
  358. { 0.195090322016128, 0.98078528040323 },
  359. { -0.923879532511287, 0.38268343236509 },
  360. { 0.183039887955141, 0.983105487431216 },
  361. { -0.932992798834739, 0.359895036534988 },
  362. { 0.170961888760301, 0.985277642388941 },
  363. { -0.941544065183021, 0.33688985339222 },
  364. { 0.158858143333861, 0.987301418157858 },
  365. { -0.949528180593037, 0.313681740398891 },
  366. { 0.146730474455362, 0.989176509964781 },
  367. { -0.956940335732209, 0.290284677254462 },
  368. { 0.134580708507126, 0.99090263542778 },
  369. { -0.96377606579544, 0.266712757474898 },
  370. { 0.122410675199216, 0.99247953459871 },
  371. { -0.970031253194544, 0.242980179903264 },
  372. { 0.110222207293883, 0.993906970002356 },
  373. { -0.975702130038528, 0.21910124015687 },
  374. { 0.0980171403295608, 0.995184726672197 },
  375. { -0.98078528040323, 0.195090322016129 },
  376. { 0.0857973123444399, 0.996312612182778 },
  377. { -0.985277642388941, 0.170961888760301 },
  378. { 0.0735645635996675, 0.99729045667869 },
  379. { -0.989176509964781, 0.146730474455362 },
  380. { 0.0613207363022086, 0.998118112900149 },
  381. { -0.99247953459871, 0.122410675199216 },
  382. { 0.0490676743274181, 0.998795456205172 },
  383. { -0.995184726672197, 0.0980171403295608 },
  384. { 0.036807222941359, 0.99932238458835 },
  385. { -0.99729045667869, 0.0735645635996677 },
  386. { 0.0245412285229123, 0.999698818696204 },
  387. { -0.998795456205172, 0.049067674327418 },
  388. { 0.0122715382857199, 0.999924701839145 },
  389. { -0.999698818696204, 0.0245412285229123 },
  390. };
  391. ///////////////////////////////////////////////////////////////
  392. void PFFTW(16) (fftw_complex * input) {
  393.      fftw_real tmp332;
  394.      fftw_real tmp331;
  395.      fftw_real tmp330;
  396.      fftw_real tmp329;
  397.      fftw_real tmp328;
  398.      fftw_real tmp327;
  399.      fftw_real tmp326;
  400.      fftw_real tmp325;
  401.      fftw_real tmp324;
  402.      fftw_real tmp323;
  403.      fftw_real tmp322;
  404.      fftw_real tmp321;
  405.      fftw_real tmp320;
  406.      fftw_real tmp319;
  407.      fftw_real tmp318;
  408.      fftw_real tmp317;
  409.      fftw_real tmp316;
  410.      fftw_real tmp315;
  411.      fftw_real tmp314;
  412.      fftw_real tmp313;
  413.      fftw_real tmp312;
  414.      fftw_real tmp311;
  415.      fftw_real tmp310;
  416.      fftw_real tmp309;
  417.      fftw_real tmp308;
  418.      fftw_real tmp307;
  419.      fftw_real tmp306;
  420.      fftw_real tmp305;
  421.      fftw_real tmp304;
  422.      fftw_real tmp303;
  423.      fftw_real tmp302;
  424.      fftw_real tmp301;
  425.      fftw_real st1;
  426.      fftw_real st2;
  427.      fftw_real st3;
  428.      fftw_real st4;
  429.      fftw_real st5;
  430.      fftw_real st6;
  431.      fftw_real st7;
  432.      fftw_real st8;
  433.      st8 = c_re(input[0]);
  434.      st8 = st8 - c_re(input[8]);
  435.      st7 = c_im(input[4]);
  436.      st7 = st7 - c_im(input[12]);
  437.      st6 = c_re(input[4]);
  438.      st5 = st8 - st7;
  439.      st8 = st8 + st7;
  440.      st6 = st6 - c_re(input[12]);
  441.      st4 = c_im(input[0]);
  442.      st4 = st4 - c_im(input[8]);
  443.      st3 = c_re(input[0]);
  444.      st2 = st6 + st4;
  445.      st4 = st4 - st6;
  446.      st3 = st3 + c_re(input[8]);
  447.      st1 = c_re(input[4]);
  448.      st1 = st1 + c_re(input[12]);
  449.      st7 = c_im(input[0]);
  450.      st6 = st3 + st1;
  451.      st3 = st3 - st1;
  452.      st7 = st7 + c_im(input[8]);
  453.      st1 = c_im(input[4]);
  454.      st1 = st1 + c_im(input[12]);
  455.      tmp301 = st4;
  456.      st4 = c_re(input[2]);
  457.      tmp302 = st8;
  458.      st8 = st7 + st1;
  459.      st7 = st7 - st1;
  460.      st4 = st4 + c_re(input[10]);
  461.      st1 = c_re(input[6]);
  462.      st1 = st1 + c_re(input[14]);
  463.      tmp303 = st2;
  464.      st2 = c_im(input[2]);
  465.      tmp304 = st5;
  466.      st5 = st4 + st1;
  467.      st4 = st4 - st1;
  468.      st2 = st2 + c_im(input[10]);
  469.      st1 = st6 + st5;
  470.      st6 = st6 - st5;
  471.      st5 = st4 + st7;
  472.      st7 = st7 - st4;
  473.      st4 = c_im(input[6]);
  474.      st4 = st4 + c_im(input[14]);
  475.      tmp305 = st5;
  476.      st5 = c_re(input[6]);
  477.      tmp306 = st7;
  478.      st7 = st2 + st4;
  479.      st2 = st2 - st4;
  480.      st4 = st8 - st7;
  481.      st8 = st8 + st7;
  482.      st7 = st3 - st2;
  483.      st3 = st3 + st2;
  484.      st5 = st5 - c_re(input[14]);
  485.      st2 = c_im(input[2]);
  486.      st2 = st2 - c_im(input[10]);
  487.      tmp307 = st3;
  488.      st3 = c_re(input[2]);
  489.      tmp308 = st6;
  490.      st6 = st5 + st2;
  491.      st2 = st2 - st5;
  492.      st3 = st3 - c_re(input[10]);
  493.      st5 = c_im(input[6]);
  494.      st5 = st5 - c_im(input[14]);
  495.      tmp309 = st7;
  496.      st7 = c_re(input[5]);
  497.      tmp310 = st8;
  498.      st8 = st3 - st5;
  499.      st3 = st3 + st5;
  500.      st5 = st6 - st8;
  501.      st6 = st6 + st8;
  502.      st5 = st5 * K707106781[0];
  503.      st8 = st2 + st3;
  504.      st6 = st6 * K707106781[0];
  505.      st2 = st2 - st3;
  506.      st8 = st8 * K707106781[0];
  507.      st7 = st7 - c_re(input[13]);
  508.      st2 = st2 * K707106781[0];
  509.      st3 = tmp304 + st5;
  510.      tmp311 = st4;
  511.      st4 = tmp303 + st6;
  512.      st6 = tmp303 - st6;
  513.      st5 = tmp304 - st5;
  514.      tmp312 = st1;
  515.      st1 = tmp302 - st8;
  516.      st8 = tmp302 + st8;
  517.      tmp313 = st8;
  518.      st8 = tmp301 + st2;
  519.      st2 = tmp301 - st2;
  520.      tmp314 = st2;
  521.      st2 = c_im(input[1]);
  522.      st2 = st2 - c_im(input[9]);
  523.      tmp315 = st8;
  524.      st8 = c_re(input[1]);
  525.      tmp316 = st1;
  526.      st1 = st7 + st2;
  527.      st2 = st2 - st7;
  528.      st7 = st1 * K923879532[0];
  529.      st8 = st8 - c_re(input[9]);
  530.      st1 = st1 * K382683432[0];
  531.      tmp317 = st5;
  532.      st5 = c_im(input[5]);
  533.      tmp318 = st6;
  534.      st6 = st2 * K923879532[0];
  535.      st5 = st5 - c_im(input[13]);
  536.      st2 = st2 * K382683432[0];
  537.      tmp319 = st4;
  538.      st4 = st8 - st5;
  539.      st8 = st8 + st5;
  540.      st5 = st4 * K382683432[0];
  541.      tmp320 = st3;
  542.      st3 = c_re(input[7]);
  543.      st4 = st4 * K923879532[0];
  544.      st7 = st7 + st5;
  545.      st5 = st8 * K382683432[0];
  546.      st1 = st1 - st4;
  547.      st8 = st8 * K923879532[0];
  548.      st6 = st6 - st5;
  549.      st2 = st2 + st8;
  550.      st3 = st3 - c_re(input[15]);
  551.      st4 = c_im(input[3]);
  552.      st4 = st4 - c_im(input[11]);
  553.      st5 = c_re(input[3]);
  554.      st8 = st3 + st4;
  555.      st4 = st4 - st3;
  556.      st3 = st8 * K382683432[0];
  557.      st5 = st5 - c_re(input[11]);
  558.      st8 = st8 * K923879532[0];
  559.      tmp321 = st2;
  560.      st2 = c_im(input[7]);
  561.      tmp322 = st6;
  562.      st6 = st4 * K382683432[0];
  563.      st2 = st2 - c_im(input[15]);
  564.      st4 = st4 * K923879532[0];
  565.      tmp323 = st1;
  566.      st1 = st5 - st2;
  567.      st5 = st5 + st2;
  568.      st2 = st1 * K923879532[0];
  569.      tmp324 = st7;
  570.      st7 = c_re(input[1]);
  571.      st1 = st1 * K382683432[0];
  572.      st3 = st3 + st2;
  573.      st2 = st5 * K923879532[0];
  574.      st1 = st1 - st8;
  575.      st5 = st5 * K382683432[0];
  576.      st6 = st6 - st2;
  577.      st4 = st4 + st5;
  578.      st7 = st7 + c_re(input[9]);
  579.      st8 = tmp324 - st3;
  580.      st3 = tmp324 + st3;
  581.      st2 = tmp320 - st8;
  582.      st8 = tmp320 + st8;
  583.      st5 = tmp319 - st3;
  584.      st3 = tmp319 + st3;
  585.      tmp325 = st3;
  586.      st3 = tmp323 + st1;
  587.      st1 = tmp323 - st1;
  588.      tmp326 = st5;
  589.      st5 = tmp318 - st3;
  590.      st3 = tmp318 + st3;
  591.      tmp327 = st5;
  592.      st5 = tmp317 - st1;
  593.      st1 = tmp317 + st1;
  594.      tmp328 = st3;
  595.      st3 = tmp322 - st6;
  596.      tmp329 = st5;
  597.      st5 = tmp321 + st4;
  598.      tmp330 = st1;
  599.      st1 = tmp316 - st3;
  600.      st3 = tmp316 + st3;
  601.      tmp331 = st2;
  602.      st2 = tmp313 - st5;
  603.      st5 = tmp313 + st5;
  604.      st6 = tmp322 + st6;
  605.      c_re(input[9]) = st2;
  606.      c_re(input[1]) = st5;
  607.      st2 = tmp315 - st6;
  608.      st6 = tmp315 + st6;
  609.      st4 = tmp321 - st4;
  610.      st5 = c_re(input[5]);
  611.      c_re(input[5]) = st3;
  612.      st5 = st5 + c_re(input[13]);
  613.      c_re(input[13]) = st1;
  614.      st1 = st7 + st5;
  615.      st7 = st7 - st5;
  616.      st3 = tmp314 - st4;
  617.      st4 = tmp314 + st4;
  618.      st5 = c_im(input[1]);
  619.      c_im(input[1]) = st6;
  620.      st5 = st5 + c_im(input[9]);
  621.      c_im(input[9]) = st2;
  622.      st2 = c_im(input[5]);
  623.      c_im(input[5]) = st3;
  624.      st2 = st2 + c_im(input[13]);
  625.      c_im(input[13]) = st4;
  626.      st6 = st5 - st2;
  627.      st5 = st5 + st2;
  628.      st3 = c_re(input[3]);
  629.      c_re(input[3]) = st8;
  630.      st3 = st3 + c_re(input[11]);
  631.      c_re(input[11]) = tmp331;
  632.      st8 = c_re(input[7]);
  633.      c_re(input[7]) = tmp330;
  634.      st8 = st8 + c_re(input[15]);
  635.      c_re(input[15]) = tmp329;
  636.      st4 = st3 + st8;
  637.      st3 = st3 - st8;
  638.      st2 = st1 + st4;
  639.      st1 = st1 - st4;
  640.      st8 = st3 + st6;
  641.      st6 = st6 - st3;
  642.      st4 = tmp312 - st2;
  643.      st2 = tmp312 + st2;
  644.      st3 = tmp311 - st1;
  645.      c_re(input[8]) = st4;
  646.      c_re(input[0]) = st2;
  647.      c_im(input[4]) = st3;
  648.      st1 = st1 + tmp311;
  649.      st4 = c_im(input[3]);
  650.      c_im(input[3]) = tmp328;
  651.      c_im(input[12]) = st1;
  652.      st4 = st4 + c_im(input[11]);
  653.      c_im(input[11]) = tmp327;
  654.      st2 = c_im(input[7]);
  655.      c_im(input[7]) = tmp326;
  656.      st2 = st2 + c_im(input[15]);
  657.      c_im(input[15]) = tmp325;
  658.      st3 = st4 - st2;
  659.      st4 = st4 + st2;
  660.      st1 = st7 - st3;
  661.      st2 = st5 - st4;
  662.      tmp332 = st2;
  663.      st2 = st8 - st1;
  664.      st8 = st8 + st1;
  665.      st2 = st2 * K707106781[0];
  666.      st5 = st5 + st4;
  667.      st8 = st8 * K707106781[0];
  668.      st7 = st7 + st3;
  669.      st3 = tmp310 + st5;
  670.      st4 = st6 - st7;
  671.      st6 = st6 + st7;
  672.      c_im(input[0]) = st3;
  673.      st4 = st4 * K707106781[0];
  674.      st5 = tmp310 - st5;
  675.      st6 = st6 * K707106781[0];
  676.      st1 = tmp309 - st2;
  677.      c_im(input[8]) = st5;
  678.      c_re(input[14]) = st1;
  679.      st2 = tmp309 + st2;
  680.      st7 = tmp308 + tmp332;
  681.      st3 = tmp308 - tmp332;
  682.      c_re(input[6]) = st2;
  683.      c_re(input[4]) = st7;
  684.      c_re(input[12]) = st3;
  685.      st5 = tmp306 - st4;
  686.      st4 = tmp306 + st4;
  687.      st1 = tmp307 - st6;
  688.      c_im(input[10]) = st5;
  689.      c_im(input[2]) = st4;
  690.      c_re(input[10]) = st1;
  691.      st6 = tmp307 + st6;
  692.      st2 = tmp305 - st8;
  693.      st8 = tmp305 + st8;
  694.      c_re(input[2]) = st6;
  695.      c_im(input[6]) = st2;
  696.      c_im(input[14]) = st8;
  697. }
  698. void PFFTW(32) (fftw_complex * input) {
  699.      fftw_real tmp714;
  700.      fftw_real tmp713;
  701.      fftw_real tmp712;
  702.      fftw_real tmp711;
  703.      fftw_real tmp710;
  704.      fftw_real tmp709;
  705.      fftw_real tmp708;
  706.      fftw_real tmp707;
  707.      fftw_real tmp706;
  708.      fftw_real tmp705;
  709.      fftw_real tmp704;
  710.      fftw_real tmp703;
  711.      fftw_real tmp702;
  712.      fftw_real tmp701;
  713.      fftw_real tmp700;
  714.      fftw_real tmp699;
  715.      fftw_real tmp698;
  716.      fftw_real tmp697;
  717.      fftw_real tmp696;
  718.      fftw_real tmp695;
  719.      fftw_real tmp694;
  720.      fftw_real tmp693;
  721.      fftw_real tmp692;
  722.      fftw_real tmp691;
  723.      fftw_real tmp690;
  724.      fftw_real tmp689;
  725.      fftw_real tmp688;
  726.      fftw_real tmp687;
  727.      fftw_real tmp686;
  728.      fftw_real tmp685;
  729.      fftw_real tmp684;
  730.      fftw_real tmp683;
  731.      fftw_real tmp682;
  732.      fftw_real tmp681;
  733.      fftw_real tmp680;
  734.      fftw_real tmp679;
  735.      fftw_real tmp678;
  736.      fftw_real tmp677;
  737.      fftw_real tmp676;
  738.      fftw_real tmp675;
  739.      fftw_real tmp674;
  740.      fftw_real tmp673;
  741.      fftw_real tmp672;
  742.      fftw_real tmp671;
  743.      fftw_real tmp670;
  744.      fftw_real tmp669;
  745.      fftw_real tmp668;
  746.      fftw_real tmp667;
  747.      fftw_real tmp666;
  748.      fftw_real tmp665;
  749.      fftw_real tmp664;
  750.      fftw_real tmp663;
  751.      fftw_real tmp662;
  752.      fftw_real tmp661;
  753.      fftw_real tmp660;
  754.      fftw_real tmp659;
  755.      fftw_real tmp658;
  756.      fftw_real tmp657;
  757.      fftw_real tmp656;
  758.      fftw_real tmp655;
  759.      fftw_real tmp654;
  760.      fftw_real tmp653;
  761.      fftw_real tmp652;
  762.      fftw_real tmp651;
  763.      fftw_real tmp650;
  764.      fftw_real tmp649;
  765.      fftw_real tmp648;
  766.      fftw_real tmp647;
  767.      fftw_real tmp646;
  768.      fftw_real tmp645;
  769.      fftw_real tmp644;
  770.      fftw_real tmp643;
  771.      fftw_real tmp642;
  772.      fftw_real tmp641;
  773.      fftw_real tmp640;
  774.      fftw_real tmp639;
  775.      fftw_real tmp638;
  776.      fftw_real tmp637;
  777.      fftw_real tmp636;
  778.      fftw_real tmp635;
  779.      fftw_real tmp634;
  780.      fftw_real tmp633;
  781.      fftw_real tmp632;
  782.      fftw_real tmp631;
  783.      fftw_real tmp630;
  784.      fftw_real tmp629;
  785.      fftw_real tmp628;
  786.      fftw_real tmp627;
  787.      fftw_real tmp626;
  788.      fftw_real tmp625;
  789.      fftw_real tmp624;
  790.      fftw_real tmp623;
  791.      fftw_real tmp622;
  792.      fftw_real tmp621;
  793.      fftw_real st1;
  794.      fftw_real st2;
  795.      fftw_real st3;
  796.      fftw_real st4;
  797.      fftw_real st5;
  798.      fftw_real st6;
  799.      fftw_real st7;
  800.      fftw_real st8;
  801.      st8 = c_re(input[0]);
  802.      st8 = st8 - c_re(input[16]);
  803.      st7 = c_im(input[8]);
  804.      st7 = st7 - c_im(input[24]);
  805.      st6 = st8 - st7;
  806.      st8 = st8 + st7;
  807.      st5 = c_re(input[0]);
  808.      st5 = st5 + c_re(input[16]);
  809.      st4 = c_re(input[8]);
  810.      st4 = st4 + c_re(input[24]);
  811.      st3 = st5 + st4;
  812.      st5 = st5 - st4;
  813.      st2 = c_im(input[0]);
  814.      st2 = st2 + c_im(input[16]);
  815.      st1 = c_im(input[8]);
  816.      st1 = st1 + c_im(input[24]);
  817.      st7 = st2 + st1;
  818.      st2 = st2 - st1;
  819.      st4 = c_re(input[4]);
  820.      st4 = st4 + c_re(input[20]);
  821.      st1 = c_re(input[28]);
  822.      st1 = st1 + c_re(input[12]);
  823.      tmp621 = st6;
  824.      st6 = st4 + st1;
  825.      st1 = st1 - st4;
  826.      st4 = st3 + st6;
  827.      st3 = st3 - st6;
  828.      st6 = st2 - st1;
  829.      st1 = st1 + st2;
  830.      st2 = c_im(input[4]);
  831.      st2 = st2 + c_im(input[20]);
  832.      tmp622 = st1;
  833.      st1 = c_im(input[28]);
  834.      st1 = st1 + c_im(input[12]);
  835.      tmp623 = st6;
  836.      st6 = st2 + st1;
  837.      st2 = st2 - st1;
  838.      st1 = st7 + st6;
  839.      st7 = st7 - st6;
  840.      st6 = st5 - st2;
  841.      st5 = st5 + st2;
  842.      st2 = c_re(input[8]);
  843.      st2 = st2 - c_re(input[24]);
  844.      tmp624 = st5;
  845.      st5 = c_im(input[0]);
  846.      st5 = st5 - c_im(input[16]);
  847.      tmp625 = st6;
  848.      st6 = st2 + st5;
  849.      st5 = st5 - st2;
  850.      st2 = c_im(input[4]);
  851.      st2 = st2 - c_im(input[20]);
  852.      tmp626 = st3;
  853.      st3 = c_re(input[4]);
  854.      st3 = st3 - c_re(input[20]);
  855.      tmp627 = st1;
  856.      st1 = st2 - st3;
  857.      st3 = st3 + st2;
  858.      st2 = c_re(input[28]);
  859.      st2 = st2 - c_re(input[12]);
  860.      tmp628 = st7;
  861.      st7 = c_im(input[28]);
  862.      st7 = st7 - c_im(input[12]);
  863.      tmp629 = st4;
  864.      st4 = st2 + st7;
  865.      st2 = st2 - st7;
  866.      st7 = st1 - st4;
  867.      st7 = st7 * K707106781[0];
  868.      st1 = st1 + st4;
  869.      st1 = st1 * K707106781[0];
  870.      st4 = st2 - st3;
  871.      st4 = st4 * K707106781[0];
  872.      st3 = st3 + st2;
  873.      st3 = st3 * K707106781[0];
  874.      st2 = st8 - st3;
  875.      tmp630 = st2;
  876.      st2 = st5 - st1;
  877.      tmp631 = st2;
  878.      st2 = tmp621 - st7;
  879.      tmp632 = st2;
  880.      st2 = st6 - st4;
  881.      st7 = tmp621 + st7;
  882.      st6 = st6 + st4;
  883.      st8 = st8 + st3;
  884.      st5 = st5 + st1;
  885.      st1 = c_re(input[2]);
  886.      st1 = st1 + c_re(input[18]);
  887.      st4 = c_re(input[10]);
  888.      st4 = st4 + c_re(input[26]);
  889.      st3 = st1 + st4;
  890.      st1 = st1 - st4;
  891.      st4 = c_im(input[2]);
  892.      st4 = st4 + c_im(input[18]);
  893.      tmp633 = st5;
  894.      st5 = c_im(input[10]);
  895.      st5 = st5 + c_im(input[26]);
  896.      tmp634 = st8;
  897.      st8 = st4 + st5;
  898.      st4 = st4 - st5;
  899.      st5 = st1 + st4;
  900.      st4 = st4 - st1;
  901.      st1 = c_re(input[30]);
  902.      st1 = st1 + c_re(input[14]);
  903.      tmp635 = st6;
  904.      st6 = c_re(input[6]);
  905.      st6 = st6 + c_re(input[22]);
  906.      tmp636 = st7;
  907.      st7 = st1 + st6;
  908.      st1 = st1 - st6;
  909.      st6 = st3 + st7;
  910.      st7 = st7 - st3;
  911.      st3 = tmp629 + st6;
  912.      st6 = tmp629 - st6;
  913.      tmp637 = st6;
  914.      st6 = st7 + tmp628;
  915.      st7 = tmp628 - st7;
  916.      tmp638 = st7;
  917.      st7 = c_im(input[30]);
  918.      st7 = st7 + c_im(input[14]);
  919.      tmp639 = st6;
  920.      st6 = c_im(input[6]);
  921.      st6 = st6 + c_im(input[22]);
  922.      tmp640 = st3;
  923.      st3 = st7 + st6;
  924.      st7 = st7 - st6;
  925.      st6 = st8 + st3;
  926.      st8 = st8 - st3;
  927.      st3 = st1 - st7;
  928.      tmp641 = st2;
  929.      st2 = st3 - st5;
  930.      st2 = st2 * K707106781[0];
  931.      st5 = st5 + st3;
  932.      st5 = st5 * K707106781[0];
  933.      st1 = st1 + st7;
  934.      st7 = st4 - st1;
  935.      st7 = st7 * K707106781[0];
  936.      st4 = st4 + st1;
  937.      st4 = st4 * K707106781[0];
  938.      st3 = tmp627 - st6;
  939.      st6 = tmp627 + st6;
  940.      st1 = tmp626 - st8;
  941.      st8 = tmp626 + st8;
  942.      tmp642 = st8;
  943.      st8 = tmp625 + st7;
  944.      st7 = tmp625 - st7;
  945.      tmp643 = st7;
  946.      st7 = tmp623 - st2;
  947.      st2 = tmp623 + st2;
  948.      tmp644 = st2;
  949.      st2 = tmp624 + st5;
  950.      st5 = tmp624 - st5;
  951.      tmp645 = st5;
  952.      st5 = tmp622 - st4;
  953.      st4 = tmp622 + st4;
  954.      tmp646 = st4;
  955.      st4 = c_re(input[6]);
  956.      st4 = st4 - c_re(input[22]);
  957.      tmp647 = st5;
  958.      st5 = c_im(input[30]);
  959.      st5 = st5 - c_im(input[14]);
  960.      tmp648 = st2;
  961.      st2 = st4 + st5;
  962.      tmp649 = st7;
  963.      st7 = st2 * K382683432[0];
  964.      st5 = st5 - st4;
  965.      st2 = st2 * K923879532[0];
  966.      st4 = c_re(input[30]);
  967.      tmp650 = st8;
  968.      st8 = st5 * K923879532[0];
  969.      st4 = st4 - c_re(input[14]);
  970.      st5 = st5 * K382683432[0];
  971.      tmp651 = st1;
  972.      st1 = c_im(input[6]);
  973.      st1 = st1 - c_im(input[22]);
  974.      tmp652 = st6;
  975.      st6 = st4 - st1;
  976.      tmp653 = st3;
  977.      st3 = st6 * K923879532[0];
  978.      st4 = st4 + st1;
  979.      st6 = st6 * K382683432[0];
  980.      st7 = st7 + st3;
  981.      st1 = st4 * K382683432[0];
  982.      st6 = st6 - st2;
  983.      st4 = st4 * K923879532[0];
  984.      st8 = st8 + st1;
  985.      st4 = st4 - st5;
  986.      st2 = c_re(input[10]);
  987.      st2 = st2 - c_re(input[26]);
  988.      st5 = c_im(input[2]);
  989.      st5 = st5 - c_im(input[18]);
  990.      st3 = st2 + st5;
  991.      st1 = st3 * K382683432[0];
  992.      st5 = st5 - st2;
  993.      st3 = st3 * K923879532[0];
  994.      st2 = c_re(input[2]);
  995.      tmp654 = st6;
  996.      st6 = st5 * K923879532[0];
  997.      st2 = st2 - c_re(input[18]);
  998.      st5 = st5 * K382683432[0];
  999.      tmp655 = st7;
  1000.      st7 = c_im(input[10]);
  1001.      st7 = st7 - c_im(input[26]);
  1002.      tmp656 = st4;
  1003.      st4 = st2 - st7;
  1004.      tmp657 = st8;
  1005.      st8 = st4 * K923879532[0];
  1006.      st2 = st2 + st7;
  1007.      st4 = st4 * K382683432[0];
  1008.      st1 = st1 - st8;
  1009.      st7 = st2 * K382683432[0];
  1010.      st3 = st3 + st4;
  1011.      st2 = st2 * K923879532[0];
  1012.      st6 = st6 - st7;
  1013.      st5 = st5 + st2;
  1014.      st8 = st6 - tmp657;
  1015.      st4 = tmp630 + st8;
  1016.      st8 = tmp630 - st8;
  1017.      st7 = tmp656 - st5;
  1018.      st2 = tmp631 - st7;
  1019.      st7 = tmp631 + st7;
  1020.      tmp658 = st7;
  1021.      st7 = st1 - tmp655;
  1022.      tmp659 = st8;
  1023.      st8 = tmp632 + st7;
  1024.      st7 = tmp632 - st7;
  1025.      tmp660 = st7;
  1026.      st7 = tmp654 - st3;
  1027.      tmp661 = st8;
  1028.      st8 = tmp641 - st7;
  1029.      st7 = tmp641 + st7;
  1030.      st3 = st3 + tmp654;
  1031.      tmp662 = st7;
  1032.      st7 = tmp636 + st3;
  1033.      st3 = tmp636 - st3;
  1034.      st1 = st1 + tmp655;
  1035.      tmp663 = st3;
  1036.      st3 = tmp635 - st1;
  1037.      st1 = tmp635 + st1;
  1038.      st5 = st5 + tmp656;
  1039.      tmp664 = st1;
  1040.      st1 = tmp634 + st5;
  1041.      st5 = tmp634 - st5;
  1042.      st6 = st6 + tmp657;
  1043.      tmp665 = st5;
  1044.      st5 = tmp633 - st6;
  1045.      st6 = tmp633 + st6;
  1046.      tmp666 = st6;
  1047.      st6 = c_re(input[1]);
  1048.      st6 = st6 + c_re(input[17]);
  1049.      tmp667 = st5;
  1050.      st5 = c_re(input[9]);
  1051.      st5 = st5 + c_re(input[25]);
  1052.      tmp668 = st1;
  1053.      st1 = st6 + st5;
  1054.      st6 = st6 - st5;
  1055.      st5 = c_im(input[1]);
  1056.      st5 = st5 + c_im(input[17]);
  1057.      tmp669 = st3;
  1058.      st3 = c_im(input[9]);
  1059.      st3 = st3 + c_im(input[25]);
  1060.      tmp670 = st7;
  1061.      st7 = st5 - st3;
  1062.      st5 = st5 + st3;
  1063.      st3 = c_re(input[5]);
  1064.      st3 = st3 + c_re(input[21]);
  1065.      tmp671 = st8;
  1066.      st8 = c_re(input[29]);
  1067.      st8 = st8 + c_re(input[13]);
  1068.      tmp672 = st2;
  1069.      st2 = st3 + st8;
  1070.      st8 = st8 - st3;
  1071.      st3 = st1 + st2;
  1072.      st1 = st1 - st2;
  1073.      st2 = st8 + st7;
  1074.      tmp673 = st4;
  1075.      st4 = st2 * K382683432[0];
  1076.      st7 = st7 - st8;
  1077.      st2 = st2 * K923879532[0];
  1078.      st8 = c_im(input[5]);
  1079.      tmp674 = st3;
  1080.      st3 = st7 * K923879532[0];
  1081.      st8 = st8 + c_im(input[21]);
  1082.      st7 = st7 * K382683432[0];
  1083.      tmp675 = st4;
  1084.      st4 = c_im(input[29]);
  1085.      st4 = st4 + c_im(input[13]);
  1086.      tmp676 = st7;
  1087.      st7 = st8 - st4;
  1088.      st8 = st8 + st4;
  1089.      st4 = st5 + st8;
  1090.      st5 = st5 - st8;
  1091.      st8 = st1 + st5;
  1092.      st5 = st5 - st1;
  1093.      st1 = st6 + st7;
  1094.      tmp677 = st8;
  1095.      st8 = st1 * K923879532[0];
  1096.      st6 = st6 - st7;
  1097.      st1 = st1 * K382683432[0];
  1098.      st2 = st2 - st1;
  1099.      st7 = st6 * K382683432[0];
  1100.      st3 = st3 + st7;
  1101.      st6 = st6 * K923879532[0];
  1102.      st6 = tmp676 - st6;
  1103.      st8 = tmp675 + st8;
  1104.      st1 = c_re(input[31]);
  1105.      st1 = st1 + c_re(input[15]);
  1106.      st7 = c_re(input[7]);
  1107.      st7 = st7 + c_re(input[23]);
  1108.      tmp678 = st8;
  1109.      st8 = st1 + st7;
  1110.      st1 = st1 - st7;
  1111.      st7 = c_im(input[31]);
  1112.      st7 = st7 + c_im(input[15]);
  1113.      tmp679 = st2;
  1114.      st2 = c_im(input[7]);
  1115.      st2 = st2 + c_im(input[23]);
  1116.      tmp680 = st3;
  1117.      st3 = st7 - st2;
  1118.      st7 = st7 + st2;
  1119.      st2 = c_re(input[3]);
  1120.      st2 = st2 + c_re(input[19]);
  1121.      tmp681 = st6;
  1122.      st6 = c_re(input[27]);
  1123.      st6 = st6 + c_re(input[11]);
  1124.      tmp682 = st5;
  1125.      st5 = st2 + st6;
  1126.      st6 = st6 - st2;
  1127.      st2 = st8 + st5;
  1128.      st8 = st8 - st5;
  1129.      st5 = st6 + st3;
  1130.      tmp683 = st4;
  1131.      st4 = st5 * K382683432[0];
  1132.      st3 = st3 - st6;
  1133.      st5 = st5 * K923879532[0];
  1134.      st6 = tmp674 + st2;
  1135.      tmp684 = st4;
  1136.      st4 = st3 * K923879532[0];
  1137.      tmp685 = st5;
  1138.      st5 = tmp640 - st6;
  1139.      st3 = st3 * K382683432[0];
  1140.      st6 = tmp640 + st6;
  1141.      st2 = st2 - tmp674;
  1142.      c_re(input[16]) = st5;
  1143.      st5 = st2 + tmp653;
  1144.      st2 = tmp653 - st2;
  1145.      c_re(input[0]) = st6;
  1146.      st6 = c_im(input[3]);
  1147.      st6 = st6 + c_im(input[19]);
  1148.      c_im(input[8]) = st5;
  1149.      st5 = c_im(input[27]);
  1150.      st5 = st5 + c_im(input[11]);
  1151.      c_im(input[24]) = st2;
  1152.      st2 = st6 - st5;
  1153.      st6 = st6 + st5;
  1154.      st5 = st7 + st6;
  1155.      st7 = st7 - st6;
  1156.      st6 = st8 - st7;
  1157.      st8 = st8 + st7;
  1158.      st7 = st1 + st2;
  1159.      tmp686 = st4;
  1160.      st4 = st7 * K923879532[0];
  1161.      st1 = st1 - st2;
  1162.      st7 = st7 * K382683432[0];
  1163.      st2 = tmp683 + st5;
  1164.      tmp687 = st4;
  1165.      st4 = st1 * K382683432[0];
  1166.      tmp688 = st7;
  1167.      st7 = tmp652 - st2;
  1168.      st1 = st1 * K923879532[0];
  1169.      st2 = tmp652 + st2;
  1170.      st5 = tmp683 - st5;
  1171.      c_im(input[16]) = st7;
  1172.      st7 = tmp637 - st5;
  1173.      st5 = tmp637 + st5;
  1174.      c_im(input[0]) = st2;
  1175.      st2 = tmp682 + st8;
  1176.      st2 = st2 * K707106781[0];
  1177.      c_re(input[24]) = st7;
  1178.      st7 = tmp639 - st2;
  1179.      st2 = tmp639 + st2;
  1180.      st8 = tmp682 - st8;
  1181.      st8 = st8 * K707106781[0];
  1182.      c_re(input[8]) = st5;
  1183.      st5 = tmp651 - st8;
  1184.      st8 = tmp651 + st8;
  1185.      c_im(input[20]) = st7;
  1186.      st7 = tmp677 + st6;
  1187.      st7 = st7 * K707106781[0];
  1188.      c_im(input[4]) = st2;
  1189.      st2 = tmp642 - st7;
  1190.      st7 = tmp642 + st7;
  1191.      st6 = st6 - tmp677;
  1192.      st6 = st6 * K707106781[0];
  1193.      c_re(input[28]) = st5;
  1194.      st5 = tmp638 - st6;
  1195.      st6 = tmp638 + st6;
  1196.      st3 = st3 + st1;
  1197.      st1 = tmp681 - st3;
  1198.      st3 = tmp681 + st3;
  1199.      st4 = st4 - tmp686;
  1200.      c_re(input[12]) = st8;
  1201.      st8 = tmp680 + st4;
  1202.      st4 = st4 - tmp680;
  1203.      c_re(input[20]) = st2;
  1204.      st2 = tmp650 - st8;
  1205.      st8 = tmp650 + st8;
  1206.      c_re(input[4]) = st7;
  1207.      st7 = tmp649 - st4;
  1208.      st4 = tmp649 + st4;
  1209.      c_im(input[28]) = st5;
  1210.      st5 = tmp643 - st1;
  1211.      st1 = tmp643 + st1;
  1212.      c_im(input[12]) = st6;
  1213.      st6 = tmp644 - st3;
  1214.      st3 = tmp644 + st3;
  1215.      c_re(input[22]) = st2;
  1216.      st2 = tmp685 + tmp688;
  1217.      c_re(input[6]) = st8;
  1218.      st8 = tmp679 - st2;
  1219.      st2 = tmp679 + st2;
  1220.      c_im(input[30]) = st7;
  1221.      st7 = tmp687 - tmp684;
  1222.      c_im(input[14]) = st4;
  1223.      st4 = tmp678 + st7;
  1224.      st7 = st7 - tmp678;
  1225.      c_re(input[30]) = st5;
  1226.      st5 = tmp648 - st4;
  1227.      st4 = tmp648 + st4;
  1228.      c_re(input[14]) = st1;
  1229.      st1 = tmp647 - st7;
  1230.      st7 = tmp647 + st7;
  1231.      c_im(input[22]) = st6;
  1232.      st6 = tmp645 - st8;
  1233.      st8 = tmp645 + st8;
  1234.      c_im(input[6]) = st3;
  1235.      st3 = tmp646 - st2;
  1236.      st2 = tmp646 + st2;
  1237.      c_re(input[18]) = st5;
  1238.      st5 = c_re(input[31]);
  1239.      st5 = st5 - c_re(input[15]);
  1240.      c_re(input[2]) = st4;
  1241.      st4 = c_im(input[7]);
  1242.      st4 = st4 - c_im(input[23]);
  1243.      c_im(input[26]) = st1;
  1244.      st1 = st5 - st4;
  1245.      st5 = st5 + st4;
  1246.      c_im(input[10]) = st7;
  1247.      st7 = c_re(input[7]);
  1248.      st7 = st7 - c_re(input[23]);
  1249.      c_re(input[26]) = st6;
  1250.      st6 = c_im(input[31]);
  1251.      st6 = st6 - c_im(input[15]);
  1252.      c_re(input[10]) = st8;
  1253.      st8 = st7 + st6;
  1254.      st6 = st6 - st7;
  1255.      c_im(input[18]) = st3;
  1256.      st3 = c_im(input[3]);
  1257.      st3 = st3 - c_im(input[19]);
  1258.      c_im(input[2]) = st2;
  1259.      st2 = c_re(input[3]);
  1260.      st2 = st2 - c_re(input[19]);
  1261.      st4 = st3 - st2;
  1262.      st2 = st2 + st3;
  1263.      st7 = c_re(input[27]);
  1264.      st7 = st7 - c_re(input[11]);
  1265.      st3 = c_im(input[27]);
  1266.      st3 = st3 - c_im(input[11]);
  1267.      tmp689 = st5;
  1268.      st5 = st7 + st3;
  1269.      st7 = st7 - st3;
  1270.      st3 = st4 - st5;
  1271.      st3 = st3 * K707106781[0];
  1272.      st4 = st4 + st5;
  1273.      st4 = st4 * K707106781[0];
  1274.      st5 = st7 - st2;
  1275.      st5 = st5 * K707106781[0];
  1276.      st2 = st2 + st7;
  1277.      st2 = st2 * K707106781[0];
  1278.      st7 = st1 - st3;
  1279.      tmp690 = st2;
  1280.      st2 = st7 * K980785280[0];
  1281.      st1 = st1 + st3;
  1282.      st7 = st7 * K195090322[0];
  1283.      st3 = st6 - st4;
  1284.      tmp691 = st7;
  1285.      st7 = st3 * K555570233[0];
  1286.      st6 = st6 + st4;
  1287.      st3 = st3 * K831469612[0];
  1288.      st4 = st8 - st5;
  1289.      tmp692 = st6;
  1290.      st6 = st4 * K195090322[0];
  1291.      st8 = st8 + st5;
  1292.      st4 = st4 * K980785280[0];
  1293.      st5 = tmp689 - tmp690;
  1294.      tmp693 = st4;
  1295.      st4 = st5 * K831469612[0];
  1296.      tmp694 = st2;
  1297.      st2 = tmp689 + tmp690;
  1298.      st5 = st5 * K555570233[0];
  1299.      st4 = st4 + st7;
  1300.      st7 = st8 * K831469612[0];
  1301.      st5 = st5 - st3;
  1302.      st3 = st1 * K555570233[0];
  1303.      st6 = st6 + tmp694;
  1304.      st1 = st1 * K831469612[0];
  1305.      tmp695 = st6;
  1306.      st6 = tmp691 - tmp693;
  1307.      st8 = st8 * K555570233[0];
  1308.      st7 = st7 + st3;
  1309.      st3 = st2 * K195090322[0];
  1310.      st1 = st1 - st8;
  1311.      st8 = tmp692 * K980785280[0];
  1312.      st3 = st3 + st8;
  1313.      st2 = st2 * K980785280[0];
  1314.      st8 = c_re(input[9]);
  1315.      tmp696 = st3;
  1316.      st3 = tmp692 * K195090322[0];
  1317.      st8 = st8 - c_re(input[25]);
  1318.      st2 = st2 - st3;
  1319.      st3 = c_im(input[1]);
  1320.      st3 = st3 - c_im(input[17]);
  1321.      tmp697 = st2;
  1322.      st2 = st8 + st3;
  1323.      st3 = st3 - st8;
  1324.      st8 = c_re(input[1]);
  1325.      st8 = st8 - c_re(input[17]);
  1326.      tmp698 = st1;
  1327.      st1 = c_im(input[9]);
  1328.      st1 = st1 - c_im(input[25]);
  1329.      tmp699 = st7;
  1330.      st7 = st8 - st1;
  1331.      st8 = st8 + st1;
  1332.      st1 = c_re(input[29]);
  1333.      st1 = st1 - c_re(input[13]);
  1334.      tmp700 = st6;
  1335.      st6 = c_im(input[29]);
  1336.      st6 = st6 - c_im(input[13]);
  1337.      tmp701 = st5;
  1338.      st5 = st1 - st6;
  1339.      st1 = st1 + st6;
  1340.      st6 = c_re(input[5]);
  1341.      st6 = st6 - c_re(input[21]);
  1342.      tmp702 = st4;
  1343.      st4 = c_im(input[5]);
  1344.      st4 = st4 - c_im(input[21]);
  1345.      tmp703 = st8;
  1346.      st8 = st6 + st4;
  1347.      st4 = st4 - st6;
  1348.      st6 = st5 - st8;
  1349.      st6 = st6 * K707106781[0];
  1350.      st8 = st8 + st5;
  1351.      st8 = st8 * K707106781[0];
  1352.      st5 = st4 - st1;
  1353.      st5 = st5 * K707106781[0];
  1354.      st4 = st4 + st1;
  1355.      st4 = st4 * K707106781[0];
  1356.      st1 = st2 - st6;
  1357.      tmp704 = st8;
  1358.      st8 = st1 * K195090322[0];
  1359.      st2 = st2 + st6;
  1360.      st1 = st1 * K980785280[0];
  1361.      st6 = st3 - st4;
  1362.      tmp705 = st1;
  1363.      st1 = st6 * K555570233[0];
  1364.      st3 = st3 + st4;
  1365.      st6 = st6 * K831469612[0];
  1366.      st4 = st7 - st5;
  1367.      tmp706 = st8;
  1368.      st8 = st4 * K980785280[0];
  1369.      st7 = st7 + st5;
  1370.      st4 = st4 * K195090322[0];
  1371.      st5 = tmp703 - tmp704;
  1372.      tmp707 = st4;
  1373.      st4 = st5 * K831469612[0];
  1374.      tmp708 = st8;
  1375.      st8 = tmp703 + tmp704;
  1376.      st5 = st5 * K555570233[0];
  1377.      st1 = st1 - st4;
  1378.      st4 = st2 * K831469612[0];
  1379.      tmp709 = st4;
  1380.      st4 = st1 - tmp702;
  1381.      tmp710 = st4;
  1382.      st4 = st7 * K555570233[0];
  1383.      st1 = st1 + tmp702;
  1384.      st2 = st2 * K555570233[0];
  1385.      st5 = st5 + st6;
  1386.      st7 = st7 * K831469612[0];
  1387.      st6 = st5 + tmp701;
  1388.      tmp711 = st2;
  1389.      st2 = st3 * K980785280[0];
  1390.      st5 = tmp701 - st5;
  1391.      tmp712 = st2;
  1392.      st2 = st8 * K195090322[0];
  1393.      tmp713 = st2;
  1394.      st2 = tmp673 - st6;
  1395.      st8 = st8 * K980785280[0];
  1396.      st3 = st3 * K195090322[0];
  1397.      st6 = tmp673 + st6;
  1398.      c_re(input[21]) = st2;
  1399.      st2 = tmp672 - st5;
  1400.      st5 = tmp672 + st5;
  1401.      c_re(input[5]) = st6;
  1402.      st6 = tmp659 - tmp710;
  1403.      c_im(input[29]) = st2;
  1404.      st2 = tmp659 + tmp710;
  1405.      c_im(input[13]) = st5;
  1406.      st5 = tmp658 - st1;
  1407.      st1 = tmp658 + st1;
  1408.      c_re(input[29]) = st6;
  1409.      st6 = tmp706 - tmp708;
  1410.      c_re(input[13]) = st2;
  1411.      st2 = st6 - tmp695;
  1412.      st6 = st6 + tmp695;
  1413.      c_im(input[21]) = st5;
  1414.      st5 = tmp705 + tmp707;
  1415.      c_im(input[5]) = st1;
  1416.      st1 = st5 + tmp700;
  1417.      st5 = tmp700 - st5;
  1418.      tmp714 = st8;
  1419.      st8 = tmp661 - st1;
  1420.      st1 = tmp661 + st1;
  1421.      c_re(input[23]) = st8;
  1422.      st8 = tmp671 - st5;
  1423.      st5 = tmp671 + st5;
  1424.      c_re(input[7]) = st1;
  1425.      st1 = tmp660 - st2;
  1426.      st2 = tmp660 + st2;
  1427.      c_im(input[31]) = st8;
  1428.      st8 = tmp662 - st6;
  1429.      st6 = tmp662 + st6;
  1430.      st4 = tmp709 - st4;
  1431.      c_im(input[15]) = st5;
  1432.      st5 = st4 - tmp699;
  1433.      st4 = st4 + tmp699;
  1434.      st7 = tmp711 + st7;
  1435.      c_re(input[31]) = st1;
  1436.      st1 = st7 + tmp698;
  1437.      st7 = tmp698 - st7;
  1438.      c_re(input[15]) = st2;
  1439.      st2 = tmp670 - st1;
  1440.      st1 = tmp670 + st1;
  1441.      c_im(input[23]) = st8;
  1442.      st8 = tmp669 - st7;
  1443.      st7 = tmp669 + st7;
  1444.      c_im(input[7]) = st6;
  1445.      st6 = tmp663 - st5;
  1446.      st5 = tmp663 + st5;
  1447.      c_re(input[19]) = st2;
  1448.      st2 = tmp664 - st4;
  1449.      st4 = tmp664 + st4;
  1450.      c_re(input[3]) = st1;
  1451.      st1 = tmp712 - tmp713;
  1452.      c_im(input[27]) = st8;
  1453.      st8 = st1 - tmp696;
  1454.      st1 = st1 + tmp696;
  1455.      st3 = tmp714 + st3;
  1456.      c_im(input[11]) = st7;
  1457.      st7 = st3 + tmp697;
  1458.      st3 = tmp697 - st3;
  1459.      c_re(input[27]) = st6;
  1460.      st6 = tmp668 - st7;
  1461.      st7 = tmp668 + st7;
  1462.      c_re(input[11]) = st5;
  1463.      st5 = tmp667 - st3;
  1464.      st3 = tmp667 + st3;
  1465.      c_im(input[19]) = st2;
  1466.      st2 = tmp665 - st8;
  1467.      st8 = tmp665 + st8;
  1468.      c_im(input[3]) = st4;
  1469.      st4 = tmp666 - st1;
  1470.      st1 = tmp666 + st1;
  1471.      c_re(input[17]) = st6;
  1472.      c_re(input[1]) = st7;
  1473.      c_im(input[25]) = st5;
  1474.      c_im(input[9]) = st3;
  1475.      c_re(input[25]) = st2;
  1476.      c_re(input[9]) = st8;
  1477.      c_im(input[17]) = st4;
  1478.      c_im(input[1]) = st1;
  1479. }
  1480. void  PFFTW(64)(fftw_complex *input)
  1481. {
  1482.      PFFTW(twiddle_4)(input, PFFTW(W_64), 16);
  1483.      PFFTW(16)(input );
  1484.      PFFTW(16)(input + 16);
  1485.      PFFTW(16)(input + 32);
  1486.      PFFTW(16)(input + 48);
  1487. }
  1488. void PFFTW(128)(fftw_complex *input)
  1489. {
  1490.      PFFTW(twiddle_4)(input, PFFTW(W_128), 32);
  1491.      PFFTW(32)(input );
  1492.      PFFTW(32)(input + 32);
  1493.      PFFTW(32)(input + 64);
  1494.      PFFTW(32)(input + 96);
  1495. }
  1496. void PFFTW(512)(fftw_complex *input)
  1497. {
  1498.      PFFTW(twiddle_4)(input, PFFTW(W_512), 128);
  1499.      PFFTW(128)(input );
  1500.      PFFTW(128)(input + 128);
  1501.      PFFTW(128)(input + 256);
  1502.      PFFTW(128)(input + 384);
  1503. }
  1504. ///////////////////////////////////////////////////////////////
  1505. void PFFTWI(16) (fftw_complex * input) {
  1506.      fftw_real tmp333;
  1507.      fftw_real tmp332;
  1508.      fftw_real tmp331;
  1509.      fftw_real tmp330;
  1510.      fftw_real tmp329;
  1511.      fftw_real tmp328;
  1512.      fftw_real tmp327;
  1513.      fftw_real tmp326;
  1514.      fftw_real tmp325;
  1515.      fftw_real tmp324;
  1516.      fftw_real tmp323;
  1517.      fftw_real tmp322;
  1518.      fftw_real tmp321;
  1519.      fftw_real tmp320;
  1520.      fftw_real tmp319;
  1521.      fftw_real tmp318;
  1522.      fftw_real tmp317;
  1523.      fftw_real tmp316;
  1524.      fftw_real tmp315;
  1525.      fftw_real tmp314;
  1526.      fftw_real tmp313;
  1527.      fftw_real tmp312;
  1528.      fftw_real tmp311;
  1529.      fftw_real tmp310;
  1530.      fftw_real tmp309;
  1531.      fftw_real tmp308;
  1532.      fftw_real tmp307;
  1533.      fftw_real tmp306;
  1534.      fftw_real tmp305;
  1535.      fftw_real tmp304;
  1536.      fftw_real tmp303;
  1537.      fftw_real tmp302;
  1538.      fftw_real tmp301;
  1539.      fftw_real st1;
  1540.      fftw_real st2;
  1541.      fftw_real st3;
  1542.      fftw_real st4;
  1543.      fftw_real st5;
  1544.      fftw_real st6;
  1545.      fftw_real st7;
  1546.      fftw_real st8;
  1547.      st8 = c_re(input[4]);
  1548.      st8 = st8 - c_re(input[12]);
  1549.      st7 = c_im(input[0]);
  1550.      st7 = st7 - c_im(input[8]);
  1551.      st6 = c_re(input[0]);
  1552.      st6 = st6 - c_re(input[8]);
  1553.      st5 = st8 + st7;
  1554.      st7 = st7 - st8;
  1555.      st4 = c_im(input[4]);
  1556.      st4 = st4 - c_im(input[12]);
  1557.      st3 = c_re(input[0]);
  1558.      st3 = st3 + c_re(input[8]);
  1559.      st2 = st6 - st4;
  1560.      st6 = st6 + st4;
  1561.      st1 = c_re(input[4]);
  1562.      st1 = st1 + c_re(input[12]);
  1563.      st8 = c_im(input[0]);
  1564.      st8 = st8 + c_im(input[8]);
  1565.      st4 = st3 + st1;
  1566.      st3 = st3 - st1;
  1567.      st1 = c_im(input[4]);
  1568.      st1 = st1 + c_im(input[12]);
  1569.      tmp301 = st6;
  1570.      st6 = c_re(input[2]);
  1571.      st6 = st6 + c_re(input[10]);
  1572.      tmp302 = st7;
  1573.      st7 = st8 + st1;
  1574.      st8 = st8 - st1;
  1575.      st1 = c_re(input[6]);
  1576.      st1 = st1 + c_re(input[14]);
  1577.      tmp303 = st2;
  1578.      st2 = c_im(input[2]);
  1579.      st2 = st2 + c_im(input[10]);
  1580.      tmp304 = st5;
  1581.      st5 = st6 + st1;
  1582.      st6 = st6 - st1;
  1583.      st1 = c_im(input[6]);
  1584.      st1 = st1 + c_im(input[14]);
  1585.      tmp305 = st3;
  1586.      st3 = st4 + st5;
  1587.      st4 = st4 - st5;
  1588.      st5 = st2 + st1;
  1589.      st2 = st2 - st1;
  1590.      st1 = st6 + st8;
  1591.      tmp306 = st1;
  1592.      st1 = st7 - st5;
  1593.      st7 = st7 + st5;
  1594.      st5 = tmp305 - st2;
  1595.      st2 = tmp305 + st2;
  1596.      st8 = st8 - st6;
  1597.      st6 = c_re(input[6]);
  1598.      st6 = st6 - c_re(input[14]);
  1599.      tmp307 = st8;
  1600.      st8 = c_im(input[2]);
  1601.      st8 = st8 - c_im(input[10]);
  1602.      tmp308 = st2;
  1603.      st2 = c_re(input[2]);
  1604.      st2 = st2 - c_re(input[10]);
  1605.      tmp309 = st4;
  1606.      st4 = st6 + st8;
  1607.      st8 = st8 - st6;
  1608.      st6 = c_im(input[6]);
  1609.      st6 = st6 - c_im(input[14]);
  1610.      tmp310 = st5;
  1611.      st5 = c_re(input[1]);
  1612.      st5 = st5 - c_re(input[9]);
  1613.      tmp311 = st7;
  1614.      st7 = st2 - st6;
  1615.      st2 = st2 + st6;
  1616.      st6 = c_im(input[5]);
  1617.      tmp312 = st1;
  1618.      st1 = st4 + st7;
  1619.      st7 = st7 - st4;
  1620.      st4 = st2 - st8;
  1621.      st1 = st1 * K707106781[0];
  1622.      st8 = st8 + st2;
  1623.      st7 = st7 * K707106781[0];
  1624.      st6 = st6 - c_im(input[13]);
  1625.      st4 = st4 * K707106781[0];
  1626.      st2 = tmp304 - st1;
  1627.      st8 = st8 * K707106781[0];
  1628.      tmp313 = st3;
  1629.      st3 = st5 - st6;
  1630.      st5 = st5 + st6;
  1631.      st6 = tmp303 + st7;
  1632.      tmp314 = st6;
  1633.      st6 = st3 * K923879532[0];
  1634.      st7 = tmp303 - st7;
  1635.      st3 = st3 * K382683432[0];
  1636.      st1 = tmp304 + st1;
  1637.      tmp315 = st1;
  1638.      st1 = st5 * K382683432[0];
  1639.      tmp316 = st7;
  1640.      st7 = tmp302 - st4;
  1641.      st5 = st5 * K923879532[0];
  1642.      st4 = tmp302 + st4;
  1643.      tmp317 = st4;
  1644.      st4 = tmp301 - st8;
  1645.      st8 = tmp301 + st8;
  1646.      tmp318 = st8;
  1647.      st8 = c_re(input[5]);
  1648.      st8 = st8 - c_re(input[13]);
  1649.      tmp319 = st4;
  1650.      st4 = c_im(input[1]);
  1651.      st4 = st4 - c_im(input[9]);
  1652.      tmp320 = st7;
  1653.      st7 = c_re(input[3]);
  1654.      st7 = st7 - c_re(input[11]);
  1655.      tmp321 = st2;
  1656.      st2 = st8 + st4;
  1657.      st4 = st4 - st8;
  1658.      st8 = c_im(input[7]);
  1659.      tmp322 = st5;
  1660.      st5 = st2 * K382683432[0];
  1661.      st8 = st8 - c_im(input[15]);
  1662.      st2 = st2 * K923879532[0];
  1663.      st6 = st6 - st5;
  1664.      st5 = st4 * K923879532[0];
  1665.      st2 = st2 + st3;
  1666.      st4 = st4 * K382683432[0];
  1667.      st1 = st1 - st5;
  1668.      st3 = st7 - st8;
  1669.      st4 = st4 + tmp322;
  1670.      st7 = st7 + st8;
  1671.      st8 = st3 * K382683432[0];
  1672.      st5 = c_re(input[7]);
  1673.      st3 = st3 * K923879532[0];
  1674.      st5 = st5 - c_re(input[15]);
  1675.      tmp323 = st4;
  1676.      st4 = st7 * K923879532[0];
  1677.      tmp324 = st1;
  1678.      st1 = c_im(input[3]);
  1679.      st7 = st7 * K382683432[0];
  1680.      st1 = st1 - c_im(input[11]);
  1681.      tmp325 = st2;
  1682.      st2 = c_re(input[1]);
  1683.      st2 = st2 + c_re(input[9]);
  1684.      tmp326 = st6;
  1685.      st6 = st5 + st1;
  1686.      st1 = st1 - st5;
  1687.      st5 = c_re(input[5]);
  1688.      tmp327 = st7;
  1689.      st7 = st6 * K923879532[0];
  1690.      st5 = st5 + c_re(input[13]);
  1691.      st6 = st6 * K382683432[0];
  1692.      st8 = st8 - st7;
  1693.      st7 = st1 * K382683432[0];
  1694.      st6 = st6 + st3;
  1695.      st1 = st1 * K923879532[0];
  1696.      st7 = st7 - st4;
  1697.      st3 = st2 + st5;
  1698.      st1 = st1 + tmp327;
  1699.      st2 = st2 - st5;
  1700.      st4 = tmp326 - st8;
  1701.      st8 = tmp326 + st8;
  1702.      st5 = tmp325 - st6;
  1703.      tmp328 = st2;
  1704.      st2 = tmp321 - st4;
  1705.      st4 = tmp321 + st4;
  1706.      tmp329 = st3;
  1707.      st3 = tmp314 - st8;
  1708.      st8 = tmp314 + st8;
  1709.      tmp330 = st2;
  1710.      st2 = tmp316 - st5;
  1711.      st5 = tmp316 + st5;
  1712.      c_re(input[9]) = st3;
  1713.      c_re(input[1]) = st8;
  1714.      c_re(input[5]) = st2;
  1715.      c_re(input[13]) = st5;
  1716.      st6 = tmp325 + st6;
  1717.      st3 = tmp324 - st7;
  1718.      st8 = tmp323 - st1;
  1719.      st2 = tmp315 - st6;
  1720.      st6 = tmp315 + st6;
  1721.      st5 = tmp320 - st3;
  1722.      st3 = tmp320 + st3;
  1723.      tmp331 = st5;
  1724.      st5 = tmp317 - st8;
  1725.      st8 = tmp317 + st8;
  1726.      st7 = tmp324 + st7;
  1727.      st1 = tmp323 + st1;
  1728.      tmp332 = st3;
  1729.      st3 = c_im(input[1]);
  1730.      c_im(input[1]) = st6;
  1731.      st3 = st3 + c_im(input[9]);
  1732.      c_im(input[9]) = st2;
  1733.      st2 = tmp319 - st7;
  1734.      st7 = tmp319 + st7;
  1735.      st6 = tmp318 - st1;
  1736.      st1 = tmp318 + st1;
  1737.      tmp333 = st5;
  1738.      st5 = c_im(input[5]);
  1739.      c_im(input[5]) = st4;
  1740.      st5 = st5 + c_im(input[13]);
  1741.      c_im(input[13]) = tmp330;
  1742.      st4 = st3 - st5;
  1743.      st3 = st3 + st5;
  1744.      st5 = c_re(input[3]);
  1745.      c_re(input[3]) = st7;
  1746.      st5 = st5 + c_re(input[11]);
  1747.      c_re(input[11]) = st2;
  1748.      st2 = c_re(input[7]);
  1749.      c_re(input[7]) = st6;
  1750.      st2 = st2 + c_re(input[15]);
  1751.      c_re(input[15]) = st1;
  1752.      st7 = st5 + st2;
  1753.      st5 = st5 - st2;
  1754.      st6 = c_im(input[3]);
  1755.      c_im(input[3]) = st8;
  1756.      st6 = st6 + c_im(input[11]);
  1757.      c_im(input[11]) = tmp333;
  1758.      st8 = tmp329 + st7;
  1759.      st7 = tmp329 - st7;
  1760.      st1 = st5 + st4;
  1761.      st4 = st4 - st5;
  1762.      st2 = tmp313 - st8;
  1763.      st8 = tmp313 + st8;
  1764.      st5 = st7 + tmp312;
  1765.      st7 = tmp312 - st7;
  1766.      c_re(input[8]) = st2;
  1767.      c_re(input[0]) = st8;
  1768.      c_im(input[4]) = st5;
  1769.      c_im(input[12]) = st7;
  1770.      st2 = c_im(input[7]);
  1771.      c_im(input[7]) = tmp332;
  1772.      st2 = st2 + c_im(input[15]);
  1773.      c_im(input[15]) = tmp331;
  1774.      st8 = st6 - st2;
  1775.      st6 = st6 + st2;
  1776.      st5 = tmp328 - st8;
  1777.      st8 = tmp328 + st8;
  1778.      st7 = st3 - st6;
  1779.      st2 = st5 - st1;
  1780.      st1 = st1 + st5;
  1781.      st3 = st3 + st6;
  1782.      st2 = st2 * K707106781[0];
  1783.      st6 = st4 + st8;
  1784.      st1 = st1 * K707106781[0];
  1785.      st8 = st8 - st4;
  1786.      st6 = st6 * K707106781[0];
  1787.      st4 = tmp311 + st3;
  1788.      st8 = st8 * K707106781[0];
  1789.      st3 = tmp311 - st3;
  1790.      st5 = tmp310 - st2;
  1791.      c_im(input[0]) = st4;
  1792.      c_im(input[8]) = st3;
  1793.      c_re(input[10]) = st5;
  1794.      st2 = tmp310 + st2;
  1795.      st4 = tmp309 + st7;
  1796.      st7 = tmp309 - st7;
  1797.      st3 = tmp308 - st6;
  1798.      c_re(input[2]) = st2;
  1799.      c_re(input[12]) = st4;
  1800.      c_re(input[4]) = st7;
  1801.      c_re(input[6]) = st3;
  1802.      st6 = tmp308 + st6;
  1803.      st5 = tmp307 - st8;
  1804.      st8 = tmp307 + st8;
  1805.      st2 = tmp306 - st1;
  1806.      c_re(input[14]) = st6;
  1807.      c_im(input[14]) = st5;
  1808.      c_im(input[6]) = st8;
  1809.      c_im(input[10]) = st2;
  1810.      st1 = tmp306 + st1;
  1811.      c_im(input[2]) = st1;
  1812. }
  1813. void PFFTWI(32) (fftw_complex * input) {
  1814.      fftw_real tmp714;
  1815.      fftw_real tmp713;
  1816.      fftw_real tmp712;
  1817.      fftw_real tmp711;
  1818.      fftw_real tmp710;
  1819.      fftw_real tmp709;
  1820.      fftw_real tmp708;
  1821.      fftw_real tmp707;
  1822.      fftw_real tmp706;
  1823.      fftw_real tmp705;
  1824.      fftw_real tmp704;
  1825.      fftw_real tmp703;
  1826.      fftw_real tmp702;
  1827.      fftw_real tmp701;
  1828.      fftw_real tmp700;
  1829.      fftw_real tmp699;
  1830.      fftw_real tmp698;
  1831.      fftw_real tmp697;
  1832.      fftw_real tmp696;
  1833.      fftw_real tmp695;
  1834.      fftw_real tmp694;
  1835.      fftw_real tmp693;
  1836.      fftw_real tmp692;
  1837.      fftw_real tmp691;
  1838.      fftw_real tmp690;
  1839.      fftw_real tmp689;
  1840.      fftw_real tmp688;
  1841.      fftw_real tmp687;
  1842.      fftw_real tmp686;
  1843.      fftw_real tmp685;
  1844.      fftw_real tmp684;
  1845.      fftw_real tmp683;
  1846.      fftw_real tmp682;
  1847.      fftw_real tmp681;
  1848.      fftw_real tmp680;
  1849.      fftw_real tmp679;
  1850.      fftw_real tmp678;
  1851.      fftw_real tmp677;
  1852.      fftw_real tmp676;
  1853.      fftw_real tmp675;
  1854.      fftw_real tmp674;
  1855.      fftw_real tmp673;
  1856.      fftw_real tmp672;
  1857.      fftw_real tmp671;
  1858.      fftw_real tmp670;
  1859.      fftw_real tmp669;
  1860.      fftw_real tmp668;
  1861.      fftw_real tmp667;
  1862.      fftw_real tmp666;
  1863.      fftw_real tmp665;
  1864.      fftw_real tmp664;
  1865.      fftw_real tmp663;
  1866.      fftw_real tmp662;
  1867.      fftw_real tmp661;
  1868.      fftw_real tmp660;
  1869.      fftw_real tmp659;
  1870.      fftw_real tmp658;
  1871.      fftw_real tmp657;
  1872.      fftw_real tmp656;
  1873.      fftw_real tmp655;
  1874.      fftw_real tmp654;
  1875.      fftw_real tmp653;
  1876.      fftw_real tmp652;
  1877.      fftw_real tmp651;
  1878.      fftw_real tmp650;
  1879.      fftw_real tmp649;
  1880.      fftw_real tmp648;
  1881.      fftw_real tmp647;
  1882.      fftw_real tmp646;
  1883.      fftw_real tmp645;
  1884.      fftw_real tmp644;
  1885.      fftw_real tmp643;
  1886.      fftw_real tmp642;
  1887.      fftw_real tmp641;
  1888.      fftw_real tmp640;
  1889.      fftw_real tmp639;
  1890.      fftw_real tmp638;
  1891.      fftw_real tmp637;
  1892.      fftw_real tmp636;
  1893.      fftw_real tmp635;
  1894.      fftw_real tmp634;
  1895.      fftw_real tmp633;
  1896.      fftw_real tmp632;
  1897.      fftw_real tmp631;
  1898.      fftw_real tmp630;
  1899.      fftw_real tmp629;
  1900.      fftw_real tmp628;
  1901.      fftw_real tmp627;
  1902.      fftw_real tmp626;
  1903.      fftw_real tmp625;
  1904.      fftw_real tmp624;
  1905.      fftw_real tmp623;
  1906.      fftw_real tmp622;
  1907.      fftw_real tmp621;
  1908.      fftw_real st1;
  1909.      fftw_real st2;
  1910.      fftw_real st3;
  1911.      fftw_real st4;
  1912.      fftw_real st5;
  1913.      fftw_real st6;
  1914.      fftw_real st7;
  1915.      fftw_real st8;
  1916.      st8 = c_re(input[8]);
  1917.      st8 = st8 - c_re(input[24]);
  1918.      st7 = c_im(input[0]);
  1919.      st7 = st7 - c_im(input[16]);
  1920.      st6 = st8 + st7;
  1921.      st7 = st7 - st8;
  1922.      st5 = c_re(input[0]);
  1923.      st5 = st5 + c_re(input[16]);
  1924.      st4 = c_re(input[8]);
  1925.      st4 = st4 + c_re(input[24]);
  1926.      st3 = st5 + st4;
  1927.      st5 = st5 - st4;
  1928.      st2 = c_im(input[0]);
  1929.      st2 = st2 + c_im(input[16]);
  1930.      st1 = c_im(input[8]);
  1931.      st1 = st1 + c_im(input[24]);
  1932.      st8 = st2 + st1;
  1933.      st2 = st2 - st1;
  1934.      st4 = c_re(input[4]);
  1935.      st4 = st4 + c_re(input[20]);
  1936.      st1 = c_re(input[28]);
  1937.      st1 = st1 + c_re(input[12]);
  1938.      tmp621 = st6;
  1939.      st6 = st4 + st1;
  1940.      st4 = st4 - st1;
  1941.      st1 = st3 + st6;
  1942.      st3 = st3 - st6;
  1943.      st6 = st2 - st4;
  1944.      st4 = st4 + st2;
  1945.      st2 = c_im(input[4]);
  1946.      st2 = st2 + c_im(input[20]);
  1947.      tmp622 = st4;
  1948.      st4 = c_im(input[28]);
  1949.      st4 = st4 + c_im(input[12]);
  1950.      tmp623 = st6;
  1951.      st6 = st2 + st4;
  1952.      st4 = st4 - st2;
  1953.      st2 = st8 + st6;
  1954.      st8 = st8 - st6;
  1955.      st6 = st5 - st4;
  1956.      st5 = st5 + st4;
  1957.      st4 = c_re(input[0]);
  1958.      st4 = st4 - c_re(input[16]);
  1959.      tmp624 = st5;
  1960.      st5 = c_im(input[8]);
  1961.      st5 = st5 - c_im(input[24]);
  1962.      tmp625 = st6;
  1963.      st6 = st4 - st5;
  1964.      st4 = st4 + st5;
  1965.      st5 = c_re(input[4]);
  1966.      st5 = st5 - c_re(input[20]);
  1967.      tmp626 = st3;
  1968.      st3 = c_im(input[4]);
  1969.      st3 = st3 - c_im(input[20]);
  1970.      tmp627 = st2;
  1971.      st2 = st5 + st3;
  1972.      st5 = st5 - st3;
  1973.      st3 = c_im(input[28]);
  1974.      st3 = st3 - c_im(input[12]);
  1975.      tmp628 = st8;
  1976.      st8 = c_re(input[28]);
  1977.      st8 = st8 - c_re(input[12]);
  1978.      tmp629 = st1;
  1979.      st1 = st3 - st8;
  1980.      st8 = st8 + st3;
  1981.      st3 = st2 + st1;
  1982.      st3 = st3 * K707106781[0];
  1983.      st1 = st1 - st2;
  1984.      st1 = st1 * K707106781[0];
  1985.      st2 = st5 + st8;
  1986.      st2 = st2 * K707106781[0];
  1987.      st5 = st5 - st8;
  1988.      st5 = st5 * K707106781[0];
  1989.      st8 = st7 - st5;
  1990.      tmp630 = st8;
  1991.      st8 = st4 - st1;
  1992.      tmp631 = st8;
  1993.      st8 = tmp621 - st3;
  1994.      tmp632 = st8;
  1995.      st8 = st6 - st2;
  1996.      st3 = tmp621 + st3;
  1997.      st6 = st6 + st2;
  1998.      st7 = st7 + st5;
  1999.      st4 = st4 + st1;
  2000.      st1 = c_re(input[2]);
  2001.      st1 = st1 + c_re(input[18]);
  2002.      st2 = c_re(input[10]);
  2003.      st2 = st2 + c_re(input[26]);
  2004.      st5 = st1 + st2;
  2005.      st1 = st1 - st2;
  2006.      st2 = c_im(input[2]);
  2007.      st2 = st2 + c_im(input[18]);
  2008.      tmp633 = st4;
  2009.      st4 = c_im(input[10]);
  2010.      st4 = st4 + c_im(input[26]);
  2011.      tmp634 = st7;
  2012.      st7 = st2 + st4;
  2013.      st2 = st2 - st4;
  2014.      st4 = st1 + st2;
  2015.      st1 = st1 - st2;
  2016.      st2 = c_re(input[30]);
  2017.      st2 = st2 + c_re(input[14]);
  2018.      tmp635 = st6;
  2019.      st6 = c_re(input[6]);
  2020.      st6 = st6 + c_re(input[22]);
  2021.      tmp636 = st3;
  2022.      st3 = st2 + st6;
  2023.      st2 = st2 - st6;
  2024.      st6 = st5 + st3;
  2025.      st5 = st5 - st3;
  2026.      st3 = tmp629 + st6;
  2027.      st6 = tmp629 - st6;
  2028.      tmp637 = st6;
  2029.      st6 = tmp628 - st5;
  2030.      st5 = st5 + tmp628;
  2031.      tmp638 = st5;
  2032.      st5 = c_im(input[30]);
  2033.      st5 = st5 + c_im(input[14]);
  2034.      tmp639 = st6;
  2035.      st6 = c_im(input[6]);
  2036.      st6 = st6 + c_im(input[22]);
  2037.      tmp640 = st3;
  2038.      st3 = st5 + st6;
  2039.      st5 = st5 - st6;
  2040.      st6 = st7 + st3;
  2041.      st3 = st3 - st7;
  2042.      st7 = st5 - st2;
  2043.      tmp641 = st8;
  2044.      st8 = st7 - st4;
  2045.      st8 = st8 * K707106781[0];
  2046.      st4 = st4 + st7;
  2047.      st4 = st4 * K707106781[0];
  2048.      st2 = st2 + st5;
  2049.      st5 = st1 - st2;
  2050.      st5 = st5 * K707106781[0];
  2051.      st1 = st1 + st2;
  2052.      st1 = st1 * K707106781[0];
  2053.      st7 = tmp627 - st6;
  2054.      st6 = tmp627 + st6;
  2055.      st2 = tmp626 + st3;
  2056.      st3 = tmp626 - st3;
  2057.      tmp642 = st3;
  2058.      st3 = tmp623 + st5;
  2059.      st5 = tmp623 - st5;
  2060.      tmp643 = st5;
  2061.      st5 = tmp625 - st8;
  2062.      st8 = tmp625 + st8;
  2063.      tmp644 = st8;
  2064.      st8 = tmp622 + st4;
  2065.      st4 = tmp622 - st4;
  2066.      tmp645 = st4;
  2067.      st4 = tmp624 - st1;
  2068.      st1 = tmp624 + st1;
  2069.      tmp646 = st1;
  2070.      st1 = c_re(input[6]);
  2071.      st1 = st1 - c_re(input[22]);
  2072.      tmp647 = st4;
  2073.      st4 = c_im(input[30]);
  2074.      st4 = st4 - c_im(input[14]);
  2075.      tmp648 = st8;
  2076.      st8 = st1 + st4;
  2077.      tmp649 = st5;
  2078.      st5 = st8 * K382683432[0];
  2079.      st4 = st4 - st1;
  2080.      st8 = st8 * K923879532[0];
  2081.      st1 = c_re(input[30]);
  2082.      tmp650 = st3;
  2083.      st3 = st4 * K923879532[0];
  2084.      st1 = st1 - c_re(input[14]);
  2085.      st4 = st4 * K382683432[0];
  2086.      tmp651 = st2;
  2087.      st2 = c_im(input[6]);
  2088.      st2 = st2 - c_im(input[22]);
  2089.      tmp652 = st6;
  2090.      st6 = st1 - st2;
  2091.      tmp653 = st7;
  2092.      st7 = st6 * K923879532[0];
  2093.      st1 = st1 + st2;
  2094.      st6 = st6 * K382683432[0];
  2095.      st5 = st5 + st7;
  2096.      st2 = st1 * K382683432[0];
  2097.      st8 = st8 - st6;
  2098.      st1 = st1 * K923879532[0];
  2099.      st3 = st3 + st2;
  2100.      st4 = st4 - st1;
  2101.      st7 = c_re(input[2]);
  2102.      st7 = st7 - c_re(input[18]);
  2103.      st6 = c_im(input[10]);
  2104.      st6 = st6 - c_im(input[26]);
  2105.      st2 = st7 - st6;
  2106.      st1 = st2 * K923879532[0];
  2107.      st7 = st7 + st6;
  2108.      st2 = st2 * K382683432[0];
  2109.      st6 = c_re(input[10]);
  2110.      tmp654 = st8;
  2111.      st8 = st7 * K382683432[0];
  2112.      st6 = st6 - c_re(input[26]);
  2113.      st7 = st7 * K923879532[0];
  2114.      tmp655 = st5;
  2115.      st5 = c_im(input[2]);
  2116.      st5 = st5 - c_im(input[18]);
  2117.      tmp656 = st4;
  2118.      st4 = st6 + st5;
  2119.      tmp657 = st3;
  2120.      st3 = st4 * K382683432[0];
  2121.      st5 = st5 - st6;
  2122.      st4 = st4 * K923879532[0];
  2123.      st1 = st1 - st3;
  2124.      st6 = st5 * K923879532[0];
  2125.      st4 = st4 + st2;
  2126.      st5 = st5 * K382683432[0];
  2127.      st8 = st8 - st6;
  2128.      st5 = st5 + st7;
  2129.      st2 = st8 - tmp657;
  2130.      st7 = tmp630 + st2;
  2131.      st2 = tmp630 - st2;
  2132.      st3 = tmp656 - st5;
  2133.      st6 = tmp631 - st3;
  2134.      st3 = tmp631 + st3;
  2135.      tmp658 = st3;
  2136.      st3 = st1 - tmp655;
  2137.      tmp659 = st2;
  2138.      st2 = tmp632 - st3;
  2139.      st3 = tmp632 + st3;
  2140.      tmp660 = st3;
  2141.      st3 = tmp654 - st4;
  2142.      tmp661 = st2;
  2143.      st2 = tmp641 + st3;
  2144.      st3 = tmp641 - st3;
  2145.      st4 = st4 + tmp654;
  2146.      tmp662 = st3;
  2147.      st3 = tmp636 - st4;
  2148.      st4 = tmp636 + st4;
  2149.      st1 = st1 + tmp655;
  2150.      tmp663 = st4;
  2151.      st4 = tmp635 + st1;
  2152.      st1 = tmp635 - st1;
  2153.      st5 = st5 + tmp656;
  2154.      tmp664 = st1;
  2155.      st1 = tmp634 + st5;
  2156.      st5 = tmp634 - st5;
  2157.      st8 = st8 + tmp657;
  2158.      tmp665 = st5;
  2159.      st5 = tmp633 - st8;
  2160.      st8 = tmp633 + st8;
  2161.      tmp666 = st8;
  2162.      st8 = c_re(input[1]);
  2163.      st8 = st8 + c_re(input[17]);
  2164.      tmp667 = st5;
  2165.      st5 = c_re(input[9]);
  2166.      st5 = st5 + c_re(input[25]);
  2167.      tmp668 = st1;
  2168.      st1 = st8 + st5;
  2169.      st8 = st8 - st5;
  2170.      st5 = c_im(input[1]);
  2171.      st5 = st5 + c_im(input[17]);
  2172.      tmp669 = st4;
  2173.      st4 = c_im(input[9]);
  2174.      st4 = st4 + c_im(input[25]);
  2175.      tmp670 = st3;
  2176.      st3 = st5 + st4;
  2177.      st5 = st5 - st4;
  2178.      st4 = c_re(input[5]);
  2179.      st4 = st4 + c_re(input[21]);
  2180.      tmp671 = st2;
  2181.      st2 = c_re(input[29]);
  2182.      st2 = st2 + c_re(input[13]);
  2183.      tmp672 = st6;
  2184.      st6 = st4 + st2;
  2185.      st4 = st4 - st2;
  2186.      st2 = st1 + st6;
  2187.      st1 = st1 - st6;
  2188.      st6 = st4 + st5;
  2189.      tmp673 = st7;
  2190.      st7 = st6 * K923879532[0];
  2191.      st5 = st5 - st4;
  2192.      st6 = st6 * K382683432[0];
  2193.      st4 = c_im(input[5]);
  2194.      tmp674 = st2;
  2195.      st2 = st5 * K382683432[0];
  2196.      st4 = st4 + c_im(input[21]);
  2197.      st5 = st5 * K923879532[0];
  2198.      tmp675 = st7;
  2199.      st7 = c_im(input[29]);
  2200.      st7 = st7 + c_im(input[13]);
  2201.      tmp676 = st5;
  2202.      st5 = st4 + st7;
  2203.      st7 = st7 - st4;
  2204.      st4 = st3 + st5;
  2205.      st3 = st3 - st5;
  2206.      st5 = st1 - st3;
  2207.      st1 = st1 + st3;
  2208.      st3 = st8 + st7;
  2209.      tmp677 = st1;
  2210.      st1 = st3 * K382683432[0];
  2211.      st8 = st8 - st7;
  2212.      st3 = st3 * K923879532[0];
  2213.      st3 = st3 - st6;
  2214.      st6 = st8 * K923879532[0];
  2215.      st2 = st2 + st6;
  2216.      st8 = st8 * K382683432[0];
  2217.      st8 = st8 - tmp676;
  2218.      st1 = tmp675 + st1;
  2219.      st7 = c_re(input[31]);
  2220.      st7 = st7 + c_re(input[15]);
  2221.      st6 = c_re(input[7]);
  2222.      st6 = st6 + c_re(input[23]);
  2223.      tmp678 = st1;
  2224.      st1 = st7 + st6;
  2225.      st7 = st7 - st6;
  2226.      st6 = c_im(input[31]);
  2227.      st6 = st6 + c_im(input[15]);
  2228.      tmp679 = st3;
  2229.      st3 = c_im(input[7]);
  2230.      st3 = st3 + c_im(input[23]);
  2231.      tmp680 = st2;
  2232.      st2 = st6 + st3;
  2233.      st6 = st6 - st3;
  2234.      st3 = c_re(input[3]);
  2235.      st3 = st3 + c_re(input[19]);
  2236.      tmp681 = st8;
  2237.      st8 = c_re(input[27]);
  2238.      st8 = st8 + c_re(input[11]);
  2239.      tmp682 = st5;
  2240.      st5 = st3 + st8;
  2241.      st3 = st3 - st8;
  2242.      st8 = st1 + st5;
  2243.      st1 = st1 - st5;
  2244.      st5 = st3 + st6;
  2245.      tmp683 = st4;
  2246.      st4 = st5 * K923879532[0];
  2247.      st6 = st6 - st3;
  2248.      st5 = st5 * K382683432[0];
  2249.      st3 = tmp674 + st8;
  2250.      tmp684 = st4;
  2251.      st4 = st6 * K382683432[0];
  2252.      tmp685 = st5;
  2253.      st5 = tmp640 - st3;
  2254.      st6 = st6 * K923879532[0];
  2255.      st3 = tmp640 + st3;
  2256.      st8 = tmp674 - st8;
  2257.      c_re(input[16]) = st5;
  2258.      st5 = st8 + tmp653;
  2259.      st8 = tmp653 - st8;
  2260.      c_re(input[0]) = st3;
  2261.      st3 = c_im(input[3]);
  2262.      st3 = st3 + c_im(input[19]);
  2263.      c_im(input[8]) = st5;
  2264.      st5 = c_im(input[27]);
  2265.      st5 = st5 + c_im(input[11]);
  2266.      c_im(input[24]) = st8;
  2267.      st8 = st3 + st5;
  2268.      st5 = st5 - st3;
  2269.      st3 = st2 + st8;
  2270.      st2 = st2 - st8;
  2271.      st8 = st1 + st2;
  2272.      st2 = st2 - st1;
  2273.      st1 = st7 + st5;
  2274.      tmp686 = st4;
  2275.      st4 = st1 * K382683432[0];
  2276.      st7 = st7 - st5;
  2277.      st1 = st1 * K923879532[0];
  2278.      st5 = tmp683 + st3;
  2279.      tmp687 = st4;
  2280.      st4 = st7 * K923879532[0];
  2281.      tmp688 = st1;
  2282.      st1 = tmp652 - st5;
  2283.      st7 = st7 * K382683432[0];
  2284.      st5 = tmp652 + st5;
  2285.      st3 = st3 - tmp683;
  2286.      c_im(input[16]) = st1;
  2287.      st1 = tmp637 - st3;
  2288.      st3 = tmp637 + st3;
  2289.      c_im(input[0]) = st5;
  2290.      st5 = tmp682 - st8;
  2291.      st5 = st5 * K707106781[0];
  2292.      c_re(input[24]) = st1;
  2293.      st1 = tmp639 - st5;
  2294.      st5 = tmp639 + st5;
  2295.      st8 = tmp682 + st8;
  2296.      st8 = st8 * K707106781[0];
  2297.      c_re(input[8]) = st3;
  2298.      st3 = tmp651 - st8;
  2299.      st8 = tmp651 + st8;
  2300.      c_im(input[28]) = st1;
  2301.      st1 = st2 - tmp677;
  2302.      st1 = st1 * K707106781[0];
  2303.      c_im(input[12]) = st5;
  2304.      st5 = tmp642 - st1;
  2305.      st1 = tmp642 + st1;
  2306.      st2 = tmp677 + st2;
  2307.      st2 = st2 * K707106781[0];
  2308.      c_re(input[20]) = st3;
  2309.      st3 = tmp638 - st2;
  2310.      st2 = tmp638 + st2;
  2311.      st6 = st6 + st7;
  2312.      st7 = tmp681 - st6;
  2313.      st6 = tmp681 + st6;
  2314.      st4 = tmp686 - st4;
  2315.      c_re(input[4]) = st8;
  2316.      st8 = tmp680 + st4;
  2317.      st4 = st4 - tmp680;
  2318.      c_re(input[28]) = st5;
  2319.      st5 = tmp650 - st8;
  2320.      st8 = tmp650 + st8;
  2321.      c_re(input[12]) = st1;
  2322.      st1 = tmp649 - st4;
  2323.      st4 = tmp649 + st4;
  2324.      c_im(input[20]) = st3;
  2325.      st3 = tmp643 - st7;
  2326.      st7 = tmp643 + st7;
  2327.      c_im(input[4]) = st2;
  2328.      st2 = tmp644 - st6;
  2329.      st6 = tmp644 + st6;
  2330.      c_im(input[22]) = st5;
  2331.      st5 = tmp685 + tmp688;
  2332.      c_im(input[6]) = st8;
  2333.      st8 = tmp679 - st5;
  2334.      st5 = tmp679 + st5;
  2335.      c_re(input[30]) = st1;
  2336.      st1 = tmp684 - tmp687;
  2337.      c_re(input[14]) = st4;
  2338.      st4 = tmp678 + st1;
  2339.      st1 = st1 - tmp678;
  2340.      c_im(input[30]) = st3;
  2341.      st3 = tmp648 - st4;
  2342.      st4 = tmp648 + st4;
  2343.      c_im(input[14]) = st7;
  2344.      st7 = tmp647 - st1;
  2345.      st1 = tmp647 + st1;
  2346.      c_re(input[22]) = st2;
  2347.      st2 = tmp645 - st8;
  2348.      st8 = tmp645 + st8;
  2349.      c_re(input[6]) = st6;
  2350.      st6 = tmp646 - st5;
  2351.      st5 = tmp646 + st5;
  2352.      c_im(input[18]) = st3;
  2353.      st3 = c_re(input[31]);
  2354.      st3 = st3 - c_re(input[15]);
  2355.      c_im(input[2]) = st4;
  2356.      st4 = c_im(input[7]);
  2357.      st4 = st4 - c_im(input[23]);
  2358.      c_re(input[26]) = st7;
  2359.      st7 = st3 - st4;
  2360.      st3 = st3 + st4;
  2361.      c_re(input[10]) = st1;
  2362.      st1 = c_re(input[7]);
  2363.      st1 = st1 - c_re(input[23]);
  2364.      c_im(input[26]) = st2;
  2365.      st2 = c_im(input[31]);
  2366.      st2 = st2 - c_im(input[15]);
  2367.      c_im(input[10]) = st8;
  2368.      st8 = st1 + st2;
  2369.      st2 = st2 - st1;
  2370.      c_re(input[18]) = st6;
  2371.      st6 = c_re(input[3]);
  2372.      st6 = st6 - c_re(input[19]);
  2373.      c_re(input[2]) = st5;
  2374.      st5 = c_im(input[3]);
  2375.      st5 = st5 - c_im(input[19]);
  2376.      st4 = st6 - st5;
  2377.      st6 = st6 + st5;
  2378.      st1 = c_re(input[27]);
  2379.      st1 = st1 - c_re(input[11]);
  2380.      st5 = c_im(input[27]);
  2381.      st5 = st5 - c_im(input[11]);
  2382.      tmp689 = st2;
  2383.      st2 = st1 + st5;
  2384.      st5 = st5 - st1;
  2385.      st1 = st4 + st2;
  2386.      st1 = st1 * K707106781[0];
  2387.      st4 = st4 - st2;
  2388.      st4 = st4 * K707106781[0];
  2389.      st2 = st6 + st5;
  2390.      st2 = st2 * K707106781[0];
  2391.      st5 = st5 - st6;
  2392.      st5 = st5 * K707106781[0];
  2393.      st6 = st7 - st1;
  2394.      tmp690 = st4;
  2395.      st4 = st6 * K831469612[0];
  2396.      st7 = st7 + st1;
  2397.      st6 = st6 * K555570233[0];
  2398.      st1 = st3 - st5;
  2399.      tmp691 = st6;
  2400.      st6 = st1 * K195090322[0];
  2401.      st3 = st3 + st5;
  2402.      st1 = st1 * K980785280[0];
  2403.      st5 = st8 - st2;
  2404.      tmp692 = st3;
  2405.      st3 = st5 * K555570233[0];
  2406.      st8 = st8 + st2;
  2407.      st5 = st5 * K831469612[0];
  2408.      st2 = tmp689 - tmp690;
  2409.      tmp693 = st5;
  2410.      st5 = st2 * K980785280[0];
  2411.      tmp694 = st4;
  2412.      st4 = tmp689 + tmp690;
  2413.      st2 = st2 * K195090322[0];
  2414.      st5 = st5 + st6;
  2415.      st6 = st8 * K980785280[0];
  2416.      st2 = st2 - st1;
  2417.      st1 = st7 * K195090322[0];
  2418.      st3 = st3 - tmp694;
  2419.      st7 = st7 * K980785280[0];
  2420.      tmp695 = st3;
  2421.      st3 = tmp691 + tmp693;
  2422.      st8 = st8 * K195090322[0];
  2423.      st6 = st6 - st1;
  2424.      st1 = st4 * K555570233[0];
  2425.      st7 = st7 + st8;
  2426.      st8 = tmp692 * K831469612[0];
  2427.      st1 = st1 + st8;
  2428.      st4 = st4 * K831469612[0];
  2429.      st8 = c_re(input[1]);
  2430.      tmp696 = st1;
  2431.      st1 = tmp692 * K555570233[0];
  2432.      st8 = st8 - c_re(input[17]);
  2433.      st4 = st4 - st1;
  2434.      st1 = c_im(input[9]);
  2435.      st1 = st1 - c_im(input[25]);
  2436.      tmp697 = st4;
  2437.      st4 = st8 - st1;
  2438.      st8 = st8 + st1;
  2439.      st1 = c_re(input[9]);
  2440.      st1 = st1 - c_re(input[25]);
  2441.      tmp698 = st7;
  2442.      st7 = c_im(input[1]);
  2443.      st7 = st7 - c_im(input[17]);
  2444.      tmp699 = st6;
  2445.      st6 = st1 + st7;
  2446.      st7 = st7 - st1;
  2447.      st1 = c_re(input[5]);
  2448.      st1 = st1 - c_re(input[21]);
  2449.      tmp700 = st3;
  2450.      st3 = c_im(input[5]);
  2451.      st3 = st3 - c_im(input[21]);
  2452.      tmp701 = st2;
  2453.      st2 = st1 - st3;
  2454.      st1 = st1 + st3;
  2455.      st3 = c_re(input[29]);
  2456.      st3 = st3 - c_re(input[13]);
  2457.      tmp702 = st5;
  2458.      st5 = c_im(input[29]);
  2459.      st5 = st5 - c_im(input[13]);
  2460.      tmp703 = st7;
  2461.      st7 = st3 + st5;
  2462.      st5 = st5 - st3;
  2463.      st3 = st2 + st7;
  2464.      st3 = st3 * K707106781[0];
  2465.      st2 = st2 - st7;
  2466.      st2 = st2 * K707106781[0];
  2467.      st7 = st1 + st5;
  2468.      st7 = st7 * K707106781[0];
  2469.      st5 = st5 - st1;
  2470.      st5 = st5 * K707106781[0];
  2471.      st1 = st4 - st3;
  2472.      tmp704 = st2;
  2473.      st2 = st1 * K831469612[0];
  2474.      st4 = st4 + st3;
  2475.      st1 = st1 * K555570233[0];
  2476.      st3 = st8 - st5;
  2477.      tmp705 = st1;
  2478.      st1 = st3 * K195090322[0];
  2479.      st8 = st8 + st5;
  2480.      st3 = st3 * K980785280[0];
  2481.      st5 = st6 - st7;
  2482.      tmp706 = st2;
  2483.      st2 = st5 * K555570233[0];
  2484.      st6 = st6 + st7;
  2485.      st5 = st5 * K831469612[0];
  2486.      st7 = tmp703 - tmp704;
  2487.      tmp707 = st5;
  2488.      st5 = st7 * K980785280[0];
  2489.      tmp708 = st2;
  2490.      st2 = tmp703 + tmp704;
  2491.      st7 = st7 * K195090322[0];
  2492.      st1 = st1 - st5;
  2493.      st5 = st4 * K195090322[0];
  2494.      tmp709 = st5;
  2495.      st5 = st1 - tmp702;
  2496.      tmp710 = st5;
  2497.      st5 = st6 * K980785280[0];
  2498.      st1 = st1 + tmp702;
  2499.      st4 = st4 * K980785280[0];
  2500.      st7 = st7 + st3;
  2501.      st6 = st6 * K195090322[0];
  2502.      st3 = st7 + tmp701;
  2503.      tmp711 = st4;
  2504.      st4 = st8 * K831469612[0];
  2505.      st7 = tmp701 - st7;
  2506.      tmp712 = st4;
  2507.      st4 = st2 * K555570233[0];
  2508.      tmp713 = st4;
  2509.      st4 = tmp673 - st3;
  2510.      st2 = st2 * K831469612[0];
  2511.      st8 = st8 * K555570233[0];
  2512.      st3 = tmp673 + st3;
  2513.      c_im(input[23]) = st4;
  2514.      st4 = tmp672 - st7;
  2515.      st7 = tmp672 + st7;
  2516.      c_im(input[7]) = st3;
  2517.      st3 = tmp659 - tmp710;
  2518.      c_re(input[31]) = st4;
  2519.      st4 = tmp659 + tmp710;
  2520.      c_re(input[15]) = st7;
  2521.      st7 = tmp658 - st1;
  2522.      st1 = tmp658 + st1;
  2523.      c_im(input[31]) = st3;
  2524.      st3 = tmp706 + tmp708;
  2525.      c_im(input[15]) = st4;
  2526.      st4 = st3 + tmp695;
  2527.      st3 = tmp695 - st3;
  2528.      c_re(input[23]) = st7;
  2529.      st7 = tmp705 - tmp707;
  2530.      c_re(input[7]) = st1;
  2531.      st1 = st7 - tmp700;
  2532.      st7 = st7 + tmp700;
  2533.      tmp714 = st2;
  2534.      st2 = tmp661 - st1;
  2535.      st1 = tmp661 + st1;
  2536.      c_im(input[29]) = st2;
  2537.      st2 = tmp671 - st7;
  2538.      st7 = tmp671 + st7;
  2539.      c_im(input[13]) = st1;
  2540.      st1 = tmp660 - st4;
  2541.      st4 = tmp660 + st4;
  2542.      c_re(input[21]) = st2;
  2543.      st2 = tmp662 - st3;
  2544.      st3 = tmp662 + st3;
  2545.      st5 = tmp709 + st5;
  2546.      c_re(input[5]) = st7;
  2547.      st7 = st5 + tmp699;
  2548.      st5 = tmp699 - st5;
  2549.      st6 = tmp711 - st6;
  2550.      c_im(input[21]) = st1;
  2551.      st1 = st6 - tmp698;
  2552.      st6 = st6 + tmp698;
  2553.      c_im(input[5]) = st4;
  2554.      st4 = tmp670 - st1;
  2555.      st1 = tmp670 + st1;
  2556.      c_re(input[29]) = st2;
  2557.      st2 = tmp669 - st6;
  2558.      st6 = tmp669 + st6;
  2559.      c_re(input[13]) = st3;
  2560.      st3 = tmp663 - st7;
  2561.      st7 = tmp663 + st7;
  2562.      c_im(input[25]) = st4;
  2563.      st4 = tmp664 - st5;
  2564.      st5 = tmp664 + st5;
  2565.      c_im(input[9]) = st1;
  2566.      st1 = tmp712 - tmp713;
  2567.      c_re(input[17]) = st2;
  2568.      st2 = st1 - tmp696;
  2569.      st1 = st1 + tmp696;
  2570.      st8 = tmp714 + st8;
  2571.      c_re(input[1]) = st6;
  2572.      st6 = st8 + tmp697;
  2573.      st8 = tmp697 - st8;
  2574.      c_im(input[17]) = st3;
  2575.      st3 = tmp668 - st6;
  2576.      st6 = tmp668 + st6;
  2577.      c_im(input[1]) = st7;
  2578.      st7 = tmp667 - st8;
  2579.      st8 = tmp667 + st8;
  2580.      c_re(input[25]) = st4;
  2581.      st4 = tmp665 - st2;
  2582.      st2 = tmp665 + st2;
  2583.      c_re(input[9]) = st5;
  2584.      st5 = tmp666 - st1;
  2585.      st1 = tmp666 + st1;
  2586.      c_im(input[19]) = st3;
  2587.      c_im(input[3]) = st6;
  2588.      c_re(input[27]) = st7;
  2589.      c_re(input[11]) = st8;
  2590.      c_im(input[27]) = st4;
  2591.      c_im(input[11]) = st2;
  2592.      c_re(input[19]) = st5;
  2593.      c_re(input[3]) = st1;
  2594. }
  2595. void PFFTWI(64)(fftw_complex *input)
  2596. {
  2597.      PFFTWI(16)(input );
  2598.      PFFTWI(16)(input + 16);
  2599.      PFFTWI(16)(input + 32);
  2600.      PFFTWI(16)(input + 48);
  2601.      PFFTWI(twiddle_4)(input, PFFTW(W_64), 16);
  2602. }
  2603. void PFFTWI(128)(fftw_complex *input)
  2604. {
  2605.      PFFTWI(32)(input );
  2606.      PFFTWI(32)(input + 32);
  2607.      PFFTWI(32)(input + 64);
  2608.      PFFTWI(32)(input + 96);
  2609.      PFFTWI(twiddle_4)(input, PFFTW(W_128), 32);
  2610. }
  2611. void PFFTWI(512)(fftw_complex *input)
  2612. {
  2613.      PFFTWI(128)(input );
  2614.      PFFTWI(128)(input + 128);
  2615.      PFFTWI(128)(input + 256);
  2616.      PFFTWI(128)(input + 384);
  2617.      PFFTWI(twiddle_4)(input, PFFTW(W_512), 128);
  2618. }
  2619. ///////////////////////////////////////////////////////////////////////////
  2620. void  PFFTW(twiddle_4) (fftw_complex * A, const fftw_complex * W, int iostride) {
  2621.      int i;
  2622.      fftw_complex *inout;
  2623.      inout = A;
  2624.      {
  2625.       fftw_real st1;
  2626.       fftw_real st2;
  2627.       fftw_real st3;
  2628.       fftw_real st4;
  2629.       fftw_real st5;
  2630.       fftw_real st6;
  2631.       fftw_real st7;
  2632.       fftw_real st8;
  2633.       st8 = c_re(inout[0]);
  2634.       st8 = st8 + c_re(inout[2 * iostride]);
  2635.       st7 = c_re(inout[iostride]);
  2636.       st7 = st7 + c_re(inout[3 * iostride]);
  2637.       st6 = st8 - st7;
  2638.       st8 = st8 + st7;
  2639.       st5 = c_im(inout[0]);
  2640.       st5 = st5 + c_im(inout[2 * iostride]);
  2641.       st4 = c_im(inout[iostride]);
  2642.       st4 = st4 + c_im(inout[3 * iostride]);
  2643.       st3 = st5 - st4;
  2644.       st5 = st5 + st4;
  2645.       st2 = c_im(inout[0]);
  2646.       st2 = st2 - c_im(inout[2 * iostride]);
  2647.       st1 = c_re(inout[iostride]);
  2648.       st1 = st1 - c_re(inout[3 * iostride]);
  2649.       st7 = st2 - st1;
  2650.       st1 = st1 + st2;
  2651.       st4 = c_re(inout[0]);
  2652.       st4 = st4 - c_re(inout[2 * iostride]);
  2653.       c_re(inout[2 * iostride]) = st6;
  2654.       st6 = c_im(inout[iostride]);
  2655.       st6 = st6 - c_im(inout[3 * iostride]);
  2656.       c_re(inout[0]) = st8;
  2657.       st8 = st4 - st6;
  2658.       st4 = st4 + st6;
  2659.       c_im(inout[0]) = st5;
  2660.       c_im(inout[2 * iostride]) = st3;
  2661.       c_im(inout[iostride]) = st7;
  2662.       c_im(inout[3 * iostride]) = st1;
  2663.       c_re(inout[3 * iostride]) = st8;
  2664.       c_re(inout[iostride]) = st4;
  2665.      }
  2666.      inout = inout + 1;
  2667.      i = iostride - 1;
  2668.      do {
  2669.       {
  2670.            fftw_real st1;
  2671.            fftw_real st2;
  2672.            fftw_real st3;
  2673.            fftw_real st4;
  2674.            fftw_real st5;
  2675.            fftw_real st6;
  2676.            fftw_real st7;
  2677.            fftw_real st8;
  2678.            st8 = c_re(inout[0]);
  2679.            st8 = st8 + c_re(inout[2 * iostride]);
  2680.            st7 = c_re(inout[iostride]);
  2681.            st7 = st7 + c_re(inout[3 * iostride]);
  2682.            st6 = st8 - st7;
  2683.            st5 = st6 * c_im(W[1]);
  2684.            st8 = st8 + st7;
  2685.            st6 = st6 * c_re(W[1]);
  2686.            st4 = c_im(inout[0]);
  2687.            st4 = st4 + c_im(inout[2 * iostride]);
  2688.            st3 = c_im(inout[iostride]);
  2689.            st3 = st3 + c_im(inout[3 * iostride]);
  2690.            st2 = st4 - st3;
  2691.            st1 = st2 * c_im(W[1]);
  2692.            st4 = st4 + st3;
  2693.            st2 = st2 * c_re(W[1]);
  2694.            st2 = st2 - st5;
  2695.            st6 = st6 + st1;
  2696.            st7 = c_re(inout[0]);
  2697.            st7 = st7 - c_re(inout[2 * iostride]);
  2698.            st5 = c_im(inout[iostride]);
  2699.            st5 = st5 - c_im(inout[3 * iostride]);
  2700.            c_re(inout[0]) = st8;
  2701.            st8 = st7 - st5;
  2702.            st3 = st8 * c_re(W[0]);
  2703.            st7 = st7 + st5;
  2704.            st8 = st8 * c_im(W[0]);
  2705.            st1 = c_re(inout[iostride]);
  2706.            c_re(inout[2 * iostride]) = st6;
  2707.            st6 = st7 * c_im(W[0]);
  2708.            st1 = st1 - c_re(inout[3 * iostride]);
  2709.            st7 = st7 * c_re(W[0]);
  2710.            st5 = c_im(inout[0]);
  2711.            st5 = st5 - c_im(inout[2 * iostride]);
  2712.            c_im(inout[0]) = st4;
  2713.            st4 = st1 + st5;
  2714.            c_im(inout[2 * iostride]) = st2;
  2715.            st2 = st4 * c_im(W[0]);
  2716.            st5 = st5 - st1;
  2717.            st4 = st4 * c_re(W[0]);
  2718.            st3 = st3 - st2;
  2719.            st1 = st5 * c_re(W[0]);
  2720.            st5 = st5 * c_im(W[0]);
  2721.            st4 = st4 + st8;
  2722.            st5 = st5 + st7;
  2723.            st1 = st1 - st6;
  2724.            c_re(inout[3 * iostride]) = st3;
  2725.            c_im(inout[3 * iostride]) = st4;
  2726.            c_re(inout[iostride]) = st5;
  2727.            c_im(inout[iostride]) = st1;
  2728.       }
  2729.       i = i - 1, inout = inout + 1, W = W + 2;
  2730.      } while (i > 0);
  2731. }
  2732. void PFFTWI(twiddle_4) (fftw_complex * A, const fftw_complex * W, int iostride) {
  2733.      int i;
  2734.      fftw_complex *inout;
  2735.      inout = A;
  2736.      {
  2737.       fftw_real st1;
  2738.       fftw_real st2;
  2739.       fftw_real st3;
  2740.       fftw_real st4;
  2741.       fftw_real st5;
  2742.       fftw_real st6;
  2743.       fftw_real st7;
  2744.       fftw_real st8;
  2745.       st8 = c_re(inout[0]);
  2746.       st8 = st8 + c_re(inout[2 * iostride]);
  2747.       st7 = c_re(inout[iostride]);
  2748.       st7 = st7 + c_re(inout[3 * iostride]);
  2749.       st6 = st8 - st7;
  2750.       st8 = st8 + st7;
  2751.       st5 = c_im(inout[0]);
  2752.       st5 = st5 + c_im(inout[2 * iostride]);
  2753.       st4 = c_im(inout[iostride]);
  2754.       st4 = st4 + c_im(inout[3 * iostride]);
  2755.       st3 = st5 - st4;
  2756.       st5 = st5 + st4;
  2757.       st2 = c_re(inout[iostride]);
  2758.       st2 = st2 - c_re(inout[3 * iostride]);
  2759.       st1 = c_im(inout[0]);
  2760.       st1 = st1 - c_im(inout[2 * iostride]);
  2761.       st7 = st2 + st1;
  2762.       st1 = st1 - st2;
  2763.       st4 = c_re(inout[0]);
  2764.       st4 = st4 - c_re(inout[2 * iostride]);
  2765.       c_re(inout[2 * iostride]) = st6;
  2766.       st6 = c_im(inout[iostride]);
  2767.       st6 = st6 - c_im(inout[3 * iostride]);
  2768.       c_re(inout[0]) = st8;
  2769.       st8 = st4 - st6;
  2770.       st4 = st4 + st6;
  2771.       c_im(inout[0]) = st5;
  2772.       c_im(inout[2 * iostride]) = st3;
  2773.       c_im(inout[iostride]) = st7;
  2774.       c_im(inout[3 * iostride]) = st1;
  2775.       c_re(inout[iostride]) = st8;
  2776.       c_re(inout[3 * iostride]) = st4;
  2777.      }
  2778.      inout = inout + 1;
  2779.      i = iostride - 1;
  2780.      do {
  2781.       {
  2782.            fftw_real st1;
  2783.            fftw_real st2;
  2784.            fftw_real st3;
  2785.            fftw_real st4;
  2786.            fftw_real st5;
  2787.            fftw_real st6;
  2788.            fftw_real st7;
  2789.            fftw_real st8;
  2790.            st8 = c_re(inout[2 * iostride]);
  2791.            st8 = st8 * c_re(W[1]);
  2792.            st7 = c_im(inout[2 * iostride]);
  2793.            st7 = st7 * c_im(W[1]);
  2794.            st8 = st8 - st7;
  2795.            st6 = st8 + c_re(inout[0]);
  2796.            st8 = c_re(inout[0]) - st8;
  2797.            st5 = c_re(inout[2 * iostride]);
  2798.            st5 = st5 * c_im(W[1]);
  2799.            st4 = c_im(inout[2 * iostride]);
  2800.            st4 = st4 * c_re(W[1]);
  2801.            st5 = st5 + st4;
  2802.            st3 = st5 + c_im(inout[0]);
  2803.            st5 = c_im(inout[0]) - st5;
  2804.            st2 = c_re(inout[iostride]);
  2805.            st2 = st2 * c_re(W[0]);
  2806.            st1 = c_im(inout[iostride]);
  2807.            st1 = st1 * c_im(W[0]);
  2808.            st2 = st2 - st1;
  2809.            st7 = c_re(inout[3 * iostride]);
  2810.            st7 = st7 * c_re(W[0]);
  2811.            st4 = c_im(inout[3 * iostride]);
  2812.            st4 = st4 * c_im(W[0]);
  2813.            st7 = st7 + st4;
  2814.            st1 = st2 + st7;
  2815.            st2 = st2 - st7;
  2816.            st4 = st6 - st1;
  2817.            st6 = st6 + st1;
  2818.            st7 = st2 + st5;
  2819.            st5 = st5 - st2;
  2820.            st1 = c_re(inout[iostride]);
  2821.            st1 = st1 * c_im(W[0]);
  2822.            st2 = c_im(inout[iostride]);
  2823.            st2 = st2 * c_re(W[0]);
  2824.            st1 = st1 + st2;
  2825.            c_re(inout[2 * iostride]) = st4;
  2826.            st4 = c_im(inout[3 * iostride]);
  2827.            st4 = st4 * c_re(W[0]);
  2828.            c_re(inout[0]) = st6;
  2829.            st6 = c_re(inout[3 * iostride]);
  2830.            st6 = st6 * c_im(W[0]);
  2831.            st4 = st4 - st6;
  2832.            c_im(inout[iostride]) = st7;
  2833.            st7 = st1 - st4;
  2834.            st1 = st1 + st4;
  2835.            c_im(inout[3 * iostride]) = st5;
  2836.            st5 = st8 - st7;
  2837.            st8 = st8 + st7;
  2838.            st2 = st1 + st3;
  2839.            st3 = st3 - st1;
  2840.            c_re(inout[iostride]) = st5;
  2841.            c_re(inout[3 * iostride]) = st8;
  2842.            c_im(inout[0]) = st2;
  2843.            c_im(inout[2 * iostride]) = st3;
  2844.       }
  2845.       i = i - 1, inout = inout + 1, W = W + 2;
  2846.      } while (i > 0);
  2847. }
  2848. //////////////////////////////////////////////////////////////////////
  2849. int PFFTW(permutation_64)(int i)
  2850. {
  2851.     int i1 = i % 4;
  2852.     int i2 = i / 4;
  2853.     if (i1 <= 2)
  2854.        return (i1 * 16 + i2);
  2855.     else
  2856.        return (i1 * 16 + ((i2 + 1) % 16));
  2857. }
  2858. int PFFTW(permutation_128)(int i)
  2859. {
  2860.     int i1 = i % 4;
  2861.     int i2 = i / 4;
  2862.     if (i1 <= 2)
  2863.        return (i1 * 32 + i2);
  2864.     else
  2865.        return (i1 * 32 + ((i2 + 1) % 32));
  2866. }
  2867. int PFFTW(permutation_512)(int i)
  2868. {
  2869.     int i1 = i % 4;
  2870.     int i2 = i / 4;
  2871.     if (i1 <= 2)
  2872.        return (i1 * 128 + PFFTW(permutation_128)(i2));
  2873.     else
  2874.        return (i1 * 128 + PFFTW(permutation_128)((i2 + 1) % 128));
  2875. }
  2876. /////////////////////////////////////////////////////////////////
  2877. void MakeFFTOrder(faacDecHandle hDecoder)
  2878. {
  2879.     int i;
  2880.     for (i=0 ; i < 512 ; i++)
  2881.     {
  2882.         if (i < 64)
  2883.             hDecoder->unscambled64[i] = PFFTW(permutation_64)(i);
  2884.         hDecoder->unscambled512[i] = PFFTW(permutation_512)(i);
  2885.     }
  2886. }