Bug 10921 - [3.3/3.4 regression] Specific file causes segfault when compiling with -O2 or greater
Summary: [3.3/3.4 regression] Specific file causes segfault when compiling with -O2 or...
Status: RESOLVED DUPLICATE of bug 10876
Alias: None
Product: gcc
Classification: Unclassified
Component: rtl-optimization (show other bugs)
Version: 3.3
: P1 critical
Target Milestone: 3.3.1
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-05-21 23:11 UTC by Jonathan.Lang@synopsys.com
Modified: 2004-01-17 04:22 UTC (History)
0 users

See Also:
Host: sparc-sun-solaris2.9
Target: sparc-sun-solaris2.9
Build: sparc-sun-solaris2.9
Known to work:
Known to fail:
Last reconfirmed: 2003-05-26 13:00:13


Attachments
Reduced testcase (120 bytes, text/plain)
2003-05-26 12:58 UTC, Christian Ehrhardt
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan.Lang@synopsys.com 2003-05-21 23:11:00 UTC
	gcc generates an ICE when compiling gslfft.c (of aRts) with -O2 or greater on Solaris.  Following is the command and error message:

	boomer /source/arts-1.1.1/flow/gsl$ /opt/local/bin/gcc -I ../../flow -O2 -c -o gslfft.lo gslfft.c
	gslfft.c: In function `gsl_power2_fft256analysis_skip2':
	gslfft.c:3565: internal compiler error: Segmentation Fault
	Please submit a full bug report,
	with preprocessed source if appropriate.
	See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Environment:
System: SunOS boomer 5.9 Generic_112233-03 sun4u sparc SUNW,Ultra-5_10
Architecture: sun4
host: sparc-sun-solaris2.9
build: sparc-sun-solaris2.9
target: sparc-sun-solaris2.9
configured with: .gcc-src/configure --with-system-zlib --with-gnu-ld --prefix=/opt/local --with-local-prefix=/opt/local --sysconfdir=/etc

How-To-Repeat:
	3 boomer> gcc -O2 -c -o gslfft.lo gslfft.i
	gslfft.c: In function `gsl_power2_fft256analysis_skip2':
	gslfft.c:3565: internal compiler error: Segmentation Fault

	Here is gslfft.i

# 1 "gslfft.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "gslfft.c"
# 1 "gslfft.h" 1
# 22 "gslfft.h"
# 1 "../../flow/gsl/gsldefs.h" 1
# 23 "../../flow/gsl/gsldefs.h"
# 1 "../../flow/gsl/gslconfig.h" 1
# 24 "../../flow/gsl/gsldefs.h" 2


# 1 "../../flow/gsl/gslglib.h" 1
# 27 "../../flow/gsl/gslglib.h"
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/limits.h" 1 3 4
# 11 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/limits.h" 3 4
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 1 3 4
# 25 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 3 4
#pragma ident "@(#)limits.h	1.52	02/01/08 SMI" 

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 13 "/usr/include/sys/feature_tests.h" 3 4
#pragma ident "@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 9 "/usr/include/sys/isa_defs.h" 3 4
#pragma ident "@(#)isa_defs.h	1.20	99/05/04 SMI"
# 16 "/usr/include/sys/feature_tests.h" 2 3 4
# 28 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 2 3 4

# 1 "/usr/include/iso/limits_iso.h" 1 3 4
# 28 "/usr/include/iso/limits_iso.h" 3 4
#pragma ident "@(#)limits_iso.h	1.1	99/08/09 SMI" 
# 30 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 2 3 4
# 41 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 3 4
# 1 "/usr/include/sys/int_limits.h" 1 3 4
# 9 "/usr/include/sys/int_limits.h" 3 4
#pragma ident "@(#)int_limits.h	1.6	99/08/06 SMI"
# 42 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 2 3 4
# 242 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/syslimits.h" 3 4
typedef long clock_t;


extern long _sysconf(int);
# 12 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/limits.h" 2 3 4
# 28 "../../flow/gsl/gslglib.h" 2
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/float.h" 1 3 4
# 29 "../../flow/gsl/gslglib.h" 2
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stddef.h" 1 3 4
# 151 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 213 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stddef.h" 3 4
typedef unsigned int size_t;
# 325 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stddef.h" 3 4
typedef long int wchar_t;
# 30 "../../flow/gsl/gslglib.h" 2
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdarg.h" 1 3 4
# 43 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 85 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 31 "../../flow/gsl/gslglib.h" 2
# 48 "../../flow/gsl/gslglib.h"
typedef void* gpointer;
typedef const void* gconstpointer;
typedef char gchar;
typedef unsigned char guchar;
typedef signed short gshort;
typedef unsigned short gushort;
typedef signed int gint;
typedef unsigned int guint;
typedef signed long glong;
typedef unsigned long gulong;
typedef float gfloat;
typedef double gdouble;
typedef size_t gsize;
typedef gchar gint8;
typedef guchar guint8;
typedef gshort gint16;
typedef gushort guint16;
typedef gint gint32;
typedef guint guint32;
typedef gint gboolean;
typedef gint32 GTime;




typedef long long int gint64;
typedef unsigned long long int guint64;

typedef struct _GString GString;
typedef struct _GDebugKey GDebugKey;
struct _GDebugKey
{
  const gchar *key;
  guint value;
};
typedef struct _GTimeVal GTimeVal;
struct _GTimeVal
{
  glong tv_sec;
  glong tv_usec;
};
typedef gint (*GCompareFunc) (gconstpointer a,
                                                 gconstpointer b);
# 254 "../../flow/gsl/gslglib.h"
void
gsl_g_log (const gchar*msg,const char *format, va_list ap);
void
gsl_g_print_fd (int fd,const char *format, va_list ap);
static __inline__ void
g_error (const gchar *format,
         ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_log ("**ERROR**", format, args);
  __builtin_va_end(args);
}
static __inline__ void
g_message (const gchar *format,
           ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_log ("**MESSAGE**", format, args);
  __builtin_va_end(args);
}
static __inline__ void
g_critical (const gchar *format,
            ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_log ("**CRITICAL**", format, args);
  __builtin_va_end(args);
}
static __inline__ void
g_warning (const gchar *format,
           ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_log ("**WARNING**", format, args);
  __builtin_va_end(args);
}
static __inline__ void
g_print (const gchar *format,
         ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_print_fd (1, format, args);
  __builtin_va_end(args);
}
static __inline__ void
g_printerr (const gchar *format,
            ...)
{
  va_list args;
  __builtin_va_start(args,format);
  gsl_g_print_fd (2, format, args);
  __builtin_va_end(args);
}
typedef struct _GTrashStack GTrashStack;
struct _GTrashStack
{
  GTrashStack *next;
};
static __inline__ guint
g_bit_storage (gulong number)
{
  register guint n_bits = 0;

  do
    {
      n_bits++;
      number >>= 1;
    }
  while (number);
  return n_bits;
}
static __inline__ void
g_trash_stack_push (GTrashStack **stack_p,
                    gpointer data_p)
{
  GTrashStack *data = (GTrashStack *) data_p;

  data->next = *stack_p;
  *stack_p = data;
}
static __inline__ gpointer
g_trash_stack_pop (GTrashStack **stack_p)
{
  GTrashStack *data;

  data = *stack_p;
  if (data)
    {
      *stack_p = data->next;



      data->next = ((void *)0);
    }

  return data;
}
static __inline__ gpointer
g_trash_stack_peek (GTrashStack **stack_p)
{
  GTrashStack *data;

  data = *stack_p;

  return data;
}
static __inline__ guint
g_trash_stack_height (GTrashStack **stack_p)
{
  GTrashStack *data;
  guint i = 0;

  for (data = *stack_p; data; data = data->next)
    i++;

  return i;
}
# 413 "../../flow/gsl/gslglib.h"
typedef struct
{
  gint fd;
  gushort events;
  gushort revents;
} GPollFD;
# 448 "../../flow/gsl/gslglib.h"
gpointer gsl_g_malloc (gulong n_bytes);
gpointer gsl_g_malloc0 (gulong n_bytes);
gpointer gsl_g_realloc (gpointer mem,
                           gulong n_bytes);
void gsl_g_free (gpointer mem);
gpointer gsl_g_memdup (gconstpointer mem,
                                        guint byte_size);
gchar* gsl_g_strdup (const gchar *str);
gchar* gsl_g_strndup (const gchar *str,
                                 gsize n);
gchar* gsl_g_strdup_printf (const gchar *format,
                                        ...) ;
gchar* gsl_g_strdup_vprintf (const gchar *format,
                                        va_list args);
gchar* gsl_g_strndup (const gchar *str,
                                        gsize n);
gchar* gsl_g_strconcat (const gchar *string1,
                                        ...);
gchar* gsl_g_convert (const gchar *str,
                                        gsize len,
                                        const gchar *to_codeset,
                                        const gchar *from_codeset,
                                        gsize *bytes_read,
                                        gsize *bytes_written,
                                        void **error);
void gsl_g_usleep(unsigned long usec);
char* gsl_g_strerror(int e);
guint gsl_g_direct_hash (gconstpointer v);
gboolean gsl_g_direct_equal (gconstpointer v1, gconstpointer v2);
gboolean gsl_g_str_equal (gconstpointer v1, gconstpointer v2);
guint gsl_g_str_hash (gconstpointer key);
gdouble gsl_g_strtod (const gchar *nptr, gchar **endptr);
gsize gsl_g_printf_string_upper_bound (const gchar *format, va_list args);
gchar * gsl_g_stpcpy (gchar *dest, const gchar *src);
gchar * gsl_g_strescape (const gchar *source, const gchar *exceptions);
gchar * gsl_g_get_current_dir (void);
gboolean gsl_g_path_is_absolute (const gchar *file_name);
# 525 "../../flow/gsl/gslglib.h"
typedef union _GDoubleIEEE754 GDoubleIEEE754;
typedef union _GFloatIEEE754 GFloatIEEE754;





union _GFloatIEEE754
{
  gfloat v_float;
  struct {
    guint mantissa : 23;
    guint biased_exponent : 8;
    guint sign : 1;
  } mpn;
};
union _GDoubleIEEE754
{
  gdouble v_double;
  struct {
    guint mantissa_low : 32;
    guint mantissa_high : 20;
    guint biased_exponent : 11;
    guint sign : 1;
  } mpn;
};
# 578 "../../flow/gsl/gslglib.h"
typedef struct _GHashTable GHashTable;
typedef gboolean (*GHRFunc) (gpointer key,
                               gpointer value,
                               gpointer user_data);
typedef void (*GHFunc) (gpointer key,
                                                 gpointer value,
                                                 gpointer user_data);
typedef guint (*GHashFunc) (gconstpointer key);
typedef gboolean (*GEqualFunc) (gconstpointer a,
                                                 gconstpointer b);
typedef void (*GDestroyNotify) (gpointer data);
# 602 "../../flow/gsl/gslglib.h"
GHashTable* gsl_g_hash_table_new (GHashFunc hash_func,
                                            GEqualFunc key_equal_func);
GHashTable* gsl_g_hash_table_new_full (GHashFunc hash_func,
                                            GEqualFunc key_equal_func,
                                            GDestroyNotify key_destroy_func,
                                            GDestroyNotify value_destroy_func);
void gsl_g_hash_table_destroy (GHashTable *hash_table);
void gsl_g_hash_table_insert (GHashTable *hash_table,
                                            gpointer key,
                                            gpointer value);
void gsl_g_hash_table_replace (GHashTable *hash_table,
                                            gpointer key,
                                            gpointer value);
gboolean gsl_g_hash_table_remove (GHashTable *hash_table,
                                            gconstpointer key);
gboolean gsl_g_hash_table_steal (GHashTable *hash_table,
                                            gconstpointer key);
gpointer gsl_g_hash_table_lookup (GHashTable *hash_table,
                                            gconstpointer key);
gboolean gsl_g_hash_table_lookup_extended (GHashTable *hash_table,
                                            gconstpointer lookup_key,
                                            gpointer *orig_key,
                                            gpointer *value);
void gsl_g_hash_table_foreach (GHashTable *hash_table,
                                            GHFunc func,
                                            gpointer user_data);
guint gsl_g_hash_table_foreach_remove (GHashTable *hash_table,
                                            GHRFunc func,
                                            gpointer user_data);
guint gsl_g_hash_table_foreach_steal (GHashTable *hash_table,
                                            GHRFunc func,
                                            gpointer user_data);
guint gsl_g_hash_table_size (GHashTable *hash_table);



typedef struct _GScanner GScanner;
typedef struct _GScannerConfig GScannerConfig;
typedef union _GTokenValue GTokenValue;
typedef void (*GScannerMsgFunc) (GScanner *scanner,
                                                 gchar *message,
                                                 gint error);
# 655 "../../flow/gsl/gslglib.h"
typedef enum
{
  G_ERR_UNKNOWN,
  G_ERR_UNEXP_EOF,
  G_ERR_UNEXP_EOF_IN_STRING,
  G_ERR_UNEXP_EOF_IN_COMMENT,
  G_ERR_NON_DIGIT_IN_CONST,
  G_ERR_DIGIT_RADIX,
  G_ERR_FLOAT_RADIX,
  G_ERR_FLOAT_MALFORMED
} GErrorType;
typedef enum
{
  G_TOKEN_EOF = 0,

  G_TOKEN_LEFT_PAREN = '(',
  G_TOKEN_RIGHT_PAREN = ')',
  G_TOKEN_LEFT_CURLY = '{',
  G_TOKEN_RIGHT_CURLY = '}',
  G_TOKEN_LEFT_BRACE = '[',
  G_TOKEN_RIGHT_BRACE = ']',
  G_TOKEN_EQUAL_SIGN = '=',
  G_TOKEN_COMMA = ',',

  G_TOKEN_NONE = 256,

  G_TOKEN_ERROR,

  G_TOKEN_CHAR,
  G_TOKEN_BINARY,
  G_TOKEN_OCTAL,
  G_TOKEN_INT,
  G_TOKEN_HEX,
  G_TOKEN_FLOAT,
  G_TOKEN_STRING,

  G_TOKEN_SYMBOL,
  G_TOKEN_IDENTIFIER,
  G_TOKEN_IDENTIFIER_NULL,

  G_TOKEN_COMMENT_SINGLE,
  G_TOKEN_COMMENT_MULTI,
  G_TOKEN_LAST
} GTokenType;
union _GTokenValue
{
  gpointer v_symbol;
  gchar *v_identifier;
  gulong v_binary;
  gulong v_octal;
  gulong v_int;
  gdouble v_float;
  gulong v_hex;
  gchar *v_string;
  gchar *v_comment;
  guchar v_char;
  guint v_error;
};
struct _GScannerConfig
{
  const gchar *cset_skip_characters;
  const gchar *cset_identifier_first;
  const gchar *cset_identifier_nth;
  const gchar *cpair_comment_single;
  guint case_sensitive : 1;
  guint skip_comment_multi : 1;
  guint skip_comment_single : 1;
  guint scan_comment_multi : 1;
  guint scan_identifier : 1;
  guint scan_identifier_1char : 1;
  guint scan_identifier_NULL : 1;
  guint scan_symbols : 1;
  guint scan_binary : 1;
  guint scan_octal : 1;
  guint scan_float : 1;
  guint scan_hex : 1;
  guint scan_hex_dollar : 1;
  guint scan_string_sq : 1;
  guint scan_string_dq : 1;
  guint numbers_2_int : 1;
  guint int_2_float : 1;
  guint identifier_2_string : 1;
  guint char_2_token : 1;
  guint symbol_2_token : 1;
  guint scope_0_fallback : 1;
};
struct _GScanner
{
  gpointer user_data;
  guint max_parse_errors;
  guint parse_errors;
  const gchar *input_name;

  GScannerConfig *config;
  GTokenType token;
  GTokenValue value;
  guint line;
  guint position;
  GTokenType next_token;
  GTokenValue next_value;
  guint next_line;
  guint next_position;
  GHashTable *symbol_table;
  gint input_fd;
  const gchar *text;
  const gchar *text_end;
  gchar *buffer;
  guint scope_id;
  GScannerMsgFunc msg_handler;
};
# 786 "../../flow/gsl/gslglib.h"
GScanner* gsl_g_scanner_new (const GScannerConfig *config_templ);
void gsl_g_scanner_destroy (GScanner *scanner);
void gsl_g_scanner_input_file (GScanner *scanner,
                                                 gint input_fd);
void gsl_g_scanner_sync_file_offset (GScanner *scanner);
void gsl_g_scanner_input_text (GScanner *scanner,
                                                 const gchar *text,
                                                 guint text_len);
GTokenType gsl_g_scanner_get_next_token (GScanner *scanner);
GTokenType gsl_g_scanner_peek_next_token (GScanner *scanner);
GTokenType gsl_g_scanner_cur_token (GScanner *scanner);
GTokenValue gsl_g_scanner_cur_value (GScanner *scanner);
guint gsl_g_scanner_cur_line (GScanner *scanner);
guint gsl_g_scanner_cur_position (GScanner *scanner);
gboolean gsl_g_scanner_eof (GScanner *scanner);
guint gsl_g_scanner_set_scope (GScanner *scanner,
                                                 guint scope_id);
void gsl_g_scanner_scope_add_symbol (GScanner *scanner,
                                                 guint scope_id,
                                                 const gchar *symbol,
                                                 gpointer value);
void gsl_g_scanner_scope_remove_symbol (GScanner *scanner,
                                                 guint scope_id,
                                                 const gchar *symbol);
gpointer gsl_g_scanner_scope_lookup_symbol (GScanner *scanner,
                                                 guint scope_id,
                                                 const gchar *symbol);
void gsl_g_scanner_scope_foreach_symbol (GScanner *scanner,
                                                 guint scope_id,
                                                 GHFunc func,
                                                 gpointer user_data);
gpointer gsl_g_scanner_lookup_symbol (GScanner *scanner,
                                                 const gchar *symbol);
void gsl_g_scanner_unexp_token (GScanner *scanner,
                                                 GTokenType expected_token,
                                                 const gchar *identifier_spec,
                                                 const gchar *symbol_spec,
                                                 const gchar *symbol_name,
                                                 const gchar *message,
                                                 gint is_error);
void gsl_g_scanner_error (GScanner *scanner,
                                                 const gchar *format,
                                                 ...) ;
void gsl_g_scanner_warn (GScanner *scanner,
                                                 const gchar *format,
                                                 ...) ;
# 849 "../../flow/gsl/gslglib.h"
# 1 "../../flow/gsl/gslconfig.h" 1
# 850 "../../flow/gsl/gslglib.h" 2

# 1 "../../flow/gsl/gslartsthreads.h" 1






typedef struct _GError {
  const char *message;
} GError;

typedef struct _GThread {
  void *data;
} GThread;

typedef enum
{
  G_THREAD_PRIORITY_LOW,
  G_THREAD_PRIORITY_NORMAL,
  G_THREAD_PRIORITY_HIGH,
  G_THREAD_PRIORITY_URGENT
} GThreadPriority;
# 45 "../../flow/gsl/gslartsthreads.h"
gpointer gsl_arts_mutex_new ();
void gsl_arts_mutex_free (gpointer mutex);
void gsl_arts_mutex_lock (gpointer mutex);
gboolean gsl_arts_mutex_trylock (gpointer mutex);
void gsl_arts_mutex_unlock (gpointer mutex);

gpointer gsl_arts_cond_new ();
void gsl_arts_cond_free (gpointer cond);
void gsl_arts_cond_signal (gpointer cond);
void gsl_arts_cond_broadcast (gpointer cond);
void gsl_arts_cond_wait (gpointer cond, gpointer mutex);
void gsl_arts_cond_timed_wait (gpointer cond, gpointer mutex, GTimeVal *abstime);

GThread* gsl_arts_thread_create_full(gpointer (*func)(gpointer data),
                                  gpointer data,
                                  gulong stack_size,
                                  gboolean joinable,
                                  gboolean bound,
                                  GThreadPriority priority,
                                  GError **error);

gpointer gsl_arts_thread_self ();

void gsl_arts_thread_init (gpointer arg);
# 852 "../../flow/gsl/gslglib.h" 2
# 27 "../../flow/gsl/gsldefs.h" 2
# 37 "../../flow/gsl/gsldefs.h"
typedef struct _GslMagic GslMagic;
typedef struct _GslClass GslClass;
typedef struct _GslComplex GslComplex;
typedef struct _GslDataCache GslDataCache;
typedef struct _GslDataHandle GslDataHandle;
typedef struct _GslDataHandleFuncs GslDataHandleFuncs;
typedef struct _GslGlueContext GslGlueContext;
typedef struct _GslJob GslJob;
typedef struct _GslModule GslModule;
typedef struct _GslIStream GslIStream;
typedef struct _GslJStream GslJStream;
typedef struct _GslLoader GslLoader;
typedef struct _GslOStream GslOStream;
typedef struct _GslThread GslThread;
typedef struct _GslTrans GslTrans;
typedef struct _GslWaveChunk GslWaveChunk;
typedef struct _GslWaveChunkBlock GslWaveChunkBlock;
typedef struct _GslRecMutex GslRecMutex;
typedef struct _GslRing GslRing;
typedef union _GslCond GslCond;
typedef union _GslMutex GslMutex;

typedef glong GslLong;




typedef enum
{
  GSL_ERROR_NONE,
  GSL_ERROR_INTERNAL,
  GSL_ERROR_UNKNOWN,

  GSL_ERROR_IO,
  GSL_ERROR_PERMS,
  GSL_ERROR_BUSY,
  GSL_ERROR_EXISTS,
  GSL_ERROR_TEMP,
  GSL_ERROR_EOF,

  GSL_ERROR_NOT_FOUND,
  GSL_ERROR_OPEN_FAILED,
  GSL_ERROR_SEEK_FAILED,
  GSL_ERROR_READ_FAILED,
  GSL_ERROR_WRITE_FAILED,

  GSL_ERROR_FORMAT_INVALID,
  GSL_ERROR_FORMAT_UNKNOWN,
  GSL_ERROR_DATA_CORRUPT,
  GSL_ERROR_CONTENT_GLITCH,

  GSL_ERROR_NO_RESOURCE,
  GSL_ERROR_CODEC_FAILURE,
  GSL_ERROR_LAST
} GslErrorType;



typedef void (*GslAccessFunc) (GslModule *module,
                                         gpointer data);
typedef void (*GslFreeFunc) (gpointer data);
typedef void (*GslModuleFreeFunc) (gpointer data,
                                         const GslClass *klass);
# 111 "../../flow/gsl/gsldefs.h"
union _GslCond
{
  gpointer cond_pointer;
  guint8 cond_dummy[((8) > ((16)) ? (8) : ((16)))];
};
union _GslMutex
{
  gpointer mutex_pointer;
  guint8 mutex_dummy[((8) > ((24)) ? (8) : ((24)))];
};
struct _GslRecMutex
{
  GslMutex sync_mutex;
  gpointer owner;
  guint depth;
};
# 23 "gslfft.h" 2
# 48 "gslfft.h"
void gsl_power2_fftac (const unsigned int n_values,
                          const double *ri_values_in,
                          double *ri_values_out);
# 66 "gslfft.h"
void gsl_power2_fftsc (const unsigned int n_values,
                          const double *ri_values_in,
                          double *ri_values_out);
# 91 "gslfft.h"
void gsl_power2_fftar (const unsigned int n_values,
                          const double *r_values_in,
                          double *ri_values_out);
# 107 "gslfft.h"
void gsl_power2_fftsr (const unsigned int n_values,
                          const double *ri_values_in,
                          double *r_values_out);



void gsl_power2_fftar_simple (const unsigned int n_values,
                                 const float *real_values,
                                 float *complex_values);
void gsl_power2_fftsr_simple (const unsigned int n_values,
                                 const float *complex_values,
                                 float *real_values);
# 2 "gslfft.c" 2
# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 1 3 4
# 23 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
#pragma ident "@(#)math.h	2.11	00/09/07 SMI"

# 1 "/usr/include/iso/math_iso.h" 1 3 4







#pragma ident "@(#)math_iso.h	1.2	00/09/07 SMI"
# 20 "/usr/include/iso/math_iso.h" 3 4
typedef union _h_val {
        unsigned long _i[sizeof(double) / sizeof(unsigned long)];
        double _d;
} _h_val;


extern const _h_val __huge_val;
# 37 "/usr/include/iso/math_iso.h" 3 4
extern double acos (double);
extern double asin (double);
extern double atan (double);
extern double atan2 (double, double);
extern double cos (double);
extern double sin (double);
extern double tan (double);

extern double cosh (double);
extern double sinh (double);
extern double tanh (double);

extern double exp (double);
extern double frexp (double, int *);
extern double ldexp (double, int);
extern double log (double);
extern double log10 (double);
extern double modf (double, double *);

extern double pow (double, double);
extern double sqrt (double);

extern double ceil (double);
extern double fabs (double);
extern double floor (double);
extern double fmod (double, double);
# 26 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 2 3 4
# 89 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern int signgam;







enum version {libm_ieee = -1, c_issue_4, ansi_1, strict_ansi};


extern const enum version _lib_version;




struct exception {
        int type;
        char *name;
        double arg1;
        double arg2;
        double retval;
};
# 145 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern double erf (double);
extern double erfc (double);
extern double gamma (double);
extern double hypot (double, double);
extern int isnan (double);
extern double j0 (double);
extern double j1 (double);
extern double jn (int, double);
extern double lgamma (double);
extern double y0 (double);
extern double y1 (double);
extern double yn (int, double);
# 172 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern double acosh (double);
extern double asinh (double);
extern double atanh (double);
extern double cbrt (double);
extern double logb (double);
extern double nextafter (double, double);
extern double remainder (double, double);
extern double scalb (double, double);
# 192 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern double expm1 (double);
extern int ilogb (double);
extern double log1p (double);
extern double rint (double);
# 208 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern int matherr (struct exception *);




extern double significand (double);




extern double copysign (double, double);
extern double scalbn (double, int);
# 242 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 3 4
extern float modff (float, float *);





# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 1 3 4
# 20 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 3 4
#pragma ident "@(#)floatingpoint.h	2.5	99/06/22 SMI"


# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdio_tag.h" 1 3 4
# 18 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdio_tag.h" 3 4
#pragma ident "@(#)stdio_tag.h	1.3	98/04/20 SMI"
# 30 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/stdio_tag.h" 3 4
typedef struct __FILE __FILE;
# 24 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 2 3 4

# 1 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/sys/ieeefp.h" 1 3 4
# 17 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/sys/ieeefp.h" 3 4
#pragma ident "@(#)ieeefp.h	2.8 99/10/29"
# 27 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/sys/ieeefp.h" 3 4
enum fp_direction_type {
        fp_nearest = 0,
        fp_tozero = 1,
        fp_positive = 2,
        fp_negative = 3
};

enum fp_precision_type {
        fp_extended = 0,
        fp_single = 1,
        fp_double = 2,
        fp_precision_3 = 3
};

enum fp_exception_type {
        fp_inexact = 0,
        fp_division = 1,
        fp_underflow = 2,
        fp_overflow = 3,
        fp_invalid = 4
};

enum fp_trap_enable_type {
        fp_trap_inexact = 0,
        fp_trap_division = 1,
        fp_trap_underflow = 2,
        fp_trap_overflow = 3,
        fp_trap_invalid = 4
};
# 133 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/sys/ieeefp.h" 3 4
enum fp_class_type {
        fp_zero = 0,
        fp_subnormal = 1,
        fp_normal = 2,
        fp_infinity = 3,
        fp_quiet = 4,
        fp_signaling = 5
};
# 26 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 2 3 4
# 52 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 3 4
typedef __FILE FILE;
# 62 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 3 4
typedef int sigfpe_code_type;

typedef void (*sigfpe_handler_type)();





extern sigfpe_handler_type sigfpe (sigfpe_code_type, sigfpe_handler_type);




typedef float single;



typedef unsigned extended[3];


typedef long double quadruple;

typedef unsigned fp_exception_field_type;
# 94 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/floatingpoint.h" 3 4
typedef char decimal_string[512];


typedef struct {
        enum fp_class_type fpclass;
        int sign;
        int exponent;
        decimal_string ds;


        int more;


        int ndigits;


} decimal_record;

enum decimal_form {
        fixed_form,


        floating_form

};

typedef struct {
        enum fp_direction_type rd;

        enum decimal_form df;

        int ndigits;
} decimal_mode;

enum decimal_string_form {
        invalid_form,
        whitespace_form,
        fixed_int_form,
        fixed_intdot_form,
        fixed_dotfrac_form,
        fixed_intdotfrac_form,
        floating_int_form,
        floating_intdot_form,
        floating_dotfrac_form,
        floating_intdotfrac_form,
        inf_form,
        infinity_form,
        nan_form,
        nanstring_form
};

extern void single_to_decimal (single *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void double_to_decimal (double *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void extended_to_decimal (extended *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void quadruple_to_decimal (quadruple *, decimal_mode *, decimal_record *, fp_exception_field_type *);


extern void decimal_to_single (single *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_double (double *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_extended (extended *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_quadruple (quadruple *, decimal_mode *, decimal_record *, fp_exception_field_type *);


extern void string_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **);

extern void func_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **, int (*)(void), int *, int (*)(int));


extern void file_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **, FILE *, int *);



extern char *seconvert (single *, int, int *, int *, char *);
extern char *sfconvert (single *, int, int *, int *, char *);
extern char *sgconvert (single *, int, int, char *);
extern char *econvert (double, int, int *, int *, char *);
extern char *fconvert (double, int, int *, int *, char *);
extern char *gconvert (double, int, int, char *);
extern char *qeconvert (quadruple *, int, int *, int *, char *);
extern char *qfconvert (quadruple *, int, int *, int *, char *);
extern char *qgconvert (quadruple *, int, int, char *);

extern char *ecvt (double, int, int *, int *);
extern char *fcvt (double, int, int *, int *);
extern char *gcvt (double, int, char *);





extern double atof (const char *);
extern double strtod (const char *, char **);
# 249 "/opt/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include/math.h" 2 3 4
# 3 "gslfft.c" 2
# 129 "gslfft.c"
static __inline__ void
bitreverse_fft2analysis (const unsigned int n,
                         const double *X,
                         double *Y)
{
  const unsigned int n2 = n >> 1, n1 = n + n2, max = n >> 2;
  unsigned int i, r;

  { register double T2re, T2im; T2re = X[0] - X[n]; T2im = X[1] - X[n + 1]; Y[0] = X[0] + X[n]; Y[1] = X[1] + X[n + 1]; Y[2] = T2re; Y[3] = T2im; };




  { register double T2re, T2im; T2re = X[n2] - X[n1]; T2im = X[n2 + 1] - X[n1 + 1]; Y[4] = X[n2] + X[n1]; Y[5] = X[n2 + 1] + X[n1 + 1]; Y[6] = T2re; Y[7] = T2im; };




  for (i = 1, r = 0; i < max; i++)
    {
      unsigned int k, j = n >> 1;

      while (r >= j)
        {
          r -= j;
          j >>= 1;
        }
      r |= j;

      k = r >> 1;
      j = i << 3;
      { register double T2re, T2im; T2re = X[k] - X[k + n]; T2im = X[k + 1] - X[k + n + 1]; Y[j] = X[k] + X[k + n]; Y[j + 1] = X[k + 1] + X[k + n + 1]; Y[j + 2] = T2re; Y[j + 3] = T2im; };




      k += n2;
      j += 4;
      { register double T2re, T2im; T2re = X[k] - X[k + n]; T2im = X[k + 1] - X[k + n + 1]; Y[j] = X[k] + X[k + n]; Y[j + 1] = X[k + 1] + X[k + n + 1]; Y[j + 2] = T2re; Y[j + 3] = T2im; };




    }
}
static __inline__ void
bitreverse_fft2synthesis (const unsigned int n,
                          const double *X,
                          double *Y)
{
  const unsigned int n2 = n >> 1, n1 = n + n2, max = n >> 2;
  unsigned int i, r;
  double scale = n;

  scale = 1.0 / scale;
  { register double T2re, T2im; T2re = X[0] - X[n]; T2im = X[1] - X[n + 1]; Y[0] = X[0] + X[n]; Y[1] = X[1] + X[n + 1]; Y[2] = T2re * scale; Y[3] = T2im * scale; Y[0] *= scale; Y[1] *= scale; };




  { register double T2re, T2im; T2re = X[n2] - X[n1]; T2im = X[n2 + 1] - X[n1 + 1]; Y[4] = X[n2] + X[n1]; Y[5] = X[n2 + 1] + X[n1 + 1]; Y[6] = T2re * scale; Y[7] = T2im * scale; Y[4] *= scale; Y[5] *= scale; };




  for (i = 1, r = 0; i < max; i++)
    {
      unsigned int k, j = n >> 1;

      while (r >= j)
        {
          r -= j;
          j >>= 1;
        }
      r |= j;

      k = r >> 1;
      j = i << 3;
      { register double T2re, T2im; T2re = X[k] - X[k + n]; T2im = X[k + 1] - X[k + n + 1]; Y[j] = X[k] + X[k + n]; Y[j + 1] = X[k + 1] + X[k + n + 1]; Y[j + 2] = T2re * scale; Y[j + 3] = T2im * scale; Y[j] *= scale; Y[j + 1] *= scale; };




      k += n2;
      j += 4;
      { register double T2re, T2im; T2re = X[k] - X[k + n]; T2im = X[k + 1] - X[k + n + 1]; Y[j] = X[k] + X[k + n]; Y[j + 1] = X[k + 1] + X[k + n + 1]; Y[j + 2] = T2re * scale; Y[j + 3] = T2im * scale; Y[j] *= scale; Y[j + 1] *= scale; };




    }
}



static void
gsl_power2_fft2analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[2]; T2im = X[0 + 1] - X[2 + 1]; Y[0] = X[0] + X[2]; Y[0 + 1] = X[0 + 1] + X[2 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




}







static void
gsl_power2_fft4analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 266 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] + Y[6 + 1]; T2im = Y[2 + 1] - Y[6]; Y[2] = Y[2] - Y[6 + 1]; Y[2 + 1] = Y[2 + 1] + Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 275 "gslfft.c"
}







static void
gsl_power2_fft4analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[4]; T2im = X[0 + 1] - X[4 + 1]; Y[0] = X[0] + X[4]; Y[0 + 1] = X[0 + 1] + X[4 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[2] - X[6]; T2im = X[2 + 1] - X[6 + 1]; Y[4] = X[2] + X[6]; Y[4 + 1] = X[2 + 1] + X[6 + 1]; Y[6] = T2re; Y[6 + 1] = T2im; };






  gsl_power2_fft4analysis_skip2 (X, Y);
}







static void
gsl_power2_fft8analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 333 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 342 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] + Y[6 + 1]; T2im = Y[2 + 1] - Y[6]; Y[2] = Y[2] - Y[6 + 1]; Y[2 + 1] = Y[2 + 1] + Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 351 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] + Y[14 + 1]; T2im = Y[10 + 1] - Y[14]; Y[10] = Y[10] - Y[14 + 1]; Y[10 + 1] = Y[10 + 1] + Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 362 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 371 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 380 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] + Y[12 + 1]; T2im = Y[4 + 1] - Y[12]; Y[4] = Y[4] - Y[12 + 1]; Y[4 + 1] = Y[4 + 1] + Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 389 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 398 "gslfft.c"
}







static void
gsl_power2_fft8analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[8]; T2im = X[0 + 1] - X[8 + 1]; Y[0] = X[0] + X[8]; Y[0 + 1] = X[0 + 1] + X[8 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[4] - X[12]; T2im = X[4 + 1] - X[12 + 1]; Y[4] = X[4] + X[12]; Y[4 + 1] = X[4 + 1] + X[12 + 1]; Y[6] = T2re; Y[6 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[2] - X[10]; T2im = X[2 + 1] - X[10 + 1]; Y[8] = X[2] + X[10]; Y[8 + 1] = X[2 + 1] + X[10 + 1]; Y[10] = T2re; Y[10 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[6] - X[14]; T2im = X[6 + 1] - X[14 + 1]; Y[12] = X[6] + X[14]; Y[12 + 1] = X[6 + 1] + X[14 + 1]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 439 "gslfft.c"
  gsl_power2_fft8analysis_skip2 (X, Y);
}







static void
gsl_power2_fft16analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 468 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 477 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[20]; T2im = Y[16 + 1] - Y[20 + 1]; Y[16] = Y[16] + Y[20]; Y[16 + 1] = Y[16 + 1] + Y[20 + 1]; Y[20] = T2re; Y[20 + 1] = T2im; };
# 486 "gslfft.c"
  { register double T2re, T2im; T2re = Y[24] - Y[28]; T2im = Y[24 + 1] - Y[28 + 1]; Y[24] = Y[24] + Y[28]; Y[24 + 1] = Y[24 + 1] + Y[28 + 1]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 495 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] + Y[6 + 1]; T2im = Y[2 + 1] - Y[6]; Y[2] = Y[2] - Y[6 + 1]; Y[2 + 1] = Y[2 + 1] + Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 504 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] + Y[14 + 1]; T2im = Y[10 + 1] - Y[14]; Y[10] = Y[10] - Y[14 + 1]; Y[10 + 1] = Y[10 + 1] + Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 513 "gslfft.c"
  { register double T2re, T2im; T2re = Y[18] + Y[22 + 1]; T2im = Y[18 + 1] - Y[22]; Y[18] = Y[18] - Y[22 + 1]; Y[18 + 1] = Y[18 + 1] + Y[22]; Y[22] = T2re; Y[22 + 1] = T2im; };
# 522 "gslfft.c"
  { register double T2re, T2im; T2re = Y[26] + Y[30 + 1]; T2im = Y[26 + 1] - Y[30]; Y[26] = Y[26] - Y[30 + 1]; Y[26 + 1] = Y[26 + 1] + Y[30]; Y[30] = T2re; Y[30 + 1] = T2im; };
# 533 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 542 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[24]; T2im = Y[16 + 1] - Y[24 + 1]; Y[16] = Y[16] + Y[24]; Y[16 + 1] = Y[16 + 1] + Y[24 + 1]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 551 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 560 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) +0.707106781186548; T1im = Y[26 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 569 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] + Y[12 + 1]; T2im = Y[4 + 1] - Y[12]; Y[4] = Y[4] - Y[12 + 1]; Y[4 + 1] = Y[4 + 1] + Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 578 "gslfft.c"
  { register double T2re, T2im; T2re = Y[20] + Y[28 + 1]; T2im = Y[20 + 1] - Y[28]; Y[20] = Y[20] - Y[28 + 1]; Y[20 + 1] = Y[20 + 1] + Y[28]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 587 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 596 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.707106781186547; T1im = Y[30 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 607 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[16]; T2im = Y[0 + 1] - Y[16 + 1]; Y[0] = Y[0] + Y[16]; Y[0 + 1] = Y[0 + 1] + Y[16 + 1]; Y[16] = T2re; Y[16 + 1] = T2im; };
# 616 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[18] * (double) +0.923879532511287; T1im = Y[18 + 1] * (double) +0.923879532511287; T2re = Y[18 + 1] * (double) +0.382683432365090; T2im = Y[18] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[18] = T2re; Y[18 + 1] = T2im; };
# 625 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[20] * (double) +0.707106781186548; T1im = Y[20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[20] = T2re; Y[20 + 1] = T2im; };
# 634 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[22] * (double) +0.382683432365090; T1im = Y[22 + 1] * (double) +0.382683432365090; T2re = Y[22 + 1] * (double) +0.923879532511287; T2im = Y[22] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[22] = T2re; Y[22 + 1] = T2im; };
# 643 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] + Y[24 + 1]; T2im = Y[8 + 1] - Y[24]; Y[8] = Y[8] - Y[24 + 1]; Y[8 + 1] = Y[8 + 1] + Y[24]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 652 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) -0.382683432365090; T1im = Y[26 + 1] * (double) -0.382683432365090; T2re = Y[26 + 1] * (double) +0.923879532511287; T2im = Y[26] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 661 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[28] * (double) -0.707106781186547; T1im = Y[28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[28] = T2re; Y[28 + 1] = T2im; };
# 670 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.923879532511287; T1im = Y[30 + 1] * (double) -0.923879532511287; T2re = Y[30 + 1] * (double) +0.382683432365090; T2im = Y[30] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 679 "gslfft.c"
}







static void
gsl_power2_fft16analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[16]; T2im = X[0 + 1] - X[16 + 1]; Y[0] = X[0] + X[16]; Y[0 + 1] = X[0 + 1] + X[16 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[8] - X[24]; T2im = X[8 + 1] - X[24 + 1]; Y[4] = X[8] + X[24]; Y[4 + 1] = X[8 + 1] + X[24 + 1]; Y[6] = T2re; Y[6 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[4] - X[20]; T2im = X[4 + 1] - X[20 + 1]; Y[8] = X[4] + X[20]; Y[8 + 1] = X[4 + 1] + X[20 + 1]; Y[10] = T2re; Y[10 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[12] - X[28]; T2im = X[12 + 1] - X[28 + 1]; Y[12] = X[12] + X[28]; Y[12 + 1] = X[12 + 1] + X[28 + 1]; Y[14] = T2re; Y[14 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[2] - X[18]; T2im = X[2 + 1] - X[18 + 1]; Y[16] = X[2] + X[18]; Y[16 + 1] = X[2 + 1] + X[18 + 1]; Y[18] = T2re; Y[18 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[10] - X[26]; T2im = X[10 + 1] - X[26 + 1]; Y[20] = X[10] + X[26]; Y[20 + 1] = X[10 + 1] + X[26 + 1]; Y[22] = T2re; Y[22 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[6] - X[22]; T2im = X[6 + 1] - X[22 + 1]; Y[24] = X[6] + X[22]; Y[24 + 1] = X[6 + 1] + X[22 + 1]; Y[26] = T2re; Y[26 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[14] - X[30]; T2im = X[14 + 1] - X[30 + 1]; Y[28] = X[14] + X[30]; Y[28 + 1] = X[14 + 1] + X[30 + 1]; Y[30] = T2re; Y[30 + 1] = T2im; };
# 742 "gslfft.c"
  gsl_power2_fft16analysis_skip2 (X, Y);
}







static void
gsl_power2_fft32analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 771 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 780 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[20]; T2im = Y[16 + 1] - Y[20 + 1]; Y[16] = Y[16] + Y[20]; Y[16 + 1] = Y[16 + 1] + Y[20 + 1]; Y[20] = T2re; Y[20 + 1] = T2im; };
# 789 "gslfft.c"
  { register double T2re, T2im; T2re = Y[24] - Y[28]; T2im = Y[24 + 1] - Y[28 + 1]; Y[24] = Y[24] + Y[28]; Y[24 + 1] = Y[24 + 1] + Y[28 + 1]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 798 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[36]; T2im = Y[32 + 1] - Y[36 + 1]; Y[32] = Y[32] + Y[36]; Y[32 + 1] = Y[32 + 1] + Y[36 + 1]; Y[36] = T2re; Y[36 + 1] = T2im; };
# 807 "gslfft.c"
  { register double T2re, T2im; T2re = Y[40] - Y[44]; T2im = Y[40 + 1] - Y[44 + 1]; Y[40] = Y[40] + Y[44]; Y[40 + 1] = Y[40 + 1] + Y[44 + 1]; Y[44] = T2re; Y[44 + 1] = T2im; };
# 816 "gslfft.c"
  { register double T2re, T2im; T2re = Y[48] - Y[52]; T2im = Y[48 + 1] - Y[52 + 1]; Y[48] = Y[48] + Y[52]; Y[48 + 1] = Y[48 + 1] + Y[52 + 1]; Y[52] = T2re; Y[52 + 1] = T2im; };
# 825 "gslfft.c"
  { register double T2re, T2im; T2re = Y[56] - Y[60]; T2im = Y[56 + 1] - Y[60 + 1]; Y[56] = Y[56] + Y[60]; Y[56 + 1] = Y[56 + 1] + Y[60 + 1]; Y[60] = T2re; Y[60 + 1] = T2im; };
# 834 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] + Y[6 + 1]; T2im = Y[2 + 1] - Y[6]; Y[2] = Y[2] - Y[6 + 1]; Y[2 + 1] = Y[2 + 1] + Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 843 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] + Y[14 + 1]; T2im = Y[10 + 1] - Y[14]; Y[10] = Y[10] - Y[14 + 1]; Y[10 + 1] = Y[10 + 1] + Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 852 "gslfft.c"
  { register double T2re, T2im; T2re = Y[18] + Y[22 + 1]; T2im = Y[18 + 1] - Y[22]; Y[18] = Y[18] - Y[22 + 1]; Y[18 + 1] = Y[18 + 1] + Y[22]; Y[22] = T2re; Y[22 + 1] = T2im; };
# 861 "gslfft.c"
  { register double T2re, T2im; T2re = Y[26] + Y[30 + 1]; T2im = Y[26 + 1] - Y[30]; Y[26] = Y[26] - Y[30 + 1]; Y[26 + 1] = Y[26 + 1] + Y[30]; Y[30] = T2re; Y[30 + 1] = T2im; };
# 870 "gslfft.c"
  { register double T2re, T2im; T2re = Y[34] + Y[38 + 1]; T2im = Y[34 + 1] - Y[38]; Y[34] = Y[34] - Y[38 + 1]; Y[34 + 1] = Y[34 + 1] + Y[38]; Y[38] = T2re; Y[38 + 1] = T2im; };
# 879 "gslfft.c"
  { register double T2re, T2im; T2re = Y[42] + Y[46 + 1]; T2im = Y[42 + 1] - Y[46]; Y[42] = Y[42] - Y[46 + 1]; Y[42 + 1] = Y[42 + 1] + Y[46]; Y[46] = T2re; Y[46 + 1] = T2im; };
# 888 "gslfft.c"
  { register double T2re, T2im; T2re = Y[50] + Y[54 + 1]; T2im = Y[50 + 1] - Y[54]; Y[50] = Y[50] - Y[54 + 1]; Y[50 + 1] = Y[50 + 1] + Y[54]; Y[54] = T2re; Y[54 + 1] = T2im; };
# 897 "gslfft.c"
  { register double T2re, T2im; T2re = Y[58] + Y[62 + 1]; T2im = Y[58 + 1] - Y[62]; Y[58] = Y[58] - Y[62 + 1]; Y[58 + 1] = Y[58 + 1] + Y[62]; Y[62] = T2re; Y[62 + 1] = T2im; };
# 908 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 917 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[24]; T2im = Y[16 + 1] - Y[24 + 1]; Y[16] = Y[16] + Y[24]; Y[16 + 1] = Y[16 + 1] + Y[24 + 1]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 926 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[40]; T2im = Y[32 + 1] - Y[40 + 1]; Y[32] = Y[32] + Y[40]; Y[32 + 1] = Y[32 + 1] + Y[40 + 1]; Y[40] = T2re; Y[40 + 1] = T2im; };
# 935 "gslfft.c"
  { register double T2re, T2im; T2re = Y[48] - Y[56]; T2im = Y[48 + 1] - Y[56 + 1]; Y[48] = Y[48] + Y[56]; Y[48 + 1] = Y[48 + 1] + Y[56 + 1]; Y[56] = T2re; Y[56 + 1] = T2im; };
# 944 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 953 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) +0.707106781186548; T1im = Y[26 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 962 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[42] * (double) +0.707106781186548; T1im = Y[42 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[42] = T2re; Y[42 + 1] = T2im; };
# 971 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) +0.707106781186548; T1im = Y[58 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 980 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] + Y[12 + 1]; T2im = Y[4 + 1] - Y[12]; Y[4] = Y[4] - Y[12 + 1]; Y[4 + 1] = Y[4 + 1] + Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 989 "gslfft.c"
  { register double T2re, T2im; T2re = Y[20] + Y[28 + 1]; T2im = Y[20 + 1] - Y[28]; Y[20] = Y[20] - Y[28 + 1]; Y[20 + 1] = Y[20 + 1] + Y[28]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 998 "gslfft.c"
  { register double T2re, T2im; T2re = Y[36] + Y[44 + 1]; T2im = Y[36 + 1] - Y[44]; Y[36] = Y[36] - Y[44 + 1]; Y[36 + 1] = Y[36 + 1] + Y[44]; Y[44] = T2re; Y[44 + 1] = T2im; };
# 1007 "gslfft.c"
  { register double T2re, T2im; T2re = Y[52] + Y[60 + 1]; T2im = Y[52 + 1] - Y[60]; Y[52] = Y[52] - Y[60 + 1]; Y[52 + 1] = Y[52 + 1] + Y[60]; Y[60] = T2re; Y[60 + 1] = T2im; };
# 1016 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 1025 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.707106781186547; T1im = Y[30 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 1034 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[46] * (double) -0.707106781186547; T1im = Y[46 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[46] = T2re; Y[46 + 1] = T2im; };
# 1043 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.707106781186547; T1im = Y[62 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 1054 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[16]; T2im = Y[0 + 1] - Y[16 + 1]; Y[0] = Y[0] + Y[16]; Y[0 + 1] = Y[0 + 1] + Y[16 + 1]; Y[16] = T2re; Y[16 + 1] = T2im; };
# 1063 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[48]; T2im = Y[32 + 1] - Y[48 + 1]; Y[32] = Y[32] + Y[48]; Y[32 + 1] = Y[32 + 1] + Y[48 + 1]; Y[48] = T2re; Y[48 + 1] = T2im; };
# 1072 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[18] * (double) +0.923879532511287; T1im = Y[18 + 1] * (double) +0.923879532511287; T2re = Y[18 + 1] * (double) +0.382683432365090; T2im = Y[18] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[18] = T2re; Y[18 + 1] = T2im; };
# 1081 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[50] * (double) +0.923879532511287; T1im = Y[50 + 1] * (double) +0.923879532511287; T2re = Y[50 + 1] * (double) +0.382683432365090; T2im = Y[50] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[50] = T2re; Y[50 + 1] = T2im; };
# 1090 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[20] * (double) +0.707106781186548; T1im = Y[20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[20] = T2re; Y[20 + 1] = T2im; };
# 1099 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[52] * (double) +0.707106781186548; T1im = Y[52 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[52] = T2re; Y[52 + 1] = T2im; };
# 1108 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[22] * (double) +0.382683432365090; T1im = Y[22 + 1] * (double) +0.382683432365090; T2re = Y[22 + 1] * (double) +0.923879532511287; T2im = Y[22] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[22] = T2re; Y[22 + 1] = T2im; };
# 1117 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[54] * (double) +0.382683432365090; T1im = Y[54 + 1] * (double) +0.382683432365090; T2re = Y[54 + 1] * (double) +0.923879532511287; T2im = Y[54] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[54] = T2re; Y[54 + 1] = T2im; };
# 1126 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] + Y[24 + 1]; T2im = Y[8 + 1] - Y[24]; Y[8] = Y[8] - Y[24 + 1]; Y[8 + 1] = Y[8 + 1] + Y[24]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 1135 "gslfft.c"
  { register double T2re, T2im; T2re = Y[40] + Y[56 + 1]; T2im = Y[40 + 1] - Y[56]; Y[40] = Y[40] - Y[56 + 1]; Y[40 + 1] = Y[40 + 1] + Y[56]; Y[56] = T2re; Y[56 + 1] = T2im; };
# 1144 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) -0.382683432365090; T1im = Y[26 + 1] * (double) -0.382683432365090; T2re = Y[26 + 1] * (double) +0.923879532511287; T2im = Y[26] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 1153 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) -0.382683432365090; T1im = Y[58 + 1] * (double) -0.382683432365090; T2re = Y[58 + 1] * (double) +0.923879532511287; T2im = Y[58] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 1162 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[28] * (double) -0.707106781186547; T1im = Y[28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[28] = T2re; Y[28 + 1] = T2im; };
# 1171 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[60] * (double) -0.707106781186547; T1im = Y[60 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[60] = T2re; Y[60 + 1] = T2im; };
# 1180 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.923879532511287; T1im = Y[30 + 1] * (double) -0.923879532511287; T2re = Y[30 + 1] * (double) +0.382683432365090; T2im = Y[30] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 1189 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.923879532511287; T1im = Y[62 + 1] * (double) -0.923879532511287; T2re = Y[62 + 1] * (double) +0.382683432365090; T2im = Y[62] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 1200 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[32]; T2im = Y[0 + 1] - Y[32 + 1]; Y[0] = Y[0] + Y[32]; Y[0 + 1] = Y[0 + 1] + Y[32 + 1]; Y[32] = T2re; Y[32 + 1] = T2im; };
# 1209 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[34] * (double) +0.980785280403230; T1im = Y[34 + 1] * (double) +0.980785280403230; T2re = Y[34 + 1] * (double) +0.195090322016128; T2im = Y[34] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[34] = T2re; Y[34 + 1] = T2im; };
# 1218 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[36] * (double) +0.923879532511287; T1im = Y[36 + 1] * (double) +0.923879532511287; T2re = Y[36 + 1] * (double) +0.382683432365090; T2im = Y[36] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[36] = T2re; Y[36 + 1] = T2im; };
# 1227 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[38] * (double) +0.831469612302545; T1im = Y[38 + 1] * (double) +0.831469612302545; T2re = Y[38 + 1] * (double) +0.555570233019602; T2im = Y[38] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[38] = T2re; Y[38 + 1] = T2im; };
# 1236 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[40] * (double) +0.707106781186548; T1im = Y[40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[40] = T2re; Y[40 + 1] = T2im; };
# 1245 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[42] * (double) +0.555570233019602; T1im = Y[42 + 1] * (double) +0.555570233019602; T2re = Y[42 + 1] * (double) +0.831469612302545; T2im = Y[42] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[42] = T2re; Y[42 + 1] = T2im; };
# 1254 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[44] * (double) +0.382683432365090; T1im = Y[44 + 1] * (double) +0.382683432365090; T2re = Y[44 + 1] * (double) +0.923879532511287; T2im = Y[44] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[44] = T2re; Y[44 + 1] = T2im; };
# 1263 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[46] * (double) +0.195090322016128; T1im = Y[46 + 1] * (double) +0.195090322016128; T2re = Y[46 + 1] * (double) +0.980785280403230; T2im = Y[46] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[46] = T2re; Y[46 + 1] = T2im; };
# 1272 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] + Y[48 + 1]; T2im = Y[16 + 1] - Y[48]; Y[16] = Y[16] - Y[48 + 1]; Y[16 + 1] = Y[16 + 1] + Y[48]; Y[48] = T2re; Y[48 + 1] = T2im; };
# 1281 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[50] * (double) -0.195090322016128; T1im = Y[50 + 1] * (double) -0.195090322016128; T2re = Y[50 + 1] * (double) +0.980785280403230; T2im = Y[50] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[50] = T2re; Y[50 + 1] = T2im; };
# 1290 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[52] * (double) -0.382683432365090; T1im = Y[52 + 1] * (double) -0.382683432365090; T2re = Y[52 + 1] * (double) +0.923879532511287; T2im = Y[52] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[52] = T2re; Y[52 + 1] = T2im; };
# 1299 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[54] * (double) -0.555570233019602; T1im = Y[54 + 1] * (double) -0.555570233019602; T2re = Y[54 + 1] * (double) +0.831469612302545; T2im = Y[54] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[54] = T2re; Y[54 + 1] = T2im; };
# 1308 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[56] * (double) -0.707106781186547; T1im = Y[56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[56] = T2re; Y[56 + 1] = T2im; };
# 1317 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) -0.831469612302545; T1im = Y[58 + 1] * (double) -0.831469612302545; T2re = Y[58 + 1] * (double) +0.555570233019602; T2im = Y[58] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 1326 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[60] * (double) -0.923879532511287; T1im = Y[60 + 1] * (double) -0.923879532511287; T2re = Y[60 + 1] * (double) +0.382683432365090; T2im = Y[60] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[60] = T2re; Y[60 + 1] = T2im; };
# 1335 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.980785280403230; T1im = Y[62 + 1] * (double) -0.980785280403230; T2re = Y[62 + 1] * (double) +0.195090322016129; T2im = Y[62] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 1344 "gslfft.c"
}







static void
gsl_power2_fft32analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[32]; T2im = X[0 + 1] - X[32 + 1]; Y[0] = X[0] + X[32]; Y[0 + 1] = X[0 + 1] + X[32 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[16] - X[48]; T2im = X[16 + 1] - X[48 + 1]; Y[4] = X[16] + X[48]; Y[4 + 1] = X[16 + 1] + X[48 + 1]; Y[6] = T2re; Y[6 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[8] - X[40]; T2im = X[8 + 1] - X[40 + 1]; Y[8] = X[8] + X[40]; Y[8 + 1] = X[8 + 1] + X[40 + 1]; Y[10] = T2re; Y[10 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[24] - X[56]; T2im = X[24 + 1] - X[56 + 1]; Y[12] = X[24] + X[56]; Y[12 + 1] = X[24 + 1] + X[56 + 1]; Y[14] = T2re; Y[14 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[4] - X[36]; T2im = X[4 + 1] - X[36 + 1]; Y[16] = X[4] + X[36]; Y[16 + 1] = X[4 + 1] + X[36 + 1]; Y[18] = T2re; Y[18 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[20] - X[52]; T2im = X[20 + 1] - X[52 + 1]; Y[20] = X[20] + X[52]; Y[20 + 1] = X[20 + 1] + X[52 + 1]; Y[22] = T2re; Y[22 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[12] - X[44]; T2im = X[12 + 1] - X[44 + 1]; Y[24] = X[12] + X[44]; Y[24 + 1] = X[12 + 1] + X[44 + 1]; Y[26] = T2re; Y[26 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[28] - X[60]; T2im = X[28 + 1] - X[60 + 1]; Y[28] = X[28] + X[60]; Y[28 + 1] = X[28 + 1] + X[60 + 1]; Y[30] = T2re; Y[30 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[2] - X[34]; T2im = X[2 + 1] - X[34 + 1]; Y[32] = X[2] + X[34]; Y[32 + 1] = X[2 + 1] + X[34 + 1]; Y[34] = T2re; Y[34 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[18] - X[50]; T2im = X[18 + 1] - X[50 + 1]; Y[36] = X[18] + X[50]; Y[36 + 1] = X[18 + 1] + X[50 + 1]; Y[38] = T2re; Y[38 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[10] - X[42]; T2im = X[10 + 1] - X[42 + 1]; Y[40] = X[10] + X[42]; Y[40 + 1] = X[10 + 1] + X[42 + 1]; Y[42] = T2re; Y[42 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[26] - X[58]; T2im = X[26 + 1] - X[58 + 1]; Y[44] = X[26] + X[58]; Y[44 + 1] = X[26 + 1] + X[58 + 1]; Y[46] = T2re; Y[46 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[6] - X[38]; T2im = X[6 + 1] - X[38 + 1]; Y[48] = X[6] + X[38]; Y[48 + 1] = X[6 + 1] + X[38 + 1]; Y[50] = T2re; Y[50 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[22] - X[54]; T2im = X[22 + 1] - X[54 + 1]; Y[52] = X[22] + X[54]; Y[52 + 1] = X[22 + 1] + X[54 + 1]; Y[54] = T2re; Y[54 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[14] - X[46]; T2im = X[14 + 1] - X[46 + 1]; Y[56] = X[14] + X[46]; Y[56 + 1] = X[14 + 1] + X[46 + 1]; Y[58] = T2re; Y[58 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[30] - X[62]; T2im = X[30 + 1] - X[62 + 1]; Y[60] = X[30] + X[62]; Y[60 + 1] = X[30 + 1] + X[62 + 1]; Y[62] = T2re; Y[62 + 1] = T2im; };
# 1449 "gslfft.c"
  gsl_power2_fft32analysis_skip2 (X, Y);
}







static void
gsl_power2_fft64analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  for (block = 0; block < 128; block += 8) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 4]; T2im = Y[block + 0 + 1] - Y[block + 4 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 4]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 4 + 1]; Y[block + 4] = T2re; Y[block + 4 + 1] = T2im; };
# 1479 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 2] + Y[block + 6 + 1]; T2im = Y[block + 2 + 1] - Y[block + 6]; Y[block + 2] = Y[block + 2] - Y[block + 6 + 1]; Y[block + 2 + 1] = Y[block + 2 + 1] + Y[block + 6]; Y[block + 6] = T2re; Y[block + 6 + 1] = T2im; };
# 1488 "gslfft.c"
  }


  for (block = 0; block < 128; block += 16) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 8]; T2im = Y[block + 0 + 1] - Y[block + 8 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 8]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 8 + 1]; Y[block + 8] = T2re; Y[block + 8 + 1] = T2im; };
# 1501 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 10] * (double) +0.707106781186548; T1im = Y[block + 10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 10] = T2re; Y[block + 10 + 1] = T2im; };
# 1510 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 4] + Y[block + 12 + 1]; T2im = Y[block + 4 + 1] - Y[block + 12]; Y[block + 4] = Y[block + 4] - Y[block + 12 + 1]; Y[block + 4 + 1] = Y[block + 4 + 1] + Y[block + 12]; Y[block + 12] = T2re; Y[block + 12 + 1] = T2im; };
# 1519 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 14] * (double) -0.707106781186547; T1im = Y[block + 14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 14] = T2re; Y[block + 14 + 1] = T2im; };
# 1528 "gslfft.c"
  }


  for (block = 0; block < 128; block += 32) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 16]; T2im = Y[block + 0 + 1] - Y[block + 16 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 16]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 16 + 1]; Y[block + 16] = T2re; Y[block + 16 + 1] = T2im; };
# 1541 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 18] * (double) +0.923879532511287; T1im = Y[block + 18 + 1] * (double) +0.923879532511287; T2re = Y[block + 18 + 1] * (double) +0.382683432365090; T2im = Y[block + 18] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 18] = T2re; Y[block + 18 + 1] = T2im; };
# 1550 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 20] * (double) +0.707106781186548; T1im = Y[block + 20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 20] = T2re; Y[block + 20 + 1] = T2im; };
# 1559 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 22] * (double) +0.382683432365090; T1im = Y[block + 22 + 1] * (double) +0.382683432365090; T2re = Y[block + 22 + 1] * (double) +0.923879532511287; T2im = Y[block + 22] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 22] = T2re; Y[block + 22 + 1] = T2im; };
# 1568 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 8] + Y[block + 24 + 1]; T2im = Y[block + 8 + 1] - Y[block + 24]; Y[block + 8] = Y[block + 8] - Y[block + 24 + 1]; Y[block + 8 + 1] = Y[block + 8 + 1] + Y[block + 24]; Y[block + 24] = T2re; Y[block + 24 + 1] = T2im; };
# 1577 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 26] * (double) -0.382683432365090; T1im = Y[block + 26 + 1] * (double) -0.382683432365090; T2re = Y[block + 26 + 1] * (double) +0.923879532511287; T2im = Y[block + 26] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 26] = T2re; Y[block + 26 + 1] = T2im; };
# 1586 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 28] * (double) -0.707106781186547; T1im = Y[block + 28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 28] = T2re; Y[block + 28 + 1] = T2im; };
# 1595 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 30] * (double) -0.923879532511287; T1im = Y[block + 30 + 1] * (double) -0.923879532511287; T2re = Y[block + 30 + 1] * (double) +0.382683432365090; T2im = Y[block + 30] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 30] = T2re; Y[block + 30 + 1] = T2im; };
# 1604 "gslfft.c"
  }


  for (block = 0; block < 128; block += 64) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 32]; T2im = Y[block + 0 + 1] - Y[block + 32 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 32]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 32 + 1]; Y[block + 32] = T2re; Y[block + 32 + 1] = T2im; };
# 1617 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 34] * (double) +0.980785280403230; T1im = Y[block + 34 + 1] * (double) +0.980785280403230; T2re = Y[block + 34 + 1] * (double) +0.195090322016128; T2im = Y[block + 34] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 34] = T2re; Y[block + 34 + 1] = T2im; };
# 1626 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 36] * (double) +0.923879532511287; T1im = Y[block + 36 + 1] * (double) +0.923879532511287; T2re = Y[block + 36 + 1] * (double) +0.382683432365090; T2im = Y[block + 36] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 36] = T2re; Y[block + 36 + 1] = T2im; };
# 1635 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 38] * (double) +0.831469612302545; T1im = Y[block + 38 + 1] * (double) +0.831469612302545; T2re = Y[block + 38 + 1] * (double) +0.555570233019602; T2im = Y[block + 38] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 38] = T2re; Y[block + 38 + 1] = T2im; };
# 1644 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 40] * (double) +0.707106781186548; T1im = Y[block + 40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 40] = T2re; Y[block + 40 + 1] = T2im; };
# 1653 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 42] * (double) +0.555570233019602; T1im = Y[block + 42 + 1] * (double) +0.555570233019602; T2re = Y[block + 42 + 1] * (double) +0.831469612302545; T2im = Y[block + 42] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 42] = T2re; Y[block + 42 + 1] = T2im; };
# 1662 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 44] * (double) +0.382683432365090; T1im = Y[block + 44 + 1] * (double) +0.382683432365090; T2re = Y[block + 44 + 1] * (double) +0.923879532511287; T2im = Y[block + 44] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 44] = T2re; Y[block + 44 + 1] = T2im; };
# 1671 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 46] * (double) +0.195090322016128; T1im = Y[block + 46 + 1] * (double) +0.195090322016128; T2re = Y[block + 46 + 1] * (double) +0.980785280403230; T2im = Y[block + 46] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 46] = T2re; Y[block + 46 + 1] = T2im; };
# 1680 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 16] + Y[block + 48 + 1]; T2im = Y[block + 16 + 1] - Y[block + 48]; Y[block + 16] = Y[block + 16] - Y[block + 48 + 1]; Y[block + 16 + 1] = Y[block + 16 + 1] + Y[block + 48]; Y[block + 48] = T2re; Y[block + 48 + 1] = T2im; };
# 1689 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 50] * (double) -0.195090322016128; T1im = Y[block + 50 + 1] * (double) -0.195090322016128; T2re = Y[block + 50 + 1] * (double) +0.980785280403230; T2im = Y[block + 50] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 50] = T2re; Y[block + 50 + 1] = T2im; };
# 1698 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 52] * (double) -0.382683432365090; T1im = Y[block + 52 + 1] * (double) -0.382683432365090; T2re = Y[block + 52 + 1] * (double) +0.923879532511287; T2im = Y[block + 52] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 52] = T2re; Y[block + 52 + 1] = T2im; };
# 1707 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 54] * (double) -0.555570233019602; T1im = Y[block + 54 + 1] * (double) -0.555570233019602; T2re = Y[block + 54 + 1] * (double) +0.831469612302545; T2im = Y[block + 54] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 54] = T2re; Y[block + 54 + 1] = T2im; };
# 1716 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 56] * (double) -0.707106781186547; T1im = Y[block + 56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 56] = T2re; Y[block + 56 + 1] = T2im; };
# 1725 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 58] * (double) -0.831469612302545; T1im = Y[block + 58 + 1] * (double) -0.831469612302545; T2re = Y[block + 58 + 1] * (double) +0.555570233019602; T2im = Y[block + 58] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 58] = T2re; Y[block + 58 + 1] = T2im; };
# 1734 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 60] * (double) -0.923879532511287; T1im = Y[block + 60 + 1] * (double) -0.923879532511287; T2re = Y[block + 60 + 1] * (double) +0.382683432365090; T2im = Y[block + 60] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 60] = T2re; Y[block + 60 + 1] = T2im; };
# 1743 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 62] * (double) -0.980785280403230; T1im = Y[block + 62 + 1] * (double) -0.980785280403230; T2re = Y[block + 62 + 1] * (double) +0.195090322016129; T2im = Y[block + 62] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 62] = T2re; Y[block + 62 + 1] = T2im; };
# 1752 "gslfft.c"
  }


  { register double T2re, T2im; T2re = Y[0] - Y[64]; T2im = Y[0 + 1] - Y[64 + 1]; Y[0] = Y[0] + Y[64]; Y[0 + 1] = Y[0 + 1] + Y[64 + 1]; Y[64] = T2re; Y[64 + 1] = T2im; };
# 1764 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[66] * (double) +0.995184726672197; T1im = Y[66 + 1] * (double) +0.995184726672197; T2re = Y[66 + 1] * (double) +0.098017140329561; T2im = Y[66] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[66] = T2re; Y[66 + 1] = T2im; };
# 1773 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[68] * (double) +0.980785280403230; T1im = Y[68 + 1] * (double) +0.980785280403230; T2re = Y[68 + 1] * (double) +0.195090322016128; T2im = Y[68] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[68] = T2re; Y[68 + 1] = T2im; };
# 1782 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[70] * (double) +0.956940335732209; T1im = Y[70 + 1] * (double) +0.956940335732209; T2re = Y[70 + 1] * (double) +0.290284677254462; T2im = Y[70] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[70] = T2re; Y[70 + 1] = T2im; };
# 1791 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[72] * (double) +0.923879532511287; T1im = Y[72 + 1] * (double) +0.923879532511287; T2re = Y[72 + 1] * (double) +0.382683432365090; T2im = Y[72] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[72] = T2re; Y[72 + 1] = T2im; };
# 1800 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[74] * (double) +0.881921264348355; T1im = Y[74 + 1] * (double) +0.881921264348355; T2re = Y[74 + 1] * (double) +0.471396736825998; T2im = Y[74] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[74] = T2re; Y[74 + 1] = T2im; };
# 1809 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[76] * (double) +0.831469612302545; T1im = Y[76 + 1] * (double) +0.831469612302545; T2re = Y[76 + 1] * (double) +0.555570233019602; T2im = Y[76] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[76] = T2re; Y[76 + 1] = T2im; };
# 1818 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[78] * (double) +0.773010453362737; T1im = Y[78 + 1] * (double) +0.773010453362737; T2re = Y[78 + 1] * (double) +0.634393284163645; T2im = Y[78] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[78] = T2re; Y[78 + 1] = T2im; };
# 1827 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[80] * (double) +0.707106781186548; T1im = Y[80 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[16] - T1re; T2im = Y[16 + 1] - T1im; Y[16] = Y[16] + T1re; Y[16 + 1] = Y[16 + 1] + T1im; Y[80] = T2re; Y[80 + 1] = T2im; };
# 1836 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[82] * (double) +0.634393284163645; T1im = Y[82 + 1] * (double) +0.634393284163645; T2re = Y[82 + 1] * (double) +0.773010453362737; T2im = Y[82] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[82] = T2re; Y[82 + 1] = T2im; };
# 1845 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[84] * (double) +0.555570233019602; T1im = Y[84 + 1] * (double) +0.555570233019602; T2re = Y[84 + 1] * (double) +0.831469612302545; T2im = Y[84] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[84] = T2re; Y[84 + 1] = T2im; };
# 1854 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[86] * (double) +0.471396736825998; T1im = Y[86 + 1] * (double) +0.471396736825998; T2re = Y[86 + 1] * (double) +0.881921264348355; T2im = Y[86] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[86] = T2re; Y[86 + 1] = T2im; };
# 1863 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[88] * (double) +0.382683432365090; T1im = Y[88 + 1] * (double) +0.382683432365090; T2re = Y[88 + 1] * (double) +0.923879532511287; T2im = Y[88] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[88] = T2re; Y[88 + 1] = T2im; };
# 1872 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[90] * (double) +0.290284677254462; T1im = Y[90 + 1] * (double) +0.290284677254462; T2re = Y[90 + 1] * (double) +0.956940335732209; T2im = Y[90] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[90] = T2re; Y[90 + 1] = T2im; };
# 1881 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[92] * (double) +0.195090322016128; T1im = Y[92 + 1] * (double) +0.195090322016128; T2re = Y[92 + 1] * (double) +0.980785280403230; T2im = Y[92] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[92] = T2re; Y[92 + 1] = T2im; };
# 1890 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[94] * (double) +0.098017140329561; T1im = Y[94 + 1] * (double) +0.098017140329561; T2re = Y[94 + 1] * (double) +0.995184726672197; T2im = Y[94] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[94] = T2re; Y[94 + 1] = T2im; };
# 1899 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] + Y[96 + 1]; T2im = Y[32 + 1] - Y[96]; Y[32] = Y[32] - Y[96 + 1]; Y[32 + 1] = Y[32 + 1] + Y[96]; Y[96] = T2re; Y[96 + 1] = T2im; };
# 1908 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[98] * (double) -0.098017140329561; T1im = Y[98 + 1] * (double) -0.098017140329561; T2re = Y[98 + 1] * (double) +0.995184726672197; T2im = Y[98] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[98] = T2re; Y[98 + 1] = T2im; };
# 1917 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[100] * (double) -0.195090322016128; T1im = Y[100 + 1] * (double) -0.195090322016128; T2re = Y[100 + 1] * (double) +0.980785280403230; T2im = Y[100] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[100] = T2re; Y[100 + 1] = T2im; };
# 1926 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[102] * (double) -0.290284677254462; T1im = Y[102 + 1] * (double) -0.290284677254462; T2re = Y[102 + 1] * (double) +0.956940335732209; T2im = Y[102] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[102] = T2re; Y[102 + 1] = T2im; };
# 1935 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[104] * (double) -0.382683432365090; T1im = Y[104 + 1] * (double) -0.382683432365090; T2re = Y[104 + 1] * (double) +0.923879532511287; T2im = Y[104] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[40] - T1re; T2im = Y[40 + 1] - T1im; Y[40] = Y[40] + T1re; Y[40 + 1] = Y[40 + 1] + T1im; Y[104] = T2re; Y[104 + 1] = T2im; };
# 1944 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[106] * (double) -0.471396736825998; T1im = Y[106 + 1] * (double) -0.471396736825998; T2re = Y[106 + 1] * (double) +0.881921264348355; T2im = Y[106] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[106] = T2re; Y[106 + 1] = T2im; };
# 1953 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[108] * (double) -0.555570233019602; T1im = Y[108 + 1] * (double) -0.555570233019602; T2re = Y[108 + 1] * (double) +0.831469612302545; T2im = Y[108] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[108] = T2re; Y[108 + 1] = T2im; };
# 1962 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[110] * (double) -0.634393284163645; T1im = Y[110 + 1] * (double) -0.634393284163645; T2re = Y[110 + 1] * (double) +0.773010453362737; T2im = Y[110] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[110] = T2re; Y[110 + 1] = T2im; };
# 1971 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[112] * (double) -0.707106781186547; T1im = Y[112 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[48] - T1re; T2im = Y[48 + 1] - T1im; Y[48] = Y[48] + T1re; Y[48 + 1] = Y[48 + 1] + T1im; Y[112] = T2re; Y[112 + 1] = T2im; };
# 1980 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[114] * (double) -0.773010453362737; T1im = Y[114 + 1] * (double) -0.773010453362737; T2re = Y[114 + 1] * (double) +0.634393284163645; T2im = Y[114] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[114] = T2re; Y[114 + 1] = T2im; };
# 1989 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[116] * (double) -0.831469612302545; T1im = Y[116 + 1] * (double) -0.831469612302545; T2re = Y[116 + 1] * (double) +0.555570233019602; T2im = Y[116] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[52] - T1re; T2im = Y[52 + 1] - T1im; Y[52] = Y[52] + T1re; Y[52 + 1] = Y[52 + 1] + T1im; Y[116] = T2re; Y[116 + 1] = T2im; };
# 1998 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[118] * (double) -0.881921264348355; T1im = Y[118 + 1] * (double) -0.881921264348355; T2re = Y[118 + 1] * (double) +0.471396736825998; T2im = Y[118] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[118] = T2re; Y[118 + 1] = T2im; };
# 2007 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[120] * (double) -0.923879532511287; T1im = Y[120 + 1] * (double) -0.923879532511287; T2re = Y[120 + 1] * (double) +0.382683432365090; T2im = Y[120] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[56] - T1re; T2im = Y[56 + 1] - T1im; Y[56] = Y[56] + T1re; Y[56 + 1] = Y[56 + 1] + T1im; Y[120] = T2re; Y[120 + 1] = T2im; };
# 2016 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[122] * (double) -0.956940335732209; T1im = Y[122 + 1] * (double) -0.956940335732209; T2re = Y[122 + 1] * (double) +0.290284677254462; T2im = Y[122] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[58] - T1re; T2im = Y[58 + 1] - T1im; Y[58] = Y[58] + T1re; Y[58 + 1] = Y[58 + 1] + T1im; Y[122] = T2re; Y[122 + 1] = T2im; };
# 2025 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[124] * (double) -0.980785280403230; T1im = Y[124 + 1] * (double) -0.980785280403230; T2re = Y[124 + 1] * (double) +0.195090322016129; T2im = Y[124] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[60] - T1re; T2im = Y[60 + 1] - T1im; Y[60] = Y[60] + T1re; Y[60 + 1] = Y[60 + 1] + T1im; Y[124] = T2re; Y[124 + 1] = T2im; };
# 2034 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[126] * (double) -0.995184726672197; T1im = Y[126 + 1] * (double) -0.995184726672197; T2re = Y[126 + 1] * (double) +0.098017140329561; T2im = Y[126] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[62] - T1re; T2im = Y[62 + 1] - T1im; Y[62] = Y[62] + T1re; Y[62 + 1] = Y[62 + 1] + T1im; Y[126] = T2re; Y[126 + 1] = T2im; };
# 2043 "gslfft.c"
}







static void
gsl_power2_fft64analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[64]; T2im = X[0 + 1] - X[64 + 1]; Y[0] = X[0] + X[64]; Y[0 + 1] = X[0 + 1] + X[64 + 1]; Y[2] = T2re; Y[2 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[32] - X[96]; T2im = X[32 + 1] - X[96 + 1]; Y[4] = X[32] + X[96]; Y[4 + 1] = X[32 + 1] + X[96 + 1]; Y[6] = T2re; Y[6 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[16] - X[80]; T2im = X[16 + 1] - X[80 + 1]; Y[8] = X[16] + X[80]; Y[8 + 1] = X[16 + 1] + X[80 + 1]; Y[10] = T2re; Y[10 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[48] - X[112]; T2im = X[48 + 1] - X[112 + 1]; Y[12] = X[48] + X[112]; Y[12 + 1] = X[48 + 1] + X[112 + 1]; Y[14] = T2re; Y[14 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[8] - X[72]; T2im = X[8 + 1] - X[72 + 1]; Y[16] = X[8] + X[72]; Y[16 + 1] = X[8 + 1] + X[72 + 1]; Y[18] = T2re; Y[18 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[40] - X[104]; T2im = X[40 + 1] - X[104 + 1]; Y[20] = X[40] + X[104]; Y[20 + 1] = X[40 + 1] + X[104 + 1]; Y[22] = T2re; Y[22 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[24] - X[88]; T2im = X[24 + 1] - X[88 + 1]; Y[24] = X[24] + X[88]; Y[24 + 1] = X[24 + 1] + X[88 + 1]; Y[26] = T2re; Y[26 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[56] - X[120]; T2im = X[56 + 1] - X[120 + 1]; Y[28] = X[56] + X[120]; Y[28 + 1] = X[56 + 1] + X[120 + 1]; Y[30] = T2re; Y[30 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[4] - X[68]; T2im = X[4 + 1] - X[68 + 1]; Y[32] = X[4] + X[68]; Y[32 + 1] = X[4 + 1] + X[68 + 1]; Y[34] = T2re; Y[34 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[36] - X[100]; T2im = X[36 + 1] - X[100 + 1]; Y[36] = X[36] + X[100]; Y[36 + 1] = X[36 + 1] + X[100 + 1]; Y[38] = T2re; Y[38 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[20] - X[84]; T2im = X[20 + 1] - X[84 + 1]; Y[40] = X[20] + X[84]; Y[40 + 1] = X[20 + 1] + X[84 + 1]; Y[42] = T2re; Y[42 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[52] - X[116]; T2im = X[52 + 1] - X[116 + 1]; Y[44] = X[52] + X[116]; Y[44 + 1] = X[52 + 1] + X[116 + 1]; Y[46] = T2re; Y[46 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[12] - X[76]; T2im = X[12 + 1] - X[76 + 1]; Y[48] = X[12] + X[76]; Y[48 + 1] = X[12 + 1] + X[76 + 1]; Y[50] = T2re; Y[50 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[44] - X[108]; T2im = X[44 + 1] - X[108 + 1]; Y[52] = X[44] + X[108]; Y[52 + 1] = X[44 + 1] + X[108 + 1]; Y[54] = T2re; Y[54 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[28] - X[92]; T2im = X[28 + 1] - X[92 + 1]; Y[56] = X[28] + X[92]; Y[56 + 1] = X[28 + 1] + X[92 + 1]; Y[58] = T2re; Y[58 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[60] - X[124]; T2im = X[60 + 1] - X[124 + 1]; Y[60] = X[60] + X[124]; Y[60 + 1] = X[60 + 1] + X[124 + 1]; Y[62] = T2re; Y[62 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[2] - X[66]; T2im = X[2 + 1] - X[66 + 1]; Y[64] = X[2] + X[66]; Y[64 + 1] = X[2 + 1] + X[66 + 1]; Y[66] = T2re; Y[66 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[34] - X[98]; T2im = X[34 + 1] - X[98 + 1]; Y[68] = X[34] + X[98]; Y[68 + 1] = X[34 + 1] + X[98 + 1]; Y[70] = T2re; Y[70 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[18] - X[82]; T2im = X[18 + 1] - X[82 + 1]; Y[72] = X[18] + X[82]; Y[72 + 1] = X[18 + 1] + X[82 + 1]; Y[74] = T2re; Y[74 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[50] - X[114]; T2im = X[50 + 1] - X[114 + 1]; Y[76] = X[50] + X[114]; Y[76 + 1] = X[50 + 1] + X[114 + 1]; Y[78] = T2re; Y[78 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[10] - X[74]; T2im = X[10 + 1] - X[74 + 1]; Y[80] = X[10] + X[74]; Y[80 + 1] = X[10 + 1] + X[74 + 1]; Y[82] = T2re; Y[82 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[42] - X[106]; T2im = X[42 + 1] - X[106 + 1]; Y[84] = X[42] + X[106]; Y[84 + 1] = X[42 + 1] + X[106 + 1]; Y[86] = T2re; Y[86 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[26] - X[90]; T2im = X[26 + 1] - X[90 + 1]; Y[88] = X[26] + X[90]; Y[88 + 1] = X[26 + 1] + X[90 + 1]; Y[90] = T2re; Y[90 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[58] - X[122]; T2im = X[58 + 1] - X[122 + 1]; Y[92] = X[58] + X[122]; Y[92 + 1] = X[58 + 1] + X[122 + 1]; Y[94] = T2re; Y[94 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[6] - X[70]; T2im = X[6 + 1] - X[70 + 1]; Y[96] = X[6] + X[70]; Y[96 + 1] = X[6 + 1] + X[70 + 1]; Y[98] = T2re; Y[98 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[38] - X[102]; T2im = X[38 + 1] - X[102 + 1]; Y[100] = X[38] + X[102]; Y[100 + 1] = X[38 + 1] + X[102 + 1]; Y[102] = T2re; Y[102 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[22] - X[86]; T2im = X[22 + 1] - X[86 + 1]; Y[104] = X[22] + X[86]; Y[104 + 1] = X[22 + 1] + X[86 + 1]; Y[106] = T2re; Y[106 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[54] - X[118]; T2im = X[54 + 1] - X[118 + 1]; Y[108] = X[54] + X[118]; Y[108 + 1] = X[54 + 1] + X[118 + 1]; Y[110] = T2re; Y[110 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[14] - X[78]; T2im = X[14 + 1] - X[78 + 1]; Y[112] = X[14] + X[78]; Y[112 + 1] = X[14 + 1] + X[78 + 1]; Y[114] = T2re; Y[114 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[46] - X[110]; T2im = X[46 + 1] - X[110 + 1]; Y[116] = X[46] + X[110]; Y[116 + 1] = X[46 + 1] + X[110 + 1]; Y[118] = T2re; Y[118 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[30] - X[94]; T2im = X[30 + 1] - X[94 + 1]; Y[120] = X[30] + X[94]; Y[120 + 1] = X[30 + 1] + X[94 + 1]; Y[122] = T2re; Y[122 + 1] = T2im; };




  { register double T2re, T2im; T2re = X[62] - X[126]; T2im = X[62 + 1] - X[126 + 1]; Y[124] = X[62] + X[126]; Y[124 + 1] = X[62 + 1] + X[126 + 1]; Y[126] = T2re; Y[126 + 1] = T2im; };
# 2230 "gslfft.c"
  gsl_power2_fft64analysis_skip2 (X, Y);
}







static void
gsl_power2_fft128analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  for (block = 0; block < 256; block += 8) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 4]; T2im = Y[block + 0 + 1] - Y[block + 4 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 4]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 4 + 1]; Y[block + 4] = T2re; Y[block + 4 + 1] = T2im; };
# 2260 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 2] + Y[block + 6 + 1]; T2im = Y[block + 2 + 1] - Y[block + 6]; Y[block + 2] = Y[block + 2] - Y[block + 6 + 1]; Y[block + 2 + 1] = Y[block + 2 + 1] + Y[block + 6]; Y[block + 6] = T2re; Y[block + 6 + 1] = T2im; };
# 2269 "gslfft.c"
  }


  for (block = 0; block < 256; block += 16) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 8]; T2im = Y[block + 0 + 1] - Y[block + 8 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 8]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 8 + 1]; Y[block + 8] = T2re; Y[block + 8 + 1] = T2im; };
# 2282 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 10] * (double) +0.707106781186548; T1im = Y[block + 10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 10] = T2re; Y[block + 10 + 1] = T2im; };
# 2291 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 4] + Y[block + 12 + 1]; T2im = Y[block + 4 + 1] - Y[block + 12]; Y[block + 4] = Y[block + 4] - Y[block + 12 + 1]; Y[block + 4 + 1] = Y[block + 4 + 1] + Y[block + 12]; Y[block + 12] = T2re; Y[block + 12 + 1] = T2im; };
# 2300 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 14] * (double) -0.707106781186547; T1im = Y[block + 14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 14] = T2re; Y[block + 14 + 1] = T2im; };
# 2309 "gslfft.c"
  }


  for (block = 0; block < 256; block += 32) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 16]; T2im = Y[block + 0 + 1] - Y[block + 16 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 16]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 16 + 1]; Y[block + 16] = T2re; Y[block + 16 + 1] = T2im; };
# 2322 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 18] * (double) +0.923879532511287; T1im = Y[block + 18 + 1] * (double) +0.923879532511287; T2re = Y[block + 18 + 1] * (double) +0.382683432365090; T2im = Y[block + 18] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 18] = T2re; Y[block + 18 + 1] = T2im; };
# 2331 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 20] * (double) +0.707106781186548; T1im = Y[block + 20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 20] = T2re; Y[block + 20 + 1] = T2im; };
# 2340 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 22] * (double) +0.382683432365090; T1im = Y[block + 22 + 1] * (double) +0.382683432365090; T2re = Y[block + 22 + 1] * (double) +0.923879532511287; T2im = Y[block + 22] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 22] = T2re; Y[block + 22 + 1] = T2im; };
# 2349 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 8] + Y[block + 24 + 1]; T2im = Y[block + 8 + 1] - Y[block + 24]; Y[block + 8] = Y[block + 8] - Y[block + 24 + 1]; Y[block + 8 + 1] = Y[block + 8 + 1] + Y[block + 24]; Y[block + 24] = T2re; Y[block + 24 + 1] = T2im; };
# 2358 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 26] * (double) -0.382683432365090; T1im = Y[block + 26 + 1] * (double) -0.382683432365090; T2re = Y[block + 26 + 1] * (double) +0.923879532511287; T2im = Y[block + 26] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 26] = T2re; Y[block + 26 + 1] = T2im; };
# 2367 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 28] * (double) -0.707106781186547; T1im = Y[block + 28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 28] = T2re; Y[block + 28 + 1] = T2im; };
# 2376 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 30] * (double) -0.923879532511287; T1im = Y[block + 30 + 1] * (double) -0.923879532511287; T2re = Y[block + 30 + 1] * (double) +0.382683432365090; T2im = Y[block + 30] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 30] = T2re; Y[block + 30 + 1] = T2im; };
# 2385 "gslfft.c"
  }


  for (block = 0; block < 256; block += 64) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 32]; T2im = Y[block + 0 + 1] - Y[block + 32 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 32]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 32 + 1]; Y[block + 32] = T2re; Y[block + 32 + 1] = T2im; };
# 2398 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 34] * (double) +0.980785280403230; T1im = Y[block + 34 + 1] * (double) +0.980785280403230; T2re = Y[block + 34 + 1] * (double) +0.195090322016128; T2im = Y[block + 34] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 34] = T2re; Y[block + 34 + 1] = T2im; };
# 2407 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 36] * (double) +0.923879532511287; T1im = Y[block + 36 + 1] * (double) +0.923879532511287; T2re = Y[block + 36 + 1] * (double) +0.382683432365090; T2im = Y[block + 36] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 36] = T2re; Y[block + 36 + 1] = T2im; };
# 2416 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 38] * (double) +0.831469612302545; T1im = Y[block + 38 + 1] * (double) +0.831469612302545; T2re = Y[block + 38 + 1] * (double) +0.555570233019602; T2im = Y[block + 38] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 38] = T2re; Y[block + 38 + 1] = T2im; };
# 2425 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 40] * (double) +0.707106781186548; T1im = Y[block + 40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 40] = T2re; Y[block + 40 + 1] = T2im; };
# 2434 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 42] * (double) +0.555570233019602; T1im = Y[block + 42 + 1] * (double) +0.555570233019602; T2re = Y[block + 42 + 1] * (double) +0.831469612302545; T2im = Y[block + 42] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 42] = T2re; Y[block + 42 + 1] = T2im; };
# 2443 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 44] * (double) +0.382683432365090; T1im = Y[block + 44 + 1] * (double) +0.382683432365090; T2re = Y[block + 44 + 1] * (double) +0.923879532511287; T2im = Y[block + 44] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 44] = T2re; Y[block + 44 + 1] = T2im; };
# 2452 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 46] * (double) +0.195090322016128; T1im = Y[block + 46 + 1] * (double) +0.195090322016128; T2re = Y[block + 46 + 1] * (double) +0.980785280403230; T2im = Y[block + 46] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 46] = T2re; Y[block + 46 + 1] = T2im; };
# 2461 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 16] + Y[block + 48 + 1]; T2im = Y[block + 16 + 1] - Y[block + 48]; Y[block + 16] = Y[block + 16] - Y[block + 48 + 1]; Y[block + 16 + 1] = Y[block + 16 + 1] + Y[block + 48]; Y[block + 48] = T2re; Y[block + 48 + 1] = T2im; };
# 2470 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 50] * (double) -0.195090322016128; T1im = Y[block + 50 + 1] * (double) -0.195090322016128; T2re = Y[block + 50 + 1] * (double) +0.980785280403230; T2im = Y[block + 50] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 50] = T2re; Y[block + 50 + 1] = T2im; };
# 2479 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 52] * (double) -0.382683432365090; T1im = Y[block + 52 + 1] * (double) -0.382683432365090; T2re = Y[block + 52 + 1] * (double) +0.923879532511287; T2im = Y[block + 52] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 52] = T2re; Y[block + 52 + 1] = T2im; };
# 2488 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 54] * (double) -0.555570233019602; T1im = Y[block + 54 + 1] * (double) -0.555570233019602; T2re = Y[block + 54 + 1] * (double) +0.831469612302545; T2im = Y[block + 54] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 54] = T2re; Y[block + 54 + 1] = T2im; };
# 2497 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 56] * (double) -0.707106781186547; T1im = Y[block + 56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 56] = T2re; Y[block + 56 + 1] = T2im; };
# 2506 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 58] * (double) -0.831469612302545; T1im = Y[block + 58 + 1] * (double) -0.831469612302545; T2re = Y[block + 58 + 1] * (double) +0.555570233019602; T2im = Y[block + 58] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 58] = T2re; Y[block + 58 + 1] = T2im; };
# 2515 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 60] * (double) -0.923879532511287; T1im = Y[block + 60 + 1] * (double) -0.923879532511287; T2re = Y[block + 60 + 1] * (double) +0.382683432365090; T2im = Y[block + 60] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 60] = T2re; Y[block + 60 + 1] = T2im; };
# 2524 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 62] * (double) -0.980785280403230; T1im = Y[block + 62 + 1] * (double) -0.980785280403230; T2re = Y[block + 62 + 1] * (double) +0.195090322016129; T2im = Y[block + 62] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 62] = T2re; Y[block + 62 + 1] = T2im; };
# 2533 "gslfft.c"
  }


  for (block = 0; block < 256; block += 128) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 64]; T2im = Y[block + 0 + 1] - Y[block + 64 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 64]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 64 + 1]; Y[block + 64] = T2re; Y[block + 64 + 1] = T2im; };
# 2546 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 66] * (double) +0.995184726672197; T1im = Y[block + 66 + 1] * (double) +0.995184726672197; T2re = Y[block + 66 + 1] * (double) +0.098017140329561; T2im = Y[block + 66] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 66] = T2re; Y[block + 66 + 1] = T2im; };
# 2555 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 68] * (double) +0.980785280403230; T1im = Y[block + 68 + 1] * (double) +0.980785280403230; T2re = Y[block + 68 + 1] * (double) +0.195090322016128; T2im = Y[block + 68] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 68] = T2re; Y[block + 68 + 1] = T2im; };
# 2564 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 70] * (double) +0.956940335732209; T1im = Y[block + 70 + 1] * (double) +0.956940335732209; T2re = Y[block + 70 + 1] * (double) +0.290284677254462; T2im = Y[block + 70] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 70] = T2re; Y[block + 70 + 1] = T2im; };
# 2573 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 72] * (double) +0.923879532511287; T1im = Y[block + 72 + 1] * (double) +0.923879532511287; T2re = Y[block + 72 + 1] * (double) +0.382683432365090; T2im = Y[block + 72] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 72] = T2re; Y[block + 72 + 1] = T2im; };
# 2582 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 74] * (double) +0.881921264348355; T1im = Y[block + 74 + 1] * (double) +0.881921264348355; T2re = Y[block + 74 + 1] * (double) +0.471396736825998; T2im = Y[block + 74] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 74] = T2re; Y[block + 74 + 1] = T2im; };
# 2591 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 76] * (double) +0.831469612302545; T1im = Y[block + 76 + 1] * (double) +0.831469612302545; T2re = Y[block + 76 + 1] * (double) +0.555570233019602; T2im = Y[block + 76] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 76] = T2re; Y[block + 76 + 1] = T2im; };
# 2600 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 78] * (double) +0.773010453362737; T1im = Y[block + 78 + 1] * (double) +0.773010453362737; T2re = Y[block + 78 + 1] * (double) +0.634393284163645; T2im = Y[block + 78] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 78] = T2re; Y[block + 78 + 1] = T2im; };
# 2609 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 80] * (double) +0.707106781186548; T1im = Y[block + 80 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 16] - T1re; T2im = Y[block + 16 + 1] - T1im; Y[block + 16] = Y[block + 16] + T1re; Y[block + 16 + 1] = Y[block + 16 + 1] + T1im; Y[block + 80] = T2re; Y[block + 80 + 1] = T2im; };
# 2618 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 82] * (double) +0.634393284163645; T1im = Y[block + 82 + 1] * (double) +0.634393284163645; T2re = Y[block + 82 + 1] * (double) +0.773010453362737; T2im = Y[block + 82] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 82] = T2re; Y[block + 82 + 1] = T2im; };
# 2627 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 84] * (double) +0.555570233019602; T1im = Y[block + 84 + 1] * (double) +0.555570233019602; T2re = Y[block + 84 + 1] * (double) +0.831469612302545; T2im = Y[block + 84] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 84] = T2re; Y[block + 84 + 1] = T2im; };
# 2636 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 86] * (double) +0.471396736825998; T1im = Y[block + 86 + 1] * (double) +0.471396736825998; T2re = Y[block + 86 + 1] * (double) +0.881921264348355; T2im = Y[block + 86] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 86] = T2re; Y[block + 86 + 1] = T2im; };
# 2645 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 88] * (double) +0.382683432365090; T1im = Y[block + 88 + 1] * (double) +0.382683432365090; T2re = Y[block + 88 + 1] * (double) +0.923879532511287; T2im = Y[block + 88] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 88] = T2re; Y[block + 88 + 1] = T2im; };
# 2654 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 90] * (double) +0.290284677254462; T1im = Y[block + 90 + 1] * (double) +0.290284677254462; T2re = Y[block + 90 + 1] * (double) +0.956940335732209; T2im = Y[block + 90] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 90] = T2re; Y[block + 90 + 1] = T2im; };
# 2663 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 92] * (double) +0.195090322016128; T1im = Y[block + 92 + 1] * (double) +0.195090322016128; T2re = Y[block + 92 + 1] * (double) +0.980785280403230; T2im = Y[block + 92] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 92] = T2re; Y[block + 92 + 1] = T2im; };
# 2672 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 94] * (double) +0.098017140329561; T1im = Y[block + 94 + 1] * (double) +0.098017140329561; T2re = Y[block + 94 + 1] * (double) +0.995184726672197; T2im = Y[block + 94] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 94] = T2re; Y[block + 94 + 1] = T2im; };
# 2681 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 32] + Y[block + 96 + 1]; T2im = Y[block + 32 + 1] - Y[block + 96]; Y[block + 32] = Y[block + 32] - Y[block + 96 + 1]; Y[block + 32 + 1] = Y[block + 32 + 1] + Y[block + 96]; Y[block + 96] = T2re; Y[block + 96 + 1] = T2im; };
# 2690 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 98] * (double) -0.098017140329561; T1im = Y[block + 98 + 1] * (double) -0.098017140329561; T2re = Y[block + 98 + 1] * (double) +0.995184726672197; T2im = Y[block + 98] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[block + 34] - T1re; T2im = Y[block + 34 + 1] - T1im; Y[block + 34] = Y[block + 34] + T1re; Y[block + 34 + 1] = Y[block + 34 + 1] + T1im; Y[block + 98] = T2re; Y[block + 98 + 1] = T2im; };
# 2699 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 100] * (double) -0.195090322016128; T1im = Y[block + 100 + 1] * (double) -0.195090322016128; T2re = Y[block + 100 + 1] * (double) +0.980785280403230; T2im = Y[block + 100] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 36] - T1re; T2im = Y[block + 36 + 1] - T1im; Y[block + 36] = Y[block + 36] + T1re; Y[block + 36 + 1] = Y[block + 36 + 1] + T1im; Y[block + 100] = T2re; Y[block + 100 + 1] = T2im; };
# 2708 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 102] * (double) -0.290284677254462; T1im = Y[block + 102 + 1] * (double) -0.290284677254462; T2re = Y[block + 102 + 1] * (double) +0.956940335732209; T2im = Y[block + 102] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[block + 38] - T1re; T2im = Y[block + 38 + 1] - T1im; Y[block + 38] = Y[block + 38] + T1re; Y[block + 38 + 1] = Y[block + 38 + 1] + T1im; Y[block + 102] = T2re; Y[block + 102 + 1] = T2im; };
# 2717 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 104] * (double) -0.382683432365090; T1im = Y[block + 104 + 1] * (double) -0.382683432365090; T2re = Y[block + 104 + 1] * (double) +0.923879532511287; T2im = Y[block + 104] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 40] - T1re; T2im = Y[block + 40 + 1] - T1im; Y[block + 40] = Y[block + 40] + T1re; Y[block + 40 + 1] = Y[block + 40 + 1] + T1im; Y[block + 104] = T2re; Y[block + 104 + 1] = T2im; };
# 2726 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 106] * (double) -0.471396736825998; T1im = Y[block + 106 + 1] * (double) -0.471396736825998; T2re = Y[block + 106 + 1] * (double) +0.881921264348355; T2im = Y[block + 106] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[block + 42] - T1re; T2im = Y[block + 42 + 1] - T1im; Y[block + 42] = Y[block + 42] + T1re; Y[block + 42 + 1] = Y[block + 42 + 1] + T1im; Y[block + 106] = T2re; Y[block + 106 + 1] = T2im; };
# 2735 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 108] * (double) -0.555570233019602; T1im = Y[block + 108 + 1] * (double) -0.555570233019602; T2re = Y[block + 108 + 1] * (double) +0.831469612302545; T2im = Y[block + 108] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 44] - T1re; T2im = Y[block + 44 + 1] - T1im; Y[block + 44] = Y[block + 44] + T1re; Y[block + 44 + 1] = Y[block + 44 + 1] + T1im; Y[block + 108] = T2re; Y[block + 108 + 1] = T2im; };
# 2744 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 110] * (double) -0.634393284163645; T1im = Y[block + 110 + 1] * (double) -0.634393284163645; T2re = Y[block + 110 + 1] * (double) +0.773010453362737; T2im = Y[block + 110] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[block + 46] - T1re; T2im = Y[block + 46 + 1] - T1im; Y[block + 46] = Y[block + 46] + T1re; Y[block + 46 + 1] = Y[block + 46 + 1] + T1im; Y[block + 110] = T2re; Y[block + 110 + 1] = T2im; };
# 2753 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 112] * (double) -0.707106781186547; T1im = Y[block + 112 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 48] - T1re; T2im = Y[block + 48 + 1] - T1im; Y[block + 48] = Y[block + 48] + T1re; Y[block + 48 + 1] = Y[block + 48 + 1] + T1im; Y[block + 112] = T2re; Y[block + 112 + 1] = T2im; };
# 2762 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 114] * (double) -0.773010453362737; T1im = Y[block + 114 + 1] * (double) -0.773010453362737; T2re = Y[block + 114 + 1] * (double) +0.634393284163645; T2im = Y[block + 114] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[block + 50] - T1re; T2im = Y[block + 50 + 1] - T1im; Y[block + 50] = Y[block + 50] + T1re; Y[block + 50 + 1] = Y[block + 50 + 1] + T1im; Y[block + 114] = T2re; Y[block + 114 + 1] = T2im; };
# 2771 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 116] * (double) -0.831469612302545; T1im = Y[block + 116 + 1] * (double) -0.831469612302545; T2re = Y[block + 116 + 1] * (double) +0.555570233019602; T2im = Y[block + 116] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 52] - T1re; T2im = Y[block + 52 + 1] - T1im; Y[block + 52] = Y[block + 52] + T1re; Y[block + 52 + 1] = Y[block + 52 + 1] + T1im; Y[block + 116] = T2re; Y[block + 116 + 1] = T2im; };
# 2780 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 118] * (double) -0.881921264348355; T1im = Y[block + 118 + 1] * (double) -0.881921264348355; T2re = Y[block + 118 + 1] * (double) +0.471396736825998; T2im = Y[block + 118] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[block + 54] - T1re; T2im = Y[block + 54 + 1] - T1im; Y[block + 54] = Y[block + 54] + T1re; Y[block + 54 + 1] = Y[block + 54 + 1] + T1im; Y[block + 118] = T2re; Y[block + 118 + 1] = T2im; };
# 2789 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 120] * (double) -0.923879532511287; T1im = Y[block + 120 + 1] * (double) -0.923879532511287; T2re = Y[block + 120 + 1] * (double) +0.382683432365090; T2im = Y[block + 120] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 56] - T1re; T2im = Y[block + 56 + 1] - T1im; Y[block + 56] = Y[block + 56] + T1re; Y[block + 56 + 1] = Y[block + 56 + 1] + T1im; Y[block + 120] = T2re; Y[block + 120 + 1] = T2im; };
# 2798 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 122] * (double) -0.956940335732209; T1im = Y[block + 122 + 1] * (double) -0.956940335732209; T2re = Y[block + 122 + 1] * (double) +0.290284677254462; T2im = Y[block + 122] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[block + 58] - T1re; T2im = Y[block + 58 + 1] - T1im; Y[block + 58] = Y[block + 58] + T1re; Y[block + 58 + 1] = Y[block + 58 + 1] + T1im; Y[block + 122] = T2re; Y[block + 122 + 1] = T2im; };
# 2807 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 124] * (double) -0.980785280403230; T1im = Y[block + 124 + 1] * (double) -0.980785280403230; T2re = Y[block + 124 + 1] * (double) +0.195090322016129; T2im = Y[block + 124] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 60] - T1re; T2im = Y[block + 60 + 1] - T1im; Y[block + 60] = Y[block + 60] + T1re; Y[block + 60 + 1] = Y[block + 60 + 1] + T1im; Y[block + 124] = T2re; Y[block + 124 + 1] = T2im; };
# 2816 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 126] * (double) -0.995184726672197; T1im = Y[block + 126 + 1] * (double) -0.995184726672197; T2re = Y[block + 126 + 1] * (double) +0.098017140329561; T2im = Y[block + 126] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[block + 62] - T1re; T2im = Y[block + 62 + 1] - T1im; Y[block + 62] = Y[block + 62] + T1re; Y[block + 62 + 1] = Y[block + 62 + 1] + T1im; Y[block + 126] = T2re; Y[block + 126 + 1] = T2im; };
# 2825 "gslfft.c"
  }


  { register double T2re, T2im; T2re = Y[0] - Y[128]; T2im = Y[0 + 1] - Y[128 + 1]; Y[0] = Y[0] + Y[128]; Y[0 + 1] = Y[0 + 1] + Y[128 + 1]; Y[128] = T2re; Y[128 + 1] = T2im; };
# 2837 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[130] * (double) +0.998795456205172; T1im = Y[130 + 1] * (double) +0.998795456205172; T2re = Y[130 + 1] * (double) +0.049067674327418; T2im = Y[130] * (double) +0.049067674327418; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[130] = T2re; Y[130 + 1] = T2im; };
# 2846 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[132] * (double) +0.995184726672197; T1im = Y[132 + 1] * (double) +0.995184726672197; T2re = Y[132 + 1] * (double) +0.098017140329561; T2im = Y[132] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[132] = T2re; Y[132 + 1] = T2im; };
# 2855 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[134] * (double) +0.989176509964781; T1im = Y[134 + 1] * (double) +0.989176509964781; T2re = Y[134 + 1] * (double) +0.146730474455362; T2im = Y[134] * (double) +0.146730474455362; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[134] = T2re; Y[134 + 1] = T2im; };
# 2864 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[136] * (double) +0.980785280403230; T1im = Y[136 + 1] * (double) +0.980785280403230; T2re = Y[136 + 1] * (double) +0.195090322016128; T2im = Y[136] * (double) +0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[136] = T2re; Y[136 + 1] = T2im; };
# 2873 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[138] * (double) +0.970031253194544; T1im = Y[138 + 1] * (double) +0.970031253194544; T2re = Y[138 + 1] * (double) +0.242980179903264; T2im = Y[138] * (double) +0.242980179903264; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[138] = T2re; Y[138 + 1] = T2im; };
# 2882 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[140] * (double) +0.956940335732209; T1im = Y[140 + 1] * (double) +0.956940335732209; T2re = Y[140 + 1] * (double) +0.290284677254462; T2im = Y[140] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[140] = T2re; Y[140 + 1] = T2im; };
# 2891 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[142] * (double) +0.941544065183021; T1im = Y[142 + 1] * (double) +0.941544065183021; T2re = Y[142 + 1] * (double) +0.336889853392220; T2im = Y[142] * (double) +0.336889853392220; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[142] = T2re; Y[142 + 1] = T2im; };
# 2900 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[144] * (double) +0.923879532511287; T1im = Y[144 + 1] * (double) +0.923879532511287; T2re = Y[144 + 1] * (double) +0.382683432365090; T2im = Y[144] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[16] - T1re; T2im = Y[16 + 1] - T1im; Y[16] = Y[16] + T1re; Y[16 + 1] = Y[16 + 1] + T1im; Y[144] = T2re; Y[144 + 1] = T2im; };
# 2909 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[146] * (double) +0.903989293123443; T1im = Y[146 + 1] * (double) +0.903989293123443; T2re = Y[146 + 1] * (double) +0.427555093430282; T2im = Y[146] * (double) +0.427555093430282; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[146] = T2re; Y[146 + 1] = T2im; };
# 2918 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[148] * (double) +0.881921264348355; T1im = Y[148 + 1] * (double) +0.881921264348355; T2re = Y[148 + 1] * (double) +0.471396736825998; T2im = Y[148] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[148] = T2re; Y[148 + 1] = T2im; };
# 2927 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[150] * (double) +0.857728610000272; T1im = Y[150 + 1] * (double) +0.857728610000272; T2re = Y[150 + 1] * (double) +0.514102744193222; T2im = Y[150] * (double) +0.514102744193222; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[150] = T2re; Y[150 + 1] = T2im; };
# 2936 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[152] * (double) +0.831469612302545; T1im = Y[152 + 1] * (double) +0.831469612302545; T2re = Y[152 + 1] * (double) +0.555570233019602; T2im = Y[152] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[152] = T2re; Y[152 + 1] = T2im; };
# 2945 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[154] * (double) +0.803207531480645; T1im = Y[154 + 1] * (double) +0.803207531480645; T2re = Y[154 + 1] * (double) +0.595699304492433; T2im = Y[154] * (double) +0.595699304492433; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[154] = T2re; Y[154 + 1] = T2im; };
# 2954 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[156] * (double) +0.773010453362737; T1im = Y[156 + 1] * (double) +0.773010453362737; T2re = Y[156 + 1] * (double) +0.634393284163645; T2im = Y[156] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[156] = T2re; Y[156 + 1] = T2im; };
# 2963 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[158] * (double) +0.740951125354959; T1im = Y[158 + 1] * (double) +0.740951125354959; T2re = Y[158 + 1] * (double) +0.671558954847018; T2im = Y[158] * (double) +0.671558954847018; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[158] = T2re; Y[158 + 1] = T2im; };
# 2972 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[160] * (double) +0.707106781186548; T1im = Y[160 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[32] - T1re; T2im = Y[32 + 1] - T1im; Y[32] = Y[32] + T1re; Y[32 + 1] = Y[32 + 1] + T1im; Y[160] = T2re; Y[160 + 1] = T2im; };
# 2981 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[162] * (double) +0.671558954847018; T1im = Y[162 + 1] * (double) +0.671558954847018; T2re = Y[162 + 1] * (double) +0.740951125354959; T2im = Y[162] * (double) +0.740951125354959; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[162] = T2re; Y[162 + 1] = T2im; };
# 2990 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[164] * (double) +0.634393284163645; T1im = Y[164 + 1] * (double) +0.634393284163645; T2re = Y[164 + 1] * (double) +0.773010453362737; T2im = Y[164] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[164] = T2re; Y[164 + 1] = T2im; };
# 2999 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[166] * (double) +0.595699304492433; T1im = Y[166 + 1] * (double) +0.595699304492433; T2re = Y[166 + 1] * (double) +0.803207531480645; T2im = Y[166] * (double) +0.803207531480645; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[166] = T2re; Y[166 + 1] = T2im; };
# 3008 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[168] * (double) +0.555570233019602; T1im = Y[168 + 1] * (double) +0.555570233019602; T2re = Y[168 + 1] * (double) +0.831469612302545; T2im = Y[168] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[40] - T1re; T2im = Y[40 + 1] - T1im; Y[40] = Y[40] + T1re; Y[40 + 1] = Y[40 + 1] + T1im; Y[168] = T2re; Y[168 + 1] = T2im; };
# 3017 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[170] * (double) +0.514102744193222; T1im = Y[170 + 1] * (double) +0.514102744193222; T2re = Y[170 + 1] * (double) +0.857728610000272; T2im = Y[170] * (double) +0.857728610000272; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[170] = T2re; Y[170 + 1] = T2im; };
# 3026 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[172] * (double) +0.471396736825998; T1im = Y[172 + 1] * (double) +0.471396736825998; T2re = Y[172 + 1] * (double) +0.881921264348355; T2im = Y[172] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[172] = T2re; Y[172 + 1] = T2im; };
# 3035 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[174] * (double) +0.427555093430282; T1im = Y[174 + 1] * (double) +0.427555093430282; T2re = Y[174 + 1] * (double) +0.903989293123443; T2im = Y[174] * (double) +0.903989293123443; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[174] = T2re; Y[174 + 1] = T2im; };
# 3044 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[176] * (double) +0.382683432365090; T1im = Y[176 + 1] * (double) +0.382683432365090; T2re = Y[176 + 1] * (double) +0.923879532511287; T2im = Y[176] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[48] - T1re; T2im = Y[48 + 1] - T1im; Y[48] = Y[48] + T1re; Y[48 + 1] = Y[48 + 1] + T1im; Y[176] = T2re; Y[176 + 1] = T2im; };
# 3053 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[178] * (double) +0.336889853392220; T1im = Y[178 + 1] * (double) +0.336889853392220; T2re = Y[178 + 1] * (double) +0.941544065183021; T2im = Y[178] * (double) +0.941544065183021; T1re -= T2re; T1im += T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[178] = T2re; Y[178 + 1] = T2im; };
# 3062 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[180] * (double) +0.290284677254462; T1im = Y[180 + 1] * (double) +0.290284677254462; T2re = Y[180 + 1] * (double) +0.956940335732209; T2im = Y[180] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[52] - T1re; T2im = Y[52 + 1] - T1im; Y[52] = Y[52] + T1re; Y[52 + 1] = Y[52 + 1] + T1im; Y[180] = T2re; Y[180 + 1] = T2im; };
# 3071 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[182] * (double) +0.242980179903264; T1im = Y[182 + 1] * (double) +0.242980179903264; T2re = Y[182 + 1] * (double) +0.970031253194544; T2im = Y[182] * (double) +0.970031253194544; T1re -= T2re; T1im += T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[182] = T2re; Y[182 + 1] = T2im; };
# 3080 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[184] * (double) +0.195090322016128; T1im = Y[184 + 1] * (double) +0.195090322016128; T2re = Y[184 + 1] * (double) +0.980785280403230; T2im = Y[184] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[56] - T1re; T2im = Y[56 + 1] - T1im; Y[56] = Y[56] + T1re; Y[56 + 1] = Y[56 + 1] + T1im; Y[184] = T2re; Y[184 + 1] = T2im; };
# 3089 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[186] * (double) +0.146730474455362; T1im = Y[186 + 1] * (double) +0.146730474455362; T2re = Y[186 + 1] * (double) +0.989176509964781; T2im = Y[186] * (double) +0.989176509964781; T1re -= T2re; T1im += T2im; T2re = Y[58] - T1re; T2im = Y[58 + 1] - T1im; Y[58] = Y[58] + T1re; Y[58 + 1] = Y[58 + 1] + T1im; Y[186] = T2re; Y[186 + 1] = T2im; };
# 3098 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[188] * (double) +0.098017140329561; T1im = Y[188 + 1] * (double) +0.098017140329561; T2re = Y[188 + 1] * (double) +0.995184726672197; T2im = Y[188] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[60] - T1re; T2im = Y[60 + 1] - T1im; Y[60] = Y[60] + T1re; Y[60 + 1] = Y[60 + 1] + T1im; Y[188] = T2re; Y[188 + 1] = T2im; };
# 3107 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[190] * (double) +0.049067674327418; T1im = Y[190 + 1] * (double) +0.049067674327418; T2re = Y[190 + 1] * (double) +0.998795456205172; T2im = Y[190] * (double) +0.998795456205172; T1re -= T2re; T1im += T2im; T2re = Y[62] - T1re; T2im = Y[62 + 1] - T1im; Y[62] = Y[62] + T1re; Y[62 + 1] = Y[62 + 1] + T1im; Y[190] = T2re; Y[190 + 1] = T2im; };
# 3116 "gslfft.c"
  { register double T2re, T2im; T2re = Y[64] + Y[192 + 1]; T2im = Y[64 + 1] - Y[192]; Y[64] = Y[64] - Y[192 + 1]; Y[64 + 1] = Y[64 + 1] + Y[192]; Y[192] = T2re; Y[192 + 1] = T2im; };
# 3125 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[194] * (double) -0.049067674327418; T1im = Y[194 + 1] * (double) -0.049067674327418; T2re = Y[194 + 1] * (double) +0.998795456205172; T2im = Y[194] * (double) +0.998795456205172; T1re -= T2re; T1im += T2im; T2re = Y[66] - T1re; T2im = Y[66 + 1] - T1im; Y[66] = Y[66] + T1re; Y[66 + 1] = Y[66 + 1] + T1im; Y[194] = T2re; Y[194 + 1] = T2im; };
# 3134 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[196] * (double) -0.098017140329561; T1im = Y[196 + 1] * (double) -0.098017140329561; T2re = Y[196 + 1] * (double) +0.995184726672197; T2im = Y[196] * (double) +0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[68] - T1re; T2im = Y[68 + 1] - T1im; Y[68] = Y[68] + T1re; Y[68 + 1] = Y[68 + 1] + T1im; Y[196] = T2re; Y[196 + 1] = T2im; };
# 3143 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[198] * (double) -0.146730474455362; T1im = Y[198 + 1] * (double) -0.146730474455362; T2re = Y[198 + 1] * (double) +0.989176509964781; T2im = Y[198] * (double) +0.989176509964781; T1re -= T2re; T1im += T2im; T2re = Y[70] - T1re; T2im = Y[70 + 1] - T1im; Y[70] = Y[70] + T1re; Y[70 + 1] = Y[70 + 1] + T1im; Y[198] = T2re; Y[198 + 1] = T2im; };
# 3152 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[200] * (double) -0.195090322016128; T1im = Y[200 + 1] * (double) -0.195090322016128; T2re = Y[200 + 1] * (double) +0.980785280403230; T2im = Y[200] * (double) +0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[72] - T1re; T2im = Y[72 + 1] - T1im; Y[72] = Y[72] + T1re; Y[72 + 1] = Y[72 + 1] + T1im; Y[200] = T2re; Y[200 + 1] = T2im; };
# 3161 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[202] * (double) -0.242980179903264; T1im = Y[202 + 1] * (double) -0.242980179903264; T2re = Y[202 + 1] * (double) +0.970031253194544; T2im = Y[202] * (double) +0.970031253194544; T1re -= T2re; T1im += T2im; T2re = Y[74] - T1re; T2im = Y[74 + 1] - T1im; Y[74] = Y[74] + T1re; Y[74 + 1] = Y[74 + 1] + T1im; Y[202] = T2re; Y[202 + 1] = T2im; };
# 3170 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[204] * (double) -0.290284677254462; T1im = Y[204 + 1] * (double) -0.290284677254462; T2re = Y[204 + 1] * (double) +0.956940335732209; T2im = Y[204] * (double) +0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[76] - T1re; T2im = Y[76 + 1] - T1im; Y[76] = Y[76] + T1re; Y[76 + 1] = Y[76 + 1] + T1im; Y[204] = T2re; Y[204 + 1] = T2im; };
# 3179 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[206] * (double) -0.336889853392220; T1im = Y[206 + 1] * (double) -0.336889853392220; T2re = Y[206 + 1] * (double) +0.941544065183021; T2im = Y[206] * (double) +0.941544065183021; T1re -= T2re; T1im += T2im; T2re = Y[78] - T1re; T2im = Y[78 + 1] - T1im; Y[78] = Y[78] + T1re; Y[78 + 1] = Y[78 + 1] + T1im; Y[206] = T2re; Y[206 + 1] = T2im; };
# 3188 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[208] * (double) -0.382683432365090; T1im = Y[208 + 1] * (double) -0.382683432365090; T2re = Y[208 + 1] * (double) +0.923879532511287; T2im = Y[208] * (double) +0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[80] - T1re; T2im = Y[80 + 1] - T1im; Y[80] = Y[80] + T1re; Y[80 + 1] = Y[80 + 1] + T1im; Y[208] = T2re; Y[208 + 1] = T2im; };
# 3197 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[210] * (double) -0.427555093430282; T1im = Y[210 + 1] * (double) -0.427555093430282; T2re = Y[210 + 1] * (double) +0.903989293123443; T2im = Y[210] * (double) +0.903989293123443; T1re -= T2re; T1im += T2im; T2re = Y[82] - T1re; T2im = Y[82 + 1] - T1im; Y[82] = Y[82] + T1re; Y[82 + 1] = Y[82 + 1] + T1im; Y[210] = T2re; Y[210 + 1] = T2im; };
# 3206 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[212] * (double) -0.471396736825998; T1im = Y[212 + 1] * (double) -0.471396736825998; T2re = Y[212 + 1] * (double) +0.881921264348355; T2im = Y[212] * (double) +0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[84] - T1re; T2im = Y[84 + 1] - T1im; Y[84] = Y[84] + T1re; Y[84 + 1] = Y[84 + 1] + T1im; Y[212] = T2re; Y[212 + 1] = T2im; };
# 3215 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[214] * (double) -0.514102744193222; T1im = Y[214 + 1] * (double) -0.514102744193222; T2re = Y[214 + 1] * (double) +0.857728610000272; T2im = Y[214] * (double) +0.857728610000272; T1re -= T2re; T1im += T2im; T2re = Y[86] - T1re; T2im = Y[86 + 1] - T1im; Y[86] = Y[86] + T1re; Y[86 + 1] = Y[86 + 1] + T1im; Y[214] = T2re; Y[214 + 1] = T2im; };
# 3224 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[216] * (double) -0.555570233019602; T1im = Y[216 + 1] * (double) -0.555570233019602; T2re = Y[216 + 1] * (double) +0.831469612302545; T2im = Y[216] * (double) +0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[88] - T1re; T2im = Y[88 + 1] - T1im; Y[88] = Y[88] + T1re; Y[88 + 1] = Y[88 + 1] + T1im; Y[216] = T2re; Y[216 + 1] = T2im; };
# 3233 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[218] * (double) -0.595699304492433; T1im = Y[218 + 1] * (double) -0.595699304492433; T2re = Y[218 + 1] * (double) +0.803207531480645; T2im = Y[218] * (double) +0.803207531480645; T1re -= T2re; T1im += T2im; T2re = Y[90] - T1re; T2im = Y[90 + 1] - T1im; Y[90] = Y[90] + T1re; Y[90 + 1] = Y[90 + 1] + T1im; Y[218] = T2re; Y[218 + 1] = T2im; };
# 3242 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[220] * (double) -0.634393284163645; T1im = Y[220 + 1] * (double) -0.634393284163645; T2re = Y[220 + 1] * (double) +0.773010453362737; T2im = Y[220] * (double) +0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[92] - T1re; T2im = Y[92 + 1] - T1im; Y[92] = Y[92] + T1re; Y[92 + 1] = Y[92 + 1] + T1im; Y[220] = T2re; Y[220 + 1] = T2im; };
# 3251 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[222] * (double) -0.671558954847018; T1im = Y[222 + 1] * (double) -0.671558954847018; T2re = Y[222 + 1] * (double) +0.740951125354959; T2im = Y[222] * (double) +0.740951125354959; T1re -= T2re; T1im += T2im; T2re = Y[94] - T1re; T2im = Y[94 + 1] - T1im; Y[94] = Y[94] + T1re; Y[94 + 1] = Y[94 + 1] + T1im; Y[222] = T2re; Y[222 + 1] = T2im; };
# 3260 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[224] * (double) -0.707106781186547; T1im = Y[224 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[96] - T1re; T2im = Y[96 + 1] - T1im; Y[96] = Y[96] + T1re; Y[96 + 1] = Y[96 + 1] + T1im; Y[224] = T2re; Y[224 + 1] = T2im; };
# 3269 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[226] * (double) -0.740951125354959; T1im = Y[226 + 1] * (double) -0.740951125354959; T2re = Y[226 + 1] * (double) +0.671558954847019; T2im = Y[226] * (double) +0.671558954847019; T1re -= T2re; T1im += T2im; T2re = Y[98] - T1re; T2im = Y[98 + 1] - T1im; Y[98] = Y[98] + T1re; Y[98 + 1] = Y[98 + 1] + T1im; Y[226] = T2re; Y[226 + 1] = T2im; };
# 3278 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[228] * (double) -0.773010453362737; T1im = Y[228 + 1] * (double) -0.773010453362737; T2re = Y[228 + 1] * (double) +0.634393284163645; T2im = Y[228] * (double) +0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[100] - T1re; T2im = Y[100 + 1] - T1im; Y[100] = Y[100] + T1re; Y[100 + 1] = Y[100 + 1] + T1im; Y[228] = T2re; Y[228 + 1] = T2im; };
# 3287 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[230] * (double) -0.803207531480645; T1im = Y[230 + 1] * (double) -0.803207531480645; T2re = Y[230 + 1] * (double) +0.595699304492433; T2im = Y[230] * (double) +0.595699304492433; T1re -= T2re; T1im += T2im; T2re = Y[102] - T1re; T2im = Y[102 + 1] - T1im; Y[102] = Y[102] + T1re; Y[102 + 1] = Y[102 + 1] + T1im; Y[230] = T2re; Y[230 + 1] = T2im; };
# 3296 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[232] * (double) -0.831469612302545; T1im = Y[232 + 1] * (double) -0.831469612302545; T2re = Y[232 + 1] * (double) +0.555570233019602; T2im = Y[232] * (double) +0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[104] - T1re; T2im = Y[104 + 1] - T1im; Y[104] = Y[104] + T1re; Y[104 + 1] = Y[104 + 1] + T1im; Y[232] = T2re; Y[232 + 1] = T2im; };
# 3305 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[234] * (double) -0.857728610000272; T1im = Y[234 + 1] * (double) -0.857728610000272; T2re = Y[234 + 1] * (double) +0.514102744193222; T2im = Y[234] * (double) +0.514102744193222; T1re -= T2re; T1im += T2im; T2re = Y[106] - T1re; T2im = Y[106 + 1] - T1im; Y[106] = Y[106] + T1re; Y[106 + 1] = Y[106 + 1] + T1im; Y[234] = T2re; Y[234 + 1] = T2im; };
# 3314 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[236] * (double) -0.881921264348355; T1im = Y[236 + 1] * (double) -0.881921264348355; T2re = Y[236 + 1] * (double) +0.471396736825998; T2im = Y[236] * (double) +0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[108] - T1re; T2im = Y[108 + 1] - T1im; Y[108] = Y[108] + T1re; Y[108 + 1] = Y[108 + 1] + T1im; Y[236] = T2re; Y[236 + 1] = T2im; };
# 3323 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[238] * (double) -0.903989293123443; T1im = Y[238 + 1] * (double) -0.903989293123443; T2re = Y[238 + 1] * (double) +0.427555093430282; T2im = Y[238] * (double) +0.427555093430282; T1re -= T2re; T1im += T2im; T2re = Y[110] - T1re; T2im = Y[110 + 1] - T1im; Y[110] = Y[110] + T1re; Y[110 + 1] = Y[110 + 1] + T1im; Y[238] = T2re; Y[238 + 1] = T2im; };
# 3332 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[240] * (double) -0.923879532511287; T1im = Y[240 + 1] * (double) -0.923879532511287; T2re = Y[240 + 1] * (double) +0.382683432365090; T2im = Y[240] * (double) +0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[112] - T1re; T2im = Y[112 + 1] - T1im; Y[112] = Y[112] + T1re; Y[112 + 1] = Y[112 + 1] + T1im; Y[240] = T2re; Y[240 + 1] = T2im; };
# 3341 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[242] * (double) -0.941544065183021; T1im = Y[242 + 1] * (double) -0.941544065183021; T2re = Y[242 + 1] * (double) +0.336889853392220; T2im = Y[242] * (double) +0.336889853392220; T1re -= T2re; T1im += T2im; T2re = Y[114] - T1re; T2im = Y[114 + 1] - T1im; Y[114] = Y[114] + T1re; Y[114 + 1] = Y[114 + 1] + T1im; Y[242] = T2re; Y[242 + 1] = T2im; };
# 3350 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[244] * (double) -0.956940335732209; T1im = Y[244 + 1] * (double) -0.956940335732209; T2re = Y[244 + 1] * (double) +0.290284677254462; T2im = Y[244] * (double) +0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[116] - T1re; T2im = Y[116 + 1] - T1im; Y[116] = Y[116] + T1re; Y[116 + 1] = Y[116 + 1] + T1im; Y[244] = T2re; Y[244 + 1] = T2im; };
# 3359 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[246] * (double) -0.970031253194544; T1im = Y[246 + 1] * (double) -0.970031253194544; T2re = Y[246 + 1] * (double) +0.242980179903264; T2im = Y[246] * (double) +0.242980179903264; T1re -= T2re; T1im += T2im; T2re = Y[118] - T1re; T2im = Y[118 + 1] - T1im; Y[118] = Y[118] + T1re; Y[118 + 1] = Y[118 + 1] + T1im; Y[246] = T2re; Y[246 + 1] = T2im; };
# 3368 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[248] * (double) -0.980785280403230; T1im = Y[248 + 1] * (double) -0.980785280403230; T2re = Y[248 + 1] * (double) +0.195090322016129; T2im = Y[248] * (double) +0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[120] - T1re; T2im = Y[120 + 1] - T1im; Y[120] = Y[120] + T1re; Y[120 + 1] = Y[120 + 1] + T1im; Y[248] = T2re; Y[248 + 1] = T2im; };
# 3377 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[250] * (double) -0.989176509964781; T1im = Y[250 + 1] * (double) -0.989176509964781; T2re = Y[250 + 1] * (double) +0.146730474455362; T2im = Y[250] * (double) +0.146730474455362; T1re -= T2re; T1im += T2im; T2re = Y[122] - T1re; T2im = Y[122 + 1] - T1im; Y[122] = Y[122] + T1re; Y[122 + 1] = Y[122 + 1] + T1im; Y[250] = T2re; Y[250 + 1] = T2im; };
# 3386 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[252] * (double) -0.995184726672197; T1im = Y[252 + 1] * (double) -0.995184726672197; T2re = Y[252 + 1] * (double) +0.098017140329561; T2im = Y[252] * (double) +0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[124] - T1re; T2im = Y[124 + 1] - T1im; Y[124] = Y[124] + T1re; Y[124 + 1] = Y[124 + 1] + T1im; Y[252] = T2re; Y[252 + 1] = T2im; };
# 3395 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[254] * (double) -0.998795456205172; T1im = Y[254 + 1] * (double) -0.998795456205172; T2re = Y[254 + 1] * (double) +0.049067674327418; T2im = Y[254] * (double) +0.049067674327418; T1re -= T2re; T1im += T2im; T2re = Y[126] - T1re; T2im = Y[126 + 1] - T1im; Y[126] = Y[126] + T1re; Y[126 + 1] = Y[126 + 1] + T1im; Y[254] = T2re; Y[254 + 1] = T2im; };
# 3404 "gslfft.c"
}







static void
gsl_power2_fft128analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (128, X, Y);
# 3434 "gslfft.c"
  gsl_power2_fft128analysis_skip2 (X, Y);
}







static void
gsl_power2_fft256analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 3464 "gslfft.c"
  gsl_power2_fft128analysis_skip2 (X, Y);
  gsl_power2_fft128analysis_skip2 (X + 256, Y + 256);


  {
    static const double Wconst256[] = {
      +0.999698818696204, +0.024541228522912,
      +0.998795456205172, +0.049067674327418,
      +0.997290456678690, +0.073564563599667,
      +0.995184726672197, +0.098017140329561,
      +0.992479534598710, +0.122410675199216,
      +0.989176509964781, +0.146730474455362,
      +0.985277642388941, +0.170961888760301,
      +0.980785280403230, +0.195090322016128,
      +0.975702130038529, +0.219101240156870,
      +0.970031253194544, +0.242980179903264,
      +0.963776065795440, +0.266712757474898,
      +0.956940335732209, +0.290284677254462,
      +0.949528180593037, +0.313681740398892,
      +0.941544065183021, +0.336889853392220,
      +0.932992798834739, +0.359895036534988,
      +0.923879532511287, +0.382683432365090,
      +0.914209755703531, +0.405241314004990,
      +0.903989293123443, +0.427555093430282,
      +0.893224301195515, +0.449611329654607,
      +0.881921264348355, +0.471396736825998,
      +0.870086991108711, +0.492898192229784,
      +0.857728610000272, +0.514102744193222,
      +0.844853565249707, +0.534997619887097,
      +0.831469612302545, +0.555570233019602,
      +0.817584813151584, +0.575808191417845,
      +0.803207531480645, +0.595699304492433,
      +0.788346427626606, +0.615231590580627,
      +0.773010453362737, +0.634393284163645,
      +0.757208846506485, +0.653172842953777,
      +0.740951125354959, +0.671558954847018,
      +0.724247082951467, +0.689540544737067,
      +0.707106781186548, +0.707106781186547,
      +0.689540544737067, +0.724247082951467,
      +0.671558954847018, +0.740951125354959,
      +0.653172842953777, +0.757208846506484,
      +0.634393284163645, +0.773010453362737,
      +0.615231590580627, +0.788346427626606,
      +0.595699304492433, +0.803207531480645,
      +0.575808191417845, +0.817584813151584,
      +0.555570233019602, +0.831469612302545,
      +0.534997619887097, +0.844853565249707,
      +0.514102744193222, +0.857728610000272,
      +0.492898192229784, +0.870086991108711,
      +0.471396736825998, +0.881921264348355,
      +0.449611329654607, +0.893224301195515,
      +0.427555093430282, +0.903989293123443,
      +0.405241314004990, +0.914209755703531,
      +0.382683432365090, +0.923879532511287,
      +0.359895036534988, +0.932992798834739,
      +0.336889853392220, +0.941544065183021,
      +0.313681740398892, +0.949528180593037,
      +0.290284677254462, +0.956940335732209,
      +0.266712757474898, +0.963776065795440,
      +0.242980179903264, +0.970031253194544,
      +0.219101240156870, +0.975702130038529,
      +0.195090322016128, +0.980785280403230,
      +0.170961888760301, +0.985277642388941,
      +0.146730474455362, +0.989176509964781,
      +0.122410675199216, +0.992479534598710,
      +0.098017140329561, +0.995184726672197,
      +0.073564563599667, +0.997290456678690,
      +0.049067674327418, +0.998795456205172,
      +0.024541228522912, +0.999698818696204,
    };
    const double *W = Wconst256 - 2;
    double *Z = Y + 128;
    for (offset = 0; offset < 512; offset += 512) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 256]; T2im = Y[offset + 1] - Y[offset + 256 + 1]; Y[offset] = Y[offset] + Y[offset + 256]; Y[offset + 1] = Y[offset + 1] + Y[offset + 256 + 1]; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] + Z[offset + 256 + 1]; T2im = Z[offset + 1] - Z[offset + 256]; Z[offset] = Z[offset] - Z[offset + 256 + 1]; Z[offset + 1] = Z[offset + 1] + Z[offset + 256]; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 128; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 512; block += 512) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 256] * Wre; T1im = Y[offset + 256 + 1] * Wre; T2re = Y[offset + 256 + 1] * Wim; T2im = Y[offset + 256] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 256] * Wim; T1im = Z[offset + 256 + 1] * Wim; T2re = Z[offset + 256 + 1] * Wre; T2im = Z[offset + 256] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] + T1re; T2im = Z[offset + 1] + T1im; Z[offset] = Z[offset] - T1re; Z[offset + 1] = Z[offset + 1] - T1im; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




      }
    }
  }
}







static void
gsl_power2_fft256analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (256, X, Y);
# 3597 "gslfft.c"
  gsl_power2_fft256analysis_skip2 (X, Y);
}







static void
gsl_power2_fft512analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 3627 "gslfft.c"
  gsl_power2_fft128analysis_skip2 (X, Y);
  gsl_power2_fft128analysis_skip2 (X + 256, Y + 256);
  gsl_power2_fft128analysis_skip2 (X + 512, Y + 512);
  gsl_power2_fft128analysis_skip2 (X + 768, Y + 768);


  {
    static const double Wconst256[] = {
      +0.999698818696204, +0.024541228522912,
      +0.998795456205172, +0.049067674327418,
      +0.997290456678690, +0.073564563599667,
      +0.995184726672197, +0.098017140329561,
      +0.992479534598710, +0.122410675199216,
      +0.989176509964781, +0.146730474455362,
      +0.985277642388941, +0.170961888760301,
      +0.980785280403230, +0.195090322016128,
      +0.975702130038529, +0.219101240156870,
      +0.970031253194544, +0.242980179903264,
      +0.963776065795440, +0.266712757474898,
      +0.956940335732209, +0.290284677254462,
      +0.949528180593037, +0.313681740398892,
      +0.941544065183021, +0.336889853392220,
      +0.932992798834739, +0.359895036534988,
      +0.923879532511287, +0.382683432365090,
      +0.914209755703531, +0.405241314004990,
      +0.903989293123443, +0.427555093430282,
      +0.893224301195515, +0.449611329654607,
      +0.881921264348355, +0.471396736825998,
      +0.870086991108711, +0.492898192229784,
      +0.857728610000272, +0.514102744193222,
      +0.844853565249707, +0.534997619887097,
      +0.831469612302545, +0.555570233019602,
      +0.817584813151584, +0.575808191417845,
      +0.803207531480645, +0.595699304492433,
      +0.788346427626606, +0.615231590580627,
      +0.773010453362737, +0.634393284163645,
      +0.757208846506485, +0.653172842953777,
      +0.740951125354959, +0.671558954847018,
      +0.724247082951467, +0.689540544737067,
      +0.707106781186548, +0.707106781186547,
      +0.689540544737067, +0.724247082951467,
      +0.671558954847018, +0.740951125354959,
      +0.653172842953777, +0.757208846506484,
      +0.634393284163645, +0.773010453362737,
      +0.615231590580627, +0.788346427626606,
      +0.595699304492433, +0.803207531480645,
      +0.575808191417845, +0.817584813151584,
      +0.555570233019602, +0.831469612302545,
      +0.534997619887097, +0.844853565249707,
      +0.514102744193222, +0.857728610000272,
      +0.492898192229784, +0.870086991108711,
      +0.471396736825998, +0.881921264348355,
      +0.449611329654607, +0.893224301195515,
      +0.427555093430282, +0.903989293123443,
      +0.405241314004990, +0.914209755703531,
      +0.382683432365090, +0.923879532511287,
      +0.359895036534988, +0.932992798834739,
      +0.336889853392220, +0.941544065183021,
      +0.313681740398892, +0.949528180593037,
      +0.290284677254462, +0.956940335732209,
      +0.266712757474898, +0.963776065795440,
      +0.242980179903264, +0.970031253194544,
      +0.219101240156870, +0.975702130038529,
      +0.195090322016128, +0.980785280403230,
      +0.170961888760301, +0.985277642388941,
      +0.146730474455362, +0.989176509964781,
      +0.122410675199216, +0.992479534598710,
      +0.098017140329561, +0.995184726672197,
      +0.073564563599667, +0.997290456678690,
      +0.049067674327418, +0.998795456205172,
      +0.024541228522912, +0.999698818696204,
    };
    const double *W = Wconst256 - 2;
    double *Z = Y + 128;
    for (offset = 0; offset < 1024; offset += 512) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 256]; T2im = Y[offset + 1] - Y[offset + 256 + 1]; Y[offset] = Y[offset] + Y[offset + 256]; Y[offset + 1] = Y[offset + 1] + Y[offset + 256 + 1]; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] + Z[offset + 256 + 1]; T2im = Z[offset + 1] - Z[offset + 256]; Z[offset] = Z[offset] - Z[offset + 256 + 1]; Z[offset + 1] = Z[offset + 1] + Z[offset + 256]; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 128; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 1024; block += 512) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 256] * Wre; T1im = Y[offset + 256 + 1] * Wre; T2re = Y[offset + 256 + 1] * Wim; T2im = Y[offset + 256] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 256] * Wim; T1im = Z[offset + 256 + 1] * Wim; T2re = Z[offset + 256 + 1] * Wre; T2im = Z[offset + 256] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] + T1re; T2im = Z[offset + 1] + T1im; Z[offset] = Z[offset] - T1re; Z[offset + 1] = Z[offset + 1] - T1im; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




      }
    }
  }


  {
    static const double Wconst512[] = {
      +0.999924701839145, +0.012271538285720,
      +0.999698818696204, +0.024541228522912,
      +0.999322384588350, +0.036807222941359,
      +0.998795456205172, +0.049067674327418,
      +0.998118112900149, +0.061320736302209,
      +0.997290456678690, +0.073564563599667,
      +0.996312612182778, +0.085797312344440,
      +0.995184726672197, +0.098017140329561,
      +0.993906970002356, +0.110222207293883,
      +0.992479534598710, +0.122410675199216,
      +0.990902635427780, +0.134580708507126,
      +0.989176509964781, +0.146730474455362,
      +0.987301418157858, +0.158858143333861,
      +0.985277642388941, +0.170961888760301,
      +0.983105487431216, +0.183039887955141,
      +0.980785280403230, +0.195090322016128,
      +0.978317370719628, +0.207111376192219,
      +0.975702130038529, +0.219101240156870,
      +0.972939952205560, +0.231058108280671,
      +0.970031253194544, +0.242980179903264,
      +0.966976471044852, +0.254865659604515,
      +0.963776065795440, +0.266712757474898,
      +0.960430519415566, +0.278519689385053,
      +0.956940335732209, +0.290284677254462,
      +0.953306040354194, +0.302005949319228,
      +0.949528180593037, +0.313681740398892,
      +0.945607325380521, +0.325310292162263,
      +0.941544065183021, +0.336889853392220,
      +0.937339011912575, +0.348418680249435,
      +0.932992798834739, +0.359895036534988,
      +0.928506080473216, +0.371317193951838,
      +0.923879532511287, +0.382683432365090,
      +0.919113851690058, +0.393992040061048,
      +0.914209755703531, +0.405241314004990,
      +0.909167983090522, +0.416429560097637,
      +0.903989293123443, +0.427555093430282,
      +0.898674465693954, +0.438616238538528,
      +0.893224301195515, +0.449611329654607,
      +0.887639620402854, +0.460538710958240,
      +0.881921264348355, +0.471396736825998,
      +0.876070094195407, +0.482183772079123,
      +0.870086991108711, +0.492898192229784,
      +0.863972856121587, +0.503538383725718,
      +0.857728610000272, +0.514102744193222,
      +0.851355193105265, +0.524589682678469,
      +0.844853565249707, +0.534997619887097,
      +0.838224705554838, +0.545324988422046,
      +0.831469612302545, +0.555570233019602,
      +0.824589302785025, +0.565731810783613,
      +0.817584813151584, +0.575808191417845,
      +0.810457198252595, +0.585797857456439,
      +0.803207531480645, +0.595699304492433,
      +0.795836904608884, +0.605511041404326,
      +0.788346427626606, +0.615231590580627,
      +0.780737228572094, +0.624859488142386,
      +0.773010453362737, +0.634393284163645,
      +0.765167265622459, +0.643831542889791,
      +0.757208846506485, +0.653172842953777,
      +0.749136394523459, +0.662415777590172,
      +0.740951125354959, +0.671558954847018,
      +0.732654271672413, +0.680600997795453,
      +0.724247082951467, +0.689540544737067,
      +0.715730825283819, +0.698376249408973,
      +0.707106781186548, +0.707106781186547,
      +0.698376249408973, +0.715730825283819,
      +0.689540544737067, +0.724247082951467,
      +0.680600997795453, +0.732654271672413,
      +0.671558954847018, +0.740951125354959,
      +0.662415777590172, +0.749136394523459,
      +0.653172842953777, +0.757208846506484,
      +0.643831542889791, +0.765167265622459,
      +0.634393284163645, +0.773010453362737,
      +0.624859488142386, +0.780737228572094,
      +0.615231590580627, +0.788346427626606,
      +0.605511041404326, +0.795836904608883,
      +0.595699304492433, +0.803207531480645,
      +0.585797857456439, +0.810457198252595,
      +0.575808191417845, +0.817584813151584,
      +0.565731810783613, +0.824589302785025,
      +0.555570233019602, +0.831469612302545,
      +0.545324988422046, +0.838224705554838,
      +0.534997619887097, +0.844853565249707,
      +0.524589682678469, +0.851355193105265,
      +0.514102744193222, +0.857728610000272,
      +0.503538383725718, +0.863972856121587,
      +0.492898192229784, +0.870086991108711,
      +0.482183772079123, +0.876070094195407,
      +0.471396736825998, +0.881921264348355,
      +0.460538710958240, +0.887639620402854,
      +0.449611329654607, +0.893224301195515,
      +0.438616238538528, +0.898674465693954,
      +0.427555093430282, +0.903989293123443,
      +0.416429560097637, +0.909167983090522,
      +0.405241314004990, +0.914209755703531,
      +0.393992040061048, +0.919113851690058,
      +0.382683432365090, +0.923879532511287,
      +0.371317193951838, +0.928506080473215,
      +0.359895036534988, +0.932992798834739,
      +0.348418680249435, +0.937339011912575,
      +0.336889853392220, +0.941544065183021,
      +0.325310292162263, +0.945607325380521,
      +0.313681740398892, +0.949528180593037,
      +0.302005949319228, +0.953306040354194,
      +0.290284677254462, +0.956940335732209,
      +0.278519689385053, +0.960430519415566,
      +0.266712757474898, +0.963776065795440,
      +0.254865659604515, +0.966976471044852,
      +0.242980179903264, +0.970031253194544,
      +0.231058108280671, +0.972939952205560,
      +0.219101240156870, +0.975702130038529,
      +0.207111376192219, +0.978317370719628,
      +0.195090322016128, +0.980785280403230,
      +0.183039887955141, +0.983105487431216,
      +0.170961888760301, +0.985277642388941,
      +0.158858143333861, +0.987301418157858,
      +0.146730474455362, +0.989176509964781,
      +0.134580708507126, +0.990902635427780,
      +0.122410675199216, +0.992479534598710,
      +0.110222207293883, +0.993906970002356,
      +0.098017140329561, +0.995184726672197,
      +0.085797312344440, +0.996312612182778,
      +0.073564563599667, +0.997290456678690,
      +0.061320736302209, +0.998118112900149,
      +0.049067674327418, +0.998795456205172,
      +0.036807222941359, +0.999322384588350,
      +0.024541228522912, +0.999698818696204,
      +0.012271538285720, +0.999924701839145,
    };
    const double *W = Wconst512 - 2;
    double *Z = Y + 256;
    for (offset = 0; offset < 1024; offset += 1024) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 512]; T2im = Y[offset + 1] - Y[offset + 512 + 1]; Y[offset] = Y[offset] + Y[offset + 512]; Y[offset + 1] = Y[offset + 1] + Y[offset + 512 + 1]; Y[offset + 512] = T2re; Y[offset + 512 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] + Z[offset + 512 + 1]; T2im = Z[offset + 1] - Z[offset + 512]; Z[offset] = Z[offset] - Z[offset + 512 + 1]; Z[offset + 1] = Z[offset + 1] + Z[offset + 512]; Z[offset + 512] = T2re; Z[offset + 512 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 256; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 1024; block += 1024) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 512] * Wre; T1im = Y[offset + 512 + 1] * Wre; T2re = Y[offset + 512 + 1] * Wim; T2im = Y[offset + 512] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 512] = T2re; Y[offset + 512 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 512] * Wim; T1im = Z[offset + 512 + 1] * Wim; T2re = Z[offset + 512 + 1] * Wre; T2im = Z[offset + 512] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] + T1re; T2im = Z[offset + 1] + T1im; Z[offset] = Z[offset] - T1re; Z[offset + 1] = Z[offset + 1] - T1im; Z[offset + 512] = T2re; Z[offset + 512 + 1] = T2im; };




      }
    }
  }
}







static void
gsl_power2_fft512analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (512, X, Y);
# 3927 "gslfft.c"
  gsl_power2_fft512analysis_skip2 (X, Y);
}







static void
gsl_power2_fft1024analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 3961 "gslfft.c"
  gsl_power2_fft512analysis_skip2 (X, Y);
  gsl_power2_fft512analysis_skip2 (X + 1024, Y + 1024);


  for (offset = 0; offset < 2048; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024]; T2im = Y[offset + 1] - Y[offset + 1024 + 1]; Y[offset] = Y[offset] + Y[offset + 1024]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024 + 1]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = +0.999981175282601; Wim = +0.006135884649154;
  for (butterfly = 2; butterfly < 512; butterfly += 2) {
    for (block = 0; block < 2048; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * +0.006135884649154; T2im = Wre * +0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 512; offset < 2048; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] + Y[offset + 1024 + 1]; T2im = Y[offset + 1] - Y[offset + 1024]; Y[offset] = Y[offset] - Y[offset + 1024 + 1]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = -0.006135884649154; Wim = +0.999981175282601;
  for (butterfly = 514; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 2048; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * +0.006135884649154; T2im = Wre * +0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft1024analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (1024, X, Y);
# 4039 "gslfft.c"
  gsl_power2_fft1024analysis_skip2 (X, Y);
}







static void
gsl_power2_fft2048analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 4073 "gslfft.c"
  gsl_power2_fft512analysis_skip2 (X, Y);
  gsl_power2_fft512analysis_skip2 (X + 1024, Y + 1024);
  gsl_power2_fft512analysis_skip2 (X + 2048, Y + 2048);
  gsl_power2_fft512analysis_skip2 (X + 3072, Y + 3072);


  for (offset = 0; offset < 4096; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024]; T2im = Y[offset + 1] - Y[offset + 1024 + 1]; Y[offset] = Y[offset] + Y[offset + 1024]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024 + 1]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = +0.999981175282601; Wim = +0.006135884649154;
  for (butterfly = 2; butterfly < 512; butterfly += 2) {
    for (block = 0; block < 4096; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * +0.006135884649154; T2im = Wre * +0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 512; offset < 4096; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] + Y[offset + 1024 + 1]; T2im = Y[offset + 1] - Y[offset + 1024]; Y[offset] = Y[offset] - Y[offset + 1024 + 1]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = -0.006135884649154; Wim = +0.999981175282601;
  for (butterfly = 514; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 4096; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * +0.006135884649154; T2im = Wre * +0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }


  for (offset = 0; offset < 4096; offset += 4096) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 2048]; T2im = Y[offset + 1] - Y[offset + 2048 + 1]; Y[offset] = Y[offset] + Y[offset + 2048]; Y[offset + 1] = Y[offset + 1] + Y[offset + 2048 + 1]; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




  }
  Wre = +0.999995293809576; Wim = +0.003067956762966;
  for (butterfly = 2; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 4096; block += 4096) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 2048] * Wre; T1im = Y[offset + 2048 + 1] * Wre; T2re = Y[offset + 2048 + 1] * Wim; T2im = Y[offset + 2048] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000004706190424; T1im = Wim * -0.000004706190424; T2re = Wim * +0.003067956762966; T2im = Wre * +0.003067956762966; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 1024; offset < 4096; offset += 4096) {
    { register double T2re, T2im; T2re = Y[offset] + Y[offset + 2048 + 1]; T2im = Y[offset + 1] - Y[offset + 2048]; Y[offset] = Y[offset] - Y[offset + 2048 + 1]; Y[offset + 1] = Y[offset + 1] + Y[offset + 2048]; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




  }
  Wre = -0.003067956762966; Wim = +0.999995293809576;
  for (butterfly = 1026; butterfly < 2048; butterfly += 2) {
    for (block = 0; block < 4096; block += 4096) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 2048] * Wre; T1im = Y[offset + 2048 + 1] * Wre; T2re = Y[offset + 2048 + 1] * Wim; T2im = Y[offset + 2048] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000004706190424; T1im = Wim * -0.000004706190424; T2re = Wim * +0.003067956762966; T2im = Wre * +0.003067956762966; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft2048analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (2048, X, Y);
# 4195 "gslfft.c"
  gsl_power2_fft2048analysis_skip2 (X, Y);
}







static void
gsl_power2_fft4096analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 4233 "gslfft.c"
  gsl_power2_fft2048analysis_skip2 (X, Y);
  gsl_power2_fft2048analysis_skip2 (X + 4096, Y + 4096);


  for (offset = 0; offset < 8192; offset += 8192) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 4096]; T2im = Y[offset + 1] - Y[offset + 4096 + 1]; Y[offset] = Y[offset] + Y[offset + 4096]; Y[offset + 1] = Y[offset + 1] + Y[offset + 4096 + 1]; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




  }
  Wre = +0.999998823451702; Wim = +0.001533980186285;
  for (butterfly = 2; butterfly < 2048; butterfly += 2) {
    for (block = 0; block < 8192; block += 8192) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 4096] * Wre; T1im = Y[offset + 4096 + 1] * Wre; T2re = Y[offset + 4096 + 1] * Wim; T2im = Y[offset + 4096] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000001176548298; T1im = Wim * -0.000001176548298; T2re = Wim * +0.001533980186285; T2im = Wre * +0.001533980186285; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 2048; offset < 8192; offset += 8192) {
    { register double T2re, T2im; T2re = Y[offset] + Y[offset + 4096 + 1]; T2im = Y[offset + 1] - Y[offset + 4096]; Y[offset] = Y[offset] - Y[offset + 4096 + 1]; Y[offset + 1] = Y[offset + 1] + Y[offset + 4096]; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




  }
  Wre = -0.001533980186285; Wim = +0.999998823451702;
  for (butterfly = 2050; butterfly < 4096; butterfly += 2) {
    for (block = 0; block < 8192; block += 8192) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 4096] * Wre; T1im = Y[offset + 4096 + 1] * Wre; T2re = Y[offset + 4096 + 1] * Wim; T2im = Y[offset + 4096] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000001176548298; T1im = Wim * -0.000001176548298; T2re = Wim * +0.001533980186285; T2im = Wre * +0.001533980186285; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft4096analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (4096, X, Y);
# 4315 "gslfft.c"
  gsl_power2_fft4096analysis_skip2 (X, Y);
}







static void
gsl_power2_fft8192analysis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 4355 "gslfft.c"
  gsl_power2_fft4096analysis_skip2 (X, Y);
  gsl_power2_fft4096analysis_skip2 (X + 8192, Y + 8192);


  for (offset = 0; offset < 16384; offset += 16384) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 8192]; T2im = Y[offset + 1] - Y[offset + 8192 + 1]; Y[offset] = Y[offset] + Y[offset + 8192]; Y[offset + 1] = Y[offset + 1] + Y[offset + 8192 + 1]; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




  }
  Wre = +0.999999705862882; Wim = +0.000766990318743;
  for (butterfly = 2; butterfly < 4096; butterfly += 2) {
    for (block = 0; block < 16384; block += 16384) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 8192] * Wre; T1im = Y[offset + 8192 + 1] * Wre; T2re = Y[offset + 8192 + 1] * Wim; T2im = Y[offset + 8192] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000000294137118; T1im = Wim * -0.000000294137118; T2re = Wim * +0.000766990318743; T2im = Wre * +0.000766990318743; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 4096; offset < 16384; offset += 16384) {
    { register double T2re, T2im; T2re = Y[offset] + Y[offset + 8192 + 1]; T2im = Y[offset + 1] - Y[offset + 8192]; Y[offset] = Y[offset] - Y[offset + 8192 + 1]; Y[offset + 1] = Y[offset + 1] + Y[offset + 8192]; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




  }
  Wre = -0.000766990318743; Wim = +0.999999705862882;
  for (butterfly = 4098; butterfly < 8192; butterfly += 2) {
    for (block = 0; block < 16384; block += 16384) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 8192] * Wre; T1im = Y[offset + 8192 + 1] * Wre; T2re = Y[offset + 8192 + 1] * Wim; T2im = Y[offset + 8192] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000000294137118; T1im = Wim * -0.000000294137118; T2re = Wim * +0.000766990318743; T2im = Wre * +0.000766990318743; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft8192analysis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2analysis (8192, X, Y);
# 4439 "gslfft.c"
  gsl_power2_fft8192analysis_skip2 (X, Y);
}







static void
gsl_power2_fft2synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[2]; T2im = X[0 + 1] - X[2 + 1]; Y[0] = X[0] + X[2]; Y[0 + 1] = X[0 + 1] + X[2 + 1]; Y[2] = T2re * 1.0 / (double) 2; Y[2 + 1] = T2im * 1.0 / (double) 2; Y[0] *= 1.0 / (double) 2; Y[0 + 1] *= 1.0 / (double) 2; };




}







static void
gsl_power2_fft4synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 4490 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] - Y[6 + 1]; T2im = Y[2 + 1] + Y[6]; Y[2] = Y[2] + Y[6 + 1]; Y[2 + 1] = Y[2 + 1] - Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 4499 "gslfft.c"
}







static void
gsl_power2_fft4synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[4]; T2im = X[0 + 1] - X[4 + 1]; Y[0] = X[0] + X[4]; Y[0 + 1] = X[0 + 1] + X[4 + 1]; Y[2] = T2re * 1.0 / (double) 4; Y[2 + 1] = T2im * 1.0 / (double) 4; Y[0] *= 1.0 / (double) 4; Y[0 + 1] *= 1.0 / (double) 4; };




  { register double T2re, T2im; T2re = X[2] - X[6]; T2im = X[2 + 1] - X[6 + 1]; Y[4] = X[2] + X[6]; Y[4 + 1] = X[2 + 1] + X[6 + 1]; Y[6] = T2re * 1.0 / (double) 4; Y[6 + 1] = T2im * 1.0 / (double) 4; Y[4] *= 1.0 / (double) 4; Y[4 + 1] *= 1.0 / (double) 4; };






  gsl_power2_fft4synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft8synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 4557 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 4566 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] - Y[6 + 1]; T2im = Y[2 + 1] + Y[6]; Y[2] = Y[2] + Y[6 + 1]; Y[2 + 1] = Y[2 + 1] - Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 4575 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] - Y[14 + 1]; T2im = Y[10 + 1] + Y[14]; Y[10] = Y[10] + Y[14 + 1]; Y[10 + 1] = Y[10 + 1] - Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 4586 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 4595 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 4604 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] - Y[12 + 1]; T2im = Y[4 + 1] + Y[12]; Y[4] = Y[4] + Y[12 + 1]; Y[4 + 1] = Y[4 + 1] - Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 4613 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 4622 "gslfft.c"
}







static void
gsl_power2_fft8synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[8]; T2im = X[0 + 1] - X[8 + 1]; Y[0] = X[0] + X[8]; Y[0 + 1] = X[0 + 1] + X[8 + 1]; Y[2] = T2re * 1.0 / (double) 8; Y[2 + 1] = T2im * 1.0 / (double) 8; Y[0] *= 1.0 / (double) 8; Y[0 + 1] *= 1.0 / (double) 8; };




  { register double T2re, T2im; T2re = X[4] - X[12]; T2im = X[4 + 1] - X[12 + 1]; Y[4] = X[4] + X[12]; Y[4 + 1] = X[4 + 1] + X[12 + 1]; Y[6] = T2re * 1.0 / (double) 8; Y[6 + 1] = T2im * 1.0 / (double) 8; Y[4] *= 1.0 / (double) 8; Y[4 + 1] *= 1.0 / (double) 8; };




  { register double T2re, T2im; T2re = X[2] - X[10]; T2im = X[2 + 1] - X[10 + 1]; Y[8] = X[2] + X[10]; Y[8 + 1] = X[2 + 1] + X[10 + 1]; Y[10] = T2re * 1.0 / (double) 8; Y[10 + 1] = T2im * 1.0 / (double) 8; Y[8] *= 1.0 / (double) 8; Y[8 + 1] *= 1.0 / (double) 8; };




  { register double T2re, T2im; T2re = X[6] - X[14]; T2im = X[6 + 1] - X[14 + 1]; Y[12] = X[6] + X[14]; Y[12 + 1] = X[6 + 1] + X[14 + 1]; Y[14] = T2re * 1.0 / (double) 8; Y[14 + 1] = T2im * 1.0 / (double) 8; Y[12] *= 1.0 / (double) 8; Y[12 + 1] *= 1.0 / (double) 8; };
# 4663 "gslfft.c"
  gsl_power2_fft8synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft16synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 4692 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 4701 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[20]; T2im = Y[16 + 1] - Y[20 + 1]; Y[16] = Y[16] + Y[20]; Y[16 + 1] = Y[16 + 1] + Y[20 + 1]; Y[20] = T2re; Y[20 + 1] = T2im; };
# 4710 "gslfft.c"
  { register double T2re, T2im; T2re = Y[24] - Y[28]; T2im = Y[24 + 1] - Y[28 + 1]; Y[24] = Y[24] + Y[28]; Y[24 + 1] = Y[24 + 1] + Y[28 + 1]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 4719 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] - Y[6 + 1]; T2im = Y[2 + 1] + Y[6]; Y[2] = Y[2] + Y[6 + 1]; Y[2 + 1] = Y[2 + 1] - Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 4728 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] - Y[14 + 1]; T2im = Y[10 + 1] + Y[14]; Y[10] = Y[10] + Y[14 + 1]; Y[10 + 1] = Y[10 + 1] - Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 4737 "gslfft.c"
  { register double T2re, T2im; T2re = Y[18] - Y[22 + 1]; T2im = Y[18 + 1] + Y[22]; Y[18] = Y[18] + Y[22 + 1]; Y[18 + 1] = Y[18 + 1] - Y[22]; Y[22] = T2re; Y[22 + 1] = T2im; };
# 4746 "gslfft.c"
  { register double T2re, T2im; T2re = Y[26] - Y[30 + 1]; T2im = Y[26 + 1] + Y[30]; Y[26] = Y[26] + Y[30 + 1]; Y[26 + 1] = Y[26 + 1] - Y[30]; Y[30] = T2re; Y[30 + 1] = T2im; };
# 4757 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 4766 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[24]; T2im = Y[16 + 1] - Y[24 + 1]; Y[16] = Y[16] + Y[24]; Y[16 + 1] = Y[16 + 1] + Y[24 + 1]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 4775 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 4784 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) +0.707106781186548; T1im = Y[26 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 4793 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] - Y[12 + 1]; T2im = Y[4 + 1] + Y[12]; Y[4] = Y[4] + Y[12 + 1]; Y[4 + 1] = Y[4 + 1] - Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 4802 "gslfft.c"
  { register double T2re, T2im; T2re = Y[20] - Y[28 + 1]; T2im = Y[20 + 1] + Y[28]; Y[20] = Y[20] + Y[28 + 1]; Y[20 + 1] = Y[20 + 1] - Y[28]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 4811 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 4820 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.707106781186547; T1im = Y[30 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 4831 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[16]; T2im = Y[0 + 1] - Y[16 + 1]; Y[0] = Y[0] + Y[16]; Y[0 + 1] = Y[0 + 1] + Y[16 + 1]; Y[16] = T2re; Y[16 + 1] = T2im; };
# 4840 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[18] * (double) +0.923879532511287; T1im = Y[18 + 1] * (double) +0.923879532511287; T2re = Y[18 + 1] * (double) -0.382683432365090; T2im = Y[18] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[18] = T2re; Y[18 + 1] = T2im; };
# 4849 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[20] * (double) +0.707106781186548; T1im = Y[20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[20] = T2re; Y[20 + 1] = T2im; };
# 4858 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[22] * (double) +0.382683432365090; T1im = Y[22 + 1] * (double) +0.382683432365090; T2re = Y[22 + 1] * (double) -0.923879532511287; T2im = Y[22] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[22] = T2re; Y[22 + 1] = T2im; };
# 4867 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[24 + 1]; T2im = Y[8 + 1] + Y[24]; Y[8] = Y[8] + Y[24 + 1]; Y[8 + 1] = Y[8 + 1] - Y[24]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 4876 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) -0.382683432365090; T1im = Y[26 + 1] * (double) -0.382683432365090; T2re = Y[26 + 1] * (double) -0.923879532511287; T2im = Y[26] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 4885 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[28] * (double) -0.707106781186547; T1im = Y[28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[28] = T2re; Y[28 + 1] = T2im; };
# 4894 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.923879532511287; T1im = Y[30 + 1] * (double) -0.923879532511287; T2re = Y[30 + 1] * (double) -0.382683432365090; T2im = Y[30] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 4903 "gslfft.c"
}







static void
gsl_power2_fft16synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[16]; T2im = X[0 + 1] - X[16 + 1]; Y[0] = X[0] + X[16]; Y[0 + 1] = X[0 + 1] + X[16 + 1]; Y[2] = T2re * 1.0 / (double) 16; Y[2 + 1] = T2im * 1.0 / (double) 16; Y[0] *= 1.0 / (double) 16; Y[0 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[8] - X[24]; T2im = X[8 + 1] - X[24 + 1]; Y[4] = X[8] + X[24]; Y[4 + 1] = X[8 + 1] + X[24 + 1]; Y[6] = T2re * 1.0 / (double) 16; Y[6 + 1] = T2im * 1.0 / (double) 16; Y[4] *= 1.0 / (double) 16; Y[4 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[4] - X[20]; T2im = X[4 + 1] - X[20 + 1]; Y[8] = X[4] + X[20]; Y[8 + 1] = X[4 + 1] + X[20 + 1]; Y[10] = T2re * 1.0 / (double) 16; Y[10 + 1] = T2im * 1.0 / (double) 16; Y[8] *= 1.0 / (double) 16; Y[8 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[12] - X[28]; T2im = X[12 + 1] - X[28 + 1]; Y[12] = X[12] + X[28]; Y[12 + 1] = X[12 + 1] + X[28 + 1]; Y[14] = T2re * 1.0 / (double) 16; Y[14 + 1] = T2im * 1.0 / (double) 16; Y[12] *= 1.0 / (double) 16; Y[12 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[2] - X[18]; T2im = X[2 + 1] - X[18 + 1]; Y[16] = X[2] + X[18]; Y[16 + 1] = X[2 + 1] + X[18 + 1]; Y[18] = T2re * 1.0 / (double) 16; Y[18 + 1] = T2im * 1.0 / (double) 16; Y[16] *= 1.0 / (double) 16; Y[16 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[10] - X[26]; T2im = X[10 + 1] - X[26 + 1]; Y[20] = X[10] + X[26]; Y[20 + 1] = X[10 + 1] + X[26 + 1]; Y[22] = T2re * 1.0 / (double) 16; Y[22 + 1] = T2im * 1.0 / (double) 16; Y[20] *= 1.0 / (double) 16; Y[20 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[6] - X[22]; T2im = X[6 + 1] - X[22 + 1]; Y[24] = X[6] + X[22]; Y[24 + 1] = X[6 + 1] + X[22 + 1]; Y[26] = T2re * 1.0 / (double) 16; Y[26 + 1] = T2im * 1.0 / (double) 16; Y[24] *= 1.0 / (double) 16; Y[24 + 1] *= 1.0 / (double) 16; };




  { register double T2re, T2im; T2re = X[14] - X[30]; T2im = X[14 + 1] - X[30 + 1]; Y[28] = X[14] + X[30]; Y[28 + 1] = X[14 + 1] + X[30 + 1]; Y[30] = T2re * 1.0 / (double) 16; Y[30 + 1] = T2im * 1.0 / (double) 16; Y[28] *= 1.0 / (double) 16; Y[28 + 1] *= 1.0 / (double) 16; };
# 4966 "gslfft.c"
  gsl_power2_fft16synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft32synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  { register double T2re, T2im; T2re = Y[0] - Y[4]; T2im = Y[0 + 1] - Y[4 + 1]; Y[0] = Y[0] + Y[4]; Y[0 + 1] = Y[0 + 1] + Y[4 + 1]; Y[4] = T2re; Y[4 + 1] = T2im; };
# 4995 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[12]; T2im = Y[8 + 1] - Y[12 + 1]; Y[8] = Y[8] + Y[12]; Y[8 + 1] = Y[8 + 1] + Y[12 + 1]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 5004 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[20]; T2im = Y[16 + 1] - Y[20 + 1]; Y[16] = Y[16] + Y[20]; Y[16 + 1] = Y[16 + 1] + Y[20 + 1]; Y[20] = T2re; Y[20 + 1] = T2im; };
# 5013 "gslfft.c"
  { register double T2re, T2im; T2re = Y[24] - Y[28]; T2im = Y[24 + 1] - Y[28 + 1]; Y[24] = Y[24] + Y[28]; Y[24 + 1] = Y[24 + 1] + Y[28 + 1]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 5022 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[36]; T2im = Y[32 + 1] - Y[36 + 1]; Y[32] = Y[32] + Y[36]; Y[32 + 1] = Y[32 + 1] + Y[36 + 1]; Y[36] = T2re; Y[36 + 1] = T2im; };
# 5031 "gslfft.c"
  { register double T2re, T2im; T2re = Y[40] - Y[44]; T2im = Y[40 + 1] - Y[44 + 1]; Y[40] = Y[40] + Y[44]; Y[40 + 1] = Y[40 + 1] + Y[44 + 1]; Y[44] = T2re; Y[44 + 1] = T2im; };
# 5040 "gslfft.c"
  { register double T2re, T2im; T2re = Y[48] - Y[52]; T2im = Y[48 + 1] - Y[52 + 1]; Y[48] = Y[48] + Y[52]; Y[48 + 1] = Y[48 + 1] + Y[52 + 1]; Y[52] = T2re; Y[52 + 1] = T2im; };
# 5049 "gslfft.c"
  { register double T2re, T2im; T2re = Y[56] - Y[60]; T2im = Y[56 + 1] - Y[60 + 1]; Y[56] = Y[56] + Y[60]; Y[56 + 1] = Y[56 + 1] + Y[60 + 1]; Y[60] = T2re; Y[60 + 1] = T2im; };
# 5058 "gslfft.c"
  { register double T2re, T2im; T2re = Y[2] - Y[6 + 1]; T2im = Y[2 + 1] + Y[6]; Y[2] = Y[2] + Y[6 + 1]; Y[2 + 1] = Y[2 + 1] - Y[6]; Y[6] = T2re; Y[6 + 1] = T2im; };
# 5067 "gslfft.c"
  { register double T2re, T2im; T2re = Y[10] - Y[14 + 1]; T2im = Y[10 + 1] + Y[14]; Y[10] = Y[10] + Y[14 + 1]; Y[10 + 1] = Y[10 + 1] - Y[14]; Y[14] = T2re; Y[14 + 1] = T2im; };
# 5076 "gslfft.c"
  { register double T2re, T2im; T2re = Y[18] - Y[22 + 1]; T2im = Y[18 + 1] + Y[22]; Y[18] = Y[18] + Y[22 + 1]; Y[18 + 1] = Y[18 + 1] - Y[22]; Y[22] = T2re; Y[22 + 1] = T2im; };
# 5085 "gslfft.c"
  { register double T2re, T2im; T2re = Y[26] - Y[30 + 1]; T2im = Y[26 + 1] + Y[30]; Y[26] = Y[26] + Y[30 + 1]; Y[26 + 1] = Y[26 + 1] - Y[30]; Y[30] = T2re; Y[30 + 1] = T2im; };
# 5094 "gslfft.c"
  { register double T2re, T2im; T2re = Y[34] - Y[38 + 1]; T2im = Y[34 + 1] + Y[38]; Y[34] = Y[34] + Y[38 + 1]; Y[34 + 1] = Y[34 + 1] - Y[38]; Y[38] = T2re; Y[38 + 1] = T2im; };
# 5103 "gslfft.c"
  { register double T2re, T2im; T2re = Y[42] - Y[46 + 1]; T2im = Y[42 + 1] + Y[46]; Y[42] = Y[42] + Y[46 + 1]; Y[42 + 1] = Y[42 + 1] - Y[46]; Y[46] = T2re; Y[46 + 1] = T2im; };
# 5112 "gslfft.c"
  { register double T2re, T2im; T2re = Y[50] - Y[54 + 1]; T2im = Y[50 + 1] + Y[54]; Y[50] = Y[50] + Y[54 + 1]; Y[50 + 1] = Y[50 + 1] - Y[54]; Y[54] = T2re; Y[54 + 1] = T2im; };
# 5121 "gslfft.c"
  { register double T2re, T2im; T2re = Y[58] - Y[62 + 1]; T2im = Y[58 + 1] + Y[62]; Y[58] = Y[58] + Y[62 + 1]; Y[58 + 1] = Y[58 + 1] - Y[62]; Y[62] = T2re; Y[62 + 1] = T2im; };
# 5132 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[8]; T2im = Y[0 + 1] - Y[8 + 1]; Y[0] = Y[0] + Y[8]; Y[0 + 1] = Y[0 + 1] + Y[8 + 1]; Y[8] = T2re; Y[8 + 1] = T2im; };
# 5141 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[24]; T2im = Y[16 + 1] - Y[24 + 1]; Y[16] = Y[16] + Y[24]; Y[16 + 1] = Y[16 + 1] + Y[24 + 1]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 5150 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[40]; T2im = Y[32 + 1] - Y[40 + 1]; Y[32] = Y[32] + Y[40]; Y[32 + 1] = Y[32 + 1] + Y[40 + 1]; Y[40] = T2re; Y[40 + 1] = T2im; };
# 5159 "gslfft.c"
  { register double T2re, T2im; T2re = Y[48] - Y[56]; T2im = Y[48 + 1] - Y[56 + 1]; Y[48] = Y[48] + Y[56]; Y[48 + 1] = Y[48 + 1] + Y[56 + 1]; Y[56] = T2re; Y[56 + 1] = T2im; };
# 5168 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[10] * (double) +0.707106781186548; T1im = Y[10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[10] = T2re; Y[10 + 1] = T2im; };
# 5177 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) +0.707106781186548; T1im = Y[26 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 5186 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[42] * (double) +0.707106781186548; T1im = Y[42 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[42] = T2re; Y[42 + 1] = T2im; };
# 5195 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) +0.707106781186548; T1im = Y[58 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 5204 "gslfft.c"
  { register double T2re, T2im; T2re = Y[4] - Y[12 + 1]; T2im = Y[4 + 1] + Y[12]; Y[4] = Y[4] + Y[12 + 1]; Y[4 + 1] = Y[4 + 1] - Y[12]; Y[12] = T2re; Y[12 + 1] = T2im; };
# 5213 "gslfft.c"
  { register double T2re, T2im; T2re = Y[20] - Y[28 + 1]; T2im = Y[20 + 1] + Y[28]; Y[20] = Y[20] + Y[28 + 1]; Y[20 + 1] = Y[20 + 1] - Y[28]; Y[28] = T2re; Y[28 + 1] = T2im; };
# 5222 "gslfft.c"
  { register double T2re, T2im; T2re = Y[36] - Y[44 + 1]; T2im = Y[36 + 1] + Y[44]; Y[36] = Y[36] + Y[44 + 1]; Y[36 + 1] = Y[36 + 1] - Y[44]; Y[44] = T2re; Y[44 + 1] = T2im; };
# 5231 "gslfft.c"
  { register double T2re, T2im; T2re = Y[52] - Y[60 + 1]; T2im = Y[52 + 1] + Y[60]; Y[52] = Y[52] + Y[60 + 1]; Y[52 + 1] = Y[52 + 1] - Y[60]; Y[60] = T2re; Y[60 + 1] = T2im; };
# 5240 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[14] * (double) -0.707106781186547; T1im = Y[14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[14] = T2re; Y[14 + 1] = T2im; };
# 5249 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.707106781186547; T1im = Y[30 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 5258 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[46] * (double) -0.707106781186547; T1im = Y[46 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[46] = T2re; Y[46 + 1] = T2im; };
# 5267 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.707106781186547; T1im = Y[62 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 5278 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[16]; T2im = Y[0 + 1] - Y[16 + 1]; Y[0] = Y[0] + Y[16]; Y[0 + 1] = Y[0 + 1] + Y[16 + 1]; Y[16] = T2re; Y[16 + 1] = T2im; };
# 5287 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[48]; T2im = Y[32 + 1] - Y[48 + 1]; Y[32] = Y[32] + Y[48]; Y[32 + 1] = Y[32 + 1] + Y[48 + 1]; Y[48] = T2re; Y[48 + 1] = T2im; };
# 5296 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[18] * (double) +0.923879532511287; T1im = Y[18 + 1] * (double) +0.923879532511287; T2re = Y[18 + 1] * (double) -0.382683432365090; T2im = Y[18] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[18] = T2re; Y[18 + 1] = T2im; };
# 5305 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[50] * (double) +0.923879532511287; T1im = Y[50 + 1] * (double) +0.923879532511287; T2re = Y[50 + 1] * (double) -0.382683432365090; T2im = Y[50] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[50] = T2re; Y[50 + 1] = T2im; };
# 5314 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[20] * (double) +0.707106781186548; T1im = Y[20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[20] = T2re; Y[20 + 1] = T2im; };
# 5323 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[52] * (double) +0.707106781186548; T1im = Y[52 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[52] = T2re; Y[52 + 1] = T2im; };
# 5332 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[22] * (double) +0.382683432365090; T1im = Y[22 + 1] * (double) +0.382683432365090; T2re = Y[22 + 1] * (double) -0.923879532511287; T2im = Y[22] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[22] = T2re; Y[22 + 1] = T2im; };
# 5341 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[54] * (double) +0.382683432365090; T1im = Y[54 + 1] * (double) +0.382683432365090; T2re = Y[54 + 1] * (double) -0.923879532511287; T2im = Y[54] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[54] = T2re; Y[54 + 1] = T2im; };
# 5350 "gslfft.c"
  { register double T2re, T2im; T2re = Y[8] - Y[24 + 1]; T2im = Y[8 + 1] + Y[24]; Y[8] = Y[8] + Y[24 + 1]; Y[8 + 1] = Y[8 + 1] - Y[24]; Y[24] = T2re; Y[24 + 1] = T2im; };
# 5359 "gslfft.c"
  { register double T2re, T2im; T2re = Y[40] - Y[56 + 1]; T2im = Y[40 + 1] + Y[56]; Y[40] = Y[40] + Y[56 + 1]; Y[40 + 1] = Y[40 + 1] - Y[56]; Y[56] = T2re; Y[56 + 1] = T2im; };
# 5368 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[26] * (double) -0.382683432365090; T1im = Y[26 + 1] * (double) -0.382683432365090; T2re = Y[26 + 1] * (double) -0.923879532511287; T2im = Y[26] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[26] = T2re; Y[26 + 1] = T2im; };
# 5377 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) -0.382683432365090; T1im = Y[58 + 1] * (double) -0.382683432365090; T2re = Y[58 + 1] * (double) -0.923879532511287; T2im = Y[58] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 5386 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[28] * (double) -0.707106781186547; T1im = Y[28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[28] = T2re; Y[28 + 1] = T2im; };
# 5395 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[60] * (double) -0.707106781186547; T1im = Y[60 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[60] = T2re; Y[60 + 1] = T2im; };
# 5404 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[30] * (double) -0.923879532511287; T1im = Y[30 + 1] * (double) -0.923879532511287; T2re = Y[30 + 1] * (double) -0.382683432365090; T2im = Y[30] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[30] = T2re; Y[30 + 1] = T2im; };
# 5413 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.923879532511287; T1im = Y[62 + 1] * (double) -0.923879532511287; T2re = Y[62 + 1] * (double) -0.382683432365090; T2im = Y[62] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 5424 "gslfft.c"
  { register double T2re, T2im; T2re = Y[0] - Y[32]; T2im = Y[0 + 1] - Y[32 + 1]; Y[0] = Y[0] + Y[32]; Y[0 + 1] = Y[0 + 1] + Y[32 + 1]; Y[32] = T2re; Y[32 + 1] = T2im; };
# 5433 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[34] * (double) +0.980785280403230; T1im = Y[34 + 1] * (double) +0.980785280403230; T2re = Y[34 + 1] * (double) -0.195090322016128; T2im = Y[34] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[34] = T2re; Y[34 + 1] = T2im; };
# 5442 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[36] * (double) +0.923879532511287; T1im = Y[36 + 1] * (double) +0.923879532511287; T2re = Y[36 + 1] * (double) -0.382683432365090; T2im = Y[36] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[36] = T2re; Y[36 + 1] = T2im; };
# 5451 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[38] * (double) +0.831469612302545; T1im = Y[38 + 1] * (double) +0.831469612302545; T2re = Y[38 + 1] * (double) -0.555570233019602; T2im = Y[38] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[38] = T2re; Y[38 + 1] = T2im; };
# 5460 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[40] * (double) +0.707106781186548; T1im = Y[40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[40] = T2re; Y[40 + 1] = T2im; };
# 5469 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[42] * (double) +0.555570233019602; T1im = Y[42 + 1] * (double) +0.555570233019602; T2re = Y[42 + 1] * (double) -0.831469612302545; T2im = Y[42] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[42] = T2re; Y[42 + 1] = T2im; };
# 5478 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[44] * (double) +0.382683432365090; T1im = Y[44 + 1] * (double) +0.382683432365090; T2re = Y[44 + 1] * (double) -0.923879532511287; T2im = Y[44] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[44] = T2re; Y[44 + 1] = T2im; };
# 5487 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[46] * (double) +0.195090322016128; T1im = Y[46 + 1] * (double) +0.195090322016128; T2re = Y[46 + 1] * (double) -0.980785280403230; T2im = Y[46] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[46] = T2re; Y[46 + 1] = T2im; };
# 5496 "gslfft.c"
  { register double T2re, T2im; T2re = Y[16] - Y[48 + 1]; T2im = Y[16 + 1] + Y[48]; Y[16] = Y[16] + Y[48 + 1]; Y[16 + 1] = Y[16 + 1] - Y[48]; Y[48] = T2re; Y[48 + 1] = T2im; };
# 5505 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[50] * (double) -0.195090322016128; T1im = Y[50 + 1] * (double) -0.195090322016128; T2re = Y[50 + 1] * (double) -0.980785280403230; T2im = Y[50] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[50] = T2re; Y[50 + 1] = T2im; };
# 5514 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[52] * (double) -0.382683432365090; T1im = Y[52 + 1] * (double) -0.382683432365090; T2re = Y[52 + 1] * (double) -0.923879532511287; T2im = Y[52] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[52] = T2re; Y[52 + 1] = T2im; };
# 5523 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[54] * (double) -0.555570233019602; T1im = Y[54 + 1] * (double) -0.555570233019602; T2re = Y[54 + 1] * (double) -0.831469612302545; T2im = Y[54] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[54] = T2re; Y[54 + 1] = T2im; };
# 5532 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[56] * (double) -0.707106781186547; T1im = Y[56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[56] = T2re; Y[56 + 1] = T2im; };
# 5541 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[58] * (double) -0.831469612302545; T1im = Y[58 + 1] * (double) -0.831469612302545; T2re = Y[58 + 1] * (double) -0.555570233019602; T2im = Y[58] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[58] = T2re; Y[58 + 1] = T2im; };
# 5550 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[60] * (double) -0.923879532511287; T1im = Y[60 + 1] * (double) -0.923879532511287; T2re = Y[60 + 1] * (double) -0.382683432365090; T2im = Y[60] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[60] = T2re; Y[60 + 1] = T2im; };
# 5559 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[62] * (double) -0.980785280403230; T1im = Y[62 + 1] * (double) -0.980785280403230; T2re = Y[62 + 1] * (double) -0.195090322016129; T2im = Y[62] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[62] = T2re; Y[62 + 1] = T2im; };
# 5568 "gslfft.c"
}







static void
gsl_power2_fft32synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[32]; T2im = X[0 + 1] - X[32 + 1]; Y[0] = X[0] + X[32]; Y[0 + 1] = X[0 + 1] + X[32 + 1]; Y[2] = T2re * 1.0 / (double) 32; Y[2 + 1] = T2im * 1.0 / (double) 32; Y[0] *= 1.0 / (double) 32; Y[0 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[16] - X[48]; T2im = X[16 + 1] - X[48 + 1]; Y[4] = X[16] + X[48]; Y[4 + 1] = X[16 + 1] + X[48 + 1]; Y[6] = T2re * 1.0 / (double) 32; Y[6 + 1] = T2im * 1.0 / (double) 32; Y[4] *= 1.0 / (double) 32; Y[4 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[8] - X[40]; T2im = X[8 + 1] - X[40 + 1]; Y[8] = X[8] + X[40]; Y[8 + 1] = X[8 + 1] + X[40 + 1]; Y[10] = T2re * 1.0 / (double) 32; Y[10 + 1] = T2im * 1.0 / (double) 32; Y[8] *= 1.0 / (double) 32; Y[8 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[24] - X[56]; T2im = X[24 + 1] - X[56 + 1]; Y[12] = X[24] + X[56]; Y[12 + 1] = X[24 + 1] + X[56 + 1]; Y[14] = T2re * 1.0 / (double) 32; Y[14 + 1] = T2im * 1.0 / (double) 32; Y[12] *= 1.0 / (double) 32; Y[12 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[4] - X[36]; T2im = X[4 + 1] - X[36 + 1]; Y[16] = X[4] + X[36]; Y[16 + 1] = X[4 + 1] + X[36 + 1]; Y[18] = T2re * 1.0 / (double) 32; Y[18 + 1] = T2im * 1.0 / (double) 32; Y[16] *= 1.0 / (double) 32; Y[16 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[20] - X[52]; T2im = X[20 + 1] - X[52 + 1]; Y[20] = X[20] + X[52]; Y[20 + 1] = X[20 + 1] + X[52 + 1]; Y[22] = T2re * 1.0 / (double) 32; Y[22 + 1] = T2im * 1.0 / (double) 32; Y[20] *= 1.0 / (double) 32; Y[20 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[12] - X[44]; T2im = X[12 + 1] - X[44 + 1]; Y[24] = X[12] + X[44]; Y[24 + 1] = X[12 + 1] + X[44 + 1]; Y[26] = T2re * 1.0 / (double) 32; Y[26 + 1] = T2im * 1.0 / (double) 32; Y[24] *= 1.0 / (double) 32; Y[24 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[28] - X[60]; T2im = X[28 + 1] - X[60 + 1]; Y[28] = X[28] + X[60]; Y[28 + 1] = X[28 + 1] + X[60 + 1]; Y[30] = T2re * 1.0 / (double) 32; Y[30 + 1] = T2im * 1.0 / (double) 32; Y[28] *= 1.0 / (double) 32; Y[28 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[2] - X[34]; T2im = X[2 + 1] - X[34 + 1]; Y[32] = X[2] + X[34]; Y[32 + 1] = X[2 + 1] + X[34 + 1]; Y[34] = T2re * 1.0 / (double) 32; Y[34 + 1] = T2im * 1.0 / (double) 32; Y[32] *= 1.0 / (double) 32; Y[32 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[18] - X[50]; T2im = X[18 + 1] - X[50 + 1]; Y[36] = X[18] + X[50]; Y[36 + 1] = X[18 + 1] + X[50 + 1]; Y[38] = T2re * 1.0 / (double) 32; Y[38 + 1] = T2im * 1.0 / (double) 32; Y[36] *= 1.0 / (double) 32; Y[36 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[10] - X[42]; T2im = X[10 + 1] - X[42 + 1]; Y[40] = X[10] + X[42]; Y[40 + 1] = X[10 + 1] + X[42 + 1]; Y[42] = T2re * 1.0 / (double) 32; Y[42 + 1] = T2im * 1.0 / (double) 32; Y[40] *= 1.0 / (double) 32; Y[40 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[26] - X[58]; T2im = X[26 + 1] - X[58 + 1]; Y[44] = X[26] + X[58]; Y[44 + 1] = X[26 + 1] + X[58 + 1]; Y[46] = T2re * 1.0 / (double) 32; Y[46 + 1] = T2im * 1.0 / (double) 32; Y[44] *= 1.0 / (double) 32; Y[44 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[6] - X[38]; T2im = X[6 + 1] - X[38 + 1]; Y[48] = X[6] + X[38]; Y[48 + 1] = X[6 + 1] + X[38 + 1]; Y[50] = T2re * 1.0 / (double) 32; Y[50 + 1] = T2im * 1.0 / (double) 32; Y[48] *= 1.0 / (double) 32; Y[48 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[22] - X[54]; T2im = X[22 + 1] - X[54 + 1]; Y[52] = X[22] + X[54]; Y[52 + 1] = X[22 + 1] + X[54 + 1]; Y[54] = T2re * 1.0 / (double) 32; Y[54 + 1] = T2im * 1.0 / (double) 32; Y[52] *= 1.0 / (double) 32; Y[52 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[14] - X[46]; T2im = X[14 + 1] - X[46 + 1]; Y[56] = X[14] + X[46]; Y[56 + 1] = X[14 + 1] + X[46 + 1]; Y[58] = T2re * 1.0 / (double) 32; Y[58 + 1] = T2im * 1.0 / (double) 32; Y[56] *= 1.0 / (double) 32; Y[56 + 1] *= 1.0 / (double) 32; };




  { register double T2re, T2im; T2re = X[30] - X[62]; T2im = X[30 + 1] - X[62 + 1]; Y[60] = X[30] + X[62]; Y[60 + 1] = X[30 + 1] + X[62 + 1]; Y[62] = T2re * 1.0 / (double) 32; Y[62 + 1] = T2im * 1.0 / (double) 32; Y[60] *= 1.0 / (double) 32; Y[60 + 1] *= 1.0 / (double) 32; };
# 5673 "gslfft.c"
  gsl_power2_fft32synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft64synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  for (block = 0; block < 128; block += 8) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 4]; T2im = Y[block + 0 + 1] - Y[block + 4 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 4]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 4 + 1]; Y[block + 4] = T2re; Y[block + 4 + 1] = T2im; };
# 5703 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 2] - Y[block + 6 + 1]; T2im = Y[block + 2 + 1] + Y[block + 6]; Y[block + 2] = Y[block + 2] + Y[block + 6 + 1]; Y[block + 2 + 1] = Y[block + 2 + 1] - Y[block + 6]; Y[block + 6] = T2re; Y[block + 6 + 1] = T2im; };
# 5712 "gslfft.c"
  }


  for (block = 0; block < 128; block += 16) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 8]; T2im = Y[block + 0 + 1] - Y[block + 8 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 8]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 8 + 1]; Y[block + 8] = T2re; Y[block + 8 + 1] = T2im; };
# 5725 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 10] * (double) +0.707106781186548; T1im = Y[block + 10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 10] = T2re; Y[block + 10 + 1] = T2im; };
# 5734 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 4] - Y[block + 12 + 1]; T2im = Y[block + 4 + 1] + Y[block + 12]; Y[block + 4] = Y[block + 4] + Y[block + 12 + 1]; Y[block + 4 + 1] = Y[block + 4 + 1] - Y[block + 12]; Y[block + 12] = T2re; Y[block + 12 + 1] = T2im; };
# 5743 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 14] * (double) -0.707106781186547; T1im = Y[block + 14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 14] = T2re; Y[block + 14 + 1] = T2im; };
# 5752 "gslfft.c"
  }


  for (block = 0; block < 128; block += 32) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 16]; T2im = Y[block + 0 + 1] - Y[block + 16 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 16]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 16 + 1]; Y[block + 16] = T2re; Y[block + 16 + 1] = T2im; };
# 5765 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 18] * (double) +0.923879532511287; T1im = Y[block + 18 + 1] * (double) +0.923879532511287; T2re = Y[block + 18 + 1] * (double) -0.382683432365090; T2im = Y[block + 18] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 18] = T2re; Y[block + 18 + 1] = T2im; };
# 5774 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 20] * (double) +0.707106781186548; T1im = Y[block + 20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 20] = T2re; Y[block + 20 + 1] = T2im; };
# 5783 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 22] * (double) +0.382683432365090; T1im = Y[block + 22 + 1] * (double) +0.382683432365090; T2re = Y[block + 22 + 1] * (double) -0.923879532511287; T2im = Y[block + 22] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 22] = T2re; Y[block + 22 + 1] = T2im; };
# 5792 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 8] - Y[block + 24 + 1]; T2im = Y[block + 8 + 1] + Y[block + 24]; Y[block + 8] = Y[block + 8] + Y[block + 24 + 1]; Y[block + 8 + 1] = Y[block + 8 + 1] - Y[block + 24]; Y[block + 24] = T2re; Y[block + 24 + 1] = T2im; };
# 5801 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 26] * (double) -0.382683432365090; T1im = Y[block + 26 + 1] * (double) -0.382683432365090; T2re = Y[block + 26 + 1] * (double) -0.923879532511287; T2im = Y[block + 26] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 26] = T2re; Y[block + 26 + 1] = T2im; };
# 5810 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 28] * (double) -0.707106781186547; T1im = Y[block + 28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 28] = T2re; Y[block + 28 + 1] = T2im; };
# 5819 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 30] * (double) -0.923879532511287; T1im = Y[block + 30 + 1] * (double) -0.923879532511287; T2re = Y[block + 30 + 1] * (double) -0.382683432365090; T2im = Y[block + 30] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 30] = T2re; Y[block + 30 + 1] = T2im; };
# 5828 "gslfft.c"
  }


  for (block = 0; block < 128; block += 64) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 32]; T2im = Y[block + 0 + 1] - Y[block + 32 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 32]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 32 + 1]; Y[block + 32] = T2re; Y[block + 32 + 1] = T2im; };
# 5841 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 34] * (double) +0.980785280403230; T1im = Y[block + 34 + 1] * (double) +0.980785280403230; T2re = Y[block + 34 + 1] * (double) -0.195090322016128; T2im = Y[block + 34] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 34] = T2re; Y[block + 34 + 1] = T2im; };
# 5850 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 36] * (double) +0.923879532511287; T1im = Y[block + 36 + 1] * (double) +0.923879532511287; T2re = Y[block + 36 + 1] * (double) -0.382683432365090; T2im = Y[block + 36] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 36] = T2re; Y[block + 36 + 1] = T2im; };
# 5859 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 38] * (double) +0.831469612302545; T1im = Y[block + 38 + 1] * (double) +0.831469612302545; T2re = Y[block + 38 + 1] * (double) -0.555570233019602; T2im = Y[block + 38] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 38] = T2re; Y[block + 38 + 1] = T2im; };
# 5868 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 40] * (double) +0.707106781186548; T1im = Y[block + 40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 40] = T2re; Y[block + 40 + 1] = T2im; };
# 5877 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 42] * (double) +0.555570233019602; T1im = Y[block + 42 + 1] * (double) +0.555570233019602; T2re = Y[block + 42 + 1] * (double) -0.831469612302545; T2im = Y[block + 42] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 42] = T2re; Y[block + 42 + 1] = T2im; };
# 5886 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 44] * (double) +0.382683432365090; T1im = Y[block + 44 + 1] * (double) +0.382683432365090; T2re = Y[block + 44 + 1] * (double) -0.923879532511287; T2im = Y[block + 44] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 44] = T2re; Y[block + 44 + 1] = T2im; };
# 5895 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 46] * (double) +0.195090322016128; T1im = Y[block + 46 + 1] * (double) +0.195090322016128; T2re = Y[block + 46 + 1] * (double) -0.980785280403230; T2im = Y[block + 46] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 46] = T2re; Y[block + 46 + 1] = T2im; };
# 5904 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 16] - Y[block + 48 + 1]; T2im = Y[block + 16 + 1] + Y[block + 48]; Y[block + 16] = Y[block + 16] + Y[block + 48 + 1]; Y[block + 16 + 1] = Y[block + 16 + 1] - Y[block + 48]; Y[block + 48] = T2re; Y[block + 48 + 1] = T2im; };
# 5913 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 50] * (double) -0.195090322016128; T1im = Y[block + 50 + 1] * (double) -0.195090322016128; T2re = Y[block + 50 + 1] * (double) -0.980785280403230; T2im = Y[block + 50] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 50] = T2re; Y[block + 50 + 1] = T2im; };
# 5922 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 52] * (double) -0.382683432365090; T1im = Y[block + 52 + 1] * (double) -0.382683432365090; T2re = Y[block + 52 + 1] * (double) -0.923879532511287; T2im = Y[block + 52] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 52] = T2re; Y[block + 52 + 1] = T2im; };
# 5931 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 54] * (double) -0.555570233019602; T1im = Y[block + 54 + 1] * (double) -0.555570233019602; T2re = Y[block + 54 + 1] * (double) -0.831469612302545; T2im = Y[block + 54] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 54] = T2re; Y[block + 54 + 1] = T2im; };
# 5940 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 56] * (double) -0.707106781186547; T1im = Y[block + 56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 56] = T2re; Y[block + 56 + 1] = T2im; };
# 5949 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 58] * (double) -0.831469612302545; T1im = Y[block + 58 + 1] * (double) -0.831469612302545; T2re = Y[block + 58 + 1] * (double) -0.555570233019602; T2im = Y[block + 58] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 58] = T2re; Y[block + 58 + 1] = T2im; };
# 5958 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 60] * (double) -0.923879532511287; T1im = Y[block + 60 + 1] * (double) -0.923879532511287; T2re = Y[block + 60 + 1] * (double) -0.382683432365090; T2im = Y[block + 60] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 60] = T2re; Y[block + 60 + 1] = T2im; };
# 5967 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 62] * (double) -0.980785280403230; T1im = Y[block + 62 + 1] * (double) -0.980785280403230; T2re = Y[block + 62 + 1] * (double) -0.195090322016129; T2im = Y[block + 62] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 62] = T2re; Y[block + 62 + 1] = T2im; };
# 5976 "gslfft.c"
  }


  { register double T2re, T2im; T2re = Y[0] - Y[64]; T2im = Y[0 + 1] - Y[64 + 1]; Y[0] = Y[0] + Y[64]; Y[0 + 1] = Y[0 + 1] + Y[64 + 1]; Y[64] = T2re; Y[64 + 1] = T2im; };
# 5988 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[66] * (double) +0.995184726672197; T1im = Y[66 + 1] * (double) +0.995184726672197; T2re = Y[66 + 1] * (double) -0.098017140329561; T2im = Y[66] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[66] = T2re; Y[66 + 1] = T2im; };
# 5997 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[68] * (double) +0.980785280403230; T1im = Y[68 + 1] * (double) +0.980785280403230; T2re = Y[68 + 1] * (double) -0.195090322016128; T2im = Y[68] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[68] = T2re; Y[68 + 1] = T2im; };
# 6006 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[70] * (double) +0.956940335732209; T1im = Y[70 + 1] * (double) +0.956940335732209; T2re = Y[70 + 1] * (double) -0.290284677254462; T2im = Y[70] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[70] = T2re; Y[70 + 1] = T2im; };
# 6015 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[72] * (double) +0.923879532511287; T1im = Y[72 + 1] * (double) +0.923879532511287; T2re = Y[72 + 1] * (double) -0.382683432365090; T2im = Y[72] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[72] = T2re; Y[72 + 1] = T2im; };
# 6024 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[74] * (double) +0.881921264348355; T1im = Y[74 + 1] * (double) +0.881921264348355; T2re = Y[74 + 1] * (double) -0.471396736825998; T2im = Y[74] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[74] = T2re; Y[74 + 1] = T2im; };
# 6033 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[76] * (double) +0.831469612302545; T1im = Y[76 + 1] * (double) +0.831469612302545; T2re = Y[76 + 1] * (double) -0.555570233019602; T2im = Y[76] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[76] = T2re; Y[76 + 1] = T2im; };
# 6042 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[78] * (double) +0.773010453362737; T1im = Y[78 + 1] * (double) +0.773010453362737; T2re = Y[78 + 1] * (double) -0.634393284163645; T2im = Y[78] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[78] = T2re; Y[78 + 1] = T2im; };
# 6051 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[80] * (double) +0.707106781186548; T1im = Y[80 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[16] - T1re; T2im = Y[16 + 1] - T1im; Y[16] = Y[16] + T1re; Y[16 + 1] = Y[16 + 1] + T1im; Y[80] = T2re; Y[80 + 1] = T2im; };
# 6060 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[82] * (double) +0.634393284163645; T1im = Y[82 + 1] * (double) +0.634393284163645; T2re = Y[82 + 1] * (double) -0.773010453362737; T2im = Y[82] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[82] = T2re; Y[82 + 1] = T2im; };
# 6069 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[84] * (double) +0.555570233019602; T1im = Y[84 + 1] * (double) +0.555570233019602; T2re = Y[84 + 1] * (double) -0.831469612302545; T2im = Y[84] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[84] = T2re; Y[84 + 1] = T2im; };
# 6078 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[86] * (double) +0.471396736825998; T1im = Y[86 + 1] * (double) +0.471396736825998; T2re = Y[86 + 1] * (double) -0.881921264348355; T2im = Y[86] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[86] = T2re; Y[86 + 1] = T2im; };
# 6087 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[88] * (double) +0.382683432365090; T1im = Y[88 + 1] * (double) +0.382683432365090; T2re = Y[88 + 1] * (double) -0.923879532511287; T2im = Y[88] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[88] = T2re; Y[88 + 1] = T2im; };
# 6096 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[90] * (double) +0.290284677254462; T1im = Y[90 + 1] * (double) +0.290284677254462; T2re = Y[90 + 1] * (double) -0.956940335732209; T2im = Y[90] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[90] = T2re; Y[90 + 1] = T2im; };
# 6105 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[92] * (double) +0.195090322016128; T1im = Y[92 + 1] * (double) +0.195090322016128; T2re = Y[92 + 1] * (double) -0.980785280403230; T2im = Y[92] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[92] = T2re; Y[92 + 1] = T2im; };
# 6114 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[94] * (double) +0.098017140329561; T1im = Y[94 + 1] * (double) +0.098017140329561; T2re = Y[94 + 1] * (double) -0.995184726672197; T2im = Y[94] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[94] = T2re; Y[94 + 1] = T2im; };
# 6123 "gslfft.c"
  { register double T2re, T2im; T2re = Y[32] - Y[96 + 1]; T2im = Y[32 + 1] + Y[96]; Y[32] = Y[32] + Y[96 + 1]; Y[32 + 1] = Y[32 + 1] - Y[96]; Y[96] = T2re; Y[96 + 1] = T2im; };
# 6132 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[98] * (double) -0.098017140329561; T1im = Y[98 + 1] * (double) -0.098017140329561; T2re = Y[98 + 1] * (double) -0.995184726672197; T2im = Y[98] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[98] = T2re; Y[98 + 1] = T2im; };
# 6141 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[100] * (double) -0.195090322016128; T1im = Y[100 + 1] * (double) -0.195090322016128; T2re = Y[100 + 1] * (double) -0.980785280403230; T2im = Y[100] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[100] = T2re; Y[100 + 1] = T2im; };
# 6150 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[102] * (double) -0.290284677254462; T1im = Y[102 + 1] * (double) -0.290284677254462; T2re = Y[102 + 1] * (double) -0.956940335732209; T2im = Y[102] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[102] = T2re; Y[102 + 1] = T2im; };
# 6159 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[104] * (double) -0.382683432365090; T1im = Y[104 + 1] * (double) -0.382683432365090; T2re = Y[104 + 1] * (double) -0.923879532511287; T2im = Y[104] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[40] - T1re; T2im = Y[40 + 1] - T1im; Y[40] = Y[40] + T1re; Y[40 + 1] = Y[40 + 1] + T1im; Y[104] = T2re; Y[104 + 1] = T2im; };
# 6168 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[106] * (double) -0.471396736825998; T1im = Y[106 + 1] * (double) -0.471396736825998; T2re = Y[106 + 1] * (double) -0.881921264348355; T2im = Y[106] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[106] = T2re; Y[106 + 1] = T2im; };
# 6177 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[108] * (double) -0.555570233019602; T1im = Y[108 + 1] * (double) -0.555570233019602; T2re = Y[108 + 1] * (double) -0.831469612302545; T2im = Y[108] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[108] = T2re; Y[108 + 1] = T2im; };
# 6186 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[110] * (double) -0.634393284163645; T1im = Y[110 + 1] * (double) -0.634393284163645; T2re = Y[110 + 1] * (double) -0.773010453362737; T2im = Y[110] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[110] = T2re; Y[110 + 1] = T2im; };
# 6195 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[112] * (double) -0.707106781186547; T1im = Y[112 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[48] - T1re; T2im = Y[48 + 1] - T1im; Y[48] = Y[48] + T1re; Y[48 + 1] = Y[48 + 1] + T1im; Y[112] = T2re; Y[112 + 1] = T2im; };
# 6204 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[114] * (double) -0.773010453362737; T1im = Y[114 + 1] * (double) -0.773010453362737; T2re = Y[114 + 1] * (double) -0.634393284163645; T2im = Y[114] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[114] = T2re; Y[114 + 1] = T2im; };
# 6213 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[116] * (double) -0.831469612302545; T1im = Y[116 + 1] * (double) -0.831469612302545; T2re = Y[116 + 1] * (double) -0.555570233019602; T2im = Y[116] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[52] - T1re; T2im = Y[52 + 1] - T1im; Y[52] = Y[52] + T1re; Y[52 + 1] = Y[52 + 1] + T1im; Y[116] = T2re; Y[116 + 1] = T2im; };
# 6222 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[118] * (double) -0.881921264348355; T1im = Y[118 + 1] * (double) -0.881921264348355; T2re = Y[118 + 1] * (double) -0.471396736825998; T2im = Y[118] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[118] = T2re; Y[118 + 1] = T2im; };
# 6231 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[120] * (double) -0.923879532511287; T1im = Y[120 + 1] * (double) -0.923879532511287; T2re = Y[120 + 1] * (double) -0.382683432365090; T2im = Y[120] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[56] - T1re; T2im = Y[56 + 1] - T1im; Y[56] = Y[56] + T1re; Y[56 + 1] = Y[56 + 1] + T1im; Y[120] = T2re; Y[120 + 1] = T2im; };
# 6240 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[122] * (double) -0.956940335732209; T1im = Y[122 + 1] * (double) -0.956940335732209; T2re = Y[122 + 1] * (double) -0.290284677254462; T2im = Y[122] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[58] - T1re; T2im = Y[58 + 1] - T1im; Y[58] = Y[58] + T1re; Y[58 + 1] = Y[58 + 1] + T1im; Y[122] = T2re; Y[122 + 1] = T2im; };
# 6249 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[124] * (double) -0.980785280403230; T1im = Y[124 + 1] * (double) -0.980785280403230; T2re = Y[124 + 1] * (double) -0.195090322016129; T2im = Y[124] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[60] - T1re; T2im = Y[60 + 1] - T1im; Y[60] = Y[60] + T1re; Y[60 + 1] = Y[60 + 1] + T1im; Y[124] = T2re; Y[124 + 1] = T2im; };
# 6258 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[126] * (double) -0.995184726672197; T1im = Y[126 + 1] * (double) -0.995184726672197; T2re = Y[126 + 1] * (double) -0.098017140329561; T2im = Y[126] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[62] - T1re; T2im = Y[62 + 1] - T1im; Y[62] = Y[62] + T1re; Y[62 + 1] = Y[62 + 1] + T1im; Y[126] = T2re; Y[126 + 1] = T2im; };
# 6267 "gslfft.c"
}







static void
gsl_power2_fft64synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  { register double T2re, T2im; T2re = X[0] - X[64]; T2im = X[0 + 1] - X[64 + 1]; Y[0] = X[0] + X[64]; Y[0 + 1] = X[0 + 1] + X[64 + 1]; Y[2] = T2re * 1.0 / (double) 64; Y[2 + 1] = T2im * 1.0 / (double) 64; Y[0] *= 1.0 / (double) 64; Y[0 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[32] - X[96]; T2im = X[32 + 1] - X[96 + 1]; Y[4] = X[32] + X[96]; Y[4 + 1] = X[32 + 1] + X[96 + 1]; Y[6] = T2re * 1.0 / (double) 64; Y[6 + 1] = T2im * 1.0 / (double) 64; Y[4] *= 1.0 / (double) 64; Y[4 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[16] - X[80]; T2im = X[16 + 1] - X[80 + 1]; Y[8] = X[16] + X[80]; Y[8 + 1] = X[16 + 1] + X[80 + 1]; Y[10] = T2re * 1.0 / (double) 64; Y[10 + 1] = T2im * 1.0 / (double) 64; Y[8] *= 1.0 / (double) 64; Y[8 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[48] - X[112]; T2im = X[48 + 1] - X[112 + 1]; Y[12] = X[48] + X[112]; Y[12 + 1] = X[48 + 1] + X[112 + 1]; Y[14] = T2re * 1.0 / (double) 64; Y[14 + 1] = T2im * 1.0 / (double) 64; Y[12] *= 1.0 / (double) 64; Y[12 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[8] - X[72]; T2im = X[8 + 1] - X[72 + 1]; Y[16] = X[8] + X[72]; Y[16 + 1] = X[8 + 1] + X[72 + 1]; Y[18] = T2re * 1.0 / (double) 64; Y[18 + 1] = T2im * 1.0 / (double) 64; Y[16] *= 1.0 / (double) 64; Y[16 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[40] - X[104]; T2im = X[40 + 1] - X[104 + 1]; Y[20] = X[40] + X[104]; Y[20 + 1] = X[40 + 1] + X[104 + 1]; Y[22] = T2re * 1.0 / (double) 64; Y[22 + 1] = T2im * 1.0 / (double) 64; Y[20] *= 1.0 / (double) 64; Y[20 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[24] - X[88]; T2im = X[24 + 1] - X[88 + 1]; Y[24] = X[24] + X[88]; Y[24 + 1] = X[24 + 1] + X[88 + 1]; Y[26] = T2re * 1.0 / (double) 64; Y[26 + 1] = T2im * 1.0 / (double) 64; Y[24] *= 1.0 / (double) 64; Y[24 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[56] - X[120]; T2im = X[56 + 1] - X[120 + 1]; Y[28] = X[56] + X[120]; Y[28 + 1] = X[56 + 1] + X[120 + 1]; Y[30] = T2re * 1.0 / (double) 64; Y[30 + 1] = T2im * 1.0 / (double) 64; Y[28] *= 1.0 / (double) 64; Y[28 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[4] - X[68]; T2im = X[4 + 1] - X[68 + 1]; Y[32] = X[4] + X[68]; Y[32 + 1] = X[4 + 1] + X[68 + 1]; Y[34] = T2re * 1.0 / (double) 64; Y[34 + 1] = T2im * 1.0 / (double) 64; Y[32] *= 1.0 / (double) 64; Y[32 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[36] - X[100]; T2im = X[36 + 1] - X[100 + 1]; Y[36] = X[36] + X[100]; Y[36 + 1] = X[36 + 1] + X[100 + 1]; Y[38] = T2re * 1.0 / (double) 64; Y[38 + 1] = T2im * 1.0 / (double) 64; Y[36] *= 1.0 / (double) 64; Y[36 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[20] - X[84]; T2im = X[20 + 1] - X[84 + 1]; Y[40] = X[20] + X[84]; Y[40 + 1] = X[20 + 1] + X[84 + 1]; Y[42] = T2re * 1.0 / (double) 64; Y[42 + 1] = T2im * 1.0 / (double) 64; Y[40] *= 1.0 / (double) 64; Y[40 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[52] - X[116]; T2im = X[52 + 1] - X[116 + 1]; Y[44] = X[52] + X[116]; Y[44 + 1] = X[52 + 1] + X[116 + 1]; Y[46] = T2re * 1.0 / (double) 64; Y[46 + 1] = T2im * 1.0 / (double) 64; Y[44] *= 1.0 / (double) 64; Y[44 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[12] - X[76]; T2im = X[12 + 1] - X[76 + 1]; Y[48] = X[12] + X[76]; Y[48 + 1] = X[12 + 1] + X[76 + 1]; Y[50] = T2re * 1.0 / (double) 64; Y[50 + 1] = T2im * 1.0 / (double) 64; Y[48] *= 1.0 / (double) 64; Y[48 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[44] - X[108]; T2im = X[44 + 1] - X[108 + 1]; Y[52] = X[44] + X[108]; Y[52 + 1] = X[44 + 1] + X[108 + 1]; Y[54] = T2re * 1.0 / (double) 64; Y[54 + 1] = T2im * 1.0 / (double) 64; Y[52] *= 1.0 / (double) 64; Y[52 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[28] - X[92]; T2im = X[28 + 1] - X[92 + 1]; Y[56] = X[28] + X[92]; Y[56 + 1] = X[28 + 1] + X[92 + 1]; Y[58] = T2re * 1.0 / (double) 64; Y[58 + 1] = T2im * 1.0 / (double) 64; Y[56] *= 1.0 / (double) 64; Y[56 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[60] - X[124]; T2im = X[60 + 1] - X[124 + 1]; Y[60] = X[60] + X[124]; Y[60 + 1] = X[60 + 1] + X[124 + 1]; Y[62] = T2re * 1.0 / (double) 64; Y[62 + 1] = T2im * 1.0 / (double) 64; Y[60] *= 1.0 / (double) 64; Y[60 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[2] - X[66]; T2im = X[2 + 1] - X[66 + 1]; Y[64] = X[2] + X[66]; Y[64 + 1] = X[2 + 1] + X[66 + 1]; Y[66] = T2re * 1.0 / (double) 64; Y[66 + 1] = T2im * 1.0 / (double) 64; Y[64] *= 1.0 / (double) 64; Y[64 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[34] - X[98]; T2im = X[34 + 1] - X[98 + 1]; Y[68] = X[34] + X[98]; Y[68 + 1] = X[34 + 1] + X[98 + 1]; Y[70] = T2re * 1.0 / (double) 64; Y[70 + 1] = T2im * 1.0 / (double) 64; Y[68] *= 1.0 / (double) 64; Y[68 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[18] - X[82]; T2im = X[18 + 1] - X[82 + 1]; Y[72] = X[18] + X[82]; Y[72 + 1] = X[18 + 1] + X[82 + 1]; Y[74] = T2re * 1.0 / (double) 64; Y[74 + 1] = T2im * 1.0 / (double) 64; Y[72] *= 1.0 / (double) 64; Y[72 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[50] - X[114]; T2im = X[50 + 1] - X[114 + 1]; Y[76] = X[50] + X[114]; Y[76 + 1] = X[50 + 1] + X[114 + 1]; Y[78] = T2re * 1.0 / (double) 64; Y[78 + 1] = T2im * 1.0 / (double) 64; Y[76] *= 1.0 / (double) 64; Y[76 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[10] - X[74]; T2im = X[10 + 1] - X[74 + 1]; Y[80] = X[10] + X[74]; Y[80 + 1] = X[10 + 1] + X[74 + 1]; Y[82] = T2re * 1.0 / (double) 64; Y[82 + 1] = T2im * 1.0 / (double) 64; Y[80] *= 1.0 / (double) 64; Y[80 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[42] - X[106]; T2im = X[42 + 1] - X[106 + 1]; Y[84] = X[42] + X[106]; Y[84 + 1] = X[42 + 1] + X[106 + 1]; Y[86] = T2re * 1.0 / (double) 64; Y[86 + 1] = T2im * 1.0 / (double) 64; Y[84] *= 1.0 / (double) 64; Y[84 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[26] - X[90]; T2im = X[26 + 1] - X[90 + 1]; Y[88] = X[26] + X[90]; Y[88 + 1] = X[26 + 1] + X[90 + 1]; Y[90] = T2re * 1.0 / (double) 64; Y[90 + 1] = T2im * 1.0 / (double) 64; Y[88] *= 1.0 / (double) 64; Y[88 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[58] - X[122]; T2im = X[58 + 1] - X[122 + 1]; Y[92] = X[58] + X[122]; Y[92 + 1] = X[58 + 1] + X[122 + 1]; Y[94] = T2re * 1.0 / (double) 64; Y[94 + 1] = T2im * 1.0 / (double) 64; Y[92] *= 1.0 / (double) 64; Y[92 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[6] - X[70]; T2im = X[6 + 1] - X[70 + 1]; Y[96] = X[6] + X[70]; Y[96 + 1] = X[6 + 1] + X[70 + 1]; Y[98] = T2re * 1.0 / (double) 64; Y[98 + 1] = T2im * 1.0 / (double) 64; Y[96] *= 1.0 / (double) 64; Y[96 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[38] - X[102]; T2im = X[38 + 1] - X[102 + 1]; Y[100] = X[38] + X[102]; Y[100 + 1] = X[38 + 1] + X[102 + 1]; Y[102] = T2re * 1.0 / (double) 64; Y[102 + 1] = T2im * 1.0 / (double) 64; Y[100] *= 1.0 / (double) 64; Y[100 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[22] - X[86]; T2im = X[22 + 1] - X[86 + 1]; Y[104] = X[22] + X[86]; Y[104 + 1] = X[22 + 1] + X[86 + 1]; Y[106] = T2re * 1.0 / (double) 64; Y[106 + 1] = T2im * 1.0 / (double) 64; Y[104] *= 1.0 / (double) 64; Y[104 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[54] - X[118]; T2im = X[54 + 1] - X[118 + 1]; Y[108] = X[54] + X[118]; Y[108 + 1] = X[54 + 1] + X[118 + 1]; Y[110] = T2re * 1.0 / (double) 64; Y[110 + 1] = T2im * 1.0 / (double) 64; Y[108] *= 1.0 / (double) 64; Y[108 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[14] - X[78]; T2im = X[14 + 1] - X[78 + 1]; Y[112] = X[14] + X[78]; Y[112 + 1] = X[14 + 1] + X[78 + 1]; Y[114] = T2re * 1.0 / (double) 64; Y[114 + 1] = T2im * 1.0 / (double) 64; Y[112] *= 1.0 / (double) 64; Y[112 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[46] - X[110]; T2im = X[46 + 1] - X[110 + 1]; Y[116] = X[46] + X[110]; Y[116 + 1] = X[46 + 1] + X[110 + 1]; Y[118] = T2re * 1.0 / (double) 64; Y[118 + 1] = T2im * 1.0 / (double) 64; Y[116] *= 1.0 / (double) 64; Y[116 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[30] - X[94]; T2im = X[30 + 1] - X[94 + 1]; Y[120] = X[30] + X[94]; Y[120 + 1] = X[30 + 1] + X[94 + 1]; Y[122] = T2re * 1.0 / (double) 64; Y[122 + 1] = T2im * 1.0 / (double) 64; Y[120] *= 1.0 / (double) 64; Y[120 + 1] *= 1.0 / (double) 64; };




  { register double T2re, T2im; T2re = X[62] - X[126]; T2im = X[62 + 1] - X[126 + 1]; Y[124] = X[62] + X[126]; Y[124 + 1] = X[62 + 1] + X[126 + 1]; Y[126] = T2re * 1.0 / (double) 64; Y[126 + 1] = T2im * 1.0 / (double) 64; Y[124] *= 1.0 / (double) 64; Y[124 + 1] *= 1.0 / (double) 64; };
# 6454 "gslfft.c"
  gsl_power2_fft64synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft128synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;




  for (block = 0; block < 256; block += 8) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 4]; T2im = Y[block + 0 + 1] - Y[block + 4 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 4]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 4 + 1]; Y[block + 4] = T2re; Y[block + 4 + 1] = T2im; };
# 6484 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 2] - Y[block + 6 + 1]; T2im = Y[block + 2 + 1] + Y[block + 6]; Y[block + 2] = Y[block + 2] + Y[block + 6 + 1]; Y[block + 2 + 1] = Y[block + 2 + 1] - Y[block + 6]; Y[block + 6] = T2re; Y[block + 6 + 1] = T2im; };
# 6493 "gslfft.c"
  }


  for (block = 0; block < 256; block += 16) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 8]; T2im = Y[block + 0 + 1] - Y[block + 8 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 8]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 8 + 1]; Y[block + 8] = T2re; Y[block + 8 + 1] = T2im; };
# 6506 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 10] * (double) +0.707106781186548; T1im = Y[block + 10 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 10] = T2re; Y[block + 10 + 1] = T2im; };
# 6515 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 4] - Y[block + 12 + 1]; T2im = Y[block + 4 + 1] + Y[block + 12]; Y[block + 4] = Y[block + 4] + Y[block + 12 + 1]; Y[block + 4 + 1] = Y[block + 4 + 1] - Y[block + 12]; Y[block + 12] = T2re; Y[block + 12 + 1] = T2im; };
# 6524 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 14] * (double) -0.707106781186547; T1im = Y[block + 14 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 14] = T2re; Y[block + 14 + 1] = T2im; };
# 6533 "gslfft.c"
  }


  for (block = 0; block < 256; block += 32) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 16]; T2im = Y[block + 0 + 1] - Y[block + 16 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 16]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 16 + 1]; Y[block + 16] = T2re; Y[block + 16 + 1] = T2im; };
# 6546 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 18] * (double) +0.923879532511287; T1im = Y[block + 18 + 1] * (double) +0.923879532511287; T2re = Y[block + 18 + 1] * (double) -0.382683432365090; T2im = Y[block + 18] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 18] = T2re; Y[block + 18 + 1] = T2im; };
# 6555 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 20] * (double) +0.707106781186548; T1im = Y[block + 20 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 20] = T2re; Y[block + 20 + 1] = T2im; };
# 6564 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 22] * (double) +0.382683432365090; T1im = Y[block + 22 + 1] * (double) +0.382683432365090; T2re = Y[block + 22 + 1] * (double) -0.923879532511287; T2im = Y[block + 22] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 22] = T2re; Y[block + 22 + 1] = T2im; };
# 6573 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 8] - Y[block + 24 + 1]; T2im = Y[block + 8 + 1] + Y[block + 24]; Y[block + 8] = Y[block + 8] + Y[block + 24 + 1]; Y[block + 8 + 1] = Y[block + 8 + 1] - Y[block + 24]; Y[block + 24] = T2re; Y[block + 24 + 1] = T2im; };
# 6582 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 26] * (double) -0.382683432365090; T1im = Y[block + 26 + 1] * (double) -0.382683432365090; T2re = Y[block + 26 + 1] * (double) -0.923879532511287; T2im = Y[block + 26] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 26] = T2re; Y[block + 26 + 1] = T2im; };
# 6591 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 28] * (double) -0.707106781186547; T1im = Y[block + 28 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 28] = T2re; Y[block + 28 + 1] = T2im; };
# 6600 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 30] * (double) -0.923879532511287; T1im = Y[block + 30 + 1] * (double) -0.923879532511287; T2re = Y[block + 30 + 1] * (double) -0.382683432365090; T2im = Y[block + 30] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 30] = T2re; Y[block + 30 + 1] = T2im; };
# 6609 "gslfft.c"
  }


  for (block = 0; block < 256; block += 64) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 32]; T2im = Y[block + 0 + 1] - Y[block + 32 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 32]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 32 + 1]; Y[block + 32] = T2re; Y[block + 32 + 1] = T2im; };
# 6622 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 34] * (double) +0.980785280403230; T1im = Y[block + 34 + 1] * (double) +0.980785280403230; T2re = Y[block + 34 + 1] * (double) -0.195090322016128; T2im = Y[block + 34] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 34] = T2re; Y[block + 34 + 1] = T2im; };
# 6631 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 36] * (double) +0.923879532511287; T1im = Y[block + 36 + 1] * (double) +0.923879532511287; T2re = Y[block + 36 + 1] * (double) -0.382683432365090; T2im = Y[block + 36] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 36] = T2re; Y[block + 36 + 1] = T2im; };
# 6640 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 38] * (double) +0.831469612302545; T1im = Y[block + 38 + 1] * (double) +0.831469612302545; T2re = Y[block + 38 + 1] * (double) -0.555570233019602; T2im = Y[block + 38] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 38] = T2re; Y[block + 38 + 1] = T2im; };
# 6649 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 40] * (double) +0.707106781186548; T1im = Y[block + 40 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 40] = T2re; Y[block + 40 + 1] = T2im; };
# 6658 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 42] * (double) +0.555570233019602; T1im = Y[block + 42 + 1] * (double) +0.555570233019602; T2re = Y[block + 42 + 1] * (double) -0.831469612302545; T2im = Y[block + 42] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 42] = T2re; Y[block + 42 + 1] = T2im; };
# 6667 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 44] * (double) +0.382683432365090; T1im = Y[block + 44 + 1] * (double) +0.382683432365090; T2re = Y[block + 44 + 1] * (double) -0.923879532511287; T2im = Y[block + 44] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 44] = T2re; Y[block + 44 + 1] = T2im; };
# 6676 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 46] * (double) +0.195090322016128; T1im = Y[block + 46 + 1] * (double) +0.195090322016128; T2re = Y[block + 46 + 1] * (double) -0.980785280403230; T2im = Y[block + 46] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 46] = T2re; Y[block + 46 + 1] = T2im; };
# 6685 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 16] - Y[block + 48 + 1]; T2im = Y[block + 16 + 1] + Y[block + 48]; Y[block + 16] = Y[block + 16] + Y[block + 48 + 1]; Y[block + 16 + 1] = Y[block + 16 + 1] - Y[block + 48]; Y[block + 48] = T2re; Y[block + 48 + 1] = T2im; };
# 6694 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 50] * (double) -0.195090322016128; T1im = Y[block + 50 + 1] * (double) -0.195090322016128; T2re = Y[block + 50 + 1] * (double) -0.980785280403230; T2im = Y[block + 50] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 50] = T2re; Y[block + 50 + 1] = T2im; };
# 6703 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 52] * (double) -0.382683432365090; T1im = Y[block + 52 + 1] * (double) -0.382683432365090; T2re = Y[block + 52 + 1] * (double) -0.923879532511287; T2im = Y[block + 52] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 52] = T2re; Y[block + 52 + 1] = T2im; };
# 6712 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 54] * (double) -0.555570233019602; T1im = Y[block + 54 + 1] * (double) -0.555570233019602; T2re = Y[block + 54 + 1] * (double) -0.831469612302545; T2im = Y[block + 54] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 54] = T2re; Y[block + 54 + 1] = T2im; };
# 6721 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 56] * (double) -0.707106781186547; T1im = Y[block + 56 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 56] = T2re; Y[block + 56 + 1] = T2im; };
# 6730 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 58] * (double) -0.831469612302545; T1im = Y[block + 58 + 1] * (double) -0.831469612302545; T2re = Y[block + 58 + 1] * (double) -0.555570233019602; T2im = Y[block + 58] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 58] = T2re; Y[block + 58 + 1] = T2im; };
# 6739 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 60] * (double) -0.923879532511287; T1im = Y[block + 60 + 1] * (double) -0.923879532511287; T2re = Y[block + 60 + 1] * (double) -0.382683432365090; T2im = Y[block + 60] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 60] = T2re; Y[block + 60 + 1] = T2im; };
# 6748 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 62] * (double) -0.980785280403230; T1im = Y[block + 62 + 1] * (double) -0.980785280403230; T2re = Y[block + 62 + 1] * (double) -0.195090322016129; T2im = Y[block + 62] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 62] = T2re; Y[block + 62 + 1] = T2im; };
# 6757 "gslfft.c"
  }


  for (block = 0; block < 256; block += 128) {
    { register double T2re, T2im; T2re = Y[block + 0] - Y[block + 64]; T2im = Y[block + 0 + 1] - Y[block + 64 + 1]; Y[block + 0] = Y[block + 0] + Y[block + 64]; Y[block + 0 + 1] = Y[block + 0 + 1] + Y[block + 64 + 1]; Y[block + 64] = T2re; Y[block + 64 + 1] = T2im; };
# 6770 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 66] * (double) +0.995184726672197; T1im = Y[block + 66 + 1] * (double) +0.995184726672197; T2re = Y[block + 66 + 1] * (double) -0.098017140329561; T2im = Y[block + 66] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[block + 2] - T1re; T2im = Y[block + 2 + 1] - T1im; Y[block + 2] = Y[block + 2] + T1re; Y[block + 2 + 1] = Y[block + 2 + 1] + T1im; Y[block + 66] = T2re; Y[block + 66 + 1] = T2im; };
# 6779 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 68] * (double) +0.980785280403230; T1im = Y[block + 68 + 1] * (double) +0.980785280403230; T2re = Y[block + 68 + 1] * (double) -0.195090322016128; T2im = Y[block + 68] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[block + 4] - T1re; T2im = Y[block + 4 + 1] - T1im; Y[block + 4] = Y[block + 4] + T1re; Y[block + 4 + 1] = Y[block + 4 + 1] + T1im; Y[block + 68] = T2re; Y[block + 68 + 1] = T2im; };
# 6788 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 70] * (double) +0.956940335732209; T1im = Y[block + 70 + 1] * (double) +0.956940335732209; T2re = Y[block + 70 + 1] * (double) -0.290284677254462; T2im = Y[block + 70] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[block + 6] - T1re; T2im = Y[block + 6 + 1] - T1im; Y[block + 6] = Y[block + 6] + T1re; Y[block + 6 + 1] = Y[block + 6 + 1] + T1im; Y[block + 70] = T2re; Y[block + 70 + 1] = T2im; };
# 6797 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 72] * (double) +0.923879532511287; T1im = Y[block + 72 + 1] * (double) +0.923879532511287; T2re = Y[block + 72 + 1] * (double) -0.382683432365090; T2im = Y[block + 72] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 8] - T1re; T2im = Y[block + 8 + 1] - T1im; Y[block + 8] = Y[block + 8] + T1re; Y[block + 8 + 1] = Y[block + 8 + 1] + T1im; Y[block + 72] = T2re; Y[block + 72 + 1] = T2im; };
# 6806 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 74] * (double) +0.881921264348355; T1im = Y[block + 74 + 1] * (double) +0.881921264348355; T2re = Y[block + 74 + 1] * (double) -0.471396736825998; T2im = Y[block + 74] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[block + 10] - T1re; T2im = Y[block + 10 + 1] - T1im; Y[block + 10] = Y[block + 10] + T1re; Y[block + 10 + 1] = Y[block + 10 + 1] + T1im; Y[block + 74] = T2re; Y[block + 74 + 1] = T2im; };
# 6815 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 76] * (double) +0.831469612302545; T1im = Y[block + 76 + 1] * (double) +0.831469612302545; T2re = Y[block + 76 + 1] * (double) -0.555570233019602; T2im = Y[block + 76] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 12] - T1re; T2im = Y[block + 12 + 1] - T1im; Y[block + 12] = Y[block + 12] + T1re; Y[block + 12 + 1] = Y[block + 12 + 1] + T1im; Y[block + 76] = T2re; Y[block + 76 + 1] = T2im; };
# 6824 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 78] * (double) +0.773010453362737; T1im = Y[block + 78 + 1] * (double) +0.773010453362737; T2re = Y[block + 78 + 1] * (double) -0.634393284163645; T2im = Y[block + 78] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[block + 14] - T1re; T2im = Y[block + 14 + 1] - T1im; Y[block + 14] = Y[block + 14] + T1re; Y[block + 14 + 1] = Y[block + 14 + 1] + T1im; Y[block + 78] = T2re; Y[block + 78 + 1] = T2im; };
# 6833 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 80] * (double) +0.707106781186548; T1im = Y[block + 80 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[block + 16] - T1re; T2im = Y[block + 16 + 1] - T1im; Y[block + 16] = Y[block + 16] + T1re; Y[block + 16 + 1] = Y[block + 16 + 1] + T1im; Y[block + 80] = T2re; Y[block + 80 + 1] = T2im; };
# 6842 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 82] * (double) +0.634393284163645; T1im = Y[block + 82 + 1] * (double) +0.634393284163645; T2re = Y[block + 82 + 1] * (double) -0.773010453362737; T2im = Y[block + 82] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[block + 18] - T1re; T2im = Y[block + 18 + 1] - T1im; Y[block + 18] = Y[block + 18] + T1re; Y[block + 18 + 1] = Y[block + 18 + 1] + T1im; Y[block + 82] = T2re; Y[block + 82 + 1] = T2im; };
# 6851 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 84] * (double) +0.555570233019602; T1im = Y[block + 84 + 1] * (double) +0.555570233019602; T2re = Y[block + 84 + 1] * (double) -0.831469612302545; T2im = Y[block + 84] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 20] - T1re; T2im = Y[block + 20 + 1] - T1im; Y[block + 20] = Y[block + 20] + T1re; Y[block + 20 + 1] = Y[block + 20 + 1] + T1im; Y[block + 84] = T2re; Y[block + 84 + 1] = T2im; };
# 6860 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 86] * (double) +0.471396736825998; T1im = Y[block + 86 + 1] * (double) +0.471396736825998; T2re = Y[block + 86 + 1] * (double) -0.881921264348355; T2im = Y[block + 86] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[block + 22] - T1re; T2im = Y[block + 22 + 1] - T1im; Y[block + 22] = Y[block + 22] + T1re; Y[block + 22 + 1] = Y[block + 22 + 1] + T1im; Y[block + 86] = T2re; Y[block + 86 + 1] = T2im; };
# 6869 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 88] * (double) +0.382683432365090; T1im = Y[block + 88 + 1] * (double) +0.382683432365090; T2re = Y[block + 88 + 1] * (double) -0.923879532511287; T2im = Y[block + 88] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 24] - T1re; T2im = Y[block + 24 + 1] - T1im; Y[block + 24] = Y[block + 24] + T1re; Y[block + 24 + 1] = Y[block + 24 + 1] + T1im; Y[block + 88] = T2re; Y[block + 88 + 1] = T2im; };
# 6878 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 90] * (double) +0.290284677254462; T1im = Y[block + 90 + 1] * (double) +0.290284677254462; T2re = Y[block + 90 + 1] * (double) -0.956940335732209; T2im = Y[block + 90] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[block + 26] - T1re; T2im = Y[block + 26 + 1] - T1im; Y[block + 26] = Y[block + 26] + T1re; Y[block + 26 + 1] = Y[block + 26 + 1] + T1im; Y[block + 90] = T2re; Y[block + 90 + 1] = T2im; };
# 6887 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 92] * (double) +0.195090322016128; T1im = Y[block + 92 + 1] * (double) +0.195090322016128; T2re = Y[block + 92 + 1] * (double) -0.980785280403230; T2im = Y[block + 92] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 28] - T1re; T2im = Y[block + 28 + 1] - T1im; Y[block + 28] = Y[block + 28] + T1re; Y[block + 28 + 1] = Y[block + 28 + 1] + T1im; Y[block + 92] = T2re; Y[block + 92 + 1] = T2im; };
# 6896 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 94] * (double) +0.098017140329561; T1im = Y[block + 94 + 1] * (double) +0.098017140329561; T2re = Y[block + 94 + 1] * (double) -0.995184726672197; T2im = Y[block + 94] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[block + 30] - T1re; T2im = Y[block + 30 + 1] - T1im; Y[block + 30] = Y[block + 30] + T1re; Y[block + 30 + 1] = Y[block + 30 + 1] + T1im; Y[block + 94] = T2re; Y[block + 94 + 1] = T2im; };
# 6905 "gslfft.c"
    { register double T2re, T2im; T2re = Y[block + 32] - Y[block + 96 + 1]; T2im = Y[block + 32 + 1] + Y[block + 96]; Y[block + 32] = Y[block + 32] + Y[block + 96 + 1]; Y[block + 32 + 1] = Y[block + 32 + 1] - Y[block + 96]; Y[block + 96] = T2re; Y[block + 96 + 1] = T2im; };
# 6914 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 98] * (double) -0.098017140329561; T1im = Y[block + 98 + 1] * (double) -0.098017140329561; T2re = Y[block + 98 + 1] * (double) -0.995184726672197; T2im = Y[block + 98] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[block + 34] - T1re; T2im = Y[block + 34 + 1] - T1im; Y[block + 34] = Y[block + 34] + T1re; Y[block + 34 + 1] = Y[block + 34 + 1] + T1im; Y[block + 98] = T2re; Y[block + 98 + 1] = T2im; };
# 6923 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 100] * (double) -0.195090322016128; T1im = Y[block + 100 + 1] * (double) -0.195090322016128; T2re = Y[block + 100 + 1] * (double) -0.980785280403230; T2im = Y[block + 100] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[block + 36] - T1re; T2im = Y[block + 36 + 1] - T1im; Y[block + 36] = Y[block + 36] + T1re; Y[block + 36 + 1] = Y[block + 36 + 1] + T1im; Y[block + 100] = T2re; Y[block + 100 + 1] = T2im; };
# 6932 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 102] * (double) -0.290284677254462; T1im = Y[block + 102 + 1] * (double) -0.290284677254462; T2re = Y[block + 102 + 1] * (double) -0.956940335732209; T2im = Y[block + 102] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[block + 38] - T1re; T2im = Y[block + 38 + 1] - T1im; Y[block + 38] = Y[block + 38] + T1re; Y[block + 38 + 1] = Y[block + 38 + 1] + T1im; Y[block + 102] = T2re; Y[block + 102 + 1] = T2im; };
# 6941 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 104] * (double) -0.382683432365090; T1im = Y[block + 104 + 1] * (double) -0.382683432365090; T2re = Y[block + 104 + 1] * (double) -0.923879532511287; T2im = Y[block + 104] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[block + 40] - T1re; T2im = Y[block + 40 + 1] - T1im; Y[block + 40] = Y[block + 40] + T1re; Y[block + 40 + 1] = Y[block + 40 + 1] + T1im; Y[block + 104] = T2re; Y[block + 104 + 1] = T2im; };
# 6950 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 106] * (double) -0.471396736825998; T1im = Y[block + 106 + 1] * (double) -0.471396736825998; T2re = Y[block + 106 + 1] * (double) -0.881921264348355; T2im = Y[block + 106] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[block + 42] - T1re; T2im = Y[block + 42 + 1] - T1im; Y[block + 42] = Y[block + 42] + T1re; Y[block + 42 + 1] = Y[block + 42 + 1] + T1im; Y[block + 106] = T2re; Y[block + 106 + 1] = T2im; };
# 6959 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 108] * (double) -0.555570233019602; T1im = Y[block + 108 + 1] * (double) -0.555570233019602; T2re = Y[block + 108 + 1] * (double) -0.831469612302545; T2im = Y[block + 108] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[block + 44] - T1re; T2im = Y[block + 44 + 1] - T1im; Y[block + 44] = Y[block + 44] + T1re; Y[block + 44 + 1] = Y[block + 44 + 1] + T1im; Y[block + 108] = T2re; Y[block + 108 + 1] = T2im; };
# 6968 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 110] * (double) -0.634393284163645; T1im = Y[block + 110 + 1] * (double) -0.634393284163645; T2re = Y[block + 110 + 1] * (double) -0.773010453362737; T2im = Y[block + 110] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[block + 46] - T1re; T2im = Y[block + 46 + 1] - T1im; Y[block + 46] = Y[block + 46] + T1re; Y[block + 46 + 1] = Y[block + 46 + 1] + T1im; Y[block + 110] = T2re; Y[block + 110 + 1] = T2im; };
# 6977 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 112] * (double) -0.707106781186547; T1im = Y[block + 112 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[block + 48] - T1re; T2im = Y[block + 48 + 1] - T1im; Y[block + 48] = Y[block + 48] + T1re; Y[block + 48 + 1] = Y[block + 48 + 1] + T1im; Y[block + 112] = T2re; Y[block + 112 + 1] = T2im; };
# 6986 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 114] * (double) -0.773010453362737; T1im = Y[block + 114 + 1] * (double) -0.773010453362737; T2re = Y[block + 114 + 1] * (double) -0.634393284163645; T2im = Y[block + 114] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[block + 50] - T1re; T2im = Y[block + 50 + 1] - T1im; Y[block + 50] = Y[block + 50] + T1re; Y[block + 50 + 1] = Y[block + 50 + 1] + T1im; Y[block + 114] = T2re; Y[block + 114 + 1] = T2im; };
# 6995 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 116] * (double) -0.831469612302545; T1im = Y[block + 116 + 1] * (double) -0.831469612302545; T2re = Y[block + 116 + 1] * (double) -0.555570233019602; T2im = Y[block + 116] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[block + 52] - T1re; T2im = Y[block + 52 + 1] - T1im; Y[block + 52] = Y[block + 52] + T1re; Y[block + 52 + 1] = Y[block + 52 + 1] + T1im; Y[block + 116] = T2re; Y[block + 116 + 1] = T2im; };
# 7004 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 118] * (double) -0.881921264348355; T1im = Y[block + 118 + 1] * (double) -0.881921264348355; T2re = Y[block + 118 + 1] * (double) -0.471396736825998; T2im = Y[block + 118] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[block + 54] - T1re; T2im = Y[block + 54 + 1] - T1im; Y[block + 54] = Y[block + 54] + T1re; Y[block + 54 + 1] = Y[block + 54 + 1] + T1im; Y[block + 118] = T2re; Y[block + 118 + 1] = T2im; };
# 7013 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 120] * (double) -0.923879532511287; T1im = Y[block + 120 + 1] * (double) -0.923879532511287; T2re = Y[block + 120 + 1] * (double) -0.382683432365090; T2im = Y[block + 120] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[block + 56] - T1re; T2im = Y[block + 56 + 1] - T1im; Y[block + 56] = Y[block + 56] + T1re; Y[block + 56 + 1] = Y[block + 56 + 1] + T1im; Y[block + 120] = T2re; Y[block + 120 + 1] = T2im; };
# 7022 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 122] * (double) -0.956940335732209; T1im = Y[block + 122 + 1] * (double) -0.956940335732209; T2re = Y[block + 122 + 1] * (double) -0.290284677254462; T2im = Y[block + 122] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[block + 58] - T1re; T2im = Y[block + 58 + 1] - T1im; Y[block + 58] = Y[block + 58] + T1re; Y[block + 58 + 1] = Y[block + 58 + 1] + T1im; Y[block + 122] = T2re; Y[block + 122 + 1] = T2im; };
# 7031 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 124] * (double) -0.980785280403230; T1im = Y[block + 124 + 1] * (double) -0.980785280403230; T2re = Y[block + 124 + 1] * (double) -0.195090322016129; T2im = Y[block + 124] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[block + 60] - T1re; T2im = Y[block + 60 + 1] - T1im; Y[block + 60] = Y[block + 60] + T1re; Y[block + 60 + 1] = Y[block + 60 + 1] + T1im; Y[block + 124] = T2re; Y[block + 124 + 1] = T2im; };
# 7040 "gslfft.c"
    { register double T1re, T1im, T2re, T2im; T1re = Y[block + 126] * (double) -0.995184726672197; T1im = Y[block + 126 + 1] * (double) -0.995184726672197; T2re = Y[block + 126 + 1] * (double) -0.098017140329561; T2im = Y[block + 126] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[block + 62] - T1re; T2im = Y[block + 62 + 1] - T1im; Y[block + 62] = Y[block + 62] + T1re; Y[block + 62 + 1] = Y[block + 62 + 1] + T1im; Y[block + 126] = T2re; Y[block + 126 + 1] = T2im; };
# 7049 "gslfft.c"
  }


  { register double T2re, T2im; T2re = Y[0] - Y[128]; T2im = Y[0 + 1] - Y[128 + 1]; Y[0] = Y[0] + Y[128]; Y[0 + 1] = Y[0 + 1] + Y[128 + 1]; Y[128] = T2re; Y[128 + 1] = T2im; };
# 7061 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[130] * (double) +0.998795456205172; T1im = Y[130 + 1] * (double) +0.998795456205172; T2re = Y[130 + 1] * (double) -0.049067674327418; T2im = Y[130] * (double) -0.049067674327418; T1re -= T2re; T1im += T2im; T2re = Y[2] - T1re; T2im = Y[2 + 1] - T1im; Y[2] = Y[2] + T1re; Y[2 + 1] = Y[2 + 1] + T1im; Y[130] = T2re; Y[130 + 1] = T2im; };
# 7070 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[132] * (double) +0.995184726672197; T1im = Y[132 + 1] * (double) +0.995184726672197; T2re = Y[132 + 1] * (double) -0.098017140329561; T2im = Y[132] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[4] - T1re; T2im = Y[4 + 1] - T1im; Y[4] = Y[4] + T1re; Y[4 + 1] = Y[4 + 1] + T1im; Y[132] = T2re; Y[132 + 1] = T2im; };
# 7079 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[134] * (double) +0.989176509964781; T1im = Y[134 + 1] * (double) +0.989176509964781; T2re = Y[134 + 1] * (double) -0.146730474455362; T2im = Y[134] * (double) -0.146730474455362; T1re -= T2re; T1im += T2im; T2re = Y[6] - T1re; T2im = Y[6 + 1] - T1im; Y[6] = Y[6] + T1re; Y[6 + 1] = Y[6 + 1] + T1im; Y[134] = T2re; Y[134 + 1] = T2im; };
# 7088 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[136] * (double) +0.980785280403230; T1im = Y[136 + 1] * (double) +0.980785280403230; T2re = Y[136 + 1] * (double) -0.195090322016128; T2im = Y[136] * (double) -0.195090322016128; T1re -= T2re; T1im += T2im; T2re = Y[8] - T1re; T2im = Y[8 + 1] - T1im; Y[8] = Y[8] + T1re; Y[8 + 1] = Y[8 + 1] + T1im; Y[136] = T2re; Y[136 + 1] = T2im; };
# 7097 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[138] * (double) +0.970031253194544; T1im = Y[138 + 1] * (double) +0.970031253194544; T2re = Y[138 + 1] * (double) -0.242980179903264; T2im = Y[138] * (double) -0.242980179903264; T1re -= T2re; T1im += T2im; T2re = Y[10] - T1re; T2im = Y[10 + 1] - T1im; Y[10] = Y[10] + T1re; Y[10 + 1] = Y[10 + 1] + T1im; Y[138] = T2re; Y[138 + 1] = T2im; };
# 7106 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[140] * (double) +0.956940335732209; T1im = Y[140 + 1] * (double) +0.956940335732209; T2re = Y[140 + 1] * (double) -0.290284677254462; T2im = Y[140] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[12] - T1re; T2im = Y[12 + 1] - T1im; Y[12] = Y[12] + T1re; Y[12 + 1] = Y[12 + 1] + T1im; Y[140] = T2re; Y[140 + 1] = T2im; };
# 7115 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[142] * (double) +0.941544065183021; T1im = Y[142 + 1] * (double) +0.941544065183021; T2re = Y[142 + 1] * (double) -0.336889853392220; T2im = Y[142] * (double) -0.336889853392220; T1re -= T2re; T1im += T2im; T2re = Y[14] - T1re; T2im = Y[14 + 1] - T1im; Y[14] = Y[14] + T1re; Y[14 + 1] = Y[14 + 1] + T1im; Y[142] = T2re; Y[142 + 1] = T2im; };
# 7124 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[144] * (double) +0.923879532511287; T1im = Y[144 + 1] * (double) +0.923879532511287; T2re = Y[144 + 1] * (double) -0.382683432365090; T2im = Y[144] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[16] - T1re; T2im = Y[16 + 1] - T1im; Y[16] = Y[16] + T1re; Y[16 + 1] = Y[16 + 1] + T1im; Y[144] = T2re; Y[144 + 1] = T2im; };
# 7133 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[146] * (double) +0.903989293123443; T1im = Y[146 + 1] * (double) +0.903989293123443; T2re = Y[146 + 1] * (double) -0.427555093430282; T2im = Y[146] * (double) -0.427555093430282; T1re -= T2re; T1im += T2im; T2re = Y[18] - T1re; T2im = Y[18 + 1] - T1im; Y[18] = Y[18] + T1re; Y[18 + 1] = Y[18 + 1] + T1im; Y[146] = T2re; Y[146 + 1] = T2im; };
# 7142 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[148] * (double) +0.881921264348355; T1im = Y[148 + 1] * (double) +0.881921264348355; T2re = Y[148 + 1] * (double) -0.471396736825998; T2im = Y[148] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[20] - T1re; T2im = Y[20 + 1] - T1im; Y[20] = Y[20] + T1re; Y[20 + 1] = Y[20 + 1] + T1im; Y[148] = T2re; Y[148 + 1] = T2im; };
# 7151 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[150] * (double) +0.857728610000272; T1im = Y[150 + 1] * (double) +0.857728610000272; T2re = Y[150 + 1] * (double) -0.514102744193222; T2im = Y[150] * (double) -0.514102744193222; T1re -= T2re; T1im += T2im; T2re = Y[22] - T1re; T2im = Y[22 + 1] - T1im; Y[22] = Y[22] + T1re; Y[22 + 1] = Y[22 + 1] + T1im; Y[150] = T2re; Y[150 + 1] = T2im; };
# 7160 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[152] * (double) +0.831469612302545; T1im = Y[152 + 1] * (double) +0.831469612302545; T2re = Y[152 + 1] * (double) -0.555570233019602; T2im = Y[152] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[24] - T1re; T2im = Y[24 + 1] - T1im; Y[24] = Y[24] + T1re; Y[24 + 1] = Y[24 + 1] + T1im; Y[152] = T2re; Y[152 + 1] = T2im; };
# 7169 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[154] * (double) +0.803207531480645; T1im = Y[154 + 1] * (double) +0.803207531480645; T2re = Y[154 + 1] * (double) -0.595699304492433; T2im = Y[154] * (double) -0.595699304492433; T1re -= T2re; T1im += T2im; T2re = Y[26] - T1re; T2im = Y[26 + 1] - T1im; Y[26] = Y[26] + T1re; Y[26 + 1] = Y[26 + 1] + T1im; Y[154] = T2re; Y[154 + 1] = T2im; };
# 7178 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[156] * (double) +0.773010453362737; T1im = Y[156 + 1] * (double) +0.773010453362737; T2re = Y[156 + 1] * (double) -0.634393284163645; T2im = Y[156] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[28] - T1re; T2im = Y[28 + 1] - T1im; Y[28] = Y[28] + T1re; Y[28 + 1] = Y[28 + 1] + T1im; Y[156] = T2re; Y[156 + 1] = T2im; };
# 7187 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[158] * (double) +0.740951125354959; T1im = Y[158 + 1] * (double) +0.740951125354959; T2re = Y[158 + 1] * (double) -0.671558954847018; T2im = Y[158] * (double) -0.671558954847018; T1re -= T2re; T1im += T2im; T2re = Y[30] - T1re; T2im = Y[30 + 1] - T1im; Y[30] = Y[30] + T1re; Y[30 + 1] = Y[30 + 1] + T1im; Y[158] = T2re; Y[158 + 1] = T2im; };
# 7196 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[160] * (double) +0.707106781186548; T1im = Y[160 + 1] * (double) +0.707106781186548; T2re = T1im; T2im = T1re; T1re += T2re; T1im -= T2im; T2re = Y[32] - T1re; T2im = Y[32 + 1] - T1im; Y[32] = Y[32] + T1re; Y[32 + 1] = Y[32 + 1] + T1im; Y[160] = T2re; Y[160 + 1] = T2im; };
# 7205 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[162] * (double) +0.671558954847018; T1im = Y[162 + 1] * (double) +0.671558954847018; T2re = Y[162 + 1] * (double) -0.740951125354959; T2im = Y[162] * (double) -0.740951125354959; T1re -= T2re; T1im += T2im; T2re = Y[34] - T1re; T2im = Y[34 + 1] - T1im; Y[34] = Y[34] + T1re; Y[34 + 1] = Y[34 + 1] + T1im; Y[162] = T2re; Y[162 + 1] = T2im; };
# 7214 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[164] * (double) +0.634393284163645; T1im = Y[164 + 1] * (double) +0.634393284163645; T2re = Y[164 + 1] * (double) -0.773010453362737; T2im = Y[164] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[36] - T1re; T2im = Y[36 + 1] - T1im; Y[36] = Y[36] + T1re; Y[36 + 1] = Y[36 + 1] + T1im; Y[164] = T2re; Y[164 + 1] = T2im; };
# 7223 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[166] * (double) +0.595699304492433; T1im = Y[166 + 1] * (double) +0.595699304492433; T2re = Y[166 + 1] * (double) -0.803207531480645; T2im = Y[166] * (double) -0.803207531480645; T1re -= T2re; T1im += T2im; T2re = Y[38] - T1re; T2im = Y[38 + 1] - T1im; Y[38] = Y[38] + T1re; Y[38 + 1] = Y[38 + 1] + T1im; Y[166] = T2re; Y[166 + 1] = T2im; };
# 7232 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[168] * (double) +0.555570233019602; T1im = Y[168 + 1] * (double) +0.555570233019602; T2re = Y[168 + 1] * (double) -0.831469612302545; T2im = Y[168] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[40] - T1re; T2im = Y[40 + 1] - T1im; Y[40] = Y[40] + T1re; Y[40 + 1] = Y[40 + 1] + T1im; Y[168] = T2re; Y[168 + 1] = T2im; };
# 7241 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[170] * (double) +0.514102744193222; T1im = Y[170 + 1] * (double) +0.514102744193222; T2re = Y[170 + 1] * (double) -0.857728610000272; T2im = Y[170] * (double) -0.857728610000272; T1re -= T2re; T1im += T2im; T2re = Y[42] - T1re; T2im = Y[42 + 1] - T1im; Y[42] = Y[42] + T1re; Y[42 + 1] = Y[42 + 1] + T1im; Y[170] = T2re; Y[170 + 1] = T2im; };
# 7250 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[172] * (double) +0.471396736825998; T1im = Y[172 + 1] * (double) +0.471396736825998; T2re = Y[172 + 1] * (double) -0.881921264348355; T2im = Y[172] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[44] - T1re; T2im = Y[44 + 1] - T1im; Y[44] = Y[44] + T1re; Y[44 + 1] = Y[44 + 1] + T1im; Y[172] = T2re; Y[172 + 1] = T2im; };
# 7259 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[174] * (double) +0.427555093430282; T1im = Y[174 + 1] * (double) +0.427555093430282; T2re = Y[174 + 1] * (double) -0.903989293123443; T2im = Y[174] * (double) -0.903989293123443; T1re -= T2re; T1im += T2im; T2re = Y[46] - T1re; T2im = Y[46 + 1] - T1im; Y[46] = Y[46] + T1re; Y[46 + 1] = Y[46 + 1] + T1im; Y[174] = T2re; Y[174 + 1] = T2im; };
# 7268 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[176] * (double) +0.382683432365090; T1im = Y[176 + 1] * (double) +0.382683432365090; T2re = Y[176 + 1] * (double) -0.923879532511287; T2im = Y[176] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[48] - T1re; T2im = Y[48 + 1] - T1im; Y[48] = Y[48] + T1re; Y[48 + 1] = Y[48 + 1] + T1im; Y[176] = T2re; Y[176 + 1] = T2im; };
# 7277 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[178] * (double) +0.336889853392220; T1im = Y[178 + 1] * (double) +0.336889853392220; T2re = Y[178 + 1] * (double) -0.941544065183021; T2im = Y[178] * (double) -0.941544065183021; T1re -= T2re; T1im += T2im; T2re = Y[50] - T1re; T2im = Y[50 + 1] - T1im; Y[50] = Y[50] + T1re; Y[50 + 1] = Y[50 + 1] + T1im; Y[178] = T2re; Y[178 + 1] = T2im; };
# 7286 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[180] * (double) +0.290284677254462; T1im = Y[180 + 1] * (double) +0.290284677254462; T2re = Y[180 + 1] * (double) -0.956940335732209; T2im = Y[180] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[52] - T1re; T2im = Y[52 + 1] - T1im; Y[52] = Y[52] + T1re; Y[52 + 1] = Y[52 + 1] + T1im; Y[180] = T2re; Y[180 + 1] = T2im; };
# 7295 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[182] * (double) +0.242980179903264; T1im = Y[182 + 1] * (double) +0.242980179903264; T2re = Y[182 + 1] * (double) -0.970031253194544; T2im = Y[182] * (double) -0.970031253194544; T1re -= T2re; T1im += T2im; T2re = Y[54] - T1re; T2im = Y[54 + 1] - T1im; Y[54] = Y[54] + T1re; Y[54 + 1] = Y[54 + 1] + T1im; Y[182] = T2re; Y[182 + 1] = T2im; };
# 7304 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[184] * (double) +0.195090322016128; T1im = Y[184 + 1] * (double) +0.195090322016128; T2re = Y[184 + 1] * (double) -0.980785280403230; T2im = Y[184] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[56] - T1re; T2im = Y[56 + 1] - T1im; Y[56] = Y[56] + T1re; Y[56 + 1] = Y[56 + 1] + T1im; Y[184] = T2re; Y[184 + 1] = T2im; };
# 7313 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[186] * (double) +0.146730474455362; T1im = Y[186 + 1] * (double) +0.146730474455362; T2re = Y[186 + 1] * (double) -0.989176509964781; T2im = Y[186] * (double) -0.989176509964781; T1re -= T2re; T1im += T2im; T2re = Y[58] - T1re; T2im = Y[58 + 1] - T1im; Y[58] = Y[58] + T1re; Y[58 + 1] = Y[58 + 1] + T1im; Y[186] = T2re; Y[186 + 1] = T2im; };
# 7322 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[188] * (double) +0.098017140329561; T1im = Y[188 + 1] * (double) +0.098017140329561; T2re = Y[188 + 1] * (double) -0.995184726672197; T2im = Y[188] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[60] - T1re; T2im = Y[60 + 1] - T1im; Y[60] = Y[60] + T1re; Y[60 + 1] = Y[60 + 1] + T1im; Y[188] = T2re; Y[188 + 1] = T2im; };
# 7331 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[190] * (double) +0.049067674327418; T1im = Y[190 + 1] * (double) +0.049067674327418; T2re = Y[190 + 1] * (double) -0.998795456205172; T2im = Y[190] * (double) -0.998795456205172; T1re -= T2re; T1im += T2im; T2re = Y[62] - T1re; T2im = Y[62 + 1] - T1im; Y[62] = Y[62] + T1re; Y[62 + 1] = Y[62 + 1] + T1im; Y[190] = T2re; Y[190 + 1] = T2im; };
# 7340 "gslfft.c"
  { register double T2re, T2im; T2re = Y[64] - Y[192 + 1]; T2im = Y[64 + 1] + Y[192]; Y[64] = Y[64] + Y[192 + 1]; Y[64 + 1] = Y[64 + 1] - Y[192]; Y[192] = T2re; Y[192 + 1] = T2im; };
# 7349 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[194] * (double) -0.049067674327418; T1im = Y[194 + 1] * (double) -0.049067674327418; T2re = Y[194 + 1] * (double) -0.998795456205172; T2im = Y[194] * (double) -0.998795456205172; T1re -= T2re; T1im += T2im; T2re = Y[66] - T1re; T2im = Y[66 + 1] - T1im; Y[66] = Y[66] + T1re; Y[66 + 1] = Y[66 + 1] + T1im; Y[194] = T2re; Y[194 + 1] = T2im; };
# 7358 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[196] * (double) -0.098017140329561; T1im = Y[196 + 1] * (double) -0.098017140329561; T2re = Y[196 + 1] * (double) -0.995184726672197; T2im = Y[196] * (double) -0.995184726672197; T1re -= T2re; T1im += T2im; T2re = Y[68] - T1re; T2im = Y[68 + 1] - T1im; Y[68] = Y[68] + T1re; Y[68 + 1] = Y[68 + 1] + T1im; Y[196] = T2re; Y[196 + 1] = T2im; };
# 7367 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[198] * (double) -0.146730474455362; T1im = Y[198 + 1] * (double) -0.146730474455362; T2re = Y[198 + 1] * (double) -0.989176509964781; T2im = Y[198] * (double) -0.989176509964781; T1re -= T2re; T1im += T2im; T2re = Y[70] - T1re; T2im = Y[70 + 1] - T1im; Y[70] = Y[70] + T1re; Y[70 + 1] = Y[70 + 1] + T1im; Y[198] = T2re; Y[198 + 1] = T2im; };
# 7376 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[200] * (double) -0.195090322016128; T1im = Y[200 + 1] * (double) -0.195090322016128; T2re = Y[200 + 1] * (double) -0.980785280403230; T2im = Y[200] * (double) -0.980785280403230; T1re -= T2re; T1im += T2im; T2re = Y[72] - T1re; T2im = Y[72 + 1] - T1im; Y[72] = Y[72] + T1re; Y[72 + 1] = Y[72 + 1] + T1im; Y[200] = T2re; Y[200 + 1] = T2im; };
# 7385 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[202] * (double) -0.242980179903264; T1im = Y[202 + 1] * (double) -0.242980179903264; T2re = Y[202 + 1] * (double) -0.970031253194544; T2im = Y[202] * (double) -0.970031253194544; T1re -= T2re; T1im += T2im; T2re = Y[74] - T1re; T2im = Y[74 + 1] - T1im; Y[74] = Y[74] + T1re; Y[74 + 1] = Y[74 + 1] + T1im; Y[202] = T2re; Y[202 + 1] = T2im; };
# 7394 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[204] * (double) -0.290284677254462; T1im = Y[204 + 1] * (double) -0.290284677254462; T2re = Y[204 + 1] * (double) -0.956940335732209; T2im = Y[204] * (double) -0.956940335732209; T1re -= T2re; T1im += T2im; T2re = Y[76] - T1re; T2im = Y[76 + 1] - T1im; Y[76] = Y[76] + T1re; Y[76 + 1] = Y[76 + 1] + T1im; Y[204] = T2re; Y[204 + 1] = T2im; };
# 7403 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[206] * (double) -0.336889853392220; T1im = Y[206 + 1] * (double) -0.336889853392220; T2re = Y[206 + 1] * (double) -0.941544065183021; T2im = Y[206] * (double) -0.941544065183021; T1re -= T2re; T1im += T2im; T2re = Y[78] - T1re; T2im = Y[78 + 1] - T1im; Y[78] = Y[78] + T1re; Y[78 + 1] = Y[78 + 1] + T1im; Y[206] = T2re; Y[206 + 1] = T2im; };
# 7412 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[208] * (double) -0.382683432365090; T1im = Y[208 + 1] * (double) -0.382683432365090; T2re = Y[208 + 1] * (double) -0.923879532511287; T2im = Y[208] * (double) -0.923879532511287; T1re -= T2re; T1im += T2im; T2re = Y[80] - T1re; T2im = Y[80 + 1] - T1im; Y[80] = Y[80] + T1re; Y[80 + 1] = Y[80 + 1] + T1im; Y[208] = T2re; Y[208 + 1] = T2im; };
# 7421 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[210] * (double) -0.427555093430282; T1im = Y[210 + 1] * (double) -0.427555093430282; T2re = Y[210 + 1] * (double) -0.903989293123443; T2im = Y[210] * (double) -0.903989293123443; T1re -= T2re; T1im += T2im; T2re = Y[82] - T1re; T2im = Y[82 + 1] - T1im; Y[82] = Y[82] + T1re; Y[82 + 1] = Y[82 + 1] + T1im; Y[210] = T2re; Y[210 + 1] = T2im; };
# 7430 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[212] * (double) -0.471396736825998; T1im = Y[212 + 1] * (double) -0.471396736825998; T2re = Y[212 + 1] * (double) -0.881921264348355; T2im = Y[212] * (double) -0.881921264348355; T1re -= T2re; T1im += T2im; T2re = Y[84] - T1re; T2im = Y[84 + 1] - T1im; Y[84] = Y[84] + T1re; Y[84 + 1] = Y[84 + 1] + T1im; Y[212] = T2re; Y[212 + 1] = T2im; };
# 7439 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[214] * (double) -0.514102744193222; T1im = Y[214 + 1] * (double) -0.514102744193222; T2re = Y[214 + 1] * (double) -0.857728610000272; T2im = Y[214] * (double) -0.857728610000272; T1re -= T2re; T1im += T2im; T2re = Y[86] - T1re; T2im = Y[86 + 1] - T1im; Y[86] = Y[86] + T1re; Y[86 + 1] = Y[86 + 1] + T1im; Y[214] = T2re; Y[214 + 1] = T2im; };
# 7448 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[216] * (double) -0.555570233019602; T1im = Y[216 + 1] * (double) -0.555570233019602; T2re = Y[216 + 1] * (double) -0.831469612302545; T2im = Y[216] * (double) -0.831469612302545; T1re -= T2re; T1im += T2im; T2re = Y[88] - T1re; T2im = Y[88 + 1] - T1im; Y[88] = Y[88] + T1re; Y[88 + 1] = Y[88 + 1] + T1im; Y[216] = T2re; Y[216 + 1] = T2im; };
# 7457 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[218] * (double) -0.595699304492433; T1im = Y[218 + 1] * (double) -0.595699304492433; T2re = Y[218 + 1] * (double) -0.803207531480645; T2im = Y[218] * (double) -0.803207531480645; T1re -= T2re; T1im += T2im; T2re = Y[90] - T1re; T2im = Y[90 + 1] - T1im; Y[90] = Y[90] + T1re; Y[90 + 1] = Y[90 + 1] + T1im; Y[218] = T2re; Y[218 + 1] = T2im; };
# 7466 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[220] * (double) -0.634393284163645; T1im = Y[220 + 1] * (double) -0.634393284163645; T2re = Y[220 + 1] * (double) -0.773010453362737; T2im = Y[220] * (double) -0.773010453362737; T1re -= T2re; T1im += T2im; T2re = Y[92] - T1re; T2im = Y[92 + 1] - T1im; Y[92] = Y[92] + T1re; Y[92 + 1] = Y[92 + 1] + T1im; Y[220] = T2re; Y[220 + 1] = T2im; };
# 7475 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[222] * (double) -0.671558954847018; T1im = Y[222 + 1] * (double) -0.671558954847018; T2re = Y[222 + 1] * (double) -0.740951125354959; T2im = Y[222] * (double) -0.740951125354959; T1re -= T2re; T1im += T2im; T2re = Y[94] - T1re; T2im = Y[94 + 1] - T1im; Y[94] = Y[94] + T1re; Y[94 + 1] = Y[94 + 1] + T1im; Y[222] = T2re; Y[222 + 1] = T2im; };
# 7484 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[224] * (double) -0.707106781186547; T1im = Y[224 + 1] * (double) -0.707106781186547; T2re = T1im; T2im = T1re; T1re -= T2re; T1im += T2im; T2re = Y[96] - T1re; T2im = Y[96 + 1] - T1im; Y[96] = Y[96] + T1re; Y[96 + 1] = Y[96 + 1] + T1im; Y[224] = T2re; Y[224 + 1] = T2im; };
# 7493 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[226] * (double) -0.740951125354959; T1im = Y[226 + 1] * (double) -0.740951125354959; T2re = Y[226 + 1] * (double) -0.671558954847019; T2im = Y[226] * (double) -0.671558954847019; T1re -= T2re; T1im += T2im; T2re = Y[98] - T1re; T2im = Y[98 + 1] - T1im; Y[98] = Y[98] + T1re; Y[98 + 1] = Y[98 + 1] + T1im; Y[226] = T2re; Y[226 + 1] = T2im; };
# 7502 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[228] * (double) -0.773010453362737; T1im = Y[228 + 1] * (double) -0.773010453362737; T2re = Y[228 + 1] * (double) -0.634393284163645; T2im = Y[228] * (double) -0.634393284163645; T1re -= T2re; T1im += T2im; T2re = Y[100] - T1re; T2im = Y[100 + 1] - T1im; Y[100] = Y[100] + T1re; Y[100 + 1] = Y[100 + 1] + T1im; Y[228] = T2re; Y[228 + 1] = T2im; };
# 7511 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[230] * (double) -0.803207531480645; T1im = Y[230 + 1] * (double) -0.803207531480645; T2re = Y[230 + 1] * (double) -0.595699304492433; T2im = Y[230] * (double) -0.595699304492433; T1re -= T2re; T1im += T2im; T2re = Y[102] - T1re; T2im = Y[102 + 1] - T1im; Y[102] = Y[102] + T1re; Y[102 + 1] = Y[102 + 1] + T1im; Y[230] = T2re; Y[230 + 1] = T2im; };
# 7520 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[232] * (double) -0.831469612302545; T1im = Y[232 + 1] * (double) -0.831469612302545; T2re = Y[232 + 1] * (double) -0.555570233019602; T2im = Y[232] * (double) -0.555570233019602; T1re -= T2re; T1im += T2im; T2re = Y[104] - T1re; T2im = Y[104 + 1] - T1im; Y[104] = Y[104] + T1re; Y[104 + 1] = Y[104 + 1] + T1im; Y[232] = T2re; Y[232 + 1] = T2im; };
# 7529 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[234] * (double) -0.857728610000272; T1im = Y[234 + 1] * (double) -0.857728610000272; T2re = Y[234 + 1] * (double) -0.514102744193222; T2im = Y[234] * (double) -0.514102744193222; T1re -= T2re; T1im += T2im; T2re = Y[106] - T1re; T2im = Y[106 + 1] - T1im; Y[106] = Y[106] + T1re; Y[106 + 1] = Y[106 + 1] + T1im; Y[234] = T2re; Y[234 + 1] = T2im; };
# 7538 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[236] * (double) -0.881921264348355; T1im = Y[236 + 1] * (double) -0.881921264348355; T2re = Y[236 + 1] * (double) -0.471396736825998; T2im = Y[236] * (double) -0.471396736825998; T1re -= T2re; T1im += T2im; T2re = Y[108] - T1re; T2im = Y[108 + 1] - T1im; Y[108] = Y[108] + T1re; Y[108 + 1] = Y[108 + 1] + T1im; Y[236] = T2re; Y[236 + 1] = T2im; };
# 7547 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[238] * (double) -0.903989293123443; T1im = Y[238 + 1] * (double) -0.903989293123443; T2re = Y[238 + 1] * (double) -0.427555093430282; T2im = Y[238] * (double) -0.427555093430282; T1re -= T2re; T1im += T2im; T2re = Y[110] - T1re; T2im = Y[110 + 1] - T1im; Y[110] = Y[110] + T1re; Y[110 + 1] = Y[110 + 1] + T1im; Y[238] = T2re; Y[238 + 1] = T2im; };
# 7556 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[240] * (double) -0.923879532511287; T1im = Y[240 + 1] * (double) -0.923879532511287; T2re = Y[240 + 1] * (double) -0.382683432365090; T2im = Y[240] * (double) -0.382683432365090; T1re -= T2re; T1im += T2im; T2re = Y[112] - T1re; T2im = Y[112 + 1] - T1im; Y[112] = Y[112] + T1re; Y[112 + 1] = Y[112 + 1] + T1im; Y[240] = T2re; Y[240 + 1] = T2im; };
# 7565 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[242] * (double) -0.941544065183021; T1im = Y[242 + 1] * (double) -0.941544065183021; T2re = Y[242 + 1] * (double) -0.336889853392220; T2im = Y[242] * (double) -0.336889853392220; T1re -= T2re; T1im += T2im; T2re = Y[114] - T1re; T2im = Y[114 + 1] - T1im; Y[114] = Y[114] + T1re; Y[114 + 1] = Y[114 + 1] + T1im; Y[242] = T2re; Y[242 + 1] = T2im; };
# 7574 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[244] * (double) -0.956940335732209; T1im = Y[244 + 1] * (double) -0.956940335732209; T2re = Y[244 + 1] * (double) -0.290284677254462; T2im = Y[244] * (double) -0.290284677254462; T1re -= T2re; T1im += T2im; T2re = Y[116] - T1re; T2im = Y[116 + 1] - T1im; Y[116] = Y[116] + T1re; Y[116 + 1] = Y[116 + 1] + T1im; Y[244] = T2re; Y[244 + 1] = T2im; };
# 7583 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[246] * (double) -0.970031253194544; T1im = Y[246 + 1] * (double) -0.970031253194544; T2re = Y[246 + 1] * (double) -0.242980179903264; T2im = Y[246] * (double) -0.242980179903264; T1re -= T2re; T1im += T2im; T2re = Y[118] - T1re; T2im = Y[118 + 1] - T1im; Y[118] = Y[118] + T1re; Y[118 + 1] = Y[118 + 1] + T1im; Y[246] = T2re; Y[246 + 1] = T2im; };
# 7592 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[248] * (double) -0.980785280403230; T1im = Y[248 + 1] * (double) -0.980785280403230; T2re = Y[248 + 1] * (double) -0.195090322016129; T2im = Y[248] * (double) -0.195090322016129; T1re -= T2re; T1im += T2im; T2re = Y[120] - T1re; T2im = Y[120 + 1] - T1im; Y[120] = Y[120] + T1re; Y[120 + 1] = Y[120 + 1] + T1im; Y[248] = T2re; Y[248 + 1] = T2im; };
# 7601 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[250] * (double) -0.989176509964781; T1im = Y[250 + 1] * (double) -0.989176509964781; T2re = Y[250 + 1] * (double) -0.146730474455362; T2im = Y[250] * (double) -0.146730474455362; T1re -= T2re; T1im += T2im; T2re = Y[122] - T1re; T2im = Y[122 + 1] - T1im; Y[122] = Y[122] + T1re; Y[122 + 1] = Y[122 + 1] + T1im; Y[250] = T2re; Y[250 + 1] = T2im; };
# 7610 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[252] * (double) -0.995184726672197; T1im = Y[252 + 1] * (double) -0.995184726672197; T2re = Y[252 + 1] * (double) -0.098017140329561; T2im = Y[252] * (double) -0.098017140329561; T1re -= T2re; T1im += T2im; T2re = Y[124] - T1re; T2im = Y[124 + 1] - T1im; Y[124] = Y[124] + T1re; Y[124 + 1] = Y[124 + 1] + T1im; Y[252] = T2re; Y[252 + 1] = T2im; };
# 7619 "gslfft.c"
  { register double T1re, T1im, T2re, T2im; T1re = Y[254] * (double) -0.998795456205172; T1im = Y[254 + 1] * (double) -0.998795456205172; T2re = Y[254 + 1] * (double) -0.049067674327418; T2im = Y[254] * (double) -0.049067674327418; T1re -= T2re; T1im += T2im; T2re = Y[126] - T1re; T2im = Y[126 + 1] - T1im; Y[126] = Y[126] + T1re; Y[126 + 1] = Y[126 + 1] + T1im; Y[254] = T2re; Y[254 + 1] = T2im; };
# 7628 "gslfft.c"
}







static void
gsl_power2_fft128synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (128, X, Y);
# 7658 "gslfft.c"
  gsl_power2_fft128synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft256synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 7688 "gslfft.c"
  gsl_power2_fft128synthesis_skip2 (X, Y);
  gsl_power2_fft128synthesis_skip2 (X + 256, Y + 256);


  {
    static const double Wconst256[] = {
      +0.999698818696204, -0.024541228522912,
      +0.998795456205172, -0.049067674327418,
      +0.997290456678690, -0.073564563599667,
      +0.995184726672197, -0.098017140329561,
      +0.992479534598710, -0.122410675199216,
      +0.989176509964781, -0.146730474455362,
      +0.985277642388941, -0.170961888760301,
      +0.980785280403230, -0.195090322016128,
      +0.975702130038529, -0.219101240156870,
      +0.970031253194544, -0.242980179903264,
      +0.963776065795440, -0.266712757474898,
      +0.956940335732209, -0.290284677254462,
      +0.949528180593037, -0.313681740398892,
      +0.941544065183021, -0.336889853392220,
      +0.932992798834739, -0.359895036534988,
      +0.923879532511287, -0.382683432365090,
      +0.914209755703531, -0.405241314004990,
      +0.903989293123443, -0.427555093430282,
      +0.893224301195515, -0.449611329654607,
      +0.881921264348355, -0.471396736825998,
      +0.870086991108711, -0.492898192229784,
      +0.857728610000272, -0.514102744193222,
      +0.844853565249707, -0.534997619887097,
      +0.831469612302545, -0.555570233019602,
      +0.817584813151584, -0.575808191417845,
      +0.803207531480645, -0.595699304492433,
      +0.788346427626606, -0.615231590580627,
      +0.773010453362737, -0.634393284163645,
      +0.757208846506485, -0.653172842953777,
      +0.740951125354959, -0.671558954847018,
      +0.724247082951467, -0.689540544737067,
      +0.707106781186548, -0.707106781186547,
      +0.689540544737067, -0.724247082951467,
      +0.671558954847018, -0.740951125354959,
      +0.653172842953777, -0.757208846506484,
      +0.634393284163645, -0.773010453362737,
      +0.615231590580627, -0.788346427626606,
      +0.595699304492433, -0.803207531480645,
      +0.575808191417845, -0.817584813151584,
      +0.555570233019602, -0.831469612302545,
      +0.534997619887097, -0.844853565249707,
      +0.514102744193222, -0.857728610000272,
      +0.492898192229784, -0.870086991108711,
      +0.471396736825998, -0.881921264348355,
      +0.449611329654607, -0.893224301195515,
      +0.427555093430282, -0.903989293123443,
      +0.405241314004990, -0.914209755703531,
      +0.382683432365090, -0.923879532511287,
      +0.359895036534988, -0.932992798834739,
      +0.336889853392220, -0.941544065183021,
      +0.313681740398892, -0.949528180593037,
      +0.290284677254462, -0.956940335732209,
      +0.266712757474898, -0.963776065795440,
      +0.242980179903264, -0.970031253194544,
      +0.219101240156870, -0.975702130038529,
      +0.195090322016128, -0.980785280403230,
      +0.170961888760301, -0.985277642388941,
      +0.146730474455362, -0.989176509964781,
      +0.122410675199216, -0.992479534598710,
      +0.098017140329561, -0.995184726672197,
      +0.073564563599667, -0.997290456678690,
      +0.049067674327418, -0.998795456205172,
      +0.024541228522912, -0.999698818696204,
    };
    const double *W = Wconst256 - 2;
    double *Z = Y + 128;
    for (offset = 0; offset < 512; offset += 512) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 256]; T2im = Y[offset + 1] - Y[offset + 256 + 1]; Y[offset] = Y[offset] + Y[offset + 256]; Y[offset + 1] = Y[offset + 1] + Y[offset + 256 + 1]; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] - Z[offset + 256 + 1]; T2im = Z[offset + 1] + Z[offset + 256]; Z[offset] = Z[offset] + Z[offset + 256 + 1]; Z[offset + 1] = Z[offset + 1] - Z[offset + 256]; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 128; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 512; block += 512) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 256] * Wre; T1im = Y[offset + 256 + 1] * Wre; T2re = Y[offset + 256 + 1] * Wim; T2im = Y[offset + 256] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 256] * Wim; T1im = Z[offset + 256 + 1] * Wim; T2re = Z[offset + 256 + 1] * Wre; T2im = Z[offset + 256] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] - T1re; T2im = Z[offset + 1] - T1im; Z[offset] = Z[offset] + T1re; Z[offset + 1] = Z[offset + 1] + T1im; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




      }
    }
  }
}







static void
gsl_power2_fft256synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (256, X, Y);
# 7821 "gslfft.c"
  gsl_power2_fft256synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft512synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 7851 "gslfft.c"
  gsl_power2_fft128synthesis_skip2 (X, Y);
  gsl_power2_fft128synthesis_skip2 (X + 256, Y + 256);
  gsl_power2_fft128synthesis_skip2 (X + 512, Y + 512);
  gsl_power2_fft128synthesis_skip2 (X + 768, Y + 768);


  {
    static const double Wconst256[] = {
      +0.999698818696204, -0.024541228522912,
      +0.998795456205172, -0.049067674327418,
      +0.997290456678690, -0.073564563599667,
      +0.995184726672197, -0.098017140329561,
      +0.992479534598710, -0.122410675199216,
      +0.989176509964781, -0.146730474455362,
      +0.985277642388941, -0.170961888760301,
      +0.980785280403230, -0.195090322016128,
      +0.975702130038529, -0.219101240156870,
      +0.970031253194544, -0.242980179903264,
      +0.963776065795440, -0.266712757474898,
      +0.956940335732209, -0.290284677254462,
      +0.949528180593037, -0.313681740398892,
      +0.941544065183021, -0.336889853392220,
      +0.932992798834739, -0.359895036534988,
      +0.923879532511287, -0.382683432365090,
      +0.914209755703531, -0.405241314004990,
      +0.903989293123443, -0.427555093430282,
      +0.893224301195515, -0.449611329654607,
      +0.881921264348355, -0.471396736825998,
      +0.870086991108711, -0.492898192229784,
      +0.857728610000272, -0.514102744193222,
      +0.844853565249707, -0.534997619887097,
      +0.831469612302545, -0.555570233019602,
      +0.817584813151584, -0.575808191417845,
      +0.803207531480645, -0.595699304492433,
      +0.788346427626606, -0.615231590580627,
      +0.773010453362737, -0.634393284163645,
      +0.757208846506485, -0.653172842953777,
      +0.740951125354959, -0.671558954847018,
      +0.724247082951467, -0.689540544737067,
      +0.707106781186548, -0.707106781186547,
      +0.689540544737067, -0.724247082951467,
      +0.671558954847018, -0.740951125354959,
      +0.653172842953777, -0.757208846506484,
      +0.634393284163645, -0.773010453362737,
      +0.615231590580627, -0.788346427626606,
      +0.595699304492433, -0.803207531480645,
      +0.575808191417845, -0.817584813151584,
      +0.555570233019602, -0.831469612302545,
      +0.534997619887097, -0.844853565249707,
      +0.514102744193222, -0.857728610000272,
      +0.492898192229784, -0.870086991108711,
      +0.471396736825998, -0.881921264348355,
      +0.449611329654607, -0.893224301195515,
      +0.427555093430282, -0.903989293123443,
      +0.405241314004990, -0.914209755703531,
      +0.382683432365090, -0.923879532511287,
      +0.359895036534988, -0.932992798834739,
      +0.336889853392220, -0.941544065183021,
      +0.313681740398892, -0.949528180593037,
      +0.290284677254462, -0.956940335732209,
      +0.266712757474898, -0.963776065795440,
      +0.242980179903264, -0.970031253194544,
      +0.219101240156870, -0.975702130038529,
      +0.195090322016128, -0.980785280403230,
      +0.170961888760301, -0.985277642388941,
      +0.146730474455362, -0.989176509964781,
      +0.122410675199216, -0.992479534598710,
      +0.098017140329561, -0.995184726672197,
      +0.073564563599667, -0.997290456678690,
      +0.049067674327418, -0.998795456205172,
      +0.024541228522912, -0.999698818696204,
    };
    const double *W = Wconst256 - 2;
    double *Z = Y + 128;
    for (offset = 0; offset < 1024; offset += 512) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 256]; T2im = Y[offset + 1] - Y[offset + 256 + 1]; Y[offset] = Y[offset] + Y[offset + 256]; Y[offset + 1] = Y[offset + 1] + Y[offset + 256 + 1]; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] - Z[offset + 256 + 1]; T2im = Z[offset + 1] + Z[offset + 256]; Z[offset] = Z[offset] + Z[offset + 256 + 1]; Z[offset + 1] = Z[offset + 1] - Z[offset + 256]; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 128; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 1024; block += 512) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 256] * Wre; T1im = Y[offset + 256 + 1] * Wre; T2re = Y[offset + 256 + 1] * Wim; T2im = Y[offset + 256] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 256] = T2re; Y[offset + 256 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 256] * Wim; T1im = Z[offset + 256 + 1] * Wim; T2re = Z[offset + 256 + 1] * Wre; T2im = Z[offset + 256] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] - T1re; T2im = Z[offset + 1] - T1im; Z[offset] = Z[offset] + T1re; Z[offset + 1] = Z[offset + 1] + T1im; Z[offset + 256] = T2re; Z[offset + 256 + 1] = T2im; };




      }
    }
  }


  {
    static const double Wconst512[] = {
      +0.999924701839145, -0.012271538285720,
      +0.999698818696204, -0.024541228522912,
      +0.999322384588350, -0.036807222941359,
      +0.998795456205172, -0.049067674327418,
      +0.998118112900149, -0.061320736302209,
      +0.997290456678690, -0.073564563599667,
      +0.996312612182778, -0.085797312344440,
      +0.995184726672197, -0.098017140329561,
      +0.993906970002356, -0.110222207293883,
      +0.992479534598710, -0.122410675199216,
      +0.990902635427780, -0.134580708507126,
      +0.989176509964781, -0.146730474455362,
      +0.987301418157858, -0.158858143333861,
      +0.985277642388941, -0.170961888760301,
      +0.983105487431216, -0.183039887955141,
      +0.980785280403230, -0.195090322016128,
      +0.978317370719628, -0.207111376192219,
      +0.975702130038529, -0.219101240156870,
      +0.972939952205560, -0.231058108280671,
      +0.970031253194544, -0.242980179903264,
      +0.966976471044852, -0.254865659604515,
      +0.963776065795440, -0.266712757474898,
      +0.960430519415566, -0.278519689385053,
      +0.956940335732209, -0.290284677254462,
      +0.953306040354194, -0.302005949319228,
      +0.949528180593037, -0.313681740398892,
      +0.945607325380521, -0.325310292162263,
      +0.941544065183021, -0.336889853392220,
      +0.937339011912575, -0.348418680249435,
      +0.932992798834739, -0.359895036534988,
      +0.928506080473216, -0.371317193951838,
      +0.923879532511287, -0.382683432365090,
      +0.919113851690058, -0.393992040061048,
      +0.914209755703531, -0.405241314004990,
      +0.909167983090522, -0.416429560097637,
      +0.903989293123443, -0.427555093430282,
      +0.898674465693954, -0.438616238538528,
      +0.893224301195515, -0.449611329654607,
      +0.887639620402854, -0.460538710958240,
      +0.881921264348355, -0.471396736825998,
      +0.876070094195407, -0.482183772079123,
      +0.870086991108711, -0.492898192229784,
      +0.863972856121587, -0.503538383725718,
      +0.857728610000272, -0.514102744193222,
      +0.851355193105265, -0.524589682678469,
      +0.844853565249707, -0.534997619887097,
      +0.838224705554838, -0.545324988422046,
      +0.831469612302545, -0.555570233019602,
      +0.824589302785025, -0.565731810783613,
      +0.817584813151584, -0.575808191417845,
      +0.810457198252595, -0.585797857456439,
      +0.803207531480645, -0.595699304492433,
      +0.795836904608884, -0.605511041404326,
      +0.788346427626606, -0.615231590580627,
      +0.780737228572094, -0.624859488142386,
      +0.773010453362737, -0.634393284163645,
      +0.765167265622459, -0.643831542889791,
      +0.757208846506485, -0.653172842953777,
      +0.749136394523459, -0.662415777590172,
      +0.740951125354959, -0.671558954847018,
      +0.732654271672413, -0.680600997795453,
      +0.724247082951467, -0.689540544737067,
      +0.715730825283819, -0.698376249408973,
      +0.707106781186548, -0.707106781186547,
      +0.698376249408973, -0.715730825283819,
      +0.689540544737067, -0.724247082951467,
      +0.680600997795453, -0.732654271672413,
      +0.671558954847018, -0.740951125354959,
      +0.662415777590172, -0.749136394523459,
      +0.653172842953777, -0.757208846506484,
      +0.643831542889791, -0.765167265622459,
      +0.634393284163645, -0.773010453362737,
      +0.624859488142386, -0.780737228572094,
      +0.615231590580627, -0.788346427626606,
      +0.605511041404326, -0.795836904608883,
      +0.595699304492433, -0.803207531480645,
      +0.585797857456439, -0.810457198252595,
      +0.575808191417845, -0.817584813151584,
      +0.565731810783613, -0.824589302785025,
      +0.555570233019602, -0.831469612302545,
      +0.545324988422046, -0.838224705554838,
      +0.534997619887097, -0.844853565249707,
      +0.524589682678469, -0.851355193105265,
      +0.514102744193222, -0.857728610000272,
      +0.503538383725718, -0.863972856121587,
      +0.492898192229784, -0.870086991108711,
      +0.482183772079123, -0.876070094195407,
      +0.471396736825998, -0.881921264348355,
      +0.460538710958240, -0.887639620402854,
      +0.449611329654607, -0.893224301195515,
      +0.438616238538528, -0.898674465693954,
      +0.427555093430282, -0.903989293123443,
      +0.416429560097637, -0.909167983090522,
      +0.405241314004990, -0.914209755703531,
      +0.393992040061048, -0.919113851690058,
      +0.382683432365090, -0.923879532511287,
      +0.371317193951838, -0.928506080473215,
      +0.359895036534988, -0.932992798834739,
      +0.348418680249435, -0.937339011912575,
      +0.336889853392220, -0.941544065183021,
      +0.325310292162263, -0.945607325380521,
      +0.313681740398892, -0.949528180593037,
      +0.302005949319228, -0.953306040354194,
      +0.290284677254462, -0.956940335732209,
      +0.278519689385053, -0.960430519415566,
      +0.266712757474898, -0.963776065795440,
      +0.254865659604515, -0.966976471044852,
      +0.242980179903264, -0.970031253194544,
      +0.231058108280671, -0.972939952205560,
      +0.219101240156870, -0.975702130038529,
      +0.207111376192219, -0.978317370719628,
      +0.195090322016128, -0.980785280403230,
      +0.183039887955141, -0.983105487431216,
      +0.170961888760301, -0.985277642388941,
      +0.158858143333861, -0.987301418157858,
      +0.146730474455362, -0.989176509964781,
      +0.134580708507126, -0.990902635427780,
      +0.122410675199216, -0.992479534598710,
      +0.110222207293883, -0.993906970002356,
      +0.098017140329561, -0.995184726672197,
      +0.085797312344440, -0.996312612182778,
      +0.073564563599667, -0.997290456678690,
      +0.061320736302209, -0.998118112900149,
      +0.049067674327418, -0.998795456205172,
      +0.036807222941359, -0.999322384588350,
      +0.024541228522912, -0.999698818696204,
      +0.012271538285720, -0.999924701839145,
    };
    const double *W = Wconst512 - 2;
    double *Z = Y + 256;
    for (offset = 0; offset < 1024; offset += 1024) {
      { register double T2re, T2im; T2re = Y[offset] - Y[offset + 512]; T2im = Y[offset + 1] - Y[offset + 512 + 1]; Y[offset] = Y[offset] + Y[offset + 512]; Y[offset + 1] = Y[offset + 1] + Y[offset + 512 + 1]; Y[offset + 512] = T2re; Y[offset + 512 + 1] = T2im; };




      { register double T2re, T2im; T2re = Z[offset] - Z[offset + 512 + 1]; T2im = Z[offset + 1] + Z[offset + 512]; Z[offset] = Z[offset] + Z[offset + 512 + 1]; Z[offset + 1] = Z[offset + 1] - Z[offset + 512]; Z[offset + 512] = T2re; Z[offset + 512 + 1] = T2im; };




    }
    for (butterfly = 2; butterfly < 256; butterfly += 2) {
      Wre = W[butterfly]; Wim = W[butterfly + 1];
      for (block = 0; block < 1024; block += 1024) {
        offset = butterfly + block;
        { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 512] * Wre; T1im = Y[offset + 512 + 1] * Wre; T2re = Y[offset + 512 + 1] * Wim; T2im = Y[offset + 512] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 512] = T2re; Y[offset + 512 + 1] = T2im; };




        { register double T1re, T1im, T2re, T2im; T1re = Z[offset + 512] * Wim; T1im = Z[offset + 512 + 1] * Wim; T2re = Z[offset + 512 + 1] * Wre; T2im = Z[offset + 512] * Wre; T1re += T2re; T1im -= T2im; T2re = Z[offset] - T1re; T2im = Z[offset + 1] - T1im; Z[offset] = Z[offset] + T1re; Z[offset + 1] = Z[offset + 1] + T1im; Z[offset + 512] = T2re; Z[offset + 512 + 1] = T2im; };




      }
    }
  }
}







static void
gsl_power2_fft512synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (512, X, Y);
# 8151 "gslfft.c"
  gsl_power2_fft512synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft1024synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 8185 "gslfft.c"
  gsl_power2_fft512synthesis_skip2 (X, Y);
  gsl_power2_fft512synthesis_skip2 (X + 1024, Y + 1024);


  for (offset = 0; offset < 2048; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024]; T2im = Y[offset + 1] - Y[offset + 1024 + 1]; Y[offset] = Y[offset] + Y[offset + 1024]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024 + 1]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = +0.999981175282601; Wim = -0.006135884649154;
  for (butterfly = 2; butterfly < 512; butterfly += 2) {
    for (block = 0; block < 2048; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * -0.006135884649154; T2im = Wre * -0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 512; offset < 2048; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024 + 1]; T2im = Y[offset + 1] + Y[offset + 1024]; Y[offset] = Y[offset] + Y[offset + 1024 + 1]; Y[offset + 1] = Y[offset + 1] - Y[offset + 1024]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = -0.006135884649154; Wim = -0.999981175282601;
  for (butterfly = 514; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 2048; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * -0.006135884649154; T2im = Wre * -0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft1024synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (1024, X, Y);
# 8263 "gslfft.c"
  gsl_power2_fft1024synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft2048synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 8297 "gslfft.c"
  gsl_power2_fft512synthesis_skip2 (X, Y);
  gsl_power2_fft512synthesis_skip2 (X + 1024, Y + 1024);
  gsl_power2_fft512synthesis_skip2 (X + 2048, Y + 2048);
  gsl_power2_fft512synthesis_skip2 (X + 3072, Y + 3072);


  for (offset = 0; offset < 4096; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024]; T2im = Y[offset + 1] - Y[offset + 1024 + 1]; Y[offset] = Y[offset] + Y[offset + 1024]; Y[offset + 1] = Y[offset + 1] + Y[offset + 1024 + 1]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = +0.999981175282601; Wim = -0.006135884649154;
  for (butterfly = 2; butterfly < 512; butterfly += 2) {
    for (block = 0; block < 4096; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * -0.006135884649154; T2im = Wre * -0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 512; offset < 4096; offset += 2048) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 1024 + 1]; T2im = Y[offset + 1] + Y[offset + 1024]; Y[offset] = Y[offset] + Y[offset + 1024 + 1]; Y[offset + 1] = Y[offset + 1] - Y[offset + 1024]; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




  }
  Wre = -0.006135884649154; Wim = -0.999981175282601;
  for (butterfly = 514; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 4096; block += 2048) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 1024] * Wre; T1im = Y[offset + 1024 + 1] * Wre; T2re = Y[offset + 1024 + 1] * Wim; T2im = Y[offset + 1024] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 1024] = T2re; Y[offset + 1024 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000018824717399; T1im = Wim * -0.000018824717399; T2re = Wim * -0.006135884649154; T2im = Wre * -0.006135884649154; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }


  for (offset = 0; offset < 4096; offset += 4096) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 2048]; T2im = Y[offset + 1] - Y[offset + 2048 + 1]; Y[offset] = Y[offset] + Y[offset + 2048]; Y[offset + 1] = Y[offset + 1] + Y[offset + 2048 + 1]; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




  }
  Wre = +0.999995293809576; Wim = -0.003067956762966;
  for (butterfly = 2; butterfly < 1024; butterfly += 2) {
    for (block = 0; block < 4096; block += 4096) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 2048] * Wre; T1im = Y[offset + 2048 + 1] * Wre; T2re = Y[offset + 2048 + 1] * Wim; T2im = Y[offset + 2048] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000004706190424; T1im = Wim * -0.000004706190424; T2re = Wim * -0.003067956762966; T2im = Wre * -0.003067956762966; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 1024; offset < 4096; offset += 4096) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 2048 + 1]; T2im = Y[offset + 1] + Y[offset + 2048]; Y[offset] = Y[offset] + Y[offset + 2048 + 1]; Y[offset + 1] = Y[offset + 1] - Y[offset + 2048]; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




  }
  Wre = -0.003067956762966; Wim = -0.999995293809576;
  for (butterfly = 1026; butterfly < 2048; butterfly += 2) {
    for (block = 0; block < 4096; block += 4096) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 2048] * Wre; T1im = Y[offset + 2048 + 1] * Wre; T2re = Y[offset + 2048 + 1] * Wim; T2im = Y[offset + 2048] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 2048] = T2re; Y[offset + 2048 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000004706190424; T1im = Wim * -0.000004706190424; T2re = Wim * -0.003067956762966; T2im = Wre * -0.003067956762966; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft2048synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (2048, X, Y);
# 8419 "gslfft.c"
  gsl_power2_fft2048synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft4096synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 8457 "gslfft.c"
  gsl_power2_fft2048synthesis_skip2 (X, Y);
  gsl_power2_fft2048synthesis_skip2 (X + 4096, Y + 4096);


  for (offset = 0; offset < 8192; offset += 8192) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 4096]; T2im = Y[offset + 1] - Y[offset + 4096 + 1]; Y[offset] = Y[offset] + Y[offset + 4096]; Y[offset + 1] = Y[offset + 1] + Y[offset + 4096 + 1]; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




  }
  Wre = +0.999998823451702; Wim = -0.001533980186285;
  for (butterfly = 2; butterfly < 2048; butterfly += 2) {
    for (block = 0; block < 8192; block += 8192) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 4096] * Wre; T1im = Y[offset + 4096 + 1] * Wre; T2re = Y[offset + 4096 + 1] * Wim; T2im = Y[offset + 4096] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000001176548298; T1im = Wim * -0.000001176548298; T2re = Wim * -0.001533980186285; T2im = Wre * -0.001533980186285; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 2048; offset < 8192; offset += 8192) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 4096 + 1]; T2im = Y[offset + 1] + Y[offset + 4096]; Y[offset] = Y[offset] + Y[offset + 4096 + 1]; Y[offset + 1] = Y[offset + 1] - Y[offset + 4096]; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




  }
  Wre = -0.001533980186285; Wim = -0.999998823451702;
  for (butterfly = 2050; butterfly < 4096; butterfly += 2) {
    for (block = 0; block < 8192; block += 8192) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 4096] * Wre; T1im = Y[offset + 4096 + 1] * Wre; T2re = Y[offset + 4096 + 1] * Wim; T2im = Y[offset + 4096] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 4096] = T2re; Y[offset + 4096 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000001176548298; T1im = Wim * -0.000001176548298; T2re = Wim * -0.001533980186285; T2im = Wre * -0.001533980186285; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft4096synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (4096, X, Y);
# 8539 "gslfft.c"
  gsl_power2_fft4096synthesis_skip2 (X, Y);
}







static void
gsl_power2_fft8192synthesis_skip2 (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;
# 8579 "gslfft.c"
  gsl_power2_fft4096synthesis_skip2 (X, Y);
  gsl_power2_fft4096synthesis_skip2 (X + 8192, Y + 8192);


  for (offset = 0; offset < 16384; offset += 16384) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 8192]; T2im = Y[offset + 1] - Y[offset + 8192 + 1]; Y[offset] = Y[offset] + Y[offset + 8192]; Y[offset + 1] = Y[offset + 1] + Y[offset + 8192 + 1]; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




  }
  Wre = +0.999999705862882; Wim = -0.000766990318743;
  for (butterfly = 2; butterfly < 4096; butterfly += 2) {
    for (block = 0; block < 16384; block += 16384) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 8192] * Wre; T1im = Y[offset + 8192 + 1] * Wre; T2re = Y[offset + 8192 + 1] * Wim; T2im = Y[offset + 8192] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000000294137118; T1im = Wim * -0.000000294137118; T2re = Wim * -0.000766990318743; T2im = Wre * -0.000766990318743; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
  for (offset = 4096; offset < 16384; offset += 16384) {
    { register double T2re, T2im; T2re = Y[offset] - Y[offset + 8192 + 1]; T2im = Y[offset + 1] + Y[offset + 8192]; Y[offset] = Y[offset] + Y[offset + 8192 + 1]; Y[offset + 1] = Y[offset + 1] - Y[offset + 8192]; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




  }
  Wre = -0.000766990318743; Wim = -0.999999705862882;
  for (butterfly = 4098; butterfly < 8192; butterfly += 2) {
    for (block = 0; block < 16384; block += 16384) {
      offset = butterfly + block;
      { register double T1re, T1im, T2re, T2im; T1re = Y[offset + 8192] * Wre; T1im = Y[offset + 8192 + 1] * Wre; T2re = Y[offset + 8192 + 1] * Wim; T2im = Y[offset + 8192] * Wim; T1re -= T2re; T1im += T2im; T2re = Y[offset] - T1re; T2im = Y[offset + 1] - T1im; Y[offset] = Y[offset] + T1re; Y[offset + 1] = Y[offset + 1] + T1im; Y[offset + 8192] = T2re; Y[offset + 8192 + 1] = T2im; };




    }
    { register double T1re, T1im, T2re, T2im; T1re = Wre * -0.000000294137118; T1im = Wim * -0.000000294137118; T2re = Wim * -0.000766990318743; T2im = Wre * -0.000766990318743; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
  }
}







static void
gsl_power2_fft8192synthesis (const double *X, double *Y)
{
  register unsigned int butterfly, block, offset;
  register double Wre, Wim;

  butterfly = block = offset = 0, Wre = Wim = 0.0;


  bitreverse_fft2synthesis (8192, X, Y);
# 8663 "gslfft.c"
  gsl_power2_fft8192synthesis_skip2 (X, Y);
}
# 8674 "gslfft.c"
static void
gsl_power2_fftc_big (const unsigned int n_values,
                     const double *rivalues_in,
                     double *rivalues,
                     const int esign)
{
  const unsigned int n_values2 = n_values << 1;
  double theta = esign < 0 ? -3.1415926535897932384626433832795029 : 3.1415926535897932384626433832795029;
  unsigned int i, block_size = 8192 << 1;
  double last_sin;

  if (esign > 0)
    {
      if (rivalues_in)
        bitreverse_fft2analysis (n_values, rivalues_in, rivalues);
      for (i = 0; i < n_values; i += 8192)
        gsl_power2_fft8192analysis_skip2 (rivalues + (i << 1), rivalues + (i << 1));
    }
  else
    {
      if (rivalues_in)
        bitreverse_fft2synthesis (n_values, rivalues_in, rivalues);
      for (i = 0; i < n_values; i += 8192)
        gsl_power2_fft8192synthesis_skip2 (rivalues + (i << 1), rivalues + (i << 1));
    }
  theta *= (double) 1.0 / 8192.;
  last_sin = sin (theta);





  do
    {
      double Dre, Dim, Wre, Wim;
      unsigned int k, i, half_block = block_size >> 1;
      unsigned int block_size2 = block_size << 1;

      theta *= 0.5;
      Dim = last_sin;
      last_sin = sin (theta);
      Dre = last_sin * last_sin * -2.;


      for (i = 0; i < n_values2; i += block_size2)
        {
          unsigned int v1 = i, v2 = i + block_size;

          { register double T2re, T2im; T2re = rivalues[v1] - rivalues[v2]; T2im = rivalues[v1 + 1] - rivalues[v2 + 1]; rivalues[v1] = rivalues[v1] + rivalues[v2]; rivalues[v1 + 1] = rivalues[v1 + 1] + rivalues[v2 + 1]; rivalues[v2] = T2re; rivalues[v2 + 1] = T2im; };




        }
      Wre = Dre + 1.0;
      Wim = Dim;

      for (k = 2; k < half_block; k += 2)
        {

          for (i = k; i < n_values2; i += block_size2)
            {
              unsigned int v1 = i, v2 = i + block_size;

              { register double T1re, T1im, T2re, T2im; T1re = rivalues[v2] * Wre; T1im = rivalues[v2 + 1] * Wre; T2re = rivalues[v2 + 1] * Wim; T2im = rivalues[v2] * Wim; T1re -= T2re; T1im += T2im; T2re = rivalues[v1] - T1re; T2im = rivalues[v1 + 1] - T1im; rivalues[v1] = rivalues[v1] + T1re; rivalues[v1 + 1] = rivalues[v1 + 1] + T1im; rivalues[v2] = T2re; rivalues[v2 + 1] = T2im; };




            }
          { register double T1re, T1im, T2re, T2im; T1re = Wre * Dre; T1im = Wim * Dre; T2re = Wim * Dim; T2im = Wre * Dim; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
        }

      if (k < block_size)
        {

          if (esign > 0)
            for (i = k; i < n_values2; i += block_size2)
              {
                unsigned int v1 = i, v2 = i + block_size;

                { register double T2re, T2im; T2re = rivalues[v1] + rivalues[v2 + 1]; T2im = rivalues[v1 + 1] - rivalues[v2]; rivalues[v1] = rivalues[v1] - rivalues[v2 + 1]; rivalues[v1 + 1] = rivalues[v1 + 1] + rivalues[v2]; rivalues[v2] = T2re; rivalues[v2 + 1] = T2im; };




              }
          else
            for (i = k; i < n_values2; i += block_size2)
              {
                unsigned int v1 = i, v2 = i + block_size;

                { register double T2re, T2im; T2re = rivalues[v1] - rivalues[v2 + 1]; T2im = rivalues[v1 + 1] + rivalues[v2]; rivalues[v1] = rivalues[v1] + rivalues[v2 + 1]; rivalues[v1 + 1] = rivalues[v1 + 1] - rivalues[v2]; rivalues[v2] = T2re; rivalues[v2 + 1] = T2im; };




              }

          if (esign > 0)
            {
              Wre = -Dim;
              Wim = Dre + 1.0;
            }
          else
            {
              Wre = Dim;
              Wim = -Dre - 1.0;
            }
          k += 2;
        }

      for (; k < block_size; k += 2)
        {

          for (i = k; i < n_values2; i += block_size2)
            {
              unsigned int v1 = i, v2 = i + block_size;

              { register double T1re, T1im, T2re, T2im; T1re = rivalues[v2] * Wre; T1im = rivalues[v2 + 1] * Wre; T2re = rivalues[v2 + 1] * Wim; T2im = rivalues[v2] * Wim; T1re -= T2re; T1im += T2im; T2re = rivalues[v1] - T1re; T2im = rivalues[v1 + 1] - T1im; rivalues[v1] = rivalues[v1] + T1re; rivalues[v1 + 1] = rivalues[v1 + 1] + T1im; rivalues[v2] = T2re; rivalues[v2 + 1] = T2im; };




            }
          { register double T1re, T1im, T2re, T2im; T1re = Wre * Dre; T1im = Wim * Dre; T2re = Wim * Dim; T2im = Wre * Dim; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
        }
      block_size = block_size2;
    }
  while (block_size <= n_values);
}
void
gsl_power2_fftac (const unsigned int n_values,
                  const double *rivalues_in,
                  double *rivalues_out)
{
  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 1)) g_message ("gslfft.c" ":" "8810" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 1"); } while (0);

  switch (n_values)
    {
      case 1: rivalues_out[0] = rivalues_in[0], rivalues_out[1] = rivalues_in[1]; break;
      case 2: gsl_power2_fft2analysis (rivalues_in, rivalues_out); break;
      case 4: gsl_power2_fft4analysis (rivalues_in, rivalues_out); break;
      case 8: gsl_power2_fft8analysis (rivalues_in, rivalues_out); break;
      case 16: gsl_power2_fft16analysis (rivalues_in, rivalues_out); break;
      case 32: gsl_power2_fft32analysis (rivalues_in, rivalues_out); break;
      case 64: gsl_power2_fft64analysis (rivalues_in, rivalues_out); break;
      case 128: gsl_power2_fft128analysis (rivalues_in, rivalues_out); break;
      case 256: gsl_power2_fft256analysis (rivalues_in, rivalues_out); break;
      case 512: gsl_power2_fft512analysis (rivalues_in, rivalues_out); break;
      case 1024: gsl_power2_fft1024analysis (rivalues_in, rivalues_out); break;
      case 2048: gsl_power2_fft2048analysis (rivalues_in, rivalues_out); break;
      case 4096: gsl_power2_fft4096analysis (rivalues_in, rivalues_out); break;
      case 8192: gsl_power2_fft8192analysis (rivalues_in, rivalues_out); break;
      default: gsl_power2_fftc_big (n_values, rivalues_in, rivalues_out, +1);
    }
}
void
gsl_power2_fftsc (const unsigned int n_values,
                  const double *rivalues_in,
                  double *rivalues_out)
{
  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 1)) g_message ("gslfft.c" ":" "8836" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 1"); } while (0);

  switch (n_values)
    {
      case 1: rivalues_out[0] = rivalues_in[0], rivalues_out[1] = rivalues_in[1]; break;
      case 2: gsl_power2_fft2synthesis (rivalues_in, rivalues_out); break;
      case 4: gsl_power2_fft4synthesis (rivalues_in, rivalues_out); break;
      case 8: gsl_power2_fft8synthesis (rivalues_in, rivalues_out); break;
      case 16: gsl_power2_fft16synthesis (rivalues_in, rivalues_out); break;
      case 32: gsl_power2_fft32synthesis (rivalues_in, rivalues_out); break;
      case 64: gsl_power2_fft64synthesis (rivalues_in, rivalues_out); break;
      case 128: gsl_power2_fft128synthesis (rivalues_in, rivalues_out); break;
      case 256: gsl_power2_fft256synthesis (rivalues_in, rivalues_out); break;
      case 512: gsl_power2_fft512synthesis (rivalues_in, rivalues_out); break;
      case 1024: gsl_power2_fft1024synthesis (rivalues_in, rivalues_out); break;
      case 2048: gsl_power2_fft2048synthesis (rivalues_in, rivalues_out); break;
      case 4096: gsl_power2_fft4096synthesis (rivalues_in, rivalues_out); break;
      case 8192: gsl_power2_fft8192synthesis (rivalues_in, rivalues_out); break;
      default: gsl_power2_fftc_big (n_values, rivalues_in, rivalues_out, -1);
    }

}
void
gsl_power2_fftar (const unsigned int n_values,
                  const double *r_values_in,
                  double *rivalues_out)
{
  unsigned int n_cvalues = n_values >> 1;
  double Dre, Dim, Wre, Wim, theta;
  unsigned int i;

  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 2)) g_message ("gslfft.c" ":" "8867" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 2"); } while (0);

  gsl_power2_fftac (n_cvalues, r_values_in, rivalues_out);
  theta = 3.1415926535897932384626433832795029;
  theta /= (double) n_cvalues;

  Dre = sin (0.5 * theta);
  Dim = sin (theta);
  Dre = Dre * Dre;
  Wre = 0.5 - Dre;
  Dre *= -2.;
  Wim = Dim * 0.5;
  for (i = 2; i < n_values >> 1; i += 2)
    {
      double F1re, F1im, F2re, F2im, H1re, H1im, H2re, H2im;
      unsigned int r = n_values - i;
      double FEre = rivalues_out[i] + rivalues_out[r];
      double FEim = rivalues_out[i + 1] - rivalues_out[r + 1];
      double FOre = rivalues_out[r] - rivalues_out[i];
      double FOim = rivalues_out[r + 1] + rivalues_out[i + 1];

      FEre *= 0.5;
      FEim *= 0.5;
      F2re = FOre * Wim;
      F2im = FOim * Wim;
      F1re = FOre * Wre;
      F1im = FOim * Wre;

      H1im = F2im + F1re;
      H1re = F1im - F2re;
      H2re = F2re - F1im;
      H2im = H1im - FEim;
      H1re += FEre;
      H2re += FEre;
      H1im += FEim;
      rivalues_out[i] = H1re;
      rivalues_out[i + 1] = H1im;
      rivalues_out[r] = H2re;
      rivalues_out[r + 1] = H2im;
      { register double T1re, T1im, T2re, T2im; T1re = Wre * Dre; T1im = Wim * Dre; T2re = Wim * Dim; T2im = Wre * Dim; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
    }
  Dre = rivalues_out[0];
  rivalues_out[0] = Dre + rivalues_out[1];
  rivalues_out[1] = Dre - rivalues_out[1];
}
void
gsl_power2_fftsr (const unsigned int n_values,
                  const double *rivalues_in,
                  double *r_values_out)
{
  unsigned int n_cvalues = n_values >> 1;
  double Dre, Dim, Wre, Wim, theta, scale;
  unsigned int i, ri;

  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 2)) g_message ("gslfft.c" ":" "8921" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 2"); } while (0);

  theta = -3.1415926535897932384626433832795029;
  theta /= (double) n_cvalues;

  Dre = sin (0.5 * theta);
  Dim = sin (theta);
  Dre = Dre * Dre;
  Wre = 0.5 - Dre;
  Dre *= -2.;
  Wim = Dim * 0.5;
  for (i = 2, ri = 0; i < n_values >> 1; i += 2)
    {
      double F1re, F1im, F2re, F2im, H1re, H1im, H2re, H2im;
      unsigned int g = n_values - i, j = n_values >> 2, rg = n_values - (ri << 1) - 2;
      double FEre = rivalues_in[i] + rivalues_in[g];
      double FEim = rivalues_in[i + 1] - rivalues_in[g + 1];
      double FOre = rivalues_in[g] - rivalues_in[i];
      double FOim = rivalues_in[g + 1] + rivalues_in[i + 1];

      while (ri >= j)
        {
          ri -= j;
          j >>= 1;
        }
      ri |= j;

      FOre = -FOre;
      FOim = -FOim;
      FEre *= 0.5;
      FEim *= 0.5;
      F2re = FOre * Wim;
      F2im = FOim * Wim;
      F1re = FOre * Wre;
      F1im = FOim * Wre;

      H1im = F2im + F1re;
      H1re = F1im - F2re;
      H2re = F2re - F1im;
      H2im = H1im - FEim;
      H1re += FEre;
      H2re += FEre;
      H1im += FEim;

      j = ri << 1;
      r_values_out[j] = H1re;
      r_values_out[j + 1] = H1im;
      r_values_out[rg] = H2re;
      r_values_out[rg + 1] = H2im;
      { register double T1re, T1im, T2re, T2im; T1re = Wre * Dre; T1im = Wim * Dre; T2re = Wim * Dim; T2im = Wre * Dim; T1re -= T2re; T1im += T2im; Wre += T1re; Wim += T1im; };
    }
  Dre = rivalues_in[0];
  r_values_out[0] = Dre + rivalues_in[1];
  r_values_out[1] = Dre - rivalues_in[1];
  r_values_out[0] *= 0.5;
  r_values_out[1] *= 0.5;
  if (n_values < 4)
    return;
  r_values_out[2] = rivalues_in[i];
  r_values_out[2 + 1] = rivalues_in[i + 1];
  scale = n_cvalues;
  scale = 1.0 / scale;
  for (i = 0; i < n_values; i += 4)
    { register double T2re, T2im; T2re = r_values_out[i] - r_values_out[i + 2]; T2im = r_values_out[i + 1] - r_values_out[i + 3]; r_values_out[i] = r_values_out[i] + r_values_out[i + 2]; r_values_out[i + 1] = r_values_out[i + 1] + r_values_out[i + 3]; r_values_out[i + 2] = T2re * scale; r_values_out[i + 3] = T2im * scale; r_values_out[i] *= scale; r_values_out[i + 1] *= scale; };




  switch (n_cvalues)
    {
      case 2: break;
      case 4: gsl_power2_fft4synthesis_skip2 (((void *)0), r_values_out); break;
      case 8: gsl_power2_fft8synthesis_skip2 (((void *)0), r_values_out); break;
      case 16: gsl_power2_fft16synthesis_skip2 (((void *)0), r_values_out); break;
      case 32: gsl_power2_fft32synthesis_skip2 (((void *)0), r_values_out); break;
      case 64: gsl_power2_fft64synthesis_skip2 (((void *)0), r_values_out); break;
      case 128: gsl_power2_fft128synthesis_skip2 (((void *)0), r_values_out); break;
      case 256: gsl_power2_fft256synthesis_skip2 (((void *)0), r_values_out); break;
      case 512: gsl_power2_fft512synthesis_skip2 (((void *)0), r_values_out); break;
      case 1024: gsl_power2_fft1024synthesis_skip2 (((void *)0), r_values_out); break;
      case 2048: gsl_power2_fft2048synthesis_skip2 (((void *)0), r_values_out); break;
      case 4096: gsl_power2_fft4096synthesis_skip2 (((void *)0), r_values_out); break;
      case 8192: gsl_power2_fft8192synthesis_skip2 (((void *)0), r_values_out); break;
      default: gsl_power2_fftc_big (n_cvalues, ((void *)0), r_values_out, -1);
    }
}
void
gsl_power2_fftar_simple (const unsigned int n_values,
                         const float *real_values,
                         float *complex_values)
{
  double *rv, *cv;
  guint i;

  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 2)) g_message ("gslfft.c" ":" "9015" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 2"); } while (0);

  rv = ((double *) gsl_g_malloc (((gsize) sizeof (double)) * ((gsize) (n_values * 2))));
  cv = rv + n_values;
  i = n_values;
  while (i--)
    rv[i] = real_values[i];
  gsl_power2_fftar (n_values, rv, cv);
  i = n_values;
  while (i--)
    complex_values[i] = cv[i];
  complex_values[n_values] = complex_values[1];
  complex_values[1] = 0.0;
  complex_values[n_values + 1] = 0.0;
  gsl_g_free (rv);
}
void
gsl_power2_fftsr_simple (const unsigned int n_values,
                         const float *complex_values,
                         float *real_values)
{
  double *cv, *rv;
  guint i;

  do { if (!((n_values & (n_values - 1)) == 0 && n_values >= 2)) g_message ("gslfft.c" ":" "9039" ":" __PRETTY_FUNCTION__ "()" ": assertion failed `%s'", "(n_values & (n_values - 1)) == 0 && n_values >= 2"); } while (0);

  cv = ((double *) gsl_g_malloc (((gsize) sizeof (double)) * ((gsize) (n_values * 2))));
  rv = cv + n_values;
  i = n_values;
  while (i--)
    cv[i] = complex_values[i];
  cv[1] = complex_values[n_values];
  gsl_power2_fftsr (n_values, cv, rv);
  i = n_values;
  while (i--)
    real_values[i] = rv[i];
  gsl_g_free (cv);
}
Comment 1 Jonathan.Lang@synopsys.com 2003-05-21 23:11:00 UTC
Fix:
	Compiling with a lower optimization level worked.
Comment 2 Christian Ehrhardt 2003-05-26 12:58:41 UTC
Created attachment 4079 [details]
Reduced testcase

This ICEs 3.3-release and 3.4-cvs. It is a regression from 3.2.
Comment 3 Falk Hueffner 2003-06-16 10:37:43 UTC
Cannot reproduce with 3.4 20030616 anymore. Probably just papered over, though,
since it was a segfault. Ought to check 3.3.1 branch sometimes.
Comment 4 aaronw 2003-06-26 04:04:37 UTC
This is a duplicate of bug 10876 (third duplicate so far) which is fixed in 3.3.1 20030610.  I 
can confirm that arts now compiles fine and works reliably with this release. 
Comment 5 Eric Botcazou 2003-07-06 08:58:23 UTC

*** This bug has been marked as a duplicate of 10876 ***