ref: f5a6ef57b3baa4c671defdc987bc0aa583251c58
dir: /fastfft.c/
#include "fastfft.h" int unscambled64[64]; int unscambled256[256]; int unscambled512[512]; int unscambled2048[2048]; fftw_complex FFTarray[2048]; /* the array for in-place FFT */ fftw_real K980785280[1] = {FFTW_KONST(+0.980785280403230449126182236134239036973933731)}; fftw_real K195090322[1] = {FFTW_KONST(+0.195090322016128267848284868477022240927691618)}; fftw_real K555570233[1] = {FFTW_KONST(+0.555570233019602224742830813948532874374937191)}; fftw_real K831469612[1] = {FFTW_KONST(+0.831469612302545237078788377617905756738560812)}; fftw_real K923879532[1] = {FFTW_KONST(+0.923879532511286756128183189396788286822416626)}; fftw_real K382683432[1] = {FFTW_KONST(+0.382683432365089771728459984030398866761344562)}; fftw_real K707106781[1] = {FFTW_KONST(+0.707106781186547524400844362104849039284835938)}; fftw_complex PFFTW(W_64)[30] = { { 0.995184726672197, 0.0980171403295606 }, { 0.98078528040323, 0.195090322016128 }, { 0.98078528040323, 0.195090322016128 }, { 0.923879532511287, 0.38268343236509 }, { 0.956940335732209, 0.290284677254462 }, { 0.831469612302545, 0.555570233019602 }, { 0.923879532511287, 0.38268343236509 }, { 0.707106781186548, 0.707106781186547 }, { 0.881921264348355, 0.471396736825998 }, { 0.555570233019602, 0.831469612302545 }, { 0.831469612302545, 0.555570233019602 }, { 0.38268343236509, 0.923879532511287 }, { 0.773010453362737, 0.634393284163645 }, { 0.195090322016128, 0.98078528040323 }, { 0.707106781186548, 0.707106781186547 }, { 6.12303176911189e-17, 1 }, { 0.634393284163645, 0.773010453362737 }, { -0.195090322016128, 0.98078528040323 }, { 0.555570233019602, 0.831469612302545 }, { -0.38268343236509, 0.923879532511287 }, { 0.471396736825998, 0.881921264348355 }, { -0.555570233019602, 0.831469612302545 }, { 0.38268343236509, 0.923879532511287 }, { -0.707106781186547, 0.707106781186548 }, { 0.290284677254462, 0.956940335732209 }, { -0.831469612302545, 0.555570233019602 }, { 0.195090322016128, 0.98078528040323 }, { -0.923879532511287, 0.38268343236509 }, { 0.0980171403295608, 0.995184726672197 }, { -0.98078528040323, 0.195090322016129 }, }; fftw_complex PFFTW(W_128)[62] = { { 0.998795456205172, 0.049067674327418 }, { 0.995184726672197, 0.0980171403295606 }, { 0.995184726672197, 0.0980171403295606 }, { 0.98078528040323, 0.195090322016128 }, { 0.989176509964781, 0.146730474455362 }, { 0.956940335732209, 0.290284677254462 }, { 0.98078528040323, 0.195090322016128 }, { 0.923879532511287, 0.38268343236509 }, { 0.970031253194544, 0.242980179903264 }, { 0.881921264348355, 0.471396736825998 }, { 0.956940335732209, 0.290284677254462 }, { 0.831469612302545, 0.555570233019602 }, { 0.941544065183021, 0.33688985339222 }, { 0.773010453362737, 0.634393284163645 }, { 0.923879532511287, 0.38268343236509 }, { 0.707106781186548, 0.707106781186547 }, { 0.903989293123443, 0.427555093430282 }, { 0.634393284163645, 0.773010453362737 }, { 0.881921264348355, 0.471396736825998 }, { 0.555570233019602, 0.831469612302545 }, { 0.857728610000272, 0.514102744193222 }, { 0.471396736825998, 0.881921264348355 }, { 0.831469612302545, 0.555570233019602 }, { 0.38268343236509, 0.923879532511287 }, { 0.803207531480645, 0.595699304492433 }, { 0.290284677254462, 0.956940335732209 }, { 0.773010453362737, 0.634393284163645 }, { 0.195090322016128, 0.98078528040323 }, { 0.740951125354959, 0.671558954847018 }, { 0.0980171403295608, 0.995184726672197 }, { 0.707106781186548, 0.707106781186547 }, { 6.12303176911189e-17, 1 }, { 0.671558954847018, 0.740951125354959 }, { -0.0980171403295606, 0.995184726672197 }, { 0.634393284163645, 0.773010453362737 }, { -0.195090322016128, 0.98078528040323 }, { 0.595699304492433, 0.803207531480645 }, { -0.290284677254462, 0.956940335732209 }, { 0.555570233019602, 0.831469612302545 }, { -0.38268343236509, 0.923879532511287 }, { 0.514102744193222, 0.857728610000272 }, { -0.471396736825998, 0.881921264348355 }, { 0.471396736825998, 0.881921264348355 }, { -0.555570233019602, 0.831469612302545 }, { 0.427555093430282, 0.903989293123443 }, { -0.634393284163645, 0.773010453362737 }, { 0.38268343236509, 0.923879532511287 }, { -0.707106781186547, 0.707106781186548 }, { 0.33688985339222, 0.941544065183021 }, { -0.773010453362737, 0.634393284163645 }, { 0.290284677254462, 0.956940335732209 }, { -0.831469612302545, 0.555570233019602 }, { 0.242980179903264, 0.970031253194544 }, { -0.881921264348355, 0.471396736825998 }, { 0.195090322016128, 0.98078528040323 }, { -0.923879532511287, 0.38268343236509 }, { 0.146730474455362, 0.989176509964781 }, { -0.956940335732209, 0.290284677254462 }, { 0.0980171403295608, 0.995184726672197 }, { -0.98078528040323, 0.195090322016129 }, { 0.0490676743274181, 0.998795456205172 }, { -0.995184726672197, 0.0980171403295608 }, }; fftw_complex PFFTW(W_256)[126] = { { 0.999698818696204, 0.0245412285229123 }, { 0.998795456205172, 0.049067674327418 }, { 0.998795456205172, 0.049067674327418 }, { 0.995184726672197, 0.0980171403295606 }, { 0.99729045667869, 0.0735645635996674 }, { 0.989176509964781, 0.146730474455362 }, { 0.995184726672197, 0.0980171403295606 }, { 0.98078528040323, 0.195090322016128 }, { 0.99247953459871, 0.122410675199216 }, { 0.970031253194544, 0.242980179903264 }, { 0.989176509964781, 0.146730474455362 }, { 0.956940335732209, 0.290284677254462 }, { 0.985277642388941, 0.170961888760301 }, { 0.941544065183021, 0.33688985339222 }, { 0.98078528040323, 0.195090322016128 }, { 0.923879532511287, 0.38268343236509 }, { 0.975702130038529, 0.21910124015687 }, { 0.903989293123443, 0.427555093430282 }, { 0.970031253194544, 0.242980179903264 }, { 0.881921264348355, 0.471396736825998 }, { 0.96377606579544, 0.266712757474898 }, { 0.857728610000272, 0.514102744193222 }, { 0.956940335732209, 0.290284677254462 }, { 0.831469612302545, 0.555570233019602 }, { 0.949528180593037, 0.313681740398892 }, { 0.803207531480645, 0.595699304492433 }, { 0.941544065183021, 0.33688985339222 }, { 0.773010453362737, 0.634393284163645 }, { 0.932992798834739, 0.359895036534988 }, { 0.740951125354959, 0.671558954847018 }, { 0.923879532511287, 0.38268343236509 }, { 0.707106781186548, 0.707106781186547 }, { 0.914209755703531, 0.40524131400499 }, { 0.671558954847018, 0.740951125354959 }, { 0.903989293123443, 0.427555093430282 }, { 0.634393284163645, 0.773010453362737 }, { 0.893224301195515, 0.449611329654607 }, { 0.595699304492433, 0.803207531480645 }, { 0.881921264348355, 0.471396736825998 }, { 0.555570233019602, 0.831469612302545 }, { 0.870086991108711, 0.492898192229784 }, { 0.514102744193222, 0.857728610000272 }, { 0.857728610000272, 0.514102744193222 }, { 0.471396736825998, 0.881921264348355 }, { 0.844853565249707, 0.534997619887097 }, { 0.427555093430282, 0.903989293123443 }, { 0.831469612302545, 0.555570233019602 }, { 0.38268343236509, 0.923879532511287 }, { 0.817584813151584, 0.575808191417845 }, { 0.33688985339222, 0.941544065183021 }, { 0.803207531480645, 0.595699304492433 }, { 0.290284677254462, 0.956940335732209 }, { 0.788346427626606, 0.615231590580627 }, { 0.242980179903264, 0.970031253194544 }, { 0.773010453362737, 0.634393284163645 }, { 0.195090322016128, 0.98078528040323 }, { 0.757208846506485, 0.653172842953777 }, { 0.146730474455362, 0.989176509964781 }, { 0.740951125354959, 0.671558954847018 }, { 0.0980171403295608, 0.995184726672197 }, { 0.724247082951467, 0.689540544737067 }, { 0.0490676743274181, 0.998795456205172 }, { 0.707106781186548, 0.707106781186547 }, { 6.12303176911189e-17, 1 }, { 0.689540544737067, 0.724247082951467 }, { -0.049067674327418, 0.998795456205172 }, { 0.671558954847018, 0.740951125354959 }, { -0.0980171403295606, 0.995184726672197 }, { 0.653172842953777, 0.757208846506484 }, { -0.146730474455362, 0.989176509964781 }, { 0.634393284163645, 0.773010453362737 }, { -0.195090322016128, 0.98078528040323 }, { 0.615231590580627, 0.788346427626606 }, { -0.242980179903264, 0.970031253194544 }, { 0.595699304492433, 0.803207531480645 }, { -0.290284677254462, 0.956940335732209 }, { 0.575808191417845, 0.817584813151584 }, { -0.33688985339222, 0.941544065183021 }, { 0.555570233019602, 0.831469612302545 }, { -0.38268343236509, 0.923879532511287 }, { 0.534997619887097, 0.844853565249707 }, { -0.427555093430282, 0.903989293123443 }, { 0.514102744193222, 0.857728610000272 }, { -0.471396736825998, 0.881921264348355 }, { 0.492898192229784, 0.870086991108711 }, { -0.514102744193222, 0.857728610000272 }, { 0.471396736825998, 0.881921264348355 }, { -0.555570233019602, 0.831469612302545 }, { 0.449611329654607, 0.893224301195515 }, { -0.595699304492433, 0.803207531480645 }, { 0.427555093430282, 0.903989293123443 }, { -0.634393284163645, 0.773010453362737 }, { 0.40524131400499, 0.914209755703531 }, { -0.671558954847018, 0.740951125354959 }, { 0.38268343236509, 0.923879532511287 }, { -0.707106781186547, 0.707106781186548 }, { 0.359895036534988, 0.932992798834739 }, { -0.740951125354959, 0.671558954847019 }, { 0.33688985339222, 0.941544065183021 }, { -0.773010453362737, 0.634393284163645 }, { 0.313681740398892, 0.949528180593037 }, { -0.803207531480645, 0.595699304492433 }, { 0.290284677254462, 0.956940335732209 }, { -0.831469612302545, 0.555570233019602 }, { 0.266712757474898, 0.96377606579544 }, { -0.857728610000272, 0.514102744193222 }, { 0.242980179903264, 0.970031253194544 }, { -0.881921264348355, 0.471396736825998 }, { 0.21910124015687, 0.975702130038529 }, { -0.903989293123443, 0.427555093430282 }, { 0.195090322016128, 0.98078528040323 }, { -0.923879532511287, 0.38268343236509 }, { 0.170961888760301, 0.985277642388941 }, { -0.941544065183021, 0.33688985339222 }, { 0.146730474455362, 0.989176509964781 }, { -0.956940335732209, 0.290284677254462 }, { 0.122410675199216, 0.99247953459871 }, { -0.970031253194544, 0.242980179903264 }, { 0.0980171403295608, 0.995184726672197 }, { -0.98078528040323, 0.195090322016129 }, { 0.0735645635996675, 0.99729045667869 }, { -0.989176509964781, 0.146730474455362 }, { 0.0490676743274181, 0.998795456205172 }, { -0.995184726672197, 0.0980171403295608 }, { 0.0245412285229123, 0.999698818696204 }, { -0.998795456205172, 0.049067674327418 }, }; fftw_complex PFFTW(W_512)[254] = { { 0.999924701839145, 0.0122715382857199 }, { 0.999698818696204, 0.0245412285229123 }, { 0.999698818696204, 0.0245412285229123 }, { 0.998795456205172, 0.049067674327418 }, { 0.99932238458835, 0.0368072229413588 }, { 0.99729045667869, 0.0735645635996674 }, { 0.998795456205172, 0.049067674327418 }, { 0.995184726672197, 0.0980171403295606 }, { 0.998118112900149, 0.0613207363022086 }, { 0.99247953459871, 0.122410675199216 }, { 0.99729045667869, 0.0735645635996674 }, { 0.989176509964781, 0.146730474455362 }, { 0.996312612182778, 0.0857973123444399 }, { 0.985277642388941, 0.170961888760301 }, { 0.995184726672197, 0.0980171403295606 }, { 0.98078528040323, 0.195090322016128 }, { 0.993906970002356, 0.110222207293883 }, { 0.975702130038529, 0.21910124015687 }, { 0.99247953459871, 0.122410675199216 }, { 0.970031253194544, 0.242980179903264 }, { 0.99090263542778, 0.134580708507126 }, { 0.96377606579544, 0.266712757474898 }, { 0.989176509964781, 0.146730474455362 }, { 0.956940335732209, 0.290284677254462 }, { 0.987301418157858, 0.158858143333861 }, { 0.949528180593037, 0.313681740398892 }, { 0.985277642388941, 0.170961888760301 }, { 0.941544065183021, 0.33688985339222 }, { 0.983105487431216, 0.183039887955141 }, { 0.932992798834739, 0.359895036534988 }, { 0.98078528040323, 0.195090322016128 }, { 0.923879532511287, 0.38268343236509 }, { 0.978317370719628, 0.207111376192219 }, { 0.914209755703531, 0.40524131400499 }, { 0.975702130038529, 0.21910124015687 }, { 0.903989293123443, 0.427555093430282 }, { 0.97293995220556, 0.231058108280671 }, { 0.893224301195515, 0.449611329654607 }, { 0.970031253194544, 0.242980179903264 }, { 0.881921264348355, 0.471396736825998 }, { 0.966976471044852, 0.254865659604515 }, { 0.870086991108711, 0.492898192229784 }, { 0.96377606579544, 0.266712757474898 }, { 0.857728610000272, 0.514102744193222 }, { 0.960430519415566, 0.278519689385053 }, { 0.844853565249707, 0.534997619887097 }, { 0.956940335732209, 0.290284677254462 }, { 0.831469612302545, 0.555570233019602 }, { 0.953306040354194, 0.302005949319228 }, { 0.817584813151584, 0.575808191417845 }, { 0.949528180593037, 0.313681740398892 }, { 0.803207531480645, 0.595699304492433 }, { 0.945607325380521, 0.325310292162263 }, { 0.788346427626606, 0.615231590580627 }, { 0.941544065183021, 0.33688985339222 }, { 0.773010453362737, 0.634393284163645 }, { 0.937339011912575, 0.348418680249435 }, { 0.757208846506485, 0.653172842953777 }, { 0.932992798834739, 0.359895036534988 }, { 0.740951125354959, 0.671558954847018 }, { 0.928506080473216, 0.371317193951838 }, { 0.724247082951467, 0.689540544737067 }, { 0.923879532511287, 0.38268343236509 }, { 0.707106781186548, 0.707106781186547 }, { 0.919113851690058, 0.393992040061048 }, { 0.689540544737067, 0.724247082951467 }, { 0.914209755703531, 0.40524131400499 }, { 0.671558954847018, 0.740951125354959 }, { 0.909167983090522, 0.416429560097637 }, { 0.653172842953777, 0.757208846506484 }, { 0.903989293123443, 0.427555093430282 }, { 0.634393284163645, 0.773010453362737 }, { 0.898674465693954, 0.438616238538528 }, { 0.615231590580627, 0.788346427626606 }, { 0.893224301195515, 0.449611329654607 }, { 0.595699304492433, 0.803207531480645 }, { 0.887639620402854, 0.46053871095824 }, { 0.575808191417845, 0.817584813151584 }, { 0.881921264348355, 0.471396736825998 }, { 0.555570233019602, 0.831469612302545 }, { 0.876070094195407, 0.482183772079123 }, { 0.534997619887097, 0.844853565249707 }, { 0.870086991108711, 0.492898192229784 }, { 0.514102744193222, 0.857728610000272 }, { 0.863972856121587, 0.503538383725718 }, { 0.492898192229784, 0.870086991108711 }, { 0.857728610000272, 0.514102744193222 }, { 0.471396736825998, 0.881921264348355 }, { 0.851355193105265, 0.524589682678469 }, { 0.449611329654607, 0.893224301195515 }, { 0.844853565249707, 0.534997619887097 }, { 0.427555093430282, 0.903989293123443 }, { 0.838224705554838, 0.545324988422046 }, { 0.40524131400499, 0.914209755703531 }, { 0.831469612302545, 0.555570233019602 }, { 0.38268343236509, 0.923879532511287 }, { 0.824589302785025, 0.565731810783613 }, { 0.359895036534988, 0.932992798834739 }, { 0.817584813151584, 0.575808191417845 }, { 0.33688985339222, 0.941544065183021 }, { 0.810457198252595, 0.585797857456439 }, { 0.313681740398892, 0.949528180593037 }, { 0.803207531480645, 0.595699304492433 }, { 0.290284677254462, 0.956940335732209 }, { 0.795836904608884, 0.605511041404326 }, { 0.266712757474898, 0.96377606579544 }, { 0.788346427626606, 0.615231590580627 }, { 0.242980179903264, 0.970031253194544 }, { 0.780737228572094, 0.624859488142386 }, { 0.21910124015687, 0.975702130038529 }, { 0.773010453362737, 0.634393284163645 }, { 0.195090322016128, 0.98078528040323 }, { 0.765167265622459, 0.643831542889791 }, { 0.170961888760301, 0.985277642388941 }, { 0.757208846506485, 0.653172842953777 }, { 0.146730474455362, 0.989176509964781 }, { 0.749136394523459, 0.662415777590172 }, { 0.122410675199216, 0.99247953459871 }, { 0.740951125354959, 0.671558954847018 }, { 0.0980171403295608, 0.995184726672197 }, { 0.732654271672413, 0.680600997795453 }, { 0.0735645635996675, 0.99729045667869 }, { 0.724247082951467, 0.689540544737067 }, { 0.0490676743274181, 0.998795456205172 }, { 0.715730825283819, 0.698376249408973 }, { 0.0245412285229123, 0.999698818696204 }, { 0.707106781186548, 0.707106781186547 }, { 6.12303176911189e-17, 1 }, { 0.698376249408973, 0.715730825283819 }, { -0.0245412285229121, 0.999698818696204 }, { 0.689540544737067, 0.724247082951467 }, { -0.049067674327418, 0.998795456205172 }, { 0.680600997795453, 0.732654271672413 }, { -0.0735645635996673, 0.99729045667869 }, { 0.671558954847018, 0.740951125354959 }, { -0.0980171403295606, 0.995184726672197 }, { 0.662415777590172, 0.749136394523459 }, { -0.122410675199216, 0.99247953459871 }, { 0.653172842953777, 0.757208846506484 }, { -0.146730474455362, 0.989176509964781 }, { 0.643831542889791, 0.765167265622459 }, { -0.170961888760301, 0.985277642388941 }, { 0.634393284163645, 0.773010453362737 }, { -0.195090322016128, 0.98078528040323 }, { 0.624859488142386, 0.780737228572094 }, { -0.21910124015687, 0.975702130038529 }, { 0.615231590580627, 0.788346427626606 }, { -0.242980179903264, 0.970031253194544 }, { 0.605511041404326, 0.795836904608883 }, { -0.266712757474898, 0.96377606579544 }, { 0.595699304492433, 0.803207531480645 }, { -0.290284677254462, 0.956940335732209 }, { 0.585797857456439, 0.810457198252595 }, { -0.313681740398891, 0.949528180593037 }, { 0.575808191417845, 0.817584813151584 }, { -0.33688985339222, 0.941544065183021 }, { 0.565731810783613, 0.824589302785025 }, { -0.359895036534988, 0.932992798834739 }, { 0.555570233019602, 0.831469612302545 }, { -0.38268343236509, 0.923879532511287 }, { 0.545324988422046, 0.838224705554838 }, { -0.40524131400499, 0.914209755703531 }, { 0.534997619887097, 0.844853565249707 }, { -0.427555093430282, 0.903989293123443 }, { 0.524589682678469, 0.851355193105265 }, { -0.449611329654607, 0.893224301195515 }, { 0.514102744193222, 0.857728610000272 }, { -0.471396736825998, 0.881921264348355 }, { 0.503538383725718, 0.863972856121587 }, { -0.492898192229784, 0.870086991108711 }, { 0.492898192229784, 0.870086991108711 }, { -0.514102744193222, 0.857728610000272 }, { 0.482183772079123, 0.876070094195407 }, { -0.534997619887097, 0.844853565249707 }, { 0.471396736825998, 0.881921264348355 }, { -0.555570233019602, 0.831469612302545 }, { 0.46053871095824, 0.887639620402854 }, { -0.575808191417845, 0.817584813151584 }, { 0.449611329654607, 0.893224301195515 }, { -0.595699304492433, 0.803207531480645 }, { 0.438616238538528, 0.898674465693954 }, { -0.615231590580627, 0.788346427626606 }, { 0.427555093430282, 0.903989293123443 }, { -0.634393284163645, 0.773010453362737 }, { 0.416429560097637, 0.909167983090522 }, { -0.653172842953777, 0.757208846506485 }, { 0.40524131400499, 0.914209755703531 }, { -0.671558954847018, 0.740951125354959 }, { 0.393992040061048, 0.919113851690058 }, { -0.689540544737067, 0.724247082951467 }, { 0.38268343236509, 0.923879532511287 }, { -0.707106781186547, 0.707106781186548 }, { 0.371317193951838, 0.928506080473215 }, { -0.724247082951467, 0.689540544737067 }, { 0.359895036534988, 0.932992798834739 }, { -0.740951125354959, 0.671558954847019 }, { 0.348418680249435, 0.937339011912575 }, { -0.757208846506485, 0.653172842953777 }, { 0.33688985339222, 0.941544065183021 }, { -0.773010453362737, 0.634393284163645 }, { 0.325310292162263, 0.945607325380521 }, { -0.788346427626606, 0.615231590580627 }, { 0.313681740398892, 0.949528180593037 }, { -0.803207531480645, 0.595699304492433 }, { 0.302005949319228, 0.953306040354194 }, { -0.817584813151584, 0.575808191417845 }, { 0.290284677254462, 0.956940335732209 }, { -0.831469612302545, 0.555570233019602 }, { 0.278519689385053, 0.960430519415566 }, { -0.844853565249707, 0.534997619887097 }, { 0.266712757474898, 0.96377606579544 }, { -0.857728610000272, 0.514102744193222 }, { 0.254865659604515, 0.966976471044852 }, { -0.870086991108711, 0.492898192229784 }, { 0.242980179903264, 0.970031253194544 }, { -0.881921264348355, 0.471396736825998 }, { 0.231058108280671, 0.97293995220556 }, { -0.893224301195515, 0.449611329654607 }, { 0.21910124015687, 0.975702130038529 }, { -0.903989293123443, 0.427555093430282 }, { 0.207111376192219, 0.978317370719628 }, { -0.914209755703531, 0.40524131400499 }, { 0.195090322016128, 0.98078528040323 }, { -0.923879532511287, 0.38268343236509 }, { 0.183039887955141, 0.983105487431216 }, { -0.932992798834739, 0.359895036534988 }, { 0.170961888760301, 0.985277642388941 }, { -0.941544065183021, 0.33688985339222 }, { 0.158858143333861, 0.987301418157858 }, { -0.949528180593037, 0.313681740398891 }, { 0.146730474455362, 0.989176509964781 }, { -0.956940335732209, 0.290284677254462 }, { 0.134580708507126, 0.99090263542778 }, { -0.96377606579544, 0.266712757474898 }, { 0.122410675199216, 0.99247953459871 }, { -0.970031253194544, 0.242980179903264 }, { 0.110222207293883, 0.993906970002356 }, { -0.975702130038528, 0.21910124015687 }, { 0.0980171403295608, 0.995184726672197 }, { -0.98078528040323, 0.195090322016129 }, { 0.0857973123444399, 0.996312612182778 }, { -0.985277642388941, 0.170961888760301 }, { 0.0735645635996675, 0.99729045667869 }, { -0.989176509964781, 0.146730474455362 }, { 0.0613207363022086, 0.998118112900149 }, { -0.99247953459871, 0.122410675199216 }, { 0.0490676743274181, 0.998795456205172 }, { -0.995184726672197, 0.0980171403295608 }, { 0.036807222941359, 0.99932238458835 }, { -0.99729045667869, 0.0735645635996677 }, { 0.0245412285229123, 0.999698818696204 }, { -0.998795456205172, 0.049067674327418 }, { 0.0122715382857199, 0.999924701839145 }, { -0.999698818696204, 0.0245412285229123 }, }; fftw_complex PFFTW(W_2048)[1022] = { { 0.999995293809576, 0.00306795676296598 }, { 0.999981175282601, 0.00613588464915448 }, { 0.999981175282601, 0.00613588464915448 }, { 0.999924701839145, 0.0122715382857199 }, { 0.999957644551964, 0.00920375478205982 }, { 0.999830581795823, 0.0184067299058048 }, { 0.999924701839145, 0.0122715382857199 }, { 0.999698818696204, 0.0245412285229123 }, { 0.999882347454213, 0.0153392062849881 }, { 0.999529417501093, 0.0306748031766366 }, { 0.999830581795823, 0.0184067299058048 }, { 0.99932238458835, 0.0368072229413588 }, { 0.999769405351215, 0.0214740802754695 }, { 0.999077727752645, 0.0429382569349408 }, { 0.999698818696204, 0.0245412285229123 }, { 0.998795456205172, 0.049067674327418 }, { 0.999618822495179, 0.0276081457789657 }, { 0.998475580573295, 0.0551952443496899 }, { 0.999529417501093, 0.0306748031766366 }, { 0.998118112900149, 0.0613207363022086 }, { 0.999430604555462, 0.0337411718513776 }, { 0.997723066644192, 0.0674439195636641 }, { 0.99932238458835, 0.0368072229413588 }, { 0.99729045667869, 0.0735645635996674 }, { 0.999204758618364, 0.0398729275877398 }, { 0.996820299291166, 0.0796824379714301 }, { 0.999077727752645, 0.0429382569349408 }, { 0.996312612182778, 0.0857973123444399 }, { 0.998941293186857, 0.0460031821309146 }, { 0.99576741446766, 0.0919089564971327 }, { 0.998795456205172, 0.049067674327418 }, { 0.995184726672197, 0.0980171403295606 }, { 0.998640218180265, 0.0521317046802833 }, { 0.994564570734255, 0.104121633872055 }, { 0.998475580573295, 0.0551952443496899 }, { 0.993906970002356, 0.110222207293883 }, { 0.998301544933893, 0.0582582645004358 }, { 0.993211949234794, 0.116318630911905 }, { 0.998118112900149, 0.0613207363022086 }, { 0.99247953459871, 0.122410675199216 }, { 0.997925286198596, 0.0643826309298575 }, { 0.9917097536691, 0.128498110793793 }, { 0.997723066644192, 0.0674439195636641 }, { 0.99090263542778, 0.134580708507126 }, { 0.997511456140303, 0.0705045733896139 }, { 0.990058210262297, 0.140658239332849 }, { 0.99729045667869, 0.0735645635996674 }, { 0.989176509964781, 0.146730474455362 }, { 0.997060070339483, 0.0766238613920315 }, { 0.988257567730749, 0.152797185258443 }, { 0.996820299291166, 0.0796824379714301 }, { 0.987301418157858, 0.158858143333861 }, { 0.996571145790555, 0.0827402645493757 }, { 0.986308097244599, 0.16491312048997 }, { 0.996312612182778, 0.0857973123444399 }, { 0.985277642388941, 0.170961888760301 }, { 0.996044700901252, 0.0888535525825246 }, { 0.984210092386929, 0.177004220412149 }, { 0.99576741446766, 0.0919089564971327 }, { 0.983105487431216, 0.183039887955141 }, { 0.995480755491927, 0.094963495329639 }, { 0.981963869109555, 0.189068664149806 }, { 0.995184726672197, 0.0980171403295606 }, { 0.98078528040323, 0.195090322016128 }, { 0.994879330794806, 0.101069862754828 }, { 0.979569765685441, 0.201104634842092 }, { 0.994564570734255, 0.104121633872055 }, { 0.978317370719628, 0.207111376192219 }, { 0.994240449453188, 0.107172424956809 }, { 0.977028142657754, 0.213110319916091 }, { 0.993906970002356, 0.110222207293883 }, { 0.975702130038529, 0.21910124015687 }, { 0.993564135520595, 0.113270952177564 }, { 0.974339382785576, 0.225083911359793 }, { 0.993211949234794, 0.116318630911905 }, { 0.97293995220556, 0.231058108280671 }, { 0.992850414459865, 0.119365214810991 }, { 0.971503890986252, 0.237023605994367 }, { 0.99247953459871, 0.122410675199216 }, { 0.970031253194544, 0.242980179903264 }, { 0.992099313142192, 0.125454983411546 }, { 0.968522094274417, 0.24892760574572 }, { 0.9917097536691, 0.128498110793793 }, { 0.966976471044852, 0.254865659604515 }, { 0.991310859846115, 0.131540028702883 }, { 0.965394441697689, 0.260794117915276 }, { 0.99090263542778, 0.134580708507126 }, { 0.96377606579544, 0.266712757474898 }, { 0.990485084256457, 0.137620121586486 }, { 0.962121404269042, 0.272621355449949 }, { 0.990058210262297, 0.140658239332849 }, { 0.960430519415566, 0.278519689385053 }, { 0.989622017463201, 0.143695033150294 }, { 0.958703474895872, 0.284407537211272 }, { 0.989176509964781, 0.146730474455362 }, { 0.956940335732209, 0.290284677254462 }, { 0.988721691960324, 0.149764534677322 }, { 0.955141168305771, 0.296150888243624 }, { 0.988257567730749, 0.152797185258443 }, { 0.953306040354194, 0.302005949319228 }, { 0.987784141644572, 0.155828397654265 }, { 0.951435020969008, 0.307849640041535 }, { 0.987301418157858, 0.158858143333861 }, { 0.949528180593037, 0.313681740398892 }, { 0.986809401814186, 0.161886393780112 }, { 0.947585591017741, 0.319502030816016 }, { 0.986308097244599, 0.16491312048997 }, { 0.945607325380521, 0.325310292162263 }, { 0.985797509167567, 0.167938294974731 }, { 0.94359345816196, 0.331106305759876 }, { 0.985277642388941, 0.170961888760301 }, { 0.941544065183021, 0.33688985339222 }, { 0.984748501801904, 0.173983873387464 }, { 0.93945922360219, 0.342660717311994 }, { 0.984210092386929, 0.177004220412149 }, { 0.937339011912575, 0.348418680249435 }, { 0.98366241921173, 0.1800229014057 }, { 0.935183509938948, 0.35416352542049 }, { 0.983105487431216, 0.183039887955141 }, { 0.932992798834739, 0.359895036534988 }, { 0.982539302287441, 0.186055151663447 }, { 0.930766961078984, 0.365612997804774 }, { 0.981963869109555, 0.189068664149806 }, { 0.928506080473216, 0.371317193951838 }, { 0.981379193313755, 0.192080397049892 }, { 0.926210242138311, 0.377007410216418 }, { 0.98078528040323, 0.195090322016128 }, { 0.923879532511287, 0.38268343236509 }, { 0.980182135968117, 0.198098410717954 }, { 0.921514039342042, 0.388345046698826 }, { 0.979569765685441, 0.201104634842092 }, { 0.919113851690058, 0.393992040061048 }, { 0.978948175319062, 0.204108966092817 }, { 0.916679059921043, 0.399624199845647 }, { 0.978317370719628, 0.207111376192219 }, { 0.914209755703531, 0.40524131400499 }, { 0.97767735782451, 0.21011183688047 }, { 0.91170603200543, 0.410843171057904 }, { 0.977028142657754, 0.213110319916091 }, { 0.909167983090522, 0.416429560097637 }, { 0.976369731330021, 0.21610679707622 }, { 0.906595704514915, 0.4220002707998 }, { 0.975702130038529, 0.21910124015687 }, { 0.903989293123443, 0.427555093430282 }, { 0.975025345066994, 0.222093620973204 }, { 0.901348847046022, 0.433093818853152 }, { 0.974339382785576, 0.225083911359793 }, { 0.898674465693954, 0.438616238538528 }, { 0.973644249650812, 0.228072083170886 }, { 0.895966249756185, 0.444122144570429 }, { 0.97293995220556, 0.231058108280671 }, { 0.893224301195515, 0.449611329654607 }, { 0.972226497078936, 0.234041958583543 }, { 0.890448723244758, 0.455083587126344 }, { 0.971503890986252, 0.237023605994367 }, { 0.887639620402854, 0.46053871095824 }, { 0.97077214072895, 0.240003022448741 }, { 0.884797098430938, 0.465976495767966 }, { 0.970031253194544, 0.242980179903264 }, { 0.881921264348355, 0.471396736825998 }, { 0.969281235356549, 0.245955050335795 }, { 0.879012226428634, 0.476799230063322 }, { 0.968522094274417, 0.24892760574572 }, { 0.876070094195407, 0.482183772079123 }, { 0.967753837093476, 0.251897818154217 }, { 0.87309497841829, 0.487550160148436 }, { 0.966976471044852, 0.254865659604515 }, { 0.870086991108711, 0.492898192229784 }, { 0.966190003445413, 0.257831102162159 }, { 0.867046245515693, 0.498227666972782 }, { 0.965394441697689, 0.260794117915276 }, { 0.863972856121587, 0.503538383725718 }, { 0.964589793289813, 0.263754678974831 }, { 0.860866938637767, 0.508830142543107 }, { 0.96377606579544, 0.266712757474898 }, { 0.857728610000272, 0.514102744193222 }, { 0.962953266873684, 0.269668325572915 }, { 0.854557988365401, 0.51935599016559 }, { 0.962121404269042, 0.272621355449949 }, { 0.851355193105265, 0.524589682678469 }, { 0.961280485811321, 0.275571819310958 }, { 0.848120344803297, 0.529803624686295 }, { 0.960430519415566, 0.278519689385053 }, { 0.844853565249707, 0.534997619887097 }, { 0.959571513081985, 0.281464937925758 }, { 0.841554977436898, 0.540171472729893 }, { 0.958703474895872, 0.284407537211272 }, { 0.838224705554838, 0.545324988422046 }, { 0.957826413027533, 0.28734745954473 }, { 0.83486287498638, 0.550457972936605 }, { 0.956940335732209, 0.290284677254462 }, { 0.831469612302545, 0.555570233019602 }, { 0.956045251349996, 0.293219162694259 }, { 0.828045045257756, 0.560661576197336 }, { 0.955141168305771, 0.296150888243624 }, { 0.824589302785025, 0.565731810783613 }, { 0.954228095109106, 0.29907982630804 }, { 0.821102514991105, 0.570780745886967 }, { 0.953306040354194, 0.302005949319228 }, { 0.817584813151584, 0.575808191417845 }, { 0.952375012719766, 0.304929229735402 }, { 0.814036329705948, 0.580813958095765 }, { 0.951435020969008, 0.307849640041535 }, { 0.810457198252595, 0.585797857456439 }, { 0.950486073949482, 0.310767152749611 }, { 0.806847553543799, 0.590759701858874 }, { 0.949528180593037, 0.313681740398892 }, { 0.803207531480645, 0.595699304492433 }, { 0.94856134991573, 0.316593375556166 }, { 0.799537269107905, 0.600616479383869 }, { 0.947585591017741, 0.319502030816016 }, { 0.795836904608884, 0.605511041404326 }, { 0.946600913083284, 0.32240767880107 }, { 0.792106577300212, 0.610382806276309 }, { 0.945607325380521, 0.325310292162263 }, { 0.788346427626606, 0.615231590580627 }, { 0.94460483726148, 0.328209843579092 }, { 0.784556597155575, 0.620057211763289 }, { 0.94359345816196, 0.331106305759876 }, { 0.780737228572094, 0.624859488142386 }, { 0.942573197601447, 0.333999651442009 }, { 0.776888465673232, 0.629638238914927 }, { 0.941544065183021, 0.33688985339222 }, { 0.773010453362737, 0.634393284163645 }, { 0.940506070593268, 0.339776884406827 }, { 0.76910333764558, 0.639124444863776 }, { 0.93945922360219, 0.342660717311994 }, { 0.765167265622459, 0.643831542889791 }, { 0.938403534063108, 0.345541324963989 }, { 0.761202385484262, 0.648514401022112 }, { 0.937339011912575, 0.348418680249435 }, { 0.757208846506485, 0.653172842953777 }, { 0.936265667170278, 0.351292756085567 }, { 0.753186799043613, 0.657806693297079 }, { 0.935183509938948, 0.35416352542049 }, { 0.749136394523459, 0.662415777590172 }, { 0.934092550404259, 0.35703096123343 }, { 0.745057785441466, 0.666999922303637 }, { 0.932992798834739, 0.359895036534988 }, { 0.740951125354959, 0.671558954847018 }, { 0.931884265581668, 0.362755724367397 }, { 0.73681656887737, 0.676092703575316 }, { 0.930766961078984, 0.365612997804774 }, { 0.732654271672413, 0.680600997795453 }, { 0.929640895843181, 0.368466829953372 }, { 0.728464390448225, 0.6850836677727 }, { 0.928506080473216, 0.371317193951838 }, { 0.724247082951467, 0.689540544737067 }, { 0.927362525650401, 0.374164062971458 }, { 0.720002507961382, 0.693971460889654 }, { 0.926210242138311, 0.377007410216418 }, { 0.715730825283819, 0.698376249408973 }, { 0.925049240782678, 0.379847208924051 }, { 0.711432195745216, 0.702754744457225 }, { 0.923879532511287, 0.38268343236509 }, { 0.707106781186548, 0.707106781186547 }, { 0.922701128333879, 0.385516053843919 }, { 0.702754744457225, 0.711432195745216 }, { 0.921514039342042, 0.388345046698826 }, { 0.698376249408973, 0.715730825283819 }, { 0.920318276709111, 0.391170384302254 }, { 0.693971460889654, 0.720002507961382 }, { 0.919113851690058, 0.393992040061048 }, { 0.689540544737067, 0.724247082951467 }, { 0.91790077562139, 0.39680998741671 }, { 0.6850836677727, 0.728464390448225 }, { 0.916679059921043, 0.399624199845647 }, { 0.680600997795453, 0.732654271672413 }, { 0.915448716088268, 0.402434650859418 }, { 0.676092703575316, 0.73681656887737 }, { 0.914209755703531, 0.40524131400499 }, { 0.671558954847018, 0.740951125354959 }, { 0.912962190428398, 0.408044162864979 }, { 0.666999922303637, 0.745057785441466 }, { 0.91170603200543, 0.410843171057904 }, { 0.662415777590172, 0.749136394523459 }, { 0.910441292258067, 0.413638312238435 }, { 0.657806693297079, 0.753186799043612 }, { 0.909167983090522, 0.416429560097637 }, { 0.653172842953777, 0.757208846506484 }, { 0.907886116487666, 0.419216888363224 }, { 0.648514401022113, 0.761202385484262 }, { 0.906595704514915, 0.4220002707998 }, { 0.643831542889791, 0.765167265622459 }, { 0.905296759318119, 0.424779681209109 }, { 0.639124444863776, 0.76910333764558 }, { 0.903989293123443, 0.427555093430282 }, { 0.634393284163645, 0.773010453362737 }, { 0.902673318237259, 0.430326481340083 }, { 0.629638238914927, 0.776888465673232 }, { 0.901348847046022, 0.433093818853152 }, { 0.624859488142386, 0.780737228572094 }, { 0.90001589201616, 0.435857079922255 }, { 0.620057211763289, 0.784556597155575 }, { 0.898674465693954, 0.438616238538528 }, { 0.615231590580627, 0.788346427626606 }, { 0.897324580705418, 0.441371268731717 }, { 0.610382806276309, 0.792106577300212 }, { 0.895966249756185, 0.444122144570429 }, { 0.605511041404326, 0.795836904608883 }, { 0.894599485631383, 0.446868840162374 }, { 0.600616479383869, 0.799537269107905 }, { 0.893224301195515, 0.449611329654607 }, { 0.595699304492433, 0.803207531480645 }, { 0.891840709392343, 0.452349587233771 }, { 0.590759701858874, 0.806847553543799 }, { 0.890448723244758, 0.455083587126344 }, { 0.585797857456439, 0.810457198252595 }, { 0.889048355854665, 0.457813303598877 }, { 0.580813958095765, 0.814036329705948 }, { 0.887639620402854, 0.46053871095824 }, { 0.575808191417845, 0.817584813151584 }, { 0.886222530148881, 0.46325978355186 }, { 0.570780745886967, 0.821102514991105 }, { 0.884797098430938, 0.465976495767966 }, { 0.565731810783613, 0.824589302785025 }, { 0.883363338665732, 0.468688822035828 }, { 0.560661576197336, 0.828045045257756 }, { 0.881921264348355, 0.471396736825998 }, { 0.555570233019602, 0.831469612302545 }, { 0.880470889052161, 0.47410021465055 }, { 0.550457972936605, 0.83486287498638 }, { 0.879012226428634, 0.476799230063322 }, { 0.545324988422046, 0.838224705554838 }, { 0.877545290207261, 0.479493757660153 }, { 0.540171472729893, 0.841554977436898 }, { 0.876070094195407, 0.482183772079123 }, { 0.534997619887097, 0.844853565249707 }, { 0.874586652278176, 0.484869248000791 }, { 0.529803624686295, 0.848120344803297 }, { 0.87309497841829, 0.487550160148436 }, { 0.524589682678469, 0.851355193105265 }, { 0.871595086655951, 0.490226483288291 }, { 0.51935599016559, 0.854557988365401 }, { 0.870086991108711, 0.492898192229784 }, { 0.514102744193222, 0.857728610000272 }, { 0.868570705971341, 0.495565261825773 }, { 0.508830142543107, 0.860866938637767 }, { 0.867046245515693, 0.498227666972782 }, { 0.503538383725718, 0.863972856121587 }, { 0.865513624090569, 0.500885382611241 }, { 0.498227666972782, 0.867046245515693 }, { 0.863972856121587, 0.503538383725718 }, { 0.492898192229784, 0.870086991108711 }, { 0.862423956111041, 0.506186645345155 }, { 0.487550160148436, 0.87309497841829 }, { 0.860866938637767, 0.508830142543107 }, { 0.482183772079123, 0.876070094195407 }, { 0.859301818357008, 0.51146885043797 }, { 0.476799230063322, 0.879012226428633 }, { 0.857728610000272, 0.514102744193222 }, { 0.471396736825998, 0.881921264348355 }, { 0.856147328375194, 0.51673179901765 }, { 0.465976495767966, 0.884797098430938 }, { 0.854557988365401, 0.51935599016559 }, { 0.46053871095824, 0.887639620402854 }, { 0.852960604930364, 0.521975292937154 }, { 0.455083587126344, 0.890448723244758 }, { 0.851355193105265, 0.524589682678469 }, { 0.449611329654607, 0.893224301195515 }, { 0.849741768000853, 0.527199134781901 }, { 0.444122144570429, 0.895966249756185 }, { 0.848120344803297, 0.529803624686295 }, { 0.438616238538528, 0.898674465693954 }, { 0.846490938774052, 0.532403127877198 }, { 0.433093818853152, 0.901348847046022 }, { 0.844853565249707, 0.534997619887097 }, { 0.427555093430282, 0.903989293123443 }, { 0.843208239641845, 0.537587076295645 }, { 0.4220002707998, 0.906595704514915 }, { 0.841554977436898, 0.540171472729893 }, { 0.416429560097637, 0.909167983090522 }, { 0.839893794196, 0.542750784864516 }, { 0.410843171057904, 0.91170603200543 }, { 0.838224705554838, 0.545324988422046 }, { 0.40524131400499, 0.914209755703531 }, { 0.836547727223512, 0.5478940591731 }, { 0.399624199845647, 0.916679059921043 }, { 0.83486287498638, 0.550457972936605 }, { 0.393992040061048, 0.919113851690058 }, { 0.833170164701913, 0.553016705580027 }, { 0.388345046698826, 0.921514039342042 }, { 0.831469612302545, 0.555570233019602 }, { 0.38268343236509, 0.923879532511287 }, { 0.829761233794523, 0.558118531220556 }, { 0.377007410216418, 0.926210242138311 }, { 0.828045045257756, 0.560661576197336 }, { 0.371317193951838, 0.928506080473215 }, { 0.826321062845664, 0.563199344013834 }, { 0.365612997804774, 0.930766961078984 }, { 0.824589302785025, 0.565731810783613 }, { 0.359895036534988, 0.932992798834739 }, { 0.822849781375826, 0.568258952670131 }, { 0.354163525420491, 0.935183509938947 }, { 0.821102514991105, 0.570780745886967 }, { 0.348418680249435, 0.937339011912575 }, { 0.819347520076797, 0.573297166698042 }, { 0.342660717311994, 0.93945922360219 }, { 0.817584813151584, 0.575808191417845 }, { 0.33688985339222, 0.941544065183021 }, { 0.815814410806734, 0.578313796411656 }, { 0.331106305759876, 0.94359345816196 }, { 0.814036329705948, 0.580813958095765 }, { 0.325310292162263, 0.945607325380521 }, { 0.812250586585204, 0.583308652937698 }, { 0.319502030816016, 0.947585591017741 }, { 0.810457198252595, 0.585797857456439 }, { 0.313681740398892, 0.949528180593037 }, { 0.808656181588175, 0.588281548222645 }, { 0.307849640041535, 0.951435020969008 }, { 0.806847553543799, 0.590759701858874 }, { 0.302005949319228, 0.953306040354194 }, { 0.805031331142964, 0.5932322950398 }, { 0.296150888243624, 0.955141168305771 }, { 0.803207531480645, 0.595699304492433 }, { 0.290284677254462, 0.956940335732209 }, { 0.80137617172314, 0.598160706996342 }, { 0.284407537211272, 0.958703474895872 }, { 0.799537269107905, 0.600616479383869 }, { 0.278519689385053, 0.960430519415566 }, { 0.797690840943391, 0.603066598540348 }, { 0.272621355449949, 0.962121404269042 }, { 0.795836904608884, 0.605511041404326 }, { 0.266712757474898, 0.96377606579544 }, { 0.793975477554337, 0.607949784967774 }, { 0.260794117915276, 0.965394441697689 }, { 0.792106577300212, 0.610382806276309 }, { 0.254865659604515, 0.966976471044852 }, { 0.79023022143731, 0.61281008242941 }, { 0.24892760574572, 0.968522094274417 }, { 0.788346427626606, 0.615231590580627 }, { 0.242980179903264, 0.970031253194544 }, { 0.786455213599086, 0.617647307937804 }, { 0.237023605994367, 0.971503890986252 }, { 0.784556597155575, 0.620057211763289 }, { 0.231058108280671, 0.97293995220556 }, { 0.782650596166576, 0.62246127937415 }, { 0.225083911359793, 0.974339382785576 }, { 0.780737228572094, 0.624859488142386 }, { 0.21910124015687, 0.975702130038529 }, { 0.778816512381476, 0.627251815495144 }, { 0.213110319916091, 0.977028142657754 }, { 0.776888465673232, 0.629638238914927 }, { 0.207111376192219, 0.978317370719628 }, { 0.774953106594874, 0.632018735939809 }, { 0.201104634842092, 0.979569765685441 }, { 0.773010453362737, 0.634393284163645 }, { 0.195090322016128, 0.98078528040323 }, { 0.771060524261814, 0.636761861236284 }, { 0.189068664149806, 0.981963869109555 }, { 0.76910333764558, 0.639124444863776 }, { 0.183039887955141, 0.983105487431216 }, { 0.76713891193582, 0.641481012808583 }, { 0.177004220412149, 0.984210092386929 }, { 0.765167265622459, 0.643831542889791 }, { 0.170961888760301, 0.985277642388941 }, { 0.763188417263381, 0.646176012983316 }, { 0.16491312048997, 0.986308097244599 }, { 0.761202385484262, 0.648514401022112 }, { 0.158858143333861, 0.987301418157858 }, { 0.759209188978388, 0.650846684996381 }, { 0.152797185258443, 0.988257567730749 }, { 0.757208846506485, 0.653172842953777 }, { 0.146730474455362, 0.989176509964781 }, { 0.755201376896537, 0.655492852999615 }, { 0.140658239332849, 0.990058210262297 }, { 0.753186799043613, 0.657806693297079 }, { 0.134580708507126, 0.99090263542778 }, { 0.751165131909686, 0.66011434206742 }, { 0.128498110793793, 0.9917097536691 }, { 0.749136394523459, 0.662415777590172 }, { 0.122410675199216, 0.99247953459871 }, { 0.74710060598018, 0.664710978203345 }, { 0.116318630911905, 0.993211949234794 }, { 0.745057785441466, 0.666999922303637 }, { 0.110222207293883, 0.993906970002356 }, { 0.743007952135122, 0.669282588346636 }, { 0.104121633872055, 0.994564570734255 }, { 0.740951125354959, 0.671558954847018 }, { 0.0980171403295608, 0.995184726672197 }, { 0.738887324460615, 0.673829000378756 }, { 0.0919089564971327, 0.99576741446766 }, { 0.73681656887737, 0.676092703575316 }, { 0.0857973123444399, 0.996312612182778 }, { 0.734738878095963, 0.678350043129861 }, { 0.0796824379714301, 0.996820299291166 }, { 0.732654271672413, 0.680600997795453 }, { 0.0735645635996675, 0.99729045667869 }, { 0.730562769227828, 0.682845546385248 }, { 0.0674439195636641, 0.997723066644192 }, { 0.728464390448225, 0.6850836677727 }, { 0.0613207363022086, 0.998118112900149 }, { 0.726359155084346, 0.687315340891759 }, { 0.05519524434969, 0.998475580573295 }, { 0.724247082951467, 0.689540544737067 }, { 0.0490676743274181, 0.998795456205172 }, { 0.722128193929215, 0.691759258364158 }, { 0.042938256934941, 0.999077727752645 }, { 0.720002507961382, 0.693971460889654 }, { 0.036807222941359, 0.99932238458835 }, { 0.717870045055732, 0.696177131491463 }, { 0.0306748031766366, 0.999529417501093 }, { 0.715730825283819, 0.698376249408973 }, { 0.0245412285229123, 0.999698818696204 }, { 0.713584868780794, 0.700568793943248 }, { 0.0184067299058048, 0.999830581795823 }, { 0.711432195745216, 0.702754744457225 }, { 0.0122715382857199, 0.999924701839145 }, { 0.709272826438866, 0.704934080375905 }, { 0.00613588464915452, 0.999981175282601 }, { 0.707106781186548, 0.707106781186547 }, { 6.1257422745431e-17, 1 }, { 0.704934080375905, 0.709272826438866 }, { -0.00613588464915439, 0.999981175282601 }, { 0.702754744457225, 0.711432195745216 }, { -0.0122715382857198, 0.999924701839145 }, { 0.700568793943248, 0.713584868780794 }, { -0.0184067299058047, 0.999830581795823 }, { 0.698376249408973, 0.715730825283819 }, { -0.0245412285229121, 0.999698818696204 }, { 0.696177131491463, 0.717870045055732 }, { -0.0306748031766365, 0.999529417501093 }, { 0.693971460889654, 0.720002507961382 }, { -0.0368072229413589, 0.99932238458835 }, { 0.691759258364158, 0.722128193929215 }, { -0.0429382569349408, 0.999077727752645 }, { 0.689540544737067, 0.724247082951467 }, { -0.049067674327418, 0.998795456205172 }, { 0.687315340891759, 0.726359155084346 }, { -0.0551952443496899, 0.998475580573295 }, { 0.6850836677727, 0.728464390448225 }, { -0.0613207363022085, 0.998118112900149 }, { 0.682845546385248, 0.730562769227828 }, { -0.067443919563664, 0.997723066644192 }, { 0.680600997795453, 0.732654271672413 }, { -0.0735645635996673, 0.99729045667869 }, { 0.678350043129862, 0.734738878095963 }, { -0.07968243797143, 0.996820299291166 }, { 0.676092703575316, 0.73681656887737 }, { -0.0857973123444398, 0.996312612182778 }, { 0.673829000378756, 0.738887324460615 }, { -0.0919089564971326, 0.99576741446766 }, { 0.671558954847018, 0.740951125354959 }, { -0.0980171403295606, 0.995184726672197 }, { 0.669282588346636, 0.743007952135122 }, { -0.104121633872055, 0.994564570734255 }, { 0.666999922303637, 0.745057785441466 }, { -0.110222207293883, 0.993906970002356 }, { 0.664710978203345, 0.74710060598018 }, { -0.116318630911905, 0.993211949234794 }, { 0.662415777590172, 0.749136394523459 }, { -0.122410675199216, 0.99247953459871 }, { 0.66011434206742, 0.751165131909686 }, { -0.128498110793793, 0.9917097536691 }, { 0.657806693297079, 0.753186799043612 }, { -0.134580708507126, 0.99090263542778 }, { 0.655492852999615, 0.755201376896537 }, { -0.140658239332849, 0.990058210262297 }, { 0.653172842953777, 0.757208846506484 }, { -0.146730474455362, 0.989176509964781 }, { 0.650846684996381, 0.759209188978388 }, { -0.152797185258443, 0.988257567730749 }, { 0.648514401022113, 0.761202385484262 }, { -0.158858143333861, 0.987301418157858 }, { 0.646176012983316, 0.763188417263381 }, { -0.16491312048997, 0.986308097244599 }, { 0.643831542889791, 0.765167265622459 }, { -0.170961888760301, 0.985277642388941 }, { 0.641481012808583, 0.76713891193582 }, { -0.177004220412149, 0.984210092386929 }, { 0.639124444863776, 0.76910333764558 }, { -0.183039887955141, 0.983105487431216 }, { 0.636761861236284, 0.771060524261814 }, { -0.189068664149806, 0.981963869109555 }, { 0.634393284163645, 0.773010453362737 }, { -0.195090322016128, 0.98078528040323 }, { 0.632018735939809, 0.774953106594874 }, { -0.201104634842092, 0.979569765685441 }, { 0.629638238914927, 0.776888465673232 }, { -0.207111376192218, 0.978317370719628 }, { 0.627251815495144, 0.778816512381476 }, { -0.213110319916091, 0.977028142657754 }, { 0.624859488142386, 0.780737228572094 }, { -0.21910124015687, 0.975702130038529 }, { 0.62246127937415, 0.782650596166576 }, { -0.225083911359793, 0.974339382785576 }, { 0.620057211763289, 0.784556597155575 }, { -0.231058108280671, 0.97293995220556 }, { 0.617647307937804, 0.786455213599086 }, { -0.237023605994367, 0.971503890986252 }, { 0.615231590580627, 0.788346427626606 }, { -0.242980179903264, 0.970031253194544 }, { 0.61281008242941, 0.79023022143731 }, { -0.24892760574572, 0.968522094274417 }, { 0.610382806276309, 0.792106577300212 }, { -0.254865659604515, 0.966976471044852 }, { 0.607949784967774, 0.793975477554337 }, { -0.260794117915275, 0.965394441697689 }, { 0.605511041404326, 0.795836904608883 }, { -0.266712757474898, 0.96377606579544 }, { 0.603066598540348, 0.797690840943391 }, { -0.272621355449949, 0.962121404269042 }, { 0.600616479383869, 0.799537269107905 }, { -0.278519689385053, 0.960430519415566 }, { 0.598160706996342, 0.80137617172314 }, { -0.284407537211272, 0.958703474895872 }, { 0.595699304492433, 0.803207531480645 }, { -0.290284677254462, 0.956940335732209 }, { 0.5932322950398, 0.805031331142964 }, { -0.296150888243624, 0.955141168305771 }, { 0.590759701858874, 0.806847553543799 }, { -0.302005949319228, 0.953306040354194 }, { 0.588281548222645, 0.808656181588175 }, { -0.307849640041535, 0.951435020969008 }, { 0.585797857456439, 0.810457198252595 }, { -0.313681740398891, 0.949528180593037 }, { 0.583308652937698, 0.812250586585204 }, { -0.319502030816016, 0.947585591017741 }, { 0.580813958095765, 0.814036329705948 }, { -0.325310292162263, 0.945607325380521 }, { 0.578313796411656, 0.815814410806734 }, { -0.331106305759876, 0.94359345816196 }, { 0.575808191417845, 0.817584813151584 }, { -0.33688985339222, 0.941544065183021 }, { 0.573297166698042, 0.819347520076797 }, { -0.342660717311994, 0.93945922360219 }, { 0.570780745886967, 0.821102514991105 }, { -0.348418680249434, 0.937339011912575 }, { 0.568258952670131, 0.822849781375826 }, { -0.35416352542049, 0.935183509938948 }, { 0.565731810783613, 0.824589302785025 }, { -0.359895036534988, 0.932992798834739 }, { 0.563199344013834, 0.826321062845663 }, { -0.365612997804774, 0.930766961078984 }, { 0.560661576197336, 0.828045045257756 }, { -0.371317193951837, 0.928506080473216 }, { 0.558118531220556, 0.829761233794523 }, { -0.377007410216418, 0.926210242138311 }, { 0.555570233019602, 0.831469612302545 }, { -0.38268343236509, 0.923879532511287 }, { 0.553016705580028, 0.833170164701913 }, { -0.388345046698826, 0.921514039342042 }, { 0.550457972936605, 0.83486287498638 }, { -0.393992040061048, 0.919113851690058 }, { 0.5478940591731, 0.836547727223512 }, { -0.399624199845647, 0.916679059921043 }, { 0.545324988422046, 0.838224705554838 }, { -0.40524131400499, 0.914209755703531 }, { 0.542750784864516, 0.839893794195999 }, { -0.410843171057904, 0.91170603200543 }, { 0.540171472729893, 0.841554977436898 }, { -0.416429560097637, 0.909167983090522 }, { 0.537587076295646, 0.843208239641845 }, { -0.4220002707998, 0.906595704514915 }, { 0.534997619887097, 0.844853565249707 }, { -0.427555093430282, 0.903989293123443 }, { 0.532403127877198, 0.846490938774052 }, { -0.433093818853152, 0.901348847046022 }, { 0.529803624686295, 0.848120344803297 }, { -0.438616238538527, 0.898674465693954 }, { 0.527199134781901, 0.849741768000852 }, { -0.444122144570429, 0.895966249756185 }, { 0.524589682678469, 0.851355193105265 }, { -0.449611329654607, 0.893224301195515 }, { 0.521975292937154, 0.852960604930364 }, { -0.455083587126344, 0.890448723244758 }, { 0.51935599016559, 0.854557988365401 }, { -0.46053871095824, 0.887639620402854 }, { 0.51673179901765, 0.856147328375194 }, { -0.465976495767966, 0.884797098430938 }, { 0.514102744193222, 0.857728610000272 }, { -0.471396736825998, 0.881921264348355 }, { 0.511468850437971, 0.859301818357008 }, { -0.476799230063322, 0.879012226428634 }, { 0.508830142543107, 0.860866938637767 }, { -0.482183772079123, 0.876070094195407 }, { 0.506186645345155, 0.862423956111041 }, { -0.487550160148436, 0.87309497841829 }, { 0.503538383725718, 0.863972856121587 }, { -0.492898192229784, 0.870086991108711 }, { 0.500885382611241, 0.865513624090569 }, { -0.498227666972782, 0.867046245515693 }, { 0.498227666972782, 0.867046245515693 }, { -0.503538383725717, 0.863972856121587 }, { 0.495565261825772, 0.868570705971341 }, { -0.508830142543107, 0.860866938637767 }, { 0.492898192229784, 0.870086991108711 }, { -0.514102744193222, 0.857728610000272 }, { 0.490226483288291, 0.871595086655951 }, { -0.51935599016559, 0.854557988365401 }, { 0.487550160148436, 0.87309497841829 }, { -0.524589682678469, 0.851355193105265 }, { 0.484869248000791, 0.874586652278176 }, { -0.529803624686295, 0.848120344803297 }, { 0.482183772079123, 0.876070094195407 }, { -0.534997619887097, 0.844853565249707 }, { 0.479493757660153, 0.877545290207261 }, { -0.540171472729893, 0.841554977436898 }, { 0.476799230063322, 0.879012226428633 }, { -0.545324988422046, 0.838224705554838 }, { 0.47410021465055, 0.880470889052161 }, { -0.550457972936605, 0.83486287498638 }, { 0.471396736825998, 0.881921264348355 }, { -0.555570233019602, 0.831469612302545 }, { 0.468688822035828, 0.883363338665732 }, { -0.560661576197336, 0.828045045257756 }, { 0.465976495767966, 0.884797098430938 }, { -0.565731810783613, 0.824589302785025 }, { 0.46325978355186, 0.886222530148881 }, { -0.570780745886967, 0.821102514991105 }, { 0.46053871095824, 0.887639620402854 }, { -0.575808191417845, 0.817584813151584 }, { 0.457813303598877, 0.889048355854665 }, { -0.580813958095764, 0.814036329705949 }, { 0.455083587126344, 0.890448723244758 }, { -0.585797857456439, 0.810457198252595 }, { 0.452349587233771, 0.891840709392343 }, { -0.590759701858874, 0.806847553543799 }, { 0.449611329654607, 0.893224301195515 }, { -0.595699304492433, 0.803207531480645 }, { 0.446868840162374, 0.894599485631383 }, { -0.600616479383869, 0.799537269107905 }, { 0.444122144570429, 0.895966249756185 }, { -0.605511041404325, 0.795836904608884 }, { 0.441371268731717, 0.897324580705418 }, { -0.61038280627631, 0.792106577300212 }, { 0.438616238538528, 0.898674465693954 }, { -0.615231590580627, 0.788346427626606 }, { 0.435857079922255, 0.90001589201616 }, { -0.620057211763289, 0.784556597155575 }, { 0.433093818853152, 0.901348847046022 }, { -0.624859488142386, 0.780737228572095 }, { 0.430326481340083, 0.902673318237259 }, { -0.629638238914927, 0.776888465673232 }, { 0.427555093430282, 0.903989293123443 }, { -0.634393284163645, 0.773010453362737 }, { 0.424779681209109, 0.905296759318119 }, { -0.639124444863776, 0.76910333764558 }, { 0.4220002707998, 0.906595704514915 }, { -0.643831542889791, 0.765167265622459 }, { 0.419216888363224, 0.907886116487666 }, { -0.648514401022112, 0.761202385484262 }, { 0.416429560097637, 0.909167983090522 }, { -0.653172842953777, 0.757208846506485 }, { 0.413638312238435, 0.910441292258067 }, { -0.657806693297079, 0.753186799043613 }, { 0.410843171057904, 0.91170603200543 }, { -0.662415777590172, 0.749136394523459 }, { 0.408044162864979, 0.912962190428398 }, { -0.666999922303637, 0.745057785441466 }, { 0.40524131400499, 0.914209755703531 }, { -0.671558954847018, 0.740951125354959 }, { 0.402434650859419, 0.915448716088268 }, { -0.676092703575316, 0.73681656887737 }, { 0.399624199845647, 0.916679059921043 }, { -0.680600997795453, 0.732654271672413 }, { 0.39680998741671, 0.91790077562139 }, { -0.6850836677727, 0.728464390448225 }, { 0.393992040061048, 0.919113851690058 }, { -0.689540544737067, 0.724247082951467 }, { 0.391170384302254, 0.92031827670911 }, { -0.693971460889654, 0.720002507961382 }, { 0.388345046698826, 0.921514039342042 }, { -0.698376249408973, 0.715730825283819 }, { 0.385516053843919, 0.922701128333879 }, { -0.702754744457225, 0.711432195745217 }, { 0.38268343236509, 0.923879532511287 }, { -0.707106781186547, 0.707106781186548 }, { 0.379847208924051, 0.925049240782678 }, { -0.711432195745217, 0.702754744457225 }, { 0.377007410216418, 0.926210242138311 }, { -0.715730825283819, 0.698376249408973 }, { 0.374164062971458, 0.927362525650401 }, { -0.720002507961382, 0.693971460889654 }, { 0.371317193951838, 0.928506080473215 }, { -0.724247082951467, 0.689540544737067 }, { 0.368466829953372, 0.929640895843181 }, { -0.728464390448225, 0.6850836677727 }, { 0.365612997804774, 0.930766961078984 }, { -0.732654271672413, 0.680600997795453 }, { 0.362755724367397, 0.931884265581668 }, { -0.73681656887737, 0.676092703575316 }, { 0.359895036534988, 0.932992798834739 }, { -0.740951125354959, 0.671558954847019 }, { 0.35703096123343, 0.934092550404259 }, { -0.745057785441466, 0.666999922303638 }, { 0.354163525420491, 0.935183509938947 }, { -0.749136394523459, 0.662415777590172 }, { 0.351292756085567, 0.936265667170278 }, { -0.753186799043612, 0.657806693297079 }, { 0.348418680249435, 0.937339011912575 }, { -0.757208846506485, 0.653172842953777 }, { 0.345541324963989, 0.938403534063108 }, { -0.761202385484262, 0.648514401022113 }, { 0.342660717311994, 0.93945922360219 }, { -0.765167265622459, 0.643831542889791 }, { 0.339776884406827, 0.940506070593268 }, { -0.769103337645579, 0.639124444863776 }, { 0.33688985339222, 0.941544065183021 }, { -0.773010453362737, 0.634393284163645 }, { 0.333999651442009, 0.942573197601447 }, { -0.776888465673232, 0.629638238914927 }, { 0.331106305759876, 0.94359345816196 }, { -0.780737228572094, 0.624859488142386 }, { 0.328209843579093, 0.94460483726148 }, { -0.784556597155575, 0.620057211763289 }, { 0.325310292162263, 0.945607325380521 }, { -0.788346427626606, 0.615231590580627 }, { 0.32240767880107, 0.946600913083284 }, { -0.792106577300212, 0.61038280627631 }, { 0.319502030816016, 0.947585591017741 }, { -0.795836904608883, 0.605511041404326 }, { 0.316593375556166, 0.94856134991573 }, { -0.799537269107905, 0.600616479383869 }, { 0.313681740398892, 0.949528180593037 }, { -0.803207531480645, 0.595699304492433 }, { 0.310767152749611, 0.950486073949482 }, { -0.806847553543799, 0.590759701858874 }, { 0.307849640041535, 0.951435020969008 }, { -0.810457198252595, 0.585797857456439 }, { 0.304929229735402, 0.952375012719766 }, { -0.814036329705948, 0.580813958095765 }, { 0.302005949319228, 0.953306040354194 }, { -0.817584813151584, 0.575808191417845 }, { 0.29907982630804, 0.954228095109106 }, { -0.821102514991105, 0.570780745886967 }, { 0.296150888243624, 0.955141168305771 }, { -0.824589302785025, 0.565731810783613 }, { 0.293219162694259, 0.956045251349996 }, { -0.828045045257756, 0.560661576197336 }, { 0.290284677254462, 0.956940335732209 }, { -0.831469612302545, 0.555570233019602 }, { 0.28734745954473, 0.957826413027533 }, { -0.83486287498638, 0.550457972936605 }, { 0.284407537211272, 0.958703474895872 }, { -0.838224705554838, 0.545324988422046 }, { 0.281464937925758, 0.959571513081985 }, { -0.841554977436898, 0.540171472729893 }, { 0.278519689385053, 0.960430519415566 }, { -0.844853565249707, 0.534997619887097 }, { 0.275571819310958, 0.961280485811321 }, { -0.848120344803297, 0.529803624686295 }, { 0.272621355449949, 0.962121404269042 }, { -0.851355193105265, 0.524589682678469 }, { 0.269668325572915, 0.962953266873684 }, { -0.8545579883654, 0.51935599016559 }, { 0.266712757474898, 0.96377606579544 }, { -0.857728610000272, 0.514102744193222 }, { 0.263754678974832, 0.964589793289813 }, { -0.860866938637767, 0.508830142543107 }, { 0.260794117915276, 0.965394441697689 }, { -0.863972856121587, 0.503538383725718 }, { 0.257831102162159, 0.966190003445413 }, { -0.867046245515693, 0.498227666972782 }, { 0.254865659604515, 0.966976471044852 }, { -0.870086991108711, 0.492898192229784 }, { 0.251897818154217, 0.967753837093476 }, { -0.87309497841829, 0.487550160148436 }, { 0.24892760574572, 0.968522094274417 }, { -0.876070094195406, 0.482183772079123 }, { 0.245955050335795, 0.969281235356549 }, { -0.879012226428634, 0.476799230063322 }, { 0.242980179903264, 0.970031253194544 }, { -0.881921264348355, 0.471396736825998 }, { 0.240003022448741, 0.97077214072895 }, { -0.884797098430938, 0.465976495767966 }, { 0.237023605994367, 0.971503890986252 }, { -0.887639620402854, 0.46053871095824 }, { 0.234041958583543, 0.972226497078936 }, { -0.890448723244758, 0.455083587126344 }, { 0.231058108280671, 0.97293995220556 }, { -0.893224301195515, 0.449611329654607 }, { 0.228072083170886, 0.973644249650812 }, { -0.895966249756185, 0.444122144570429 }, { 0.225083911359793, 0.974339382785576 }, { -0.898674465693954, 0.438616238538528 }, { 0.222093620973204, 0.975025345066994 }, { -0.901348847046022, 0.433093818853152 }, { 0.21910124015687, 0.975702130038529 }, { -0.903989293123443, 0.427555093430282 }, { 0.21610679707622, 0.976369731330021 }, { -0.906595704514915, 0.4220002707998 }, { 0.213110319916091, 0.977028142657754 }, { -0.909167983090522, 0.416429560097637 }, { 0.21011183688047, 0.97767735782451 }, { -0.91170603200543, 0.410843171057904 }, { 0.207111376192219, 0.978317370719628 }, { -0.914209755703531, 0.40524131400499 }, { 0.204108966092817, 0.978948175319062 }, { -0.916679059921043, 0.399624199845647 }, { 0.201104634842092, 0.979569765685441 }, { -0.919113851690058, 0.393992040061048 }, { 0.198098410717954, 0.980182135968117 }, { -0.921514039342042, 0.388345046698827 }, { 0.195090322016128, 0.98078528040323 }, { -0.923879532511287, 0.38268343236509 }, { 0.192080397049892, 0.981379193313755 }, { -0.926210242138311, 0.377007410216418 }, { 0.189068664149806, 0.981963869109555 }, { -0.928506080473215, 0.371317193951838 }, { 0.186055151663447, 0.982539302287441 }, { -0.930766961078984, 0.365612997804774 }, { 0.183039887955141, 0.983105487431216 }, { -0.932992798834739, 0.359895036534988 }, { 0.1800229014057, 0.98366241921173 }, { -0.935183509938948, 0.35416352542049 }, { 0.177004220412149, 0.984210092386929 }, { -0.937339011912575, 0.348418680249435 }, { 0.173983873387464, 0.984748501801904 }, { -0.93945922360219, 0.342660717311994 }, { 0.170961888760301, 0.985277642388941 }, { -0.941544065183021, 0.33688985339222 }, { 0.167938294974731, 0.985797509167567 }, { -0.94359345816196, 0.331106305759876 }, { 0.16491312048997, 0.986308097244599 }, { -0.945607325380521, 0.325310292162263 }, { 0.161886393780112, 0.986809401814185 }, { -0.947585591017741, 0.319502030816016 }, { 0.158858143333861, 0.987301418157858 }, { -0.949528180593037, 0.313681740398891 }, { 0.155828397654265, 0.987784141644572 }, { -0.951435020969008, 0.307849640041535 }, { 0.152797185258443, 0.988257567730749 }, { -0.953306040354194, 0.302005949319228 }, { 0.149764534677322, 0.988721691960324 }, { -0.955141168305771, 0.296150888243624 }, { 0.146730474455362, 0.989176509964781 }, { -0.956940335732209, 0.290284677254462 }, { 0.143695033150295, 0.989622017463201 }, { -0.958703474895871, 0.284407537211272 }, { 0.140658239332849, 0.990058210262297 }, { -0.960430519415566, 0.278519689385053 }, { 0.137620121586486, 0.990485084256457 }, { -0.962121404269041, 0.272621355449949 }, { 0.134580708507126, 0.99090263542778 }, { -0.96377606579544, 0.266712757474898 }, { 0.131540028702883, 0.991310859846115 }, { -0.965394441697689, 0.260794117915276 }, { 0.128498110793793, 0.9917097536691 }, { -0.966976471044852, 0.254865659604515 }, { 0.125454983411546, 0.992099313142192 }, { -0.968522094274417, 0.24892760574572 }, { 0.122410675199216, 0.99247953459871 }, { -0.970031253194544, 0.242980179903264 }, { 0.119365214810991, 0.992850414459865 }, { -0.971503890986252, 0.237023605994367 }, { 0.116318630911905, 0.993211949234794 }, { -0.97293995220556, 0.231058108280671 }, { 0.113270952177564, 0.993564135520595 }, { -0.974339382785576, 0.225083911359793 }, { 0.110222207293883, 0.993906970002356 }, { -0.975702130038528, 0.21910124015687 }, { 0.107172424956809, 0.994240449453188 }, { -0.977028142657754, 0.213110319916091 }, { 0.104121633872055, 0.994564570734255 }, { -0.978317370719628, 0.207111376192219 }, { 0.101069862754828, 0.994879330794806 }, { -0.979569765685441, 0.201104634842092 }, { 0.0980171403295608, 0.995184726672197 }, { -0.98078528040323, 0.195090322016129 }, { 0.0949634953296391, 0.995480755491927 }, { -0.981963869109555, 0.189068664149806 }, { 0.0919089564971327, 0.99576741446766 }, { -0.983105487431216, 0.183039887955141 }, { 0.0888535525825247, 0.996044700901252 }, { -0.984210092386929, 0.177004220412149 }, { 0.0857973123444399, 0.996312612182778 }, { -0.985277642388941, 0.170961888760301 }, { 0.0827402645493758, 0.996571145790555 }, { -0.986308097244599, 0.16491312048997 }, { 0.0796824379714301, 0.996820299291166 }, { -0.987301418157858, 0.158858143333861 }, { 0.0766238613920316, 0.997060070339483 }, { -0.988257567730749, 0.152797185258444 }, { 0.0735645635996675, 0.99729045667869 }, { -0.989176509964781, 0.146730474455362 }, { 0.070504573389614, 0.997511456140303 }, { -0.990058210262297, 0.14065823933285 }, { 0.0674439195636641, 0.997723066644192 }, { -0.99090263542778, 0.134580708507126 }, { 0.0643826309298574, 0.997925286198596 }, { -0.9917097536691, 0.128498110793793 }, { 0.0613207363022086, 0.998118112900149 }, { -0.99247953459871, 0.122410675199216 }, { 0.0582582645004357, 0.998301544933893 }, { -0.993211949234794, 0.116318630911905 }, { 0.05519524434969, 0.998475580573295 }, { -0.993906970002356, 0.110222207293883 }, { 0.0521317046802833, 0.998640218180265 }, { -0.994564570734255, 0.104121633872055 }, { 0.0490676743274181, 0.998795456205172 }, { -0.995184726672197, 0.0980171403295608 }, { 0.0460031821309146, 0.998941293186857 }, { -0.99576741446766, 0.0919089564971328 }, { 0.042938256934941, 0.999077727752645 }, { -0.996312612182778, 0.0857973123444402 }, { 0.0398729275877398, 0.999204758618364 }, { -0.996820299291166, 0.0796824379714302 }, { 0.036807222941359, 0.99932238458835 }, { -0.99729045667869, 0.0735645635996677 }, { 0.0337411718513776, 0.999430604555462 }, { -0.997723066644192, 0.0674439195636642 }, { 0.0306748031766366, 0.999529417501093 }, { -0.998118112900149, 0.0613207363022085 }, { 0.0276081457789658, 0.999618822495179 }, { -0.998475580573295, 0.0551952443496901 }, { 0.0245412285229123, 0.999698818696204 }, { -0.998795456205172, 0.049067674327418 }, { 0.0214740802754696, 0.999769405351215 }, { -0.999077727752645, 0.042938256934941 }, { 0.0184067299058048, 0.999830581795823 }, { -0.99932238458835, 0.0368072229413588 }, { 0.0153392062849882, 0.999882347454213 }, { -0.999529417501093, 0.0306748031766369 }, { 0.0122715382857199, 0.999924701839145 }, { -0.999698818696204, 0.0245412285229123 }, { 0.00920375478205996, 0.999957644551964 }, { -0.999830581795823, 0.0184067299058051 }, { 0.00613588464915452, 0.999981175282601 }, { -0.999924701839145, 0.01227153828572 }, { 0.00306795676296614, 0.999995293809576 }, { -0.999981175282601, 0.0061358846491548 }, }; /////////////////////////////////////////////////////////////// void PFFTW(16) (fftw_complex * input) { fftw_real tmp332; fftw_real tmp331; fftw_real tmp330; fftw_real tmp329; fftw_real tmp328; fftw_real tmp327; fftw_real tmp326; fftw_real tmp325; fftw_real tmp324; fftw_real tmp323; fftw_real tmp322; fftw_real tmp321; fftw_real tmp320; fftw_real tmp319; fftw_real tmp318; fftw_real tmp317; fftw_real tmp316; fftw_real tmp315; fftw_real tmp314; fftw_real tmp313; fftw_real tmp312; fftw_real tmp311; fftw_real tmp310; fftw_real tmp309; fftw_real tmp308; fftw_real tmp307; fftw_real tmp306; fftw_real tmp305; fftw_real tmp304; fftw_real tmp303; fftw_real tmp302; fftw_real tmp301; fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(input[0]); st8 = st8 - c_re(input[8]); st7 = c_im(input[4]); st7 = st7 - c_im(input[12]); st6 = c_re(input[4]); st5 = st8 - st7; st8 = st8 + st7; st6 = st6 - c_re(input[12]); st4 = c_im(input[0]); st4 = st4 - c_im(input[8]); st3 = c_re(input[0]); st2 = st6 + st4; st4 = st4 - st6; st3 = st3 + c_re(input[8]); st1 = c_re(input[4]); st1 = st1 + c_re(input[12]); st7 = c_im(input[0]); st6 = st3 + st1; st3 = st3 - st1; st7 = st7 + c_im(input[8]); st1 = c_im(input[4]); st1 = st1 + c_im(input[12]); tmp301 = st4; st4 = c_re(input[2]); tmp302 = st8; st8 = st7 + st1; st7 = st7 - st1; st4 = st4 + c_re(input[10]); st1 = c_re(input[6]); st1 = st1 + c_re(input[14]); tmp303 = st2; st2 = c_im(input[2]); tmp304 = st5; st5 = st4 + st1; st4 = st4 - st1; st2 = st2 + c_im(input[10]); st1 = st6 + st5; st6 = st6 - st5; st5 = st4 + st7; st7 = st7 - st4; st4 = c_im(input[6]); st4 = st4 + c_im(input[14]); tmp305 = st5; st5 = c_re(input[6]); tmp306 = st7; st7 = st2 + st4; st2 = st2 - st4; st4 = st8 - st7; st8 = st8 + st7; st7 = st3 - st2; st3 = st3 + st2; st5 = st5 - c_re(input[14]); st2 = c_im(input[2]); st2 = st2 - c_im(input[10]); tmp307 = st3; st3 = c_re(input[2]); tmp308 = st6; st6 = st5 + st2; st2 = st2 - st5; st3 = st3 - c_re(input[10]); st5 = c_im(input[6]); st5 = st5 - c_im(input[14]); tmp309 = st7; st7 = c_re(input[5]); tmp310 = st8; st8 = st3 - st5; st3 = st3 + st5; st5 = st6 - st8; st6 = st6 + st8; st5 = st5 * K707106781[0]; st8 = st2 + st3; st6 = st6 * K707106781[0]; st2 = st2 - st3; st8 = st8 * K707106781[0]; st7 = st7 - c_re(input[13]); st2 = st2 * K707106781[0]; st3 = tmp304 + st5; tmp311 = st4; st4 = tmp303 + st6; st6 = tmp303 - st6; st5 = tmp304 - st5; tmp312 = st1; st1 = tmp302 - st8; st8 = tmp302 + st8; tmp313 = st8; st8 = tmp301 + st2; st2 = tmp301 - st2; tmp314 = st2; st2 = c_im(input[1]); st2 = st2 - c_im(input[9]); tmp315 = st8; st8 = c_re(input[1]); tmp316 = st1; st1 = st7 + st2; st2 = st2 - st7; st7 = st1 * K923879532[0]; st8 = st8 - c_re(input[9]); st1 = st1 * K382683432[0]; tmp317 = st5; st5 = c_im(input[5]); tmp318 = st6; st6 = st2 * K923879532[0]; st5 = st5 - c_im(input[13]); st2 = st2 * K382683432[0]; tmp319 = st4; st4 = st8 - st5; st8 = st8 + st5; st5 = st4 * K382683432[0]; tmp320 = st3; st3 = c_re(input[7]); st4 = st4 * K923879532[0]; st7 = st7 + st5; st5 = st8 * K382683432[0]; st1 = st1 - st4; st8 = st8 * K923879532[0]; st6 = st6 - st5; st2 = st2 + st8; st3 = st3 - c_re(input[15]); st4 = c_im(input[3]); st4 = st4 - c_im(input[11]); st5 = c_re(input[3]); st8 = st3 + st4; st4 = st4 - st3; st3 = st8 * K382683432[0]; st5 = st5 - c_re(input[11]); st8 = st8 * K923879532[0]; tmp321 = st2; st2 = c_im(input[7]); tmp322 = st6; st6 = st4 * K382683432[0]; st2 = st2 - c_im(input[15]); st4 = st4 * K923879532[0]; tmp323 = st1; st1 = st5 - st2; st5 = st5 + st2; st2 = st1 * K923879532[0]; tmp324 = st7; st7 = c_re(input[1]); st1 = st1 * K382683432[0]; st3 = st3 + st2; st2 = st5 * K923879532[0]; st1 = st1 - st8; st5 = st5 * K382683432[0]; st6 = st6 - st2; st4 = st4 + st5; st7 = st7 + c_re(input[9]); st8 = tmp324 - st3; st3 = tmp324 + st3; st2 = tmp320 - st8; st8 = tmp320 + st8; st5 = tmp319 - st3; st3 = tmp319 + st3; tmp325 = st3; st3 = tmp323 + st1; st1 = tmp323 - st1; tmp326 = st5; st5 = tmp318 - st3; st3 = tmp318 + st3; tmp327 = st5; st5 = tmp317 - st1; st1 = tmp317 + st1; tmp328 = st3; st3 = tmp322 - st6; tmp329 = st5; st5 = tmp321 + st4; tmp330 = st1; st1 = tmp316 - st3; st3 = tmp316 + st3; tmp331 = st2; st2 = tmp313 - st5; st5 = tmp313 + st5; st6 = tmp322 + st6; c_re(input[9]) = st2; c_re(input[1]) = st5; st2 = tmp315 - st6; st6 = tmp315 + st6; st4 = tmp321 - st4; st5 = c_re(input[5]); c_re(input[5]) = st3; st5 = st5 + c_re(input[13]); c_re(input[13]) = st1; st1 = st7 + st5; st7 = st7 - st5; st3 = tmp314 - st4; st4 = tmp314 + st4; st5 = c_im(input[1]); c_im(input[1]) = st6; st5 = st5 + c_im(input[9]); c_im(input[9]) = st2; st2 = c_im(input[5]); c_im(input[5]) = st3; st2 = st2 + c_im(input[13]); c_im(input[13]) = st4; st6 = st5 - st2; st5 = st5 + st2; st3 = c_re(input[3]); c_re(input[3]) = st8; st3 = st3 + c_re(input[11]); c_re(input[11]) = tmp331; st8 = c_re(input[7]); c_re(input[7]) = tmp330; st8 = st8 + c_re(input[15]); c_re(input[15]) = tmp329; st4 = st3 + st8; st3 = st3 - st8; st2 = st1 + st4; st1 = st1 - st4; st8 = st3 + st6; st6 = st6 - st3; st4 = tmp312 - st2; st2 = tmp312 + st2; st3 = tmp311 - st1; c_re(input[8]) = st4; c_re(input[0]) = st2; c_im(input[4]) = st3; st1 = st1 + tmp311; st4 = c_im(input[3]); c_im(input[3]) = tmp328; c_im(input[12]) = st1; st4 = st4 + c_im(input[11]); c_im(input[11]) = tmp327; st2 = c_im(input[7]); c_im(input[7]) = tmp326; st2 = st2 + c_im(input[15]); c_im(input[15]) = tmp325; st3 = st4 - st2; st4 = st4 + st2; st1 = st7 - st3; st2 = st5 - st4; tmp332 = st2; st2 = st8 - st1; st8 = st8 + st1; st2 = st2 * K707106781[0]; st5 = st5 + st4; st8 = st8 * K707106781[0]; st7 = st7 + st3; st3 = tmp310 + st5; st4 = st6 - st7; st6 = st6 + st7; c_im(input[0]) = st3; st4 = st4 * K707106781[0]; st5 = tmp310 - st5; st6 = st6 * K707106781[0]; st1 = tmp309 - st2; c_im(input[8]) = st5; c_re(input[14]) = st1; st2 = tmp309 + st2; st7 = tmp308 + tmp332; st3 = tmp308 - tmp332; c_re(input[6]) = st2; c_re(input[4]) = st7; c_re(input[12]) = st3; st5 = tmp306 - st4; st4 = tmp306 + st4; st1 = tmp307 - st6; c_im(input[10]) = st5; c_im(input[2]) = st4; c_re(input[10]) = st1; st6 = tmp307 + st6; st2 = tmp305 - st8; st8 = tmp305 + st8; c_re(input[2]) = st6; c_im(input[6]) = st2; c_im(input[14]) = st8; } void PFFTW(32) (fftw_complex * input) { fftw_real tmp714; fftw_real tmp713; fftw_real tmp712; fftw_real tmp711; fftw_real tmp710; fftw_real tmp709; fftw_real tmp708; fftw_real tmp707; fftw_real tmp706; fftw_real tmp705; fftw_real tmp704; fftw_real tmp703; fftw_real tmp702; fftw_real tmp701; fftw_real tmp700; fftw_real tmp699; fftw_real tmp698; fftw_real tmp697; fftw_real tmp696; fftw_real tmp695; fftw_real tmp694; fftw_real tmp693; fftw_real tmp692; fftw_real tmp691; fftw_real tmp690; fftw_real tmp689; fftw_real tmp688; fftw_real tmp687; fftw_real tmp686; fftw_real tmp685; fftw_real tmp684; fftw_real tmp683; fftw_real tmp682; fftw_real tmp681; fftw_real tmp680; fftw_real tmp679; fftw_real tmp678; fftw_real tmp677; fftw_real tmp676; fftw_real tmp675; fftw_real tmp674; fftw_real tmp673; fftw_real tmp672; fftw_real tmp671; fftw_real tmp670; fftw_real tmp669; fftw_real tmp668; fftw_real tmp667; fftw_real tmp666; fftw_real tmp665; fftw_real tmp664; fftw_real tmp663; fftw_real tmp662; fftw_real tmp661; fftw_real tmp660; fftw_real tmp659; fftw_real tmp658; fftw_real tmp657; fftw_real tmp656; fftw_real tmp655; fftw_real tmp654; fftw_real tmp653; fftw_real tmp652; fftw_real tmp651; fftw_real tmp650; fftw_real tmp649; fftw_real tmp648; fftw_real tmp647; fftw_real tmp646; fftw_real tmp645; fftw_real tmp644; fftw_real tmp643; fftw_real tmp642; fftw_real tmp641; fftw_real tmp640; fftw_real tmp639; fftw_real tmp638; fftw_real tmp637; fftw_real tmp636; fftw_real tmp635; fftw_real tmp634; fftw_real tmp633; fftw_real tmp632; fftw_real tmp631; fftw_real tmp630; fftw_real tmp629; fftw_real tmp628; fftw_real tmp627; fftw_real tmp626; fftw_real tmp625; fftw_real tmp624; fftw_real tmp623; fftw_real tmp622; fftw_real tmp621; fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(input[0]); st8 = st8 - c_re(input[16]); st7 = c_im(input[8]); st7 = st7 - c_im(input[24]); st6 = st8 - st7; st8 = st8 + st7; st5 = c_re(input[0]); st5 = st5 + c_re(input[16]); st4 = c_re(input[8]); st4 = st4 + c_re(input[24]); st3 = st5 + st4; st5 = st5 - st4; st2 = c_im(input[0]); st2 = st2 + c_im(input[16]); st1 = c_im(input[8]); st1 = st1 + c_im(input[24]); st7 = st2 + st1; st2 = st2 - st1; st4 = c_re(input[4]); st4 = st4 + c_re(input[20]); st1 = c_re(input[28]); st1 = st1 + c_re(input[12]); tmp621 = st6; st6 = st4 + st1; st1 = st1 - st4; st4 = st3 + st6; st3 = st3 - st6; st6 = st2 - st1; st1 = st1 + st2; st2 = c_im(input[4]); st2 = st2 + c_im(input[20]); tmp622 = st1; st1 = c_im(input[28]); st1 = st1 + c_im(input[12]); tmp623 = st6; st6 = st2 + st1; st2 = st2 - st1; st1 = st7 + st6; st7 = st7 - st6; st6 = st5 - st2; st5 = st5 + st2; st2 = c_re(input[8]); st2 = st2 - c_re(input[24]); tmp624 = st5; st5 = c_im(input[0]); st5 = st5 - c_im(input[16]); tmp625 = st6; st6 = st2 + st5; st5 = st5 - st2; st2 = c_im(input[4]); st2 = st2 - c_im(input[20]); tmp626 = st3; st3 = c_re(input[4]); st3 = st3 - c_re(input[20]); tmp627 = st1; st1 = st2 - st3; st3 = st3 + st2; st2 = c_re(input[28]); st2 = st2 - c_re(input[12]); tmp628 = st7; st7 = c_im(input[28]); st7 = st7 - c_im(input[12]); tmp629 = st4; st4 = st2 + st7; st2 = st2 - st7; st7 = st1 - st4; st7 = st7 * K707106781[0]; st1 = st1 + st4; st1 = st1 * K707106781[0]; st4 = st2 - st3; st4 = st4 * K707106781[0]; st3 = st3 + st2; st3 = st3 * K707106781[0]; st2 = st8 - st3; tmp630 = st2; st2 = st5 - st1; tmp631 = st2; st2 = tmp621 - st7; tmp632 = st2; st2 = st6 - st4; st7 = tmp621 + st7; st6 = st6 + st4; st8 = st8 + st3; st5 = st5 + st1; st1 = c_re(input[2]); st1 = st1 + c_re(input[18]); st4 = c_re(input[10]); st4 = st4 + c_re(input[26]); st3 = st1 + st4; st1 = st1 - st4; st4 = c_im(input[2]); st4 = st4 + c_im(input[18]); tmp633 = st5; st5 = c_im(input[10]); st5 = st5 + c_im(input[26]); tmp634 = st8; st8 = st4 + st5; st4 = st4 - st5; st5 = st1 + st4; st4 = st4 - st1; st1 = c_re(input[30]); st1 = st1 + c_re(input[14]); tmp635 = st6; st6 = c_re(input[6]); st6 = st6 + c_re(input[22]); tmp636 = st7; st7 = st1 + st6; st1 = st1 - st6; st6 = st3 + st7; st7 = st7 - st3; st3 = tmp629 + st6; st6 = tmp629 - st6; tmp637 = st6; st6 = st7 + tmp628; st7 = tmp628 - st7; tmp638 = st7; st7 = c_im(input[30]); st7 = st7 + c_im(input[14]); tmp639 = st6; st6 = c_im(input[6]); st6 = st6 + c_im(input[22]); tmp640 = st3; st3 = st7 + st6; st7 = st7 - st6; st6 = st8 + st3; st8 = st8 - st3; st3 = st1 - st7; tmp641 = st2; st2 = st3 - st5; st2 = st2 * K707106781[0]; st5 = st5 + st3; st5 = st5 * K707106781[0]; st1 = st1 + st7; st7 = st4 - st1; st7 = st7 * K707106781[0]; st4 = st4 + st1; st4 = st4 * K707106781[0]; st3 = tmp627 - st6; st6 = tmp627 + st6; st1 = tmp626 - st8; st8 = tmp626 + st8; tmp642 = st8; st8 = tmp625 + st7; st7 = tmp625 - st7; tmp643 = st7; st7 = tmp623 - st2; st2 = tmp623 + st2; tmp644 = st2; st2 = tmp624 + st5; st5 = tmp624 - st5; tmp645 = st5; st5 = tmp622 - st4; st4 = tmp622 + st4; tmp646 = st4; st4 = c_re(input[6]); st4 = st4 - c_re(input[22]); tmp647 = st5; st5 = c_im(input[30]); st5 = st5 - c_im(input[14]); tmp648 = st2; st2 = st4 + st5; tmp649 = st7; st7 = st2 * K382683432[0]; st5 = st5 - st4; st2 = st2 * K923879532[0]; st4 = c_re(input[30]); tmp650 = st8; st8 = st5 * K923879532[0]; st4 = st4 - c_re(input[14]); st5 = st5 * K382683432[0]; tmp651 = st1; st1 = c_im(input[6]); st1 = st1 - c_im(input[22]); tmp652 = st6; st6 = st4 - st1; tmp653 = st3; st3 = st6 * K923879532[0]; st4 = st4 + st1; st6 = st6 * K382683432[0]; st7 = st7 + st3; st1 = st4 * K382683432[0]; st6 = st6 - st2; st4 = st4 * K923879532[0]; st8 = st8 + st1; st4 = st4 - st5; st2 = c_re(input[10]); st2 = st2 - c_re(input[26]); st5 = c_im(input[2]); st5 = st5 - c_im(input[18]); st3 = st2 + st5; st1 = st3 * K382683432[0]; st5 = st5 - st2; st3 = st3 * K923879532[0]; st2 = c_re(input[2]); tmp654 = st6; st6 = st5 * K923879532[0]; st2 = st2 - c_re(input[18]); st5 = st5 * K382683432[0]; tmp655 = st7; st7 = c_im(input[10]); st7 = st7 - c_im(input[26]); tmp656 = st4; st4 = st2 - st7; tmp657 = st8; st8 = st4 * K923879532[0]; st2 = st2 + st7; st4 = st4 * K382683432[0]; st1 = st1 - st8; st7 = st2 * K382683432[0]; st3 = st3 + st4; st2 = st2 * K923879532[0]; st6 = st6 - st7; st5 = st5 + st2; st8 = st6 - tmp657; st4 = tmp630 + st8; st8 = tmp630 - st8; st7 = tmp656 - st5; st2 = tmp631 - st7; st7 = tmp631 + st7; tmp658 = st7; st7 = st1 - tmp655; tmp659 = st8; st8 = tmp632 + st7; st7 = tmp632 - st7; tmp660 = st7; st7 = tmp654 - st3; tmp661 = st8; st8 = tmp641 - st7; st7 = tmp641 + st7; st3 = st3 + tmp654; tmp662 = st7; st7 = tmp636 + st3; st3 = tmp636 - st3; st1 = st1 + tmp655; tmp663 = st3; st3 = tmp635 - st1; st1 = tmp635 + st1; st5 = st5 + tmp656; tmp664 = st1; st1 = tmp634 + st5; st5 = tmp634 - st5; st6 = st6 + tmp657; tmp665 = st5; st5 = tmp633 - st6; st6 = tmp633 + st6; tmp666 = st6; st6 = c_re(input[1]); st6 = st6 + c_re(input[17]); tmp667 = st5; st5 = c_re(input[9]); st5 = st5 + c_re(input[25]); tmp668 = st1; st1 = st6 + st5; st6 = st6 - st5; st5 = c_im(input[1]); st5 = st5 + c_im(input[17]); tmp669 = st3; st3 = c_im(input[9]); st3 = st3 + c_im(input[25]); tmp670 = st7; st7 = st5 - st3; st5 = st5 + st3; st3 = c_re(input[5]); st3 = st3 + c_re(input[21]); tmp671 = st8; st8 = c_re(input[29]); st8 = st8 + c_re(input[13]); tmp672 = st2; st2 = st3 + st8; st8 = st8 - st3; st3 = st1 + st2; st1 = st1 - st2; st2 = st8 + st7; tmp673 = st4; st4 = st2 * K382683432[0]; st7 = st7 - st8; st2 = st2 * K923879532[0]; st8 = c_im(input[5]); tmp674 = st3; st3 = st7 * K923879532[0]; st8 = st8 + c_im(input[21]); st7 = st7 * K382683432[0]; tmp675 = st4; st4 = c_im(input[29]); st4 = st4 + c_im(input[13]); tmp676 = st7; st7 = st8 - st4; st8 = st8 + st4; st4 = st5 + st8; st5 = st5 - st8; st8 = st1 + st5; st5 = st5 - st1; st1 = st6 + st7; tmp677 = st8; st8 = st1 * K923879532[0]; st6 = st6 - st7; st1 = st1 * K382683432[0]; st2 = st2 - st1; st7 = st6 * K382683432[0]; st3 = st3 + st7; st6 = st6 * K923879532[0]; st6 = tmp676 - st6; st8 = tmp675 + st8; st1 = c_re(input[31]); st1 = st1 + c_re(input[15]); st7 = c_re(input[7]); st7 = st7 + c_re(input[23]); tmp678 = st8; st8 = st1 + st7; st1 = st1 - st7; st7 = c_im(input[31]); st7 = st7 + c_im(input[15]); tmp679 = st2; st2 = c_im(input[7]); st2 = st2 + c_im(input[23]); tmp680 = st3; st3 = st7 - st2; st7 = st7 + st2; st2 = c_re(input[3]); st2 = st2 + c_re(input[19]); tmp681 = st6; st6 = c_re(input[27]); st6 = st6 + c_re(input[11]); tmp682 = st5; st5 = st2 + st6; st6 = st6 - st2; st2 = st8 + st5; st8 = st8 - st5; st5 = st6 + st3; tmp683 = st4; st4 = st5 * K382683432[0]; st3 = st3 - st6; st5 = st5 * K923879532[0]; st6 = tmp674 + st2; tmp684 = st4; st4 = st3 * K923879532[0]; tmp685 = st5; st5 = tmp640 - st6; st3 = st3 * K382683432[0]; st6 = tmp640 + st6; st2 = st2 - tmp674; c_re(input[16]) = st5; st5 = st2 + tmp653; st2 = tmp653 - st2; c_re(input[0]) = st6; st6 = c_im(input[3]); st6 = st6 + c_im(input[19]); c_im(input[8]) = st5; st5 = c_im(input[27]); st5 = st5 + c_im(input[11]); c_im(input[24]) = st2; st2 = st6 - st5; st6 = st6 + st5; st5 = st7 + st6; st7 = st7 - st6; st6 = st8 - st7; st8 = st8 + st7; st7 = st1 + st2; tmp686 = st4; st4 = st7 * K923879532[0]; st1 = st1 - st2; st7 = st7 * K382683432[0]; st2 = tmp683 + st5; tmp687 = st4; st4 = st1 * K382683432[0]; tmp688 = st7; st7 = tmp652 - st2; st1 = st1 * K923879532[0]; st2 = tmp652 + st2; st5 = tmp683 - st5; c_im(input[16]) = st7; st7 = tmp637 - st5; st5 = tmp637 + st5; c_im(input[0]) = st2; st2 = tmp682 + st8; st2 = st2 * K707106781[0]; c_re(input[24]) = st7; st7 = tmp639 - st2; st2 = tmp639 + st2; st8 = tmp682 - st8; st8 = st8 * K707106781[0]; c_re(input[8]) = st5; st5 = tmp651 - st8; st8 = tmp651 + st8; c_im(input[20]) = st7; st7 = tmp677 + st6; st7 = st7 * K707106781[0]; c_im(input[4]) = st2; st2 = tmp642 - st7; st7 = tmp642 + st7; st6 = st6 - tmp677; st6 = st6 * K707106781[0]; c_re(input[28]) = st5; st5 = tmp638 - st6; st6 = tmp638 + st6; st3 = st3 + st1; st1 = tmp681 - st3; st3 = tmp681 + st3; st4 = st4 - tmp686; c_re(input[12]) = st8; st8 = tmp680 + st4; st4 = st4 - tmp680; c_re(input[20]) = st2; st2 = tmp650 - st8; st8 = tmp650 + st8; c_re(input[4]) = st7; st7 = tmp649 - st4; st4 = tmp649 + st4; c_im(input[28]) = st5; st5 = tmp643 - st1; st1 = tmp643 + st1; c_im(input[12]) = st6; st6 = tmp644 - st3; st3 = tmp644 + st3; c_re(input[22]) = st2; st2 = tmp685 + tmp688; c_re(input[6]) = st8; st8 = tmp679 - st2; st2 = tmp679 + st2; c_im(input[30]) = st7; st7 = tmp687 - tmp684; c_im(input[14]) = st4; st4 = tmp678 + st7; st7 = st7 - tmp678; c_re(input[30]) = st5; st5 = tmp648 - st4; st4 = tmp648 + st4; c_re(input[14]) = st1; st1 = tmp647 - st7; st7 = tmp647 + st7; c_im(input[22]) = st6; st6 = tmp645 - st8; st8 = tmp645 + st8; c_im(input[6]) = st3; st3 = tmp646 - st2; st2 = tmp646 + st2; c_re(input[18]) = st5; st5 = c_re(input[31]); st5 = st5 - c_re(input[15]); c_re(input[2]) = st4; st4 = c_im(input[7]); st4 = st4 - c_im(input[23]); c_im(input[26]) = st1; st1 = st5 - st4; st5 = st5 + st4; c_im(input[10]) = st7; st7 = c_re(input[7]); st7 = st7 - c_re(input[23]); c_re(input[26]) = st6; st6 = c_im(input[31]); st6 = st6 - c_im(input[15]); c_re(input[10]) = st8; st8 = st7 + st6; st6 = st6 - st7; c_im(input[18]) = st3; st3 = c_im(input[3]); st3 = st3 - c_im(input[19]); c_im(input[2]) = st2; st2 = c_re(input[3]); st2 = st2 - c_re(input[19]); st4 = st3 - st2; st2 = st2 + st3; st7 = c_re(input[27]); st7 = st7 - c_re(input[11]); st3 = c_im(input[27]); st3 = st3 - c_im(input[11]); tmp689 = st5; st5 = st7 + st3; st7 = st7 - st3; st3 = st4 - st5; st3 = st3 * K707106781[0]; st4 = st4 + st5; st4 = st4 * K707106781[0]; st5 = st7 - st2; st5 = st5 * K707106781[0]; st2 = st2 + st7; st2 = st2 * K707106781[0]; st7 = st1 - st3; tmp690 = st2; st2 = st7 * K980785280[0]; st1 = st1 + st3; st7 = st7 * K195090322[0]; st3 = st6 - st4; tmp691 = st7; st7 = st3 * K555570233[0]; st6 = st6 + st4; st3 = st3 * K831469612[0]; st4 = st8 - st5; tmp692 = st6; st6 = st4 * K195090322[0]; st8 = st8 + st5; st4 = st4 * K980785280[0]; st5 = tmp689 - tmp690; tmp693 = st4; st4 = st5 * K831469612[0]; tmp694 = st2; st2 = tmp689 + tmp690; st5 = st5 * K555570233[0]; st4 = st4 + st7; st7 = st8 * K831469612[0]; st5 = st5 - st3; st3 = st1 * K555570233[0]; st6 = st6 + tmp694; st1 = st1 * K831469612[0]; tmp695 = st6; st6 = tmp691 - tmp693; st8 = st8 * K555570233[0]; st7 = st7 + st3; st3 = st2 * K195090322[0]; st1 = st1 - st8; st8 = tmp692 * K980785280[0]; st3 = st3 + st8; st2 = st2 * K980785280[0]; st8 = c_re(input[9]); tmp696 = st3; st3 = tmp692 * K195090322[0]; st8 = st8 - c_re(input[25]); st2 = st2 - st3; st3 = c_im(input[1]); st3 = st3 - c_im(input[17]); tmp697 = st2; st2 = st8 + st3; st3 = st3 - st8; st8 = c_re(input[1]); st8 = st8 - c_re(input[17]); tmp698 = st1; st1 = c_im(input[9]); st1 = st1 - c_im(input[25]); tmp699 = st7; st7 = st8 - st1; st8 = st8 + st1; st1 = c_re(input[29]); st1 = st1 - c_re(input[13]); tmp700 = st6; st6 = c_im(input[29]); st6 = st6 - c_im(input[13]); tmp701 = st5; st5 = st1 - st6; st1 = st1 + st6; st6 = c_re(input[5]); st6 = st6 - c_re(input[21]); tmp702 = st4; st4 = c_im(input[5]); st4 = st4 - c_im(input[21]); tmp703 = st8; st8 = st6 + st4; st4 = st4 - st6; st6 = st5 - st8; st6 = st6 * K707106781[0]; st8 = st8 + st5; st8 = st8 * K707106781[0]; st5 = st4 - st1; st5 = st5 * K707106781[0]; st4 = st4 + st1; st4 = st4 * K707106781[0]; st1 = st2 - st6; tmp704 = st8; st8 = st1 * K195090322[0]; st2 = st2 + st6; st1 = st1 * K980785280[0]; st6 = st3 - st4; tmp705 = st1; st1 = st6 * K555570233[0]; st3 = st3 + st4; st6 = st6 * K831469612[0]; st4 = st7 - st5; tmp706 = st8; st8 = st4 * K980785280[0]; st7 = st7 + st5; st4 = st4 * K195090322[0]; st5 = tmp703 - tmp704; tmp707 = st4; st4 = st5 * K831469612[0]; tmp708 = st8; st8 = tmp703 + tmp704; st5 = st5 * K555570233[0]; st1 = st1 - st4; st4 = st2 * K831469612[0]; tmp709 = st4; st4 = st1 - tmp702; tmp710 = st4; st4 = st7 * K555570233[0]; st1 = st1 + tmp702; st2 = st2 * K555570233[0]; st5 = st5 + st6; st7 = st7 * K831469612[0]; st6 = st5 + tmp701; tmp711 = st2; st2 = st3 * K980785280[0]; st5 = tmp701 - st5; tmp712 = st2; st2 = st8 * K195090322[0]; tmp713 = st2; st2 = tmp673 - st6; st8 = st8 * K980785280[0]; st3 = st3 * K195090322[0]; st6 = tmp673 + st6; c_re(input[21]) = st2; st2 = tmp672 - st5; st5 = tmp672 + st5; c_re(input[5]) = st6; st6 = tmp659 - tmp710; c_im(input[29]) = st2; st2 = tmp659 + tmp710; c_im(input[13]) = st5; st5 = tmp658 - st1; st1 = tmp658 + st1; c_re(input[29]) = st6; st6 = tmp706 - tmp708; c_re(input[13]) = st2; st2 = st6 - tmp695; st6 = st6 + tmp695; c_im(input[21]) = st5; st5 = tmp705 + tmp707; c_im(input[5]) = st1; st1 = st5 + tmp700; st5 = tmp700 - st5; tmp714 = st8; st8 = tmp661 - st1; st1 = tmp661 + st1; c_re(input[23]) = st8; st8 = tmp671 - st5; st5 = tmp671 + st5; c_re(input[7]) = st1; st1 = tmp660 - st2; st2 = tmp660 + st2; c_im(input[31]) = st8; st8 = tmp662 - st6; st6 = tmp662 + st6; st4 = tmp709 - st4; c_im(input[15]) = st5; st5 = st4 - tmp699; st4 = st4 + tmp699; st7 = tmp711 + st7; c_re(input[31]) = st1; st1 = st7 + tmp698; st7 = tmp698 - st7; c_re(input[15]) = st2; st2 = tmp670 - st1; st1 = tmp670 + st1; c_im(input[23]) = st8; st8 = tmp669 - st7; st7 = tmp669 + st7; c_im(input[7]) = st6; st6 = tmp663 - st5; st5 = tmp663 + st5; c_re(input[19]) = st2; st2 = tmp664 - st4; st4 = tmp664 + st4; c_re(input[3]) = st1; st1 = tmp712 - tmp713; c_im(input[27]) = st8; st8 = st1 - tmp696; st1 = st1 + tmp696; st3 = tmp714 + st3; c_im(input[11]) = st7; st7 = st3 + tmp697; st3 = tmp697 - st3; c_re(input[27]) = st6; st6 = tmp668 - st7; st7 = tmp668 + st7; c_re(input[11]) = st5; st5 = tmp667 - st3; st3 = tmp667 + st3; c_im(input[19]) = st2; st2 = tmp665 - st8; st8 = tmp665 + st8; c_im(input[3]) = st4; st4 = tmp666 - st1; st1 = tmp666 + st1; c_re(input[17]) = st6; c_re(input[1]) = st7; c_im(input[25]) = st5; c_im(input[9]) = st3; c_re(input[25]) = st2; c_re(input[9]) = st8; c_im(input[17]) = st4; c_im(input[1]) = st1; } void PFFTW(64)(fftw_complex *input) { PFFTW(twiddle_4)(input, PFFTW(W_64), 16); PFFTW(16)(input ); PFFTW(16)(input + 16); PFFTW(16)(input + 32); PFFTW(16)(input + 48); } void PFFTW(128)(fftw_complex *input) { PFFTW(twiddle_4)(input, PFFTW(W_128), 32); PFFTW(32)(input ); PFFTW(32)(input + 32); PFFTW(32)(input + 64); PFFTW(32)(input + 96); } void PFFTW(256)(fftw_complex *input) { PFFTW(twiddle_4)(input, PFFTW(W_256), 64); PFFTW(64)(input ); PFFTW(64)(input + 64); PFFTW(64)(input + 128); PFFTW(64)(input + 192); } void PFFTW(512)(fftw_complex *input) { PFFTW(twiddle_4)(input, PFFTW(W_512), 128); PFFTW(128)(input ); PFFTW(128)(input + 128); PFFTW(128)(input + 256); PFFTW(128)(input + 384); } void PFFTW(2048)(fftw_complex *input) { PFFTW(twiddle_4)(input, PFFTW(W_2048), 512); PFFTW(512)(input ); PFFTW(512)(input + 512); PFFTW(512)(input + 1024); PFFTW(512)(input + 1536); } /////////////////////////////////////////////////////////////// void PFFTWI(16) (fftw_complex * input) { fftw_real tmp333; fftw_real tmp332; fftw_real tmp331; fftw_real tmp330; fftw_real tmp329; fftw_real tmp328; fftw_real tmp327; fftw_real tmp326; fftw_real tmp325; fftw_real tmp324; fftw_real tmp323; fftw_real tmp322; fftw_real tmp321; fftw_real tmp320; fftw_real tmp319; fftw_real tmp318; fftw_real tmp317; fftw_real tmp316; fftw_real tmp315; fftw_real tmp314; fftw_real tmp313; fftw_real tmp312; fftw_real tmp311; fftw_real tmp310; fftw_real tmp309; fftw_real tmp308; fftw_real tmp307; fftw_real tmp306; fftw_real tmp305; fftw_real tmp304; fftw_real tmp303; fftw_real tmp302; fftw_real tmp301; fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(input[4]); st8 = st8 - c_re(input[12]); st7 = c_im(input[0]); st7 = st7 - c_im(input[8]); st6 = c_re(input[0]); st6 = st6 - c_re(input[8]); st5 = st8 + st7; st7 = st7 - st8; st4 = c_im(input[4]); st4 = st4 - c_im(input[12]); st3 = c_re(input[0]); st3 = st3 + c_re(input[8]); st2 = st6 - st4; st6 = st6 + st4; st1 = c_re(input[4]); st1 = st1 + c_re(input[12]); st8 = c_im(input[0]); st8 = st8 + c_im(input[8]); st4 = st3 + st1; st3 = st3 - st1; st1 = c_im(input[4]); st1 = st1 + c_im(input[12]); tmp301 = st6; st6 = c_re(input[2]); st6 = st6 + c_re(input[10]); tmp302 = st7; st7 = st8 + st1; st8 = st8 - st1; st1 = c_re(input[6]); st1 = st1 + c_re(input[14]); tmp303 = st2; st2 = c_im(input[2]); st2 = st2 + c_im(input[10]); tmp304 = st5; st5 = st6 + st1; st6 = st6 - st1; st1 = c_im(input[6]); st1 = st1 + c_im(input[14]); tmp305 = st3; st3 = st4 + st5; st4 = st4 - st5; st5 = st2 + st1; st2 = st2 - st1; st1 = st6 + st8; tmp306 = st1; st1 = st7 - st5; st7 = st7 + st5; st5 = tmp305 - st2; st2 = tmp305 + st2; st8 = st8 - st6; st6 = c_re(input[6]); st6 = st6 - c_re(input[14]); tmp307 = st8; st8 = c_im(input[2]); st8 = st8 - c_im(input[10]); tmp308 = st2; st2 = c_re(input[2]); st2 = st2 - c_re(input[10]); tmp309 = st4; st4 = st6 + st8; st8 = st8 - st6; st6 = c_im(input[6]); st6 = st6 - c_im(input[14]); tmp310 = st5; st5 = c_re(input[1]); st5 = st5 - c_re(input[9]); tmp311 = st7; st7 = st2 - st6; st2 = st2 + st6; st6 = c_im(input[5]); tmp312 = st1; st1 = st4 + st7; st7 = st7 - st4; st4 = st2 - st8; st1 = st1 * K707106781[0]; st8 = st8 + st2; st7 = st7 * K707106781[0]; st6 = st6 - c_im(input[13]); st4 = st4 * K707106781[0]; st2 = tmp304 - st1; st8 = st8 * K707106781[0]; tmp313 = st3; st3 = st5 - st6; st5 = st5 + st6; st6 = tmp303 + st7; tmp314 = st6; st6 = st3 * K923879532[0]; st7 = tmp303 - st7; st3 = st3 * K382683432[0]; st1 = tmp304 + st1; tmp315 = st1; st1 = st5 * K382683432[0]; tmp316 = st7; st7 = tmp302 - st4; st5 = st5 * K923879532[0]; st4 = tmp302 + st4; tmp317 = st4; st4 = tmp301 - st8; st8 = tmp301 + st8; tmp318 = st8; st8 = c_re(input[5]); st8 = st8 - c_re(input[13]); tmp319 = st4; st4 = c_im(input[1]); st4 = st4 - c_im(input[9]); tmp320 = st7; st7 = c_re(input[3]); st7 = st7 - c_re(input[11]); tmp321 = st2; st2 = st8 + st4; st4 = st4 - st8; st8 = c_im(input[7]); tmp322 = st5; st5 = st2 * K382683432[0]; st8 = st8 - c_im(input[15]); st2 = st2 * K923879532[0]; st6 = st6 - st5; st5 = st4 * K923879532[0]; st2 = st2 + st3; st4 = st4 * K382683432[0]; st1 = st1 - st5; st3 = st7 - st8; st4 = st4 + tmp322; st7 = st7 + st8; st8 = st3 * K382683432[0]; st5 = c_re(input[7]); st3 = st3 * K923879532[0]; st5 = st5 - c_re(input[15]); tmp323 = st4; st4 = st7 * K923879532[0]; tmp324 = st1; st1 = c_im(input[3]); st7 = st7 * K382683432[0]; st1 = st1 - c_im(input[11]); tmp325 = st2; st2 = c_re(input[1]); st2 = st2 + c_re(input[9]); tmp326 = st6; st6 = st5 + st1; st1 = st1 - st5; st5 = c_re(input[5]); tmp327 = st7; st7 = st6 * K923879532[0]; st5 = st5 + c_re(input[13]); st6 = st6 * K382683432[0]; st8 = st8 - st7; st7 = st1 * K382683432[0]; st6 = st6 + st3; st1 = st1 * K923879532[0]; st7 = st7 - st4; st3 = st2 + st5; st1 = st1 + tmp327; st2 = st2 - st5; st4 = tmp326 - st8; st8 = tmp326 + st8; st5 = tmp325 - st6; tmp328 = st2; st2 = tmp321 - st4; st4 = tmp321 + st4; tmp329 = st3; st3 = tmp314 - st8; st8 = tmp314 + st8; tmp330 = st2; st2 = tmp316 - st5; st5 = tmp316 + st5; c_re(input[9]) = st3; c_re(input[1]) = st8; c_re(input[5]) = st2; c_re(input[13]) = st5; st6 = tmp325 + st6; st3 = tmp324 - st7; st8 = tmp323 - st1; st2 = tmp315 - st6; st6 = tmp315 + st6; st5 = tmp320 - st3; st3 = tmp320 + st3; tmp331 = st5; st5 = tmp317 - st8; st8 = tmp317 + st8; st7 = tmp324 + st7; st1 = tmp323 + st1; tmp332 = st3; st3 = c_im(input[1]); c_im(input[1]) = st6; st3 = st3 + c_im(input[9]); c_im(input[9]) = st2; st2 = tmp319 - st7; st7 = tmp319 + st7; st6 = tmp318 - st1; st1 = tmp318 + st1; tmp333 = st5; st5 = c_im(input[5]); c_im(input[5]) = st4; st5 = st5 + c_im(input[13]); c_im(input[13]) = tmp330; st4 = st3 - st5; st3 = st3 + st5; st5 = c_re(input[3]); c_re(input[3]) = st7; st5 = st5 + c_re(input[11]); c_re(input[11]) = st2; st2 = c_re(input[7]); c_re(input[7]) = st6; st2 = st2 + c_re(input[15]); c_re(input[15]) = st1; st7 = st5 + st2; st5 = st5 - st2; st6 = c_im(input[3]); c_im(input[3]) = st8; st6 = st6 + c_im(input[11]); c_im(input[11]) = tmp333; st8 = tmp329 + st7; st7 = tmp329 - st7; st1 = st5 + st4; st4 = st4 - st5; st2 = tmp313 - st8; st8 = tmp313 + st8; st5 = st7 + tmp312; st7 = tmp312 - st7; c_re(input[8]) = st2; c_re(input[0]) = st8; c_im(input[4]) = st5; c_im(input[12]) = st7; st2 = c_im(input[7]); c_im(input[7]) = tmp332; st2 = st2 + c_im(input[15]); c_im(input[15]) = tmp331; st8 = st6 - st2; st6 = st6 + st2; st5 = tmp328 - st8; st8 = tmp328 + st8; st7 = st3 - st6; st2 = st5 - st1; st1 = st1 + st5; st3 = st3 + st6; st2 = st2 * K707106781[0]; st6 = st4 + st8; st1 = st1 * K707106781[0]; st8 = st8 - st4; st6 = st6 * K707106781[0]; st4 = tmp311 + st3; st8 = st8 * K707106781[0]; st3 = tmp311 - st3; st5 = tmp310 - st2; c_im(input[0]) = st4; c_im(input[8]) = st3; c_re(input[10]) = st5; st2 = tmp310 + st2; st4 = tmp309 + st7; st7 = tmp309 - st7; st3 = tmp308 - st6; c_re(input[2]) = st2; c_re(input[12]) = st4; c_re(input[4]) = st7; c_re(input[6]) = st3; st6 = tmp308 + st6; st5 = tmp307 - st8; st8 = tmp307 + st8; st2 = tmp306 - st1; c_re(input[14]) = st6; c_im(input[14]) = st5; c_im(input[6]) = st8; c_im(input[10]) = st2; st1 = tmp306 + st1; c_im(input[2]) = st1; } void PFFTWI(32) (fftw_complex * input) { fftw_real tmp714; fftw_real tmp713; fftw_real tmp712; fftw_real tmp711; fftw_real tmp710; fftw_real tmp709; fftw_real tmp708; fftw_real tmp707; fftw_real tmp706; fftw_real tmp705; fftw_real tmp704; fftw_real tmp703; fftw_real tmp702; fftw_real tmp701; fftw_real tmp700; fftw_real tmp699; fftw_real tmp698; fftw_real tmp697; fftw_real tmp696; fftw_real tmp695; fftw_real tmp694; fftw_real tmp693; fftw_real tmp692; fftw_real tmp691; fftw_real tmp690; fftw_real tmp689; fftw_real tmp688; fftw_real tmp687; fftw_real tmp686; fftw_real tmp685; fftw_real tmp684; fftw_real tmp683; fftw_real tmp682; fftw_real tmp681; fftw_real tmp680; fftw_real tmp679; fftw_real tmp678; fftw_real tmp677; fftw_real tmp676; fftw_real tmp675; fftw_real tmp674; fftw_real tmp673; fftw_real tmp672; fftw_real tmp671; fftw_real tmp670; fftw_real tmp669; fftw_real tmp668; fftw_real tmp667; fftw_real tmp666; fftw_real tmp665; fftw_real tmp664; fftw_real tmp663; fftw_real tmp662; fftw_real tmp661; fftw_real tmp660; fftw_real tmp659; fftw_real tmp658; fftw_real tmp657; fftw_real tmp656; fftw_real tmp655; fftw_real tmp654; fftw_real tmp653; fftw_real tmp652; fftw_real tmp651; fftw_real tmp650; fftw_real tmp649; fftw_real tmp648; fftw_real tmp647; fftw_real tmp646; fftw_real tmp645; fftw_real tmp644; fftw_real tmp643; fftw_real tmp642; fftw_real tmp641; fftw_real tmp640; fftw_real tmp639; fftw_real tmp638; fftw_real tmp637; fftw_real tmp636; fftw_real tmp635; fftw_real tmp634; fftw_real tmp633; fftw_real tmp632; fftw_real tmp631; fftw_real tmp630; fftw_real tmp629; fftw_real tmp628; fftw_real tmp627; fftw_real tmp626; fftw_real tmp625; fftw_real tmp624; fftw_real tmp623; fftw_real tmp622; fftw_real tmp621; fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(input[8]); st8 = st8 - c_re(input[24]); st7 = c_im(input[0]); st7 = st7 - c_im(input[16]); st6 = st8 + st7; st7 = st7 - st8; st5 = c_re(input[0]); st5 = st5 + c_re(input[16]); st4 = c_re(input[8]); st4 = st4 + c_re(input[24]); st3 = st5 + st4; st5 = st5 - st4; st2 = c_im(input[0]); st2 = st2 + c_im(input[16]); st1 = c_im(input[8]); st1 = st1 + c_im(input[24]); st8 = st2 + st1; st2 = st2 - st1; st4 = c_re(input[4]); st4 = st4 + c_re(input[20]); st1 = c_re(input[28]); st1 = st1 + c_re(input[12]); tmp621 = st6; st6 = st4 + st1; st4 = st4 - st1; st1 = st3 + st6; st3 = st3 - st6; st6 = st2 - st4; st4 = st4 + st2; st2 = c_im(input[4]); st2 = st2 + c_im(input[20]); tmp622 = st4; st4 = c_im(input[28]); st4 = st4 + c_im(input[12]); tmp623 = st6; st6 = st2 + st4; st4 = st4 - st2; st2 = st8 + st6; st8 = st8 - st6; st6 = st5 - st4; st5 = st5 + st4; st4 = c_re(input[0]); st4 = st4 - c_re(input[16]); tmp624 = st5; st5 = c_im(input[8]); st5 = st5 - c_im(input[24]); tmp625 = st6; st6 = st4 - st5; st4 = st4 + st5; st5 = c_re(input[4]); st5 = st5 - c_re(input[20]); tmp626 = st3; st3 = c_im(input[4]); st3 = st3 - c_im(input[20]); tmp627 = st2; st2 = st5 + st3; st5 = st5 - st3; st3 = c_im(input[28]); st3 = st3 - c_im(input[12]); tmp628 = st8; st8 = c_re(input[28]); st8 = st8 - c_re(input[12]); tmp629 = st1; st1 = st3 - st8; st8 = st8 + st3; st3 = st2 + st1; st3 = st3 * K707106781[0]; st1 = st1 - st2; st1 = st1 * K707106781[0]; st2 = st5 + st8; st2 = st2 * K707106781[0]; st5 = st5 - st8; st5 = st5 * K707106781[0]; st8 = st7 - st5; tmp630 = st8; st8 = st4 - st1; tmp631 = st8; st8 = tmp621 - st3; tmp632 = st8; st8 = st6 - st2; st3 = tmp621 + st3; st6 = st6 + st2; st7 = st7 + st5; st4 = st4 + st1; st1 = c_re(input[2]); st1 = st1 + c_re(input[18]); st2 = c_re(input[10]); st2 = st2 + c_re(input[26]); st5 = st1 + st2; st1 = st1 - st2; st2 = c_im(input[2]); st2 = st2 + c_im(input[18]); tmp633 = st4; st4 = c_im(input[10]); st4 = st4 + c_im(input[26]); tmp634 = st7; st7 = st2 + st4; st2 = st2 - st4; st4 = st1 + st2; st1 = st1 - st2; st2 = c_re(input[30]); st2 = st2 + c_re(input[14]); tmp635 = st6; st6 = c_re(input[6]); st6 = st6 + c_re(input[22]); tmp636 = st3; st3 = st2 + st6; st2 = st2 - st6; st6 = st5 + st3; st5 = st5 - st3; st3 = tmp629 + st6; st6 = tmp629 - st6; tmp637 = st6; st6 = tmp628 - st5; st5 = st5 + tmp628; tmp638 = st5; st5 = c_im(input[30]); st5 = st5 + c_im(input[14]); tmp639 = st6; st6 = c_im(input[6]); st6 = st6 + c_im(input[22]); tmp640 = st3; st3 = st5 + st6; st5 = st5 - st6; st6 = st7 + st3; st3 = st3 - st7; st7 = st5 - st2; tmp641 = st8; st8 = st7 - st4; st8 = st8 * K707106781[0]; st4 = st4 + st7; st4 = st4 * K707106781[0]; st2 = st2 + st5; st5 = st1 - st2; st5 = st5 * K707106781[0]; st1 = st1 + st2; st1 = st1 * K707106781[0]; st7 = tmp627 - st6; st6 = tmp627 + st6; st2 = tmp626 + st3; st3 = tmp626 - st3; tmp642 = st3; st3 = tmp623 + st5; st5 = tmp623 - st5; tmp643 = st5; st5 = tmp625 - st8; st8 = tmp625 + st8; tmp644 = st8; st8 = tmp622 + st4; st4 = tmp622 - st4; tmp645 = st4; st4 = tmp624 - st1; st1 = tmp624 + st1; tmp646 = st1; st1 = c_re(input[6]); st1 = st1 - c_re(input[22]); tmp647 = st4; st4 = c_im(input[30]); st4 = st4 - c_im(input[14]); tmp648 = st8; st8 = st1 + st4; tmp649 = st5; st5 = st8 * K382683432[0]; st4 = st4 - st1; st8 = st8 * K923879532[0]; st1 = c_re(input[30]); tmp650 = st3; st3 = st4 * K923879532[0]; st1 = st1 - c_re(input[14]); st4 = st4 * K382683432[0]; tmp651 = st2; st2 = c_im(input[6]); st2 = st2 - c_im(input[22]); tmp652 = st6; st6 = st1 - st2; tmp653 = st7; st7 = st6 * K923879532[0]; st1 = st1 + st2; st6 = st6 * K382683432[0]; st5 = st5 + st7; st2 = st1 * K382683432[0]; st8 = st8 - st6; st1 = st1 * K923879532[0]; st3 = st3 + st2; st4 = st4 - st1; st7 = c_re(input[2]); st7 = st7 - c_re(input[18]); st6 = c_im(input[10]); st6 = st6 - c_im(input[26]); st2 = st7 - st6; st1 = st2 * K923879532[0]; st7 = st7 + st6; st2 = st2 * K382683432[0]; st6 = c_re(input[10]); tmp654 = st8; st8 = st7 * K382683432[0]; st6 = st6 - c_re(input[26]); st7 = st7 * K923879532[0]; tmp655 = st5; st5 = c_im(input[2]); st5 = st5 - c_im(input[18]); tmp656 = st4; st4 = st6 + st5; tmp657 = st3; st3 = st4 * K382683432[0]; st5 = st5 - st6; st4 = st4 * K923879532[0]; st1 = st1 - st3; st6 = st5 * K923879532[0]; st4 = st4 + st2; st5 = st5 * K382683432[0]; st8 = st8 - st6; st5 = st5 + st7; st2 = st8 - tmp657; st7 = tmp630 + st2; st2 = tmp630 - st2; st3 = tmp656 - st5; st6 = tmp631 - st3; st3 = tmp631 + st3; tmp658 = st3; st3 = st1 - tmp655; tmp659 = st2; st2 = tmp632 - st3; st3 = tmp632 + st3; tmp660 = st3; st3 = tmp654 - st4; tmp661 = st2; st2 = tmp641 + st3; st3 = tmp641 - st3; st4 = st4 + tmp654; tmp662 = st3; st3 = tmp636 - st4; st4 = tmp636 + st4; st1 = st1 + tmp655; tmp663 = st4; st4 = tmp635 + st1; st1 = tmp635 - st1; st5 = st5 + tmp656; tmp664 = st1; st1 = tmp634 + st5; st5 = tmp634 - st5; st8 = st8 + tmp657; tmp665 = st5; st5 = tmp633 - st8; st8 = tmp633 + st8; tmp666 = st8; st8 = c_re(input[1]); st8 = st8 + c_re(input[17]); tmp667 = st5; st5 = c_re(input[9]); st5 = st5 + c_re(input[25]); tmp668 = st1; st1 = st8 + st5; st8 = st8 - st5; st5 = c_im(input[1]); st5 = st5 + c_im(input[17]); tmp669 = st4; st4 = c_im(input[9]); st4 = st4 + c_im(input[25]); tmp670 = st3; st3 = st5 + st4; st5 = st5 - st4; st4 = c_re(input[5]); st4 = st4 + c_re(input[21]); tmp671 = st2; st2 = c_re(input[29]); st2 = st2 + c_re(input[13]); tmp672 = st6; st6 = st4 + st2; st4 = st4 - st2; st2 = st1 + st6; st1 = st1 - st6; st6 = st4 + st5; tmp673 = st7; st7 = st6 * K923879532[0]; st5 = st5 - st4; st6 = st6 * K382683432[0]; st4 = c_im(input[5]); tmp674 = st2; st2 = st5 * K382683432[0]; st4 = st4 + c_im(input[21]); st5 = st5 * K923879532[0]; tmp675 = st7; st7 = c_im(input[29]); st7 = st7 + c_im(input[13]); tmp676 = st5; st5 = st4 + st7; st7 = st7 - st4; st4 = st3 + st5; st3 = st3 - st5; st5 = st1 - st3; st1 = st1 + st3; st3 = st8 + st7; tmp677 = st1; st1 = st3 * K382683432[0]; st8 = st8 - st7; st3 = st3 * K923879532[0]; st3 = st3 - st6; st6 = st8 * K923879532[0]; st2 = st2 + st6; st8 = st8 * K382683432[0]; st8 = st8 - tmp676; st1 = tmp675 + st1; st7 = c_re(input[31]); st7 = st7 + c_re(input[15]); st6 = c_re(input[7]); st6 = st6 + c_re(input[23]); tmp678 = st1; st1 = st7 + st6; st7 = st7 - st6; st6 = c_im(input[31]); st6 = st6 + c_im(input[15]); tmp679 = st3; st3 = c_im(input[7]); st3 = st3 + c_im(input[23]); tmp680 = st2; st2 = st6 + st3; st6 = st6 - st3; st3 = c_re(input[3]); st3 = st3 + c_re(input[19]); tmp681 = st8; st8 = c_re(input[27]); st8 = st8 + c_re(input[11]); tmp682 = st5; st5 = st3 + st8; st3 = st3 - st8; st8 = st1 + st5; st1 = st1 - st5; st5 = st3 + st6; tmp683 = st4; st4 = st5 * K923879532[0]; st6 = st6 - st3; st5 = st5 * K382683432[0]; st3 = tmp674 + st8; tmp684 = st4; st4 = st6 * K382683432[0]; tmp685 = st5; st5 = tmp640 - st3; st6 = st6 * K923879532[0]; st3 = tmp640 + st3; st8 = tmp674 - st8; c_re(input[16]) = st5; st5 = st8 + tmp653; st8 = tmp653 - st8; c_re(input[0]) = st3; st3 = c_im(input[3]); st3 = st3 + c_im(input[19]); c_im(input[8]) = st5; st5 = c_im(input[27]); st5 = st5 + c_im(input[11]); c_im(input[24]) = st8; st8 = st3 + st5; st5 = st5 - st3; st3 = st2 + st8; st2 = st2 - st8; st8 = st1 + st2; st2 = st2 - st1; st1 = st7 + st5; tmp686 = st4; st4 = st1 * K382683432[0]; st7 = st7 - st5; st1 = st1 * K923879532[0]; st5 = tmp683 + st3; tmp687 = st4; st4 = st7 * K923879532[0]; tmp688 = st1; st1 = tmp652 - st5; st7 = st7 * K382683432[0]; st5 = tmp652 + st5; st3 = st3 - tmp683; c_im(input[16]) = st1; st1 = tmp637 - st3; st3 = tmp637 + st3; c_im(input[0]) = st5; st5 = tmp682 - st8; st5 = st5 * K707106781[0]; c_re(input[24]) = st1; st1 = tmp639 - st5; st5 = tmp639 + st5; st8 = tmp682 + st8; st8 = st8 * K707106781[0]; c_re(input[8]) = st3; st3 = tmp651 - st8; st8 = tmp651 + st8; c_im(input[28]) = st1; st1 = st2 - tmp677; st1 = st1 * K707106781[0]; c_im(input[12]) = st5; st5 = tmp642 - st1; st1 = tmp642 + st1; st2 = tmp677 + st2; st2 = st2 * K707106781[0]; c_re(input[20]) = st3; st3 = tmp638 - st2; st2 = tmp638 + st2; st6 = st6 + st7; st7 = tmp681 - st6; st6 = tmp681 + st6; st4 = tmp686 - st4; c_re(input[4]) = st8; st8 = tmp680 + st4; st4 = st4 - tmp680; c_re(input[28]) = st5; st5 = tmp650 - st8; st8 = tmp650 + st8; c_re(input[12]) = st1; st1 = tmp649 - st4; st4 = tmp649 + st4; c_im(input[20]) = st3; st3 = tmp643 - st7; st7 = tmp643 + st7; c_im(input[4]) = st2; st2 = tmp644 - st6; st6 = tmp644 + st6; c_im(input[22]) = st5; st5 = tmp685 + tmp688; c_im(input[6]) = st8; st8 = tmp679 - st5; st5 = tmp679 + st5; c_re(input[30]) = st1; st1 = tmp684 - tmp687; c_re(input[14]) = st4; st4 = tmp678 + st1; st1 = st1 - tmp678; c_im(input[30]) = st3; st3 = tmp648 - st4; st4 = tmp648 + st4; c_im(input[14]) = st7; st7 = tmp647 - st1; st1 = tmp647 + st1; c_re(input[22]) = st2; st2 = tmp645 - st8; st8 = tmp645 + st8; c_re(input[6]) = st6; st6 = tmp646 - st5; st5 = tmp646 + st5; c_im(input[18]) = st3; st3 = c_re(input[31]); st3 = st3 - c_re(input[15]); c_im(input[2]) = st4; st4 = c_im(input[7]); st4 = st4 - c_im(input[23]); c_re(input[26]) = st7; st7 = st3 - st4; st3 = st3 + st4; c_re(input[10]) = st1; st1 = c_re(input[7]); st1 = st1 - c_re(input[23]); c_im(input[26]) = st2; st2 = c_im(input[31]); st2 = st2 - c_im(input[15]); c_im(input[10]) = st8; st8 = st1 + st2; st2 = st2 - st1; c_re(input[18]) = st6; st6 = c_re(input[3]); st6 = st6 - c_re(input[19]); c_re(input[2]) = st5; st5 = c_im(input[3]); st5 = st5 - c_im(input[19]); st4 = st6 - st5; st6 = st6 + st5; st1 = c_re(input[27]); st1 = st1 - c_re(input[11]); st5 = c_im(input[27]); st5 = st5 - c_im(input[11]); tmp689 = st2; st2 = st1 + st5; st5 = st5 - st1; st1 = st4 + st2; st1 = st1 * K707106781[0]; st4 = st4 - st2; st4 = st4 * K707106781[0]; st2 = st6 + st5; st2 = st2 * K707106781[0]; st5 = st5 - st6; st5 = st5 * K707106781[0]; st6 = st7 - st1; tmp690 = st4; st4 = st6 * K831469612[0]; st7 = st7 + st1; st6 = st6 * K555570233[0]; st1 = st3 - st5; tmp691 = st6; st6 = st1 * K195090322[0]; st3 = st3 + st5; st1 = st1 * K980785280[0]; st5 = st8 - st2; tmp692 = st3; st3 = st5 * K555570233[0]; st8 = st8 + st2; st5 = st5 * K831469612[0]; st2 = tmp689 - tmp690; tmp693 = st5; st5 = st2 * K980785280[0]; tmp694 = st4; st4 = tmp689 + tmp690; st2 = st2 * K195090322[0]; st5 = st5 + st6; st6 = st8 * K980785280[0]; st2 = st2 - st1; st1 = st7 * K195090322[0]; st3 = st3 - tmp694; st7 = st7 * K980785280[0]; tmp695 = st3; st3 = tmp691 + tmp693; st8 = st8 * K195090322[0]; st6 = st6 - st1; st1 = st4 * K555570233[0]; st7 = st7 + st8; st8 = tmp692 * K831469612[0]; st1 = st1 + st8; st4 = st4 * K831469612[0]; st8 = c_re(input[1]); tmp696 = st1; st1 = tmp692 * K555570233[0]; st8 = st8 - c_re(input[17]); st4 = st4 - st1; st1 = c_im(input[9]); st1 = st1 - c_im(input[25]); tmp697 = st4; st4 = st8 - st1; st8 = st8 + st1; st1 = c_re(input[9]); st1 = st1 - c_re(input[25]); tmp698 = st7; st7 = c_im(input[1]); st7 = st7 - c_im(input[17]); tmp699 = st6; st6 = st1 + st7; st7 = st7 - st1; st1 = c_re(input[5]); st1 = st1 - c_re(input[21]); tmp700 = st3; st3 = c_im(input[5]); st3 = st3 - c_im(input[21]); tmp701 = st2; st2 = st1 - st3; st1 = st1 + st3; st3 = c_re(input[29]); st3 = st3 - c_re(input[13]); tmp702 = st5; st5 = c_im(input[29]); st5 = st5 - c_im(input[13]); tmp703 = st7; st7 = st3 + st5; st5 = st5 - st3; st3 = st2 + st7; st3 = st3 * K707106781[0]; st2 = st2 - st7; st2 = st2 * K707106781[0]; st7 = st1 + st5; st7 = st7 * K707106781[0]; st5 = st5 - st1; st5 = st5 * K707106781[0]; st1 = st4 - st3; tmp704 = st2; st2 = st1 * K831469612[0]; st4 = st4 + st3; st1 = st1 * K555570233[0]; st3 = st8 - st5; tmp705 = st1; st1 = st3 * K195090322[0]; st8 = st8 + st5; st3 = st3 * K980785280[0]; st5 = st6 - st7; tmp706 = st2; st2 = st5 * K555570233[0]; st6 = st6 + st7; st5 = st5 * K831469612[0]; st7 = tmp703 - tmp704; tmp707 = st5; st5 = st7 * K980785280[0]; tmp708 = st2; st2 = tmp703 + tmp704; st7 = st7 * K195090322[0]; st1 = st1 - st5; st5 = st4 * K195090322[0]; tmp709 = st5; st5 = st1 - tmp702; tmp710 = st5; st5 = st6 * K980785280[0]; st1 = st1 + tmp702; st4 = st4 * K980785280[0]; st7 = st7 + st3; st6 = st6 * K195090322[0]; st3 = st7 + tmp701; tmp711 = st4; st4 = st8 * K831469612[0]; st7 = tmp701 - st7; tmp712 = st4; st4 = st2 * K555570233[0]; tmp713 = st4; st4 = tmp673 - st3; st2 = st2 * K831469612[0]; st8 = st8 * K555570233[0]; st3 = tmp673 + st3; c_im(input[23]) = st4; st4 = tmp672 - st7; st7 = tmp672 + st7; c_im(input[7]) = st3; st3 = tmp659 - tmp710; c_re(input[31]) = st4; st4 = tmp659 + tmp710; c_re(input[15]) = st7; st7 = tmp658 - st1; st1 = tmp658 + st1; c_im(input[31]) = st3; st3 = tmp706 + tmp708; c_im(input[15]) = st4; st4 = st3 + tmp695; st3 = tmp695 - st3; c_re(input[23]) = st7; st7 = tmp705 - tmp707; c_re(input[7]) = st1; st1 = st7 - tmp700; st7 = st7 + tmp700; tmp714 = st2; st2 = tmp661 - st1; st1 = tmp661 + st1; c_im(input[29]) = st2; st2 = tmp671 - st7; st7 = tmp671 + st7; c_im(input[13]) = st1; st1 = tmp660 - st4; st4 = tmp660 + st4; c_re(input[21]) = st2; st2 = tmp662 - st3; st3 = tmp662 + st3; st5 = tmp709 + st5; c_re(input[5]) = st7; st7 = st5 + tmp699; st5 = tmp699 - st5; st6 = tmp711 - st6; c_im(input[21]) = st1; st1 = st6 - tmp698; st6 = st6 + tmp698; c_im(input[5]) = st4; st4 = tmp670 - st1; st1 = tmp670 + st1; c_re(input[29]) = st2; st2 = tmp669 - st6; st6 = tmp669 + st6; c_re(input[13]) = st3; st3 = tmp663 - st7; st7 = tmp663 + st7; c_im(input[25]) = st4; st4 = tmp664 - st5; st5 = tmp664 + st5; c_im(input[9]) = st1; st1 = tmp712 - tmp713; c_re(input[17]) = st2; st2 = st1 - tmp696; st1 = st1 + tmp696; st8 = tmp714 + st8; c_re(input[1]) = st6; st6 = st8 + tmp697; st8 = tmp697 - st8; c_im(input[17]) = st3; st3 = tmp668 - st6; st6 = tmp668 + st6; c_im(input[1]) = st7; st7 = tmp667 - st8; st8 = tmp667 + st8; c_re(input[25]) = st4; st4 = tmp665 - st2; st2 = tmp665 + st2; c_re(input[9]) = st5; st5 = tmp666 - st1; st1 = tmp666 + st1; c_im(input[19]) = st3; c_im(input[3]) = st6; c_re(input[27]) = st7; c_re(input[11]) = st8; c_im(input[27]) = st4; c_im(input[11]) = st2; c_re(input[19]) = st5; c_re(input[3]) = st1; } void PFFTWI(64)(fftw_complex *input) { PFFTWI(16)(input ); PFFTWI(16)(input + 16); PFFTWI(16)(input + 32); PFFTWI(16)(input + 48); PFFTWI(twiddle_4)(input, PFFTW(W_64), 16); } void PFFTWI(128)(fftw_complex *input) { PFFTWI(32)(input ); PFFTWI(32)(input + 32); PFFTWI(32)(input + 64); PFFTWI(32)(input + 96); PFFTWI(twiddle_4)(input, PFFTW(W_128), 32); } void PFFTWI(256)(fftw_complex *input) { PFFTWI(64)(input ); PFFTWI(64)(input + 64); PFFTWI(64)(input + 128); PFFTWI(64)(input + 192); PFFTWI(twiddle_4)(input, PFFTW(W_256), 64); } void PFFTWI(512)(fftw_complex *input) { PFFTWI(128)(input ); PFFTWI(128)(input + 128); PFFTWI(128)(input + 256); PFFTWI(128)(input + 384); PFFTWI(twiddle_4)(input, PFFTW(W_512), 128); } void PFFTWI(2048)(fftw_complex *input) { PFFTWI(512)(input ); PFFTWI(512)(input + 512); PFFTWI(512)(input + 1024); PFFTWI(512)(input + 1536); PFFTWI(twiddle_4)(input, PFFTW(W_2048), 512); } /////////////////////////////////////////////////////////////////////////// void PFFTW(twiddle_4) (fftw_complex * A, const fftw_complex * W, int iostride) { int i; fftw_complex *inout; inout = A; { fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(inout[0]); st8 = st8 + c_re(inout[2 * iostride]); st7 = c_re(inout[iostride]); st7 = st7 + c_re(inout[3 * iostride]); st6 = st8 - st7; st8 = st8 + st7; st5 = c_im(inout[0]); st5 = st5 + c_im(inout[2 * iostride]); st4 = c_im(inout[iostride]); st4 = st4 + c_im(inout[3 * iostride]); st3 = st5 - st4; st5 = st5 + st4; st2 = c_im(inout[0]); st2 = st2 - c_im(inout[2 * iostride]); st1 = c_re(inout[iostride]); st1 = st1 - c_re(inout[3 * iostride]); st7 = st2 - st1; st1 = st1 + st2; st4 = c_re(inout[0]); st4 = st4 - c_re(inout[2 * iostride]); c_re(inout[2 * iostride]) = st6; st6 = c_im(inout[iostride]); st6 = st6 - c_im(inout[3 * iostride]); c_re(inout[0]) = st8; st8 = st4 - st6; st4 = st4 + st6; c_im(inout[0]) = st5; c_im(inout[2 * iostride]) = st3; c_im(inout[iostride]) = st7; c_im(inout[3 * iostride]) = st1; c_re(inout[3 * iostride]) = st8; c_re(inout[iostride]) = st4; } inout = inout + 1; i = iostride - 1; do { { fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(inout[0]); st8 = st8 + c_re(inout[2 * iostride]); st7 = c_re(inout[iostride]); st7 = st7 + c_re(inout[3 * iostride]); st6 = st8 - st7; st5 = st6 * c_im(W[1]); st8 = st8 + st7; st6 = st6 * c_re(W[1]); st4 = c_im(inout[0]); st4 = st4 + c_im(inout[2 * iostride]); st3 = c_im(inout[iostride]); st3 = st3 + c_im(inout[3 * iostride]); st2 = st4 - st3; st1 = st2 * c_im(W[1]); st4 = st4 + st3; st2 = st2 * c_re(W[1]); st2 = st2 - st5; st6 = st6 + st1; st7 = c_re(inout[0]); st7 = st7 - c_re(inout[2 * iostride]); st5 = c_im(inout[iostride]); st5 = st5 - c_im(inout[3 * iostride]); c_re(inout[0]) = st8; st8 = st7 - st5; st3 = st8 * c_re(W[0]); st7 = st7 + st5; st8 = st8 * c_im(W[0]); st1 = c_re(inout[iostride]); c_re(inout[2 * iostride]) = st6; st6 = st7 * c_im(W[0]); st1 = st1 - c_re(inout[3 * iostride]); st7 = st7 * c_re(W[0]); st5 = c_im(inout[0]); st5 = st5 - c_im(inout[2 * iostride]); c_im(inout[0]) = st4; st4 = st1 + st5; c_im(inout[2 * iostride]) = st2; st2 = st4 * c_im(W[0]); st5 = st5 - st1; st4 = st4 * c_re(W[0]); st3 = st3 - st2; st1 = st5 * c_re(W[0]); st5 = st5 * c_im(W[0]); st4 = st4 + st8; st5 = st5 + st7; st1 = st1 - st6; c_re(inout[3 * iostride]) = st3; c_im(inout[3 * iostride]) = st4; c_re(inout[iostride]) = st5; c_im(inout[iostride]) = st1; } i = i - 1, inout = inout + 1, W = W + 2; } while (i > 0); } void PFFTWI(twiddle_4) (fftw_complex * A, const fftw_complex * W, int iostride) { int i; fftw_complex *inout; inout = A; { fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(inout[0]); st8 = st8 + c_re(inout[2 * iostride]); st7 = c_re(inout[iostride]); st7 = st7 + c_re(inout[3 * iostride]); st6 = st8 - st7; st8 = st8 + st7; st5 = c_im(inout[0]); st5 = st5 + c_im(inout[2 * iostride]); st4 = c_im(inout[iostride]); st4 = st4 + c_im(inout[3 * iostride]); st3 = st5 - st4; st5 = st5 + st4; st2 = c_re(inout[iostride]); st2 = st2 - c_re(inout[3 * iostride]); st1 = c_im(inout[0]); st1 = st1 - c_im(inout[2 * iostride]); st7 = st2 + st1; st1 = st1 - st2; st4 = c_re(inout[0]); st4 = st4 - c_re(inout[2 * iostride]); c_re(inout[2 * iostride]) = st6; st6 = c_im(inout[iostride]); st6 = st6 - c_im(inout[3 * iostride]); c_re(inout[0]) = st8; st8 = st4 - st6; st4 = st4 + st6; c_im(inout[0]) = st5; c_im(inout[2 * iostride]) = st3; c_im(inout[iostride]) = st7; c_im(inout[3 * iostride]) = st1; c_re(inout[iostride]) = st8; c_re(inout[3 * iostride]) = st4; } inout = inout + 1; i = iostride - 1; do { { fftw_real st1; fftw_real st2; fftw_real st3; fftw_real st4; fftw_real st5; fftw_real st6; fftw_real st7; fftw_real st8; st8 = c_re(inout[2 * iostride]); st8 = st8 * c_re(W[1]); st7 = c_im(inout[2 * iostride]); st7 = st7 * c_im(W[1]); st8 = st8 - st7; st6 = st8 + c_re(inout[0]); st8 = c_re(inout[0]) - st8; st5 = c_re(inout[2 * iostride]); st5 = st5 * c_im(W[1]); st4 = c_im(inout[2 * iostride]); st4 = st4 * c_re(W[1]); st5 = st5 + st4; st3 = st5 + c_im(inout[0]); st5 = c_im(inout[0]) - st5; st2 = c_re(inout[iostride]); st2 = st2 * c_re(W[0]); st1 = c_im(inout[iostride]); st1 = st1 * c_im(W[0]); st2 = st2 - st1; st7 = c_re(inout[3 * iostride]); st7 = st7 * c_re(W[0]); st4 = c_im(inout[3 * iostride]); st4 = st4 * c_im(W[0]); st7 = st7 + st4; st1 = st2 + st7; st2 = st2 - st7; st4 = st6 - st1; st6 = st6 + st1; st7 = st2 + st5; st5 = st5 - st2; st1 = c_re(inout[iostride]); st1 = st1 * c_im(W[0]); st2 = c_im(inout[iostride]); st2 = st2 * c_re(W[0]); st1 = st1 + st2; c_re(inout[2 * iostride]) = st4; st4 = c_im(inout[3 * iostride]); st4 = st4 * c_re(W[0]); c_re(inout[0]) = st6; st6 = c_re(inout[3 * iostride]); st6 = st6 * c_im(W[0]); st4 = st4 - st6; c_im(inout[iostride]) = st7; st7 = st1 - st4; st1 = st1 + st4; c_im(inout[3 * iostride]) = st5; st5 = st8 - st7; st8 = st8 + st7; st2 = st1 + st3; st3 = st3 - st1; c_re(inout[iostride]) = st5; c_re(inout[3 * iostride]) = st8; c_im(inout[0]) = st2; c_im(inout[2 * iostride]) = st3; } i = i - 1, inout = inout + 1, W = W + 2; } while (i > 0); } ////////////////////////////////////////////////////////////////////// int PFFTW(permutation_64)(int i) { int i1 = i % 4; int i2 = i / 4; if (i1 <= 2) return (i1 * 16 + i2); else return (i1 * 16 + ((i2 + 1) % 16)); } int PFFTW(permutation_128)(int i) { int i1 = i % 4; int i2 = i / 4; if (i1 <= 2) return (i1 * 32 + i2); else return (i1 * 32 + ((i2 + 1) % 32)); } int PFFTW(permutation_256)(int i) { int i1 = i % 4; int i2 = i / 4; if (i1 <= 2) return (i1 * 64 + PFFTW(permutation_64)(i2)); else return (i1 * 64 + PFFTW(permutation_64)((i2 + 1) % 64)); } int PFFTW(permutation_512)(int i) { int i1 = i % 4; int i2 = i / 4; if (i1 <= 2) return (i1 * 128 + PFFTW(permutation_128)(i2)); else return (i1 * 128 + PFFTW(permutation_128)((i2 + 1) % 128)); } int PFFTW(permutation_2048)(int i) { int i1 = i % 4; int i2 = i / 4; if (i1 <= 2) return (i1 * 512 + PFFTW(permutation_512)(i2)); else return (i1 * 512 + PFFTW(permutation_512)((i2 + 1) % 512)); } ///////////////////////////////////////////////////////////////// void MakeFFTOrder(void) { int i; for (i=0 ; i < 2048 ; i++){ if (i < 64) unscambled64[i] = PFFTW(permutation_64)(i); if (i < 256) unscambled256[i] = PFFTW(permutation_256)(i); if (i < 512) unscambled512[i] = PFFTW(permutation_512)(i); unscambled2048[i] = PFFTW(permutation_2048)(i); } }