-- fft2048.adb with Ada.Numerics.Complex_Types; use Ada.Numerics.Complex_Types; with Complex_Arrays; use Complex_Arrays; procedure fft2048(Z : in out Complex_Vector) is -- (0..2047) pragma Suppress(All_Checks); W: Complex_Vector(0..2047); -- scratch vector, used many times E: Complex_Vector(0..1024) := -- constants for FFT algorithm ((1.0, 0.0), (0.999995, 0.00306796), (0.999981, 0.00613589), (0.999958, 0.00920376), (0.999925, 0.0122715), (0.999882, 0.0153392), (0.999831, 0.0184067), (0.999769, 0.0214741), (0.999699, 0.0245412), (0.999619, 0.0276081), (0.999529, 0.0306748), (0.999431, 0.0337412), (0.999322, 0.0368072), (0.999205, 0.0398729), (0.999078, 0.0429383), (0.998941, 0.0460032), (0.998796, 0.0490677), (0.99864, 0.0521317), (0.998476, 0.0551952), (0.998302, 0.0582583), (0.998118, 0.0613207), (0.997925, 0.0643826), (0.997723, 0.0674439), (0.997512, 0.0705046), (0.99729, 0.0735646), (0.99706, 0.0766239), (0.99682, 0.0796824), (0.996571, 0.0827403), (0.996313, 0.0857973), (0.996045, 0.0888535), (0.995768, 0.091909), (0.995481, 0.0949635), (0.995185, 0.0980171), (0.994879, 0.10107), (0.994565, 0.104122), (0.994241, 0.107172), (0.993907, 0.110222), (0.993564, 0.113271), (0.993212, 0.116319), (0.99285, 0.119365), (0.99248, 0.122411), (0.992099, 0.125455), (0.99171, 0.128498), (0.991311, 0.13154), (0.990903, 0.134581), (0.990485, 0.13762), (0.990058, 0.140658), (0.989622, 0.143695), (0.989177, 0.14673), (0.988722, 0.149765), (0.988258, 0.152797), (0.987784, 0.155828), (0.987302, 0.158858), (0.986809, 0.161886), (0.986308, 0.164913), (0.985798, 0.167938), (0.985278, 0.170962), (0.984749, 0.173984), (0.98421, 0.177004), (0.983662, 0.180023), (0.983106, 0.18304), (0.982539, 0.186055), (0.981964, 0.189069), (0.981379, 0.19208), (0.980785, 0.19509), (0.980182, 0.198098), (0.97957, 0.201105), (0.978948, 0.204109), (0.978318, 0.207111), (0.977677, 0.210112), (0.977028, 0.21311), (0.97637, 0.216107), (0.975702, 0.219101), (0.975025, 0.222094), (0.974339, 0.225084), (0.973644, 0.228072), (0.97294, 0.231058), (0.972227, 0.234042), (0.971504, 0.237024), (0.970772, 0.240003), (0.970031, 0.24298), (0.969281, 0.245955), (0.968522, 0.248928), (0.967754, 0.251898), (0.966977, 0.254866), (0.96619, 0.257831), (0.965395, 0.260794), (0.96459, 0.263755), (0.963776, 0.266713), (0.962953, 0.269668), (0.962121, 0.272621), (0.961281, 0.275572), (0.960431, 0.27852), (0.959572, 0.281465), (0.958704, 0.284408), (0.957826, 0.287347), (0.95694, 0.290285), (0.956045, 0.293219), (0.955141, 0.296151), (0.954228, 0.29908), (0.953306, 0.302006), (0.952375, 0.304929), (0.951435, 0.30785), (0.950486, 0.310767), (0.949528, 0.313682), (0.948561, 0.316593), (0.947586, 0.319502), (0.946601, 0.322408), (0.945607, 0.32531), (0.944605, 0.32821), (0.943594, 0.331106), (0.942573, 0.334), (0.941544, 0.33689), (0.940506, 0.339777), (0.939459, 0.342661), (0.938404, 0.345541), (0.937339, 0.348419), (0.936266, 0.351293), (0.935184, 0.354164), (0.934093, 0.357031), (0.932993, 0.359895), (0.931884, 0.362756), (0.930767, 0.365613), (0.929641, 0.368467), (0.928506, 0.371317), (0.927363, 0.374164), (0.92621, 0.377007), (0.925049, 0.379847), (0.92388, 0.382683), (0.922701, 0.385516), (0.921514, 0.388345), (0.920318, 0.39117), (0.919114, 0.393992), (0.917901, 0.39681), (0.916679, 0.399624), (0.915449, 0.402435), (0.91421, 0.405241), (0.912962, 0.408044), (0.911706, 0.410843), (0.910441, 0.413638), (0.909168, 0.41643), (0.907886, 0.419217), (0.906596, 0.422), (0.905297, 0.42478), (0.903989, 0.427555), (0.902673, 0.430326), (0.901349, 0.433094), (0.900016, 0.435857), (0.898675, 0.438616), (0.897325, 0.441371), (0.895966, 0.444122), (0.894599, 0.446869), (0.893224, 0.449611), (0.891841, 0.45235), (0.890449, 0.455084), (0.889048, 0.457813), (0.88764, 0.460539), (0.886223, 0.46326), (0.884797, 0.465977), (0.883363, 0.468689), (0.881921, 0.471397), (0.880471, 0.4741), (0.879012, 0.476799), (0.877545, 0.479494), (0.87607, 0.482184), (0.874587, 0.484869), (0.873095, 0.48755), (0.871595, 0.490226), (0.870087, 0.492898), (0.868571, 0.495565), (0.867046, 0.498228), (0.865514, 0.500885), (0.863973, 0.503538), (0.862424, 0.506187), (0.860867, 0.50883), (0.859302, 0.511469), (0.857729, 0.514103), (0.856147, 0.516732), (0.854558, 0.519356), (0.852961, 0.521975), (0.851355, 0.52459), (0.849742, 0.527199), (0.84812, 0.529804), (0.846491, 0.532403), (0.844854, 0.534998), (0.843208, 0.537587), (0.841555, 0.540172), (0.839894, 0.542751), (0.838225, 0.545325), (0.836548, 0.547894), (0.834863, 0.550458), (0.83317, 0.553017), (0.83147, 0.55557), (0.829761, 0.558119), (0.828045, 0.560662), (0.826321, 0.563199), (0.824589, 0.565732), (0.82285, 0.568259), (0.821103, 0.570781), (0.819348, 0.573297), (0.817585, 0.575808), (0.815814, 0.578314), (0.814036, 0.580814), (0.812251, 0.583309), (0.810457, 0.585798), (0.808656, 0.588282), (0.806848, 0.59076), (0.805031, 0.593232), (0.803208, 0.595699), (0.801376, 0.598161), (0.799537, 0.600617), (0.797691, 0.603067), (0.795837, 0.605511), (0.793975, 0.60795), (0.792107, 0.610383), (0.79023, 0.61281), (0.788346, 0.615232), (0.786455, 0.617647), (0.784557, 0.620057), (0.782651, 0.622461), (0.780737, 0.62486), (0.778816, 0.627252), (0.776888, 0.629638), (0.774953, 0.632019), (0.77301, 0.634393), (0.77106, 0.636762), (0.769103, 0.639125), (0.767139, 0.641481), (0.765167, 0.643832), (0.763188, 0.646176), (0.761202, 0.648514), (0.759209, 0.650847), (0.757209, 0.653173), (0.755201, 0.655493), (0.753187, 0.657807), (0.751165, 0.660114), (0.749136, 0.662416), (0.747101, 0.664711), (0.745058, 0.667), (0.743008, 0.669283), (0.740951, 0.671559), (0.738887, 0.673829), (0.736817, 0.676093), (0.734739, 0.67835), (0.732654, 0.680601), (0.730563, 0.682845), (0.728464, 0.685084), (0.726359, 0.687315), (0.724247, 0.689541), (0.722128, 0.691759), (0.720003, 0.693971), (0.71787, 0.696177), (0.715731, 0.698376), (0.713585, 0.700569), (0.711432, 0.702755), (0.709273, 0.704934), (0.707107, 0.707107), (0.704934, 0.709273), (0.702755, 0.711432), (0.700569, 0.713585), (0.698376, 0.715731), (0.696177, 0.71787), (0.693971, 0.720003), (0.691759, 0.722128), (0.689541, 0.724247), (0.687315, 0.726359), (0.685084, 0.728464), (0.682845, 0.730563), (0.680601, 0.732654), (0.67835, 0.734739), (0.676093, 0.736817), (0.673829, 0.738887), (0.671559, 0.740951), (0.669283, 0.743008), (0.667, 0.745058), (0.664711, 0.747101), (0.662416, 0.749136), (0.660114, 0.751165), (0.657807, 0.753187), (0.655493, 0.755201), (0.653173, 0.757209), (0.650847, 0.759209), (0.648514, 0.761202), (0.646176, 0.763188), (0.643832, 0.765167), (0.641481, 0.767139), (0.639125, 0.769103), (0.636762, 0.77106), (0.634393, 0.77301), (0.632019, 0.774953), (0.629638, 0.776888), (0.627252, 0.778816), (0.62486, 0.780737), (0.622461, 0.782651), (0.620057, 0.784557), (0.617647, 0.786455), (0.615232, 0.788346), (0.61281, 0.79023), (0.610383, 0.792107), (0.60795, 0.793975), (0.605511, 0.795837), (0.603067, 0.797691), (0.600617, 0.799537), (0.598161, 0.801376), (0.595699, 0.803208), (0.593232, 0.805031), (0.59076, 0.806848), (0.588282, 0.808656), (0.585798, 0.810457), (0.583309, 0.812251), (0.580814, 0.814036), (0.578314, 0.815814), (0.575808, 0.817585), (0.573297, 0.819348), (0.570781, 0.821103), (0.568259, 0.82285), (0.565732, 0.824589), (0.563199, 0.826321), (0.560662, 0.828045), (0.558119, 0.829761), (0.55557, 0.83147), (0.553017, 0.83317), (0.550458, 0.834863), (0.547894, 0.836548), (0.545325, 0.838225), (0.542751, 0.839894), (0.540172, 0.841555), (0.537587, 0.843208), (0.534998, 0.844854), (0.532403, 0.846491), (0.529804, 0.84812), (0.527199, 0.849742), (0.52459, 0.851355), (0.521975, 0.852961), (0.519356, 0.854558), (0.516732, 0.856147), (0.514103, 0.857729), (0.511469, 0.859302), (0.50883, 0.860867), (0.506187, 0.862424), (0.503538, 0.863973), (0.500885, 0.865514), (0.498228, 0.867046), (0.495565, 0.868571), (0.492898, 0.870087), (0.490226, 0.871595), (0.48755, 0.873095), (0.484869, 0.874587), (0.482184, 0.87607), (0.479494, 0.877545), (0.476799, 0.879012), (0.4741, 0.880471), (0.471397, 0.881921), (0.468689, 0.883363), (0.465977, 0.884797), (0.46326, 0.886223), (0.460539, 0.88764), (0.457813, 0.889048), (0.455084, 0.890449), (0.45235, 0.891841), (0.449611, 0.893224), (0.446869, 0.894599), (0.444122, 0.895966), (0.441371, 0.897325), (0.438616, 0.898675), (0.435857, 0.900016), (0.433094, 0.901349), (0.430326, 0.902673), (0.427555, 0.903989), (0.42478, 0.905297), (0.422, 0.906596), (0.419217, 0.907886), (0.41643, 0.909168), (0.413638, 0.910441), (0.410843, 0.911706), (0.408044, 0.912962), (0.405241, 0.91421), (0.402435, 0.915449), (0.399624, 0.916679), (0.39681, 0.917901), (0.393992, 0.919114), (0.39117, 0.920318), (0.388345, 0.921514), (0.385516, 0.922701), (0.382683, 0.92388), (0.379847, 0.925049), (0.377007, 0.92621), (0.374164, 0.927363), (0.371317, 0.928506), (0.368467, 0.929641), (0.365613, 0.930767), (0.362756, 0.931884), (0.359895, 0.932993), (0.357031, 0.934093), (0.354164, 0.935184), (0.351293, 0.936266), (0.348419, 0.937339), (0.345541, 0.938404), (0.342661, 0.939459), (0.339777, 0.940506), (0.33689, 0.941544), (0.334, 0.942573), (0.331106, 0.943594), (0.32821, 0.944605), (0.32531, 0.945607), (0.322408, 0.946601), (0.319502, 0.947586), (0.316593, 0.948561), (0.313682, 0.949528), (0.310767, 0.950486), (0.30785, 0.951435), (0.304929, 0.952375), (0.302006, 0.953306), (0.29908, 0.954228), (0.296151, 0.955141), (0.293219, 0.956045), (0.290285, 0.95694), (0.287347, 0.957826), (0.284408, 0.958704), (0.281465, 0.959572), (0.27852, 0.960431), (0.275572, 0.961281), (0.272621, 0.962121), (0.269668, 0.962953), (0.266713, 0.963776), (0.263755, 0.96459), (0.260794, 0.965395), (0.257831, 0.96619), (0.254866, 0.966977), (0.251898, 0.967754), (0.248928, 0.968522), (0.245955, 0.969281), (0.24298, 0.970031), (0.240003, 0.970772), (0.237024, 0.971504), (0.234042, 0.972227), (0.231058, 0.97294), (0.228072, 0.973644), (0.225084, 0.974339), (0.222094, 0.975025), (0.219101, 0.975702), (0.216107, 0.97637), (0.21311, 0.977028), (0.210112, 0.977677), (0.207111, 0.978318), (0.204109, 0.978948), (0.201105, 0.97957), (0.198098, 0.980182), (0.19509, 0.980785), (0.19208, 0.981379), (0.189069, 0.981964), (0.186055, 0.982539), (0.18304, 0.983106), (0.180023, 0.983662), (0.177004, 0.98421), (0.173984, 0.984749), (0.170962, 0.985278), (0.167938, 0.985798), (0.164913, 0.986308), (0.161886, 0.986809), (0.158858, 0.987302), (0.155828, 0.987784), (0.152797, 0.988258), (0.149765, 0.988722), (0.14673, 0.989177), (0.143695, 0.989622), (0.140658, 0.990058), (0.13762, 0.990485), (0.134581, 0.990903), (0.13154, 0.991311), (0.128498, 0.99171), (0.125455, 0.992099), (0.122411, 0.99248), (0.119365, 0.99285), (0.116319, 0.993212), (0.113271, 0.993564), (0.110222, 0.993907), (0.107172, 0.994241), (0.104122, 0.994565), (0.10107, 0.994879), (0.0980171, 0.995185), (0.0949635, 0.995481), (0.091909, 0.995768), (0.0888535, 0.996045), (0.0857973, 0.996313), (0.0827403, 0.996571), (0.0796824, 0.99682), (0.0766239, 0.99706), (0.0735646, 0.99729), (0.0705046, 0.997512), (0.0674439, 0.997723), (0.0643826, 0.997925), (0.0613207, 0.998118), (0.0582583, 0.998302), (0.0551952, 0.998476), (0.0521317, 0.99864), (0.0490677, 0.998796), (0.0460032, 0.998941), (0.0429383, 0.999078), (0.0398729, 0.999205), (0.0368072, 0.999322), (0.0337412, 0.999431), (0.0306748, 0.999529), (0.0276081, 0.999619), (0.0245412, 0.999699), (0.0214741, 0.999769), (0.0184067, 0.999831), (0.0153392, 0.999882), (0.0122715, 0.999925), (0.00920376, 0.999958), (0.00613589, 0.999981), (0.00306796, 0.999995), (0.0, 1.0), (-0.00306796, 0.999995), (-0.00613589, 0.999981), (-0.00920376, 0.999958), (-0.0122715, 0.999925), (-0.0153392, 0.999882), (-0.0184067, 0.999831), (-0.0214741, 0.999769), (-0.0245412, 0.999699), (-0.0276081, 0.999619), (-0.0306748, 0.999529), (-0.0337412, 0.999431), (-0.0368072, 0.999322), (-0.0398729, 0.999205), (-0.0429383, 0.999078), (-0.0460032, 0.998941), (-0.0490677, 0.998796), (-0.0521317, 0.99864), (-0.0551952, 0.998476), (-0.0582583, 0.998302), (-0.0613207, 0.998118), (-0.0643826, 0.997925), (-0.0674439, 0.997723), (-0.0705046, 0.997512), (-0.0735646, 0.99729), (-0.0766239, 0.99706), (-0.0796824, 0.99682), (-0.0827403, 0.996571), (-0.0857973, 0.996313), (-0.0888535, 0.996045), (-0.091909, 0.995768), (-0.0949635, 0.995481), (-0.0980171, 0.995185), (-0.10107, 0.994879), (-0.104122, 0.994565), (-0.107172, 0.994241), (-0.110222, 0.993907), (-0.113271, 0.993564), (-0.116319, 0.993212), (-0.119365, 0.99285), (-0.122411, 0.99248), (-0.125455, 0.992099), (-0.128498, 0.99171), (-0.13154, 0.991311), (-0.134581, 0.990903), (-0.13762, 0.990485), (-0.140658, 0.990058), (-0.143695, 0.989622), (-0.14673, 0.989177), (-0.149765, 0.988722), (-0.152797, 0.988258), (-0.155828, 0.987784), (-0.158858, 0.987302), (-0.161886, 0.986809), (-0.164913, 0.986308), (-0.167938, 0.985798), (-0.170962, 0.985278), (-0.173984, 0.984749), (-0.177004, 0.98421), (-0.180023, 0.983662), (-0.18304, 0.983106), (-0.186055, 0.982539), (-0.189069, 0.981964), (-0.19208, 0.981379), (-0.19509, 0.980785), (-0.198098, 0.980182), (-0.201105, 0.97957), (-0.204109, 0.978948), (-0.207111, 0.978318), (-0.210112, 0.977677), (-0.21311, 0.977028), (-0.216107, 0.97637), (-0.219101, 0.975702), (-0.222094, 0.975025), (-0.225084, 0.974339), (-0.228072, 0.973644), (-0.231058, 0.97294), (-0.234042, 0.972227), (-0.237024, 0.971504), (-0.240003, 0.970772), (-0.24298, 0.970031), (-0.245955, 0.969281), (-0.248928, 0.968522), (-0.251898, 0.967754), (-0.254866, 0.966977), (-0.257831, 0.96619), (-0.260794, 0.965395), (-0.263755, 0.96459), (-0.266713, 0.963776), (-0.269668, 0.962953), (-0.272621, 0.962121), (-0.275572, 0.961281), (-0.27852, 0.960431), (-0.281465, 0.959572), (-0.284408, 0.958704), (-0.287347, 0.957826), (-0.290285, 0.95694), (-0.293219, 0.956045), (-0.296151, 0.955141), (-0.29908, 0.954228), (-0.302006, 0.953306), (-0.304929, 0.952375), (-0.30785, 0.951435), (-0.310767, 0.950486), (-0.313682, 0.949528), (-0.316593, 0.948561), (-0.319502, 0.947586), (-0.322408, 0.946601), (-0.32531, 0.945607), (-0.32821, 0.944605), (-0.331106, 0.943594), (-0.334, 0.942573), (-0.33689, 0.941544), (-0.339777, 0.940506), (-0.342661, 0.939459), (-0.345541, 0.938404), (-0.348419, 0.937339), (-0.351293, 0.936266), (-0.354164, 0.935184), (-0.357031, 0.934093), (-0.359895, 0.932993), (-0.362756, 0.931884), (-0.365613, 0.930767), (-0.368467, 0.929641), (-0.371317, 0.928506), (-0.374164, 0.927363), (-0.377007, 0.92621), (-0.379847, 0.925049), (-0.382683, 0.92388), (-0.385516, 0.922701), (-0.388345, 0.921514), (-0.39117, 0.920318), (-0.393992, 0.919114), (-0.39681, 0.917901), (-0.399624, 0.916679), (-0.402435, 0.915449), (-0.405241, 0.91421), (-0.408044, 0.912962), (-0.410843, 0.911706), (-0.413638, 0.910441), (-0.41643, 0.909168), (-0.419217, 0.907886), (-0.422, 0.906596), (-0.42478, 0.905297), (-0.427555, 0.903989), (-0.430326, 0.902673), (-0.433094, 0.901349), (-0.435857, 0.900016), (-0.438616, 0.898675), (-0.441371, 0.897325), (-0.444122, 0.895966), (-0.446869, 0.894599), (-0.449611, 0.893224), (-0.45235, 0.891841), (-0.455084, 0.890449), (-0.457813, 0.889048), (-0.460539, 0.88764), (-0.46326, 0.886223), (-0.465977, 0.884797), (-0.468689, 0.883363), (-0.471397, 0.881921), (-0.4741, 0.880471), (-0.476799, 0.879012), (-0.479494, 0.877545), (-0.482184, 0.87607), (-0.484869, 0.874587), (-0.48755, 0.873095), (-0.490226, 0.871595), (-0.492898, 0.870087), (-0.495565, 0.868571), (-0.498228, 0.867046), (-0.500885, 0.865514), (-0.503538, 0.863973), (-0.506187, 0.862424), (-0.50883, 0.860867), (-0.511469, 0.859302), (-0.514103, 0.857729), (-0.516732, 0.856147), (-0.519356, 0.854558), (-0.521975, 0.852961), (-0.52459, 0.851355), (-0.527199, 0.849742), (-0.529804, 0.84812), (-0.532403, 0.846491), (-0.534998, 0.844854), (-0.537587, 0.843208), (-0.540172, 0.841555), (-0.542751, 0.839894), (-0.545325, 0.838225), (-0.547894, 0.836548), (-0.550458, 0.834863), (-0.553017, 0.83317), (-0.55557, 0.83147), (-0.558119, 0.829761), (-0.560662, 0.828045), (-0.563199, 0.826321), (-0.565732, 0.824589), (-0.568259, 0.82285), (-0.570781, 0.821103), (-0.573297, 0.819348), (-0.575808, 0.817585), (-0.578314, 0.815814), (-0.580814, 0.814036), (-0.583309, 0.812251), (-0.585798, 0.810457), (-0.588282, 0.808656), (-0.59076, 0.806848), (-0.593232, 0.805031), (-0.595699, 0.803208), (-0.598161, 0.801376), (-0.600617, 0.799537), (-0.603067, 0.797691), (-0.605511, 0.795837), (-0.60795, 0.793975), (-0.610383, 0.792107), (-0.61281, 0.79023), (-0.615232, 0.788346), (-0.617647, 0.786455), (-0.620057, 0.784557), (-0.622461, 0.782651), (-0.62486, 0.780737), (-0.627252, 0.778816), (-0.629638, 0.776888), (-0.632019, 0.774953), (-0.634393, 0.77301), (-0.636762, 0.77106), (-0.639125, 0.769103), (-0.641481, 0.767139), (-0.643832, 0.765167), (-0.646176, 0.763188), (-0.648514, 0.761202), (-0.650847, 0.759209), (-0.653173, 0.757209), (-0.655493, 0.755201), (-0.657807, 0.753187), (-0.660114, 0.751165), (-0.662416, 0.749136), (-0.664711, 0.747101), (-0.667, 0.745058), (-0.669283, 0.743008), (-0.671559, 0.740951), (-0.673829, 0.738887), (-0.676093, 0.736817), (-0.67835, 0.734739), (-0.680601, 0.732654), (-0.682845, 0.730563), (-0.685084, 0.728464), (-0.687315, 0.726359), (-0.689541, 0.724247), (-0.691759, 0.722128), (-0.693971, 0.720003), (-0.696177, 0.71787), (-0.698376, 0.715731), (-0.700569, 0.713585), (-0.702755, 0.711432), (-0.704934, 0.709273), (-0.707107, 0.707107), (-0.709273, 0.704934), (-0.711432, 0.702755), (-0.713585, 0.700569), (-0.715731, 0.698376), (-0.71787, 0.696177), (-0.720003, 0.693971), (-0.722128, 0.691759), (-0.724247, 0.689541), (-0.726359, 0.687315), (-0.728464, 0.685084), (-0.730563, 0.682845), (-0.732654, 0.680601), (-0.734739, 0.67835), (-0.736817, 0.676093), (-0.738887, 0.673829), (-0.740951, 0.671559), (-0.743008, 0.669283), (-0.745058, 0.667), (-0.747101, 0.664711), (-0.749136, 0.662416), (-0.751165, 0.660114), (-0.753187, 0.657807), (-0.755201, 0.655493), (-0.757209, 0.653173), (-0.759209, 0.650847), (-0.761202, 0.648514), (-0.763188, 0.646176), (-0.765167, 0.643832), (-0.767139, 0.641481), (-0.769103, 0.639125), (-0.77106, 0.636762), (-0.77301, 0.634393), (-0.774953, 0.632019), (-0.776888, 0.629638), (-0.778816, 0.627252), (-0.780737, 0.62486), (-0.782651, 0.622461), (-0.784557, 0.620057), (-0.786455, 0.617647), (-0.788346, 0.615232), (-0.79023, 0.61281), (-0.792107, 0.610383), (-0.793975, 0.60795), (-0.795837, 0.605511), (-0.797691, 0.603067), (-0.799537, 0.600617), (-0.801376, 0.598161), (-0.803208, 0.595699), (-0.805031, 0.593232), (-0.806848, 0.59076), (-0.808656, 0.588282), (-0.810457, 0.585798), (-0.812251, 0.583309), (-0.814036, 0.580814), (-0.815814, 0.578314), (-0.817585, 0.575808), (-0.819348, 0.573297), (-0.821103, 0.570781), (-0.82285, 0.568259), (-0.824589, 0.565732), (-0.826321, 0.563199), (-0.828045, 0.560662), (-0.829761, 0.558119), (-0.83147, 0.55557), (-0.83317, 0.553017), (-0.834863, 0.550458), (-0.836548, 0.547894), (-0.838225, 0.545325), (-0.839894, 0.542751), (-0.841555, 0.540172), (-0.843208, 0.537587), (-0.844854, 0.534998), (-0.846491, 0.532403), (-0.84812, 0.529804), (-0.849742, 0.527199), (-0.851355, 0.52459), (-0.852961, 0.521975), (-0.854558, 0.519356), (-0.856147, 0.516732), (-0.857729, 0.514103), (-0.859302, 0.511469), (-0.860867, 0.50883), (-0.862424, 0.506187), (-0.863973, 0.503538), (-0.865514, 0.500885), (-0.867046, 0.498228), (-0.868571, 0.495565), (-0.870087, 0.492898), (-0.871595, 0.490226), (-0.873095, 0.48755), (-0.874587, 0.484869), (-0.87607, 0.482184), (-0.877545, 0.479494), (-0.879012, 0.476799), (-0.880471, 0.4741), (-0.881921, 0.471397), (-0.883363, 0.468689), (-0.884797, 0.465977), (-0.886223, 0.46326), (-0.88764, 0.460539), (-0.889048, 0.457813), (-0.890449, 0.455084), (-0.891841, 0.45235), (-0.893224, 0.449611), (-0.894599, 0.446869), (-0.895966, 0.444122), (-0.897325, 0.441371), (-0.898675, 0.438616), (-0.900016, 0.435857), (-0.901349, 0.433094), (-0.902673, 0.430326), (-0.903989, 0.427555), (-0.905297, 0.42478), (-0.906596, 0.422), (-0.907886, 0.419217), (-0.909168, 0.41643), (-0.910441, 0.413638), (-0.911706, 0.410843), (-0.912962, 0.408044), (-0.91421, 0.405241), (-0.915449, 0.402435), (-0.916679, 0.399624), (-0.917901, 0.39681), (-0.919114, 0.393992), (-0.920318, 0.39117), (-0.921514, 0.388345), (-0.922701, 0.385516), (-0.92388, 0.382683), (-0.925049, 0.379847), (-0.92621, 0.377007), (-0.927363, 0.374164), (-0.928506, 0.371317), (-0.929641, 0.368467), (-0.930767, 0.365613), (-0.931884, 0.362756), (-0.932993, 0.359895), (-0.934093, 0.357031), (-0.935184, 0.354164), (-0.936266, 0.351293), (-0.937339, 0.348419), (-0.938404, 0.345541), (-0.939459, 0.342661), (-0.940506, 0.339777), (-0.941544, 0.33689), (-0.942573, 0.334), (-0.943594, 0.331106), (-0.944605, 0.32821), (-0.945607, 0.32531), (-0.946601, 0.322408), (-0.947586, 0.319502), (-0.948561, 0.316593), (-0.949528, 0.313682), (-0.950486, 0.310767), (-0.951435, 0.30785), (-0.952375, 0.304929), (-0.953306, 0.302006), (-0.954228, 0.29908), (-0.955141, 0.296151), (-0.956045, 0.293219), (-0.95694, 0.290285), (-0.957826, 0.287347), (-0.958704, 0.284408), (-0.959572, 0.281465), (-0.960431, 0.27852), (-0.961281, 0.275572), (-0.962121, 0.272621), (-0.962953, 0.269668), (-0.963776, 0.266713), (-0.96459, 0.263755), (-0.965395, 0.260794), (-0.96619, 0.257831), (-0.966977, 0.254866), (-0.967754, 0.251898), (-0.968522, 0.248928), (-0.969281, 0.245955), (-0.970031, 0.24298), (-0.970772, 0.240003), (-0.971504, 0.237024), (-0.972227, 0.234042), (-0.97294, 0.231058), (-0.973644, 0.228072), (-0.974339, 0.225084), (-0.975025, 0.222094), (-0.975702, 0.219101), (-0.97637, 0.216107), (-0.977028, 0.21311), (-0.977677, 0.210112), (-0.978318, 0.207111), (-0.978948, 0.204109), (-0.97957, 0.201105), (-0.980182, 0.198098), (-0.980785, 0.19509), (-0.981379, 0.19208), (-0.981964, 0.189069), (-0.982539, 0.186055), (-0.983106, 0.18304), (-0.983662, 0.180023), (-0.98421, 0.177004), (-0.984749, 0.173984), (-0.985278, 0.170962), (-0.985798, 0.167938), (-0.986308, 0.164913), (-0.986809, 0.161886), (-0.987302, 0.158858), (-0.987784, 0.155828), (-0.988258, 0.152797), (-0.988722, 0.149765), (-0.989177, 0.14673), (-0.989622, 0.143695), (-0.990058, 0.140658), (-0.990485, 0.13762), (-0.990903, 0.134581), (-0.991311, 0.13154), (-0.99171, 0.128498), (-0.992099, 0.125455), (-0.99248, 0.122411), (-0.99285, 0.119365), (-0.993212, 0.116319), (-0.993564, 0.113271), (-0.993907, 0.110222), (-0.994241, 0.107172), (-0.994565, 0.104122), (-0.994879, 0.10107), (-0.995185, 0.0980171), (-0.995481, 0.0949635), (-0.995768, 0.091909), (-0.996045, 0.0888535), (-0.996313, 0.0857973), (-0.996571, 0.0827403), (-0.99682, 0.0796824), (-0.99706, 0.0766239), (-0.99729, 0.0735646), (-0.997512, 0.0705046), (-0.997723, 0.0674439), (-0.997925, 0.0643826), (-0.998118, 0.0613207), (-0.998302, 0.0582583), (-0.998476, 0.0551952), (-0.99864, 0.0521317), (-0.998796, 0.0490677), (-0.998941, 0.0460032), (-0.999078, 0.0429383), (-0.999205, 0.0398729), (-0.999322, 0.0368072), (-0.999431, 0.0337412), (-0.999529, 0.0306748), (-0.999619, 0.0276081), (-0.999699, 0.0245412), (-0.999769, 0.0214741), (-0.999831, 0.0184067), (-0.999882, 0.0153392), (-0.999925, 0.0122715), (-0.999958, 0.00920376), (-0.999981, 0.00613589), (-0.999995, 0.00306796), (-1.0, 0.0)); I, J, K, L, M : Integer; begin M := 1024; L := 1; loop K := 0; J := L; I := 0; loop loop W(I+K) := Z(I) + Z(M+I); W(I+J) := E(K) * (Z(I) - Z(M+I)); I := I+1; if I >= J then exit; end if; end loop; K := J; J := K+L; if J > M then exit; end if; end loop; L := L+L; if L > M then for I in 0..2*M-1 loop Z(I) := W(I); end loop; return; end if; -- result is in Z -- work back other way without copying K := 0; J := L; I := 0; loop loop Z(I+K) := W(I) + W(M+I); Z(I+J) := E(K) * (W(I) - W(M+I)); I := I+1; if I >= J then exit; end if; end loop; K := J; J := K+L; if J > M then exit; end if; end loop; L := L+L; if L > M then return; end if; -- result is in Z end loop; end fft2048;