This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/2685: gcc crashes with ICE on bootstrapping on alpha-redhat-linux while compiling libstdc++



>Number:         2685
>Category:       c++
>Synopsis:       gcc crashes with ICE on bootstrapping on alpha-redhat-linux while compiling libstdc++
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sun Apr 29 10:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Matthias Welwarsky
>Release:        gcc version 3.0 20010429 (prerelease)
>Organization:
>Environment:
RedHat-6.2 on Alpha PC164
gcc:
Configured with: ../gcc/configure --enable-shared --enable-threads --enable-languages=c,c++ alpha-redhat-linux
>Description:
gcc crashes on bootstrapping with the following error messages:
/home/matze/gcc-cvs/gccbin/gcc/xgcc --save-temps -B/home/matze/gcc-cvs/gccbin/gcc/ -nostdinc++ -L/home/matze/gcc-cvs/gccbin/alpha-redhat-linux/libstdc++-v3/src
-L/home/matze/gcc-cvs/gccbin/alpha-redhat-linux/libstdc++-v3/src/.libs -B/usr/local/alpha-redhat-linux/bin/ -B/usr/local/alpha-redhat-linux/lib/ -isystem /usr/local/alpha-redhat-linux/include -nostdinc++ -I../../../../gcc/libstdc++-v3/include -I../../../../gcc/libstdc++-v3/include/std -I../../../../gcc/libstdc++-v3/include/c_std -I../include -I../../../../gcc/libstdc++-v3/libsupc++ -I../libio -I../../../../gcc/libstdc++-v3/libio -I../../../../gcc/libstdc++-v3/libmath -g -O2 -fvtable-thunks -D_GNU_SOURCE -mieee -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -c ../../../../gcc/libstdc++-v3/src/complex_io.cc  -fPIC -DPIC -o .libs/complex_io.o
../../../../gcc/libstdc++-v3/include/bits/std_complex.h: In function
   `std::basic_ostream<_CharT, _Traits>&
   std::operator<<(std::basic_ostream<_CharT, _Traits>&, const
   std::complex<_Tp>&) [with _Tp = float, _CharT = char, _Traits =
   std::char_traits<char>]':
../../../../gcc/libstdc++-v3/src/complex_io.cc:98:   instantiated from here
../../../../gcc/libstdc++-v3/include/bits/std_complex.h:87: Internal compiler
   error in add_abstract_origin_attribute, at dwarf2out.c:9267
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="complex_io.ii"
Content-Disposition: inline; filename="complex_io.ii"

# 30 "../../../../gcc/libstdc++-v3/src/complex_io.cc"
# 1 "../../../../gcc/libstdc++-v3/include/bits/std_complex.h" 1
# 41 "../../../../gcc/libstdc++-v3/include/bits/std_complex.h" 3

# 1 "../include/bits/c++config.h" 1 3
# 34 "../include/bits/c++config.h" 3
# 1 "../include/bits/os_defines.h" 1 3
# 43 "../include/bits/os_defines.h" 3
# 1 "/usr/include/features.h" 1 3
# 250 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 251 "/usr/include/features.h" 2 3
# 278 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 279 "/usr/include/features.h" 2 3
# 44 "../include/bits/os_defines.h" 2 3
# 35 "../include/bits/c++config.h" 2 3
# 43 "../../../../gcc/libstdc++-v3/include/bits/std_complex.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 1 3
# 39 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 1 3
# 39 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 3
# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstddef.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstddef.h" 3
# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 147 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 3
typedef long int ptrdiff_t;
# 199 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 3
typedef long unsigned int size_t;
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstddef.h" 2 3

namespace std
{
  using ::ptrdiff_t;
  using ::size_t;
}
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 2 3
# 43 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 3
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 34 "/usr/include/stdlib.h" 2 3

extern "C" {





typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;





__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;
# 80 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) throw ();



extern double atof (__const char *__nptr) throw ();

extern int atoi (__const char *__nptr) throw ();

extern long int atol (__const char *__nptr) throw ();



__extension__ extern long long int atoll (__const char *__nptr) throw ();



extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) throw ();




extern float strtof (__const char *__restrict __nptr, char **__restrict __endptr) throw ();


extern long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) throw ();




extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();


extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();





__extension__
extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();


__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();
# 132 "/usr/include/stdlib.h" 3
__extension__
extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();


__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) throw ();
# 157 "/usr/include/stdlib.h" 3
# 1 "/usr/include/xlocale.h" 1 3
# 28 "/usr/include/xlocale.h" 3
typedef struct __locale_struct
{
  struct locale_data *__locales[6];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;
} *__locale_t;
# 158 "/usr/include/stdlib.h" 2 3



extern long int __strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) throw ();



extern unsigned long int __strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern long long int __strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern unsigned long long int __strtoull_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) throw ();





extern double __strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) throw ();


extern float __strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) throw ();


extern long double __strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) throw ();
# 196 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) throw ();


extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) throw ();

extern long double __strtold_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __group) throw ();




extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) throw ();





extern unsigned long int __strtoul_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) throw ();







__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) throw ();





__extension__
extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group) throw ();
# 242 "/usr/include/stdlib.h" 3
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base) throw ()
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base) throw ()
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}


extern __inline float
strtof (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
{
  return __strtof_internal (__nptr, __endptr, 0);
}
extern __inline long double
strtold (__const char *__restrict __nptr, char **__restrict __endptr) throw ()
{
  return __strtold_internal (__nptr, __endptr, 0);
}



__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base) throw ()
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base) throw ()
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base) throw ()
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
          int __base) throw ()
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr) throw ()
{
  return strtod (__nptr, (char **) __null);
}
extern __inline int
atoi (__const char *__nptr) throw ()
{
  return (int) strtol (__nptr, (char **) __null, 10);
}
extern __inline long int
atol (__const char *__nptr) throw ()
{
  return strtol (__nptr, (char **) __null, 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr) throw ()
{
  return strtoll (__nptr, (char **) __null, 10);
}
# 333 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) throw ();


extern long int a64l (__const char *__s) throw ();


# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/types.h" 2 3

extern "C" {

# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3


# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef unsigned long int __u_quad_t;
typedef long int __quad_t;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef __quad_t *__qaddr_t;

typedef __uint64_t __dev_t;
typedef __uint32_t __uid_t;
typedef __uint32_t __gid_t;
typedef __uint32_t __ino_t;
typedef __uint64_t __ino64_t;
typedef __uint32_t __mode_t;
typedef __uint32_t __nlink_t;
typedef __int64_t __off_t;
typedef __int64_t __off64_t;
typedef __int64_t __loff_t;
typedef __int32_t __pid_t;
typedef __int64_t __ssize_t;
typedef __int64_t __rlim_t;
typedef __int64_t __rlim64_t;
typedef __uint32_t __blkcnt_t;
typedef __uint64_t __blkcnt64_t;
typedef __int32_t __fsblkcnt_t;
typedef __int64_t __fsblkcnt64_t;
typedef __uint32_t __fsfilcnt_t;
typedef __uint64_t __fsfilcnt64_t;
typedef __uint32_t __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef int __key_t;


typedef int __ipc_pid_t;


typedef unsigned long int __fd_mask;
# 103 "/usr/include/bits/types.h" 3
typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];





  } __fd_set;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef long int __intptr_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
  {
    int sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3


struct _pthread_fastlock
{
  long int __status;
  int __spinlock;
};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;




typedef struct _pthread_rwlock_t
{
  struct _pthread_fastlock __rw_lock;
  int __rw_readers;
  _pthread_descr __rw_writer;
  _pthread_descr __rw_read_waiting;
  _pthread_descr __rw_write_waiting;
  int __rw_kind;
  int __rw_pshared;
} pthread_rwlock_t;



typedef struct
{
  int __lockkind;
  int __pshared;
} pthread_rwlockattr_t;




typedef unsigned long int pthread_t;
# 127 "/usr/include/bits/types.h" 2 3
# 31 "/usr/include/sys/types.h" 2 3


typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;


typedef __loff_t loff_t;



typedef __ino_t ino_t;






typedef __ino64_t ino64_t;




typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;






typedef __off64_t off64_t;




typedef __pid_t pid_t;




typedef __id_t id_t;



typedef __ssize_t ssize_t;




typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;



typedef __key_t key_t;






# 1 "/usr/include/time.h" 1 3
# 57 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 58 "/usr/include/time.h" 2 3


typedef __clock_t clock_t;







# 1 "/usr/include/bits/types.h" 1 3
# 69 "/usr/include/time.h" 2 3


typedef __time_t time_t;
# 123 "/usr/include/sys/types.h" 2 3


# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 126 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 169 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 191 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 22 "/usr/include/endian.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/endian.h" 2 3
# 35 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 36 "/usr/include/endian.h" 2 3
# 192 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 25 "/usr/include/sys/select.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3



# 1 "/usr/include/time.h" 1 3
# 83 "/usr/include/time.h" 3
struct timespec
  {
    long int tv_sec;
    long int tv_nsec;
  };
# 39 "/usr/include/sys/select.h" 2 3

extern "C" {





struct timeval;

typedef __fd_mask fd_mask;


typedef __fd_set fd_set;
# 74 "/usr/include/sys/select.h" 3
extern int __select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) throw ();


extern int select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) throw ();
# 87 "/usr/include/sys/select.h" 3
extern int pselect (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, const struct timespec *__timeout, const __sigset_t *__sigmask) throw ();





}
# 195 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 198 "/usr/include/sys/types.h" 2 3





typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;







typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;


}
# 340 "/usr/include/stdlib.h" 2 3






extern int32_t random (void) throw ();


extern void srandom (unsigned int __seed) throw ();





extern void * initstate (unsigned int __seed, void * __statebuf, size_t __statelen) throw ();




extern void * setstate (void * __statebuf) throw ();







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) throw ();


extern int srandom_r (unsigned int __seed, struct random_data *__buf) throw ();

extern int initstate_r (unsigned int __seed, void * __restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) throw ();




extern int setstate_r (void * __restrict __statebuf, struct random_data *__restrict __buf) throw ();






extern int rand (void) throw ();

extern void srand (unsigned int __seed) throw ();



extern int rand_r (unsigned int *__seed) throw ();







extern double drand48 (void) throw ();
extern double erand48 (unsigned short int __xsubi[3]) throw ();


extern long int lrand48 (void) throw ();
extern long int nrand48 (unsigned short int __xsubi[3]) throw ();


extern long int mrand48 (void) throw ();
extern long int jrand48 (unsigned short int __xsubi[3]) throw ();


extern void srand48 (long int __seedval) throw ();
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) throw ();
extern void lcong48 (unsigned short int __param[7]) throw ();


struct drand48_data
  {
    unsigned short int x[3];
    unsigned short int a[3];
    unsigned short int c;
    unsigned short int old_x[3];
    int init;
  };



extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) throw ();

extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) throw ();




extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) throw ();

extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) throw ();




extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) throw ();

extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) throw ();




extern int srand48_r (long int __seedval, struct drand48_data *__buffer) throw ();

extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) throw ();


extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) throw ();
# 474 "/usr/include/stdlib.h" 3
extern void * malloc (size_t __size) throw ();

extern void * calloc (size_t __nmemb, size_t __size) throw ();





extern void * realloc (void * __ptr, size_t __size) throw ();

extern void free (void * __ptr) throw ();



extern void cfree (void * __ptr) throw ();



# 1 "/usr/include/alloca.h" 1 3
# 22 "/usr/include/alloca.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/alloca.h" 2 3


# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3

extern "C" {





extern void * alloca (size_t __size) throw ();





}
# 493 "/usr/include/stdlib.h" 2 3




extern void * valloc (size_t __size) throw ();




extern void abort (void) throw () __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) throw ();




extern int __on_exit (void (*__func) (int __status, void * __arg), void * __arg) throw ();

extern int on_exit (void (*__func) (int __status, void * __arg), void * __arg) throw ();






extern void exit (int __status) throw () __attribute__ ((__noreturn__));




extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));




extern char *getenv (__const char *__name) throw ();



extern char *__secure_getenv (__const char *__name) throw ();





extern int putenv (char *__string) throw ();





extern int setenv (__const char *__name, __const char *__value, int __replace) throw ();



extern void unsetenv (__const char *__name) throw ();






extern int clearenv (void) throw ();
# 566 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) throw ();






extern int mkstemp (char *__template) throw ();




extern int system (__const char *__command) throw ();






extern char *canonicalize_file_name (__const char *__name) throw ();
# 595 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) throw ();







typedef int (*__compar_fn_t) (__const void *, __const void *);


typedef __compar_fn_t comparison_fn_t;





extern void * bsearch (__const void * __key, __const void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);





extern void qsort (void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);




extern int abs (int __x) throw () __attribute__ ((__const__));
extern long int labs (long int __x) throw () __attribute__ ((__const__));

__extension__ extern long long int llabs (long long int __x) throw ()
     __attribute__ ((__const__));






extern div_t div (int __numer, int __denom) throw () __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom) throw ()
     __attribute__ ((__const__));

__extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) throw ()

     __attribute__ ((__const__));
# 651 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) throw ();





extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) throw ();





extern char *gcvt (double __value, int __ndigit, char *__buf) throw ();


extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) throw ();

extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) throw ();

extern char *qgcvt (long double __value, int __ndigit, char *__buf) throw ();





extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) throw ();


extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) throw ();



extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) throw ();


extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) throw ();
# 695 "/usr/include/stdlib.h" 3
extern int mblen (__const char *__s, size_t __n) throw ();


extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) throw ();



extern int wctomb (char *__s, wchar_t __wchar) throw ();



extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) throw ();


extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) throw ();
# 718 "/usr/include/stdlib.h" 3
extern int rpmatch (__const char *__response) throw ();
# 729 "/usr/include/stdlib.h" 3
extern int getsubopt (char **__restrict __optionp, __const char *__const *__restrict __tokens, char **__restrict __valuep) throw ();
# 738 "/usr/include/stdlib.h" 3
extern void setkey (__const char *__key) throw ();







extern int grantpt (int __fd) throw ();



extern int unlockpt (int __fd) throw ();




extern char *ptsname (int __fd) throw ();






extern int ptsname_r (int __fd, char *__buf, size_t __buflen) throw ();


extern int getpt (void) throw ();





}
# 44 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 2 3
# 83 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 3
namespace std
{
  using ::div_t;
  using ::ldiv_t;
# 100 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 3
  extern "C" double atof(const char*);
  extern "C" int atoi(const char*);
  extern "C" long int atol(const char*);
  extern "C" double strtod(const char*, char**);
  extern "C" float strtof(const char*, char**);
  extern "C" long int strtol(const char*, char**, int);
  extern "C" unsigned long int strtoul(const char*, char**, int);
  extern "C" int rand(void);
  extern "C" void srand(unsigned int);
  extern "C" void* calloc(size_t, size_t);
  extern "C" void free(void*);
  extern "C" void* malloc(size_t);
  extern "C" void* realloc(void*, size_t);
  extern "C" void abort(void);
  extern "C" int atexit(void (*func)(void));
  extern "C" void exit(int);
  extern "C" void _Exit(int);
  extern "C" char*getenv(const char*);
  extern "C" int system(const char*);
  extern "C" void* bsearch(const void*, const void*, size_t, size_t,
                           int (*comp)(const void *, const void *));
  extern "C" void qsort(void*, size_t, size_t,
                        int (*comp)(const void *, const void *));
  extern "C" int abs(int);
  extern "C" long int labs(long int);
  extern "C" div_t div(int, int);
  extern "C" ldiv_t ldiv(long int, long int);
  extern "C" int mblen(const char*, size_t);
  extern "C" int mbtowc(wchar_t*, const char*, size_t);
  extern "C" int wctomb(char*, wchar_t);
  extern "C" size_t mbstowcs(wchar_t*, const char*, size_t);
  extern "C" size_t wcstombs(char*, const wchar_t*, size_t);
# 154 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdlib.h" 3
  extern "C" long double strtold(const char*, char**);

}
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 2 3
# 43 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
# 1 "/usr/include/math.h" 1 3
# 27 "/usr/include/math.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/math.h" 2 3

extern "C" {



# 1 "/usr/include/bits/huge_val.h" 1 3
# 25 "/usr/include/bits/huge_val.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/bits/huge_val.h" 2 3
# 34 "/usr/include/math.h" 2 3



# 1 "/usr/include/bits/nan.h" 1 3
# 38 "/usr/include/math.h" 2 3


# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/bits/mathdef.h" 1 3
# 54 "/home/matze/gcc-cvs/gccbin/gcc/include/bits/mathdef.h" 3
typedef double float_t;
typedef double double_t;
# 41 "/usr/include/math.h" 2 3
# 63 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 54 "/usr/include/bits/mathcalls.h" 3
extern double acos (double __x); extern double __acos (double __x);

extern double asin (double __x); extern double __asin (double __x);

extern double atan (double __x); extern double __atan (double __x);

extern double atan2 (double __y, double __x); extern double __atan2 (double __y, double __x);


extern double cos (double __x); extern double __cos (double __x);

extern double sin (double __x); extern double __sin (double __x);

extern double tan (double __x); extern double __tan (double __x);



extern void sincos (double __x, double *__sinx, double *__cosx); extern void __sincos (double __x, double *__sinx, double *__cosx);






extern double cosh (double __x); extern double __cosh (double __x);

extern double sinh (double __x); extern double __sinh (double __x);

extern double tanh (double __x); extern double __tanh (double __x);



extern double acosh (double __x); extern double __acosh (double __x);

extern double asinh (double __x); extern double __asinh (double __x);

extern double atanh (double __x); extern double __atanh (double __x);





extern double exp (double __x); extern double __exp (double __x);



extern double exp10 (double __x); extern double __exp10 (double __x);

extern double pow10 (double __x); extern double __pow10 (double __x);



extern double frexp (double __x, int *__exponent); extern double __frexp (double __x, int *__exponent);


extern double ldexp (double __x, int __exponent); extern double __ldexp (double __x, int __exponent);


extern double log (double __x); extern double __log (double __x);


extern double log10 (double __x); extern double __log10 (double __x);


extern double modf (double __x, double *__iptr); extern double __modf (double __x, double *__iptr);



extern double expm1 (double __x); extern double __expm1 (double __x);


extern double log1p (double __x); extern double __log1p (double __x);


extern double logb (double __x); extern double __logb (double __x);




extern double exp2 (double __x); extern double __exp2 (double __x);


extern double log2 (double __x); extern double __log2 (double __x);






extern double pow (double __x, double __y); extern double __pow (double __x, double __y);


extern double sqrt (double __x); extern double __sqrt (double __x);



extern double hypot (double __x, double __y); extern double __hypot (double __x, double __y);




extern double cbrt (double __x); extern double __cbrt (double __x);






extern double ceil (double __x); extern double __ceil (double __x);


extern double fabs (double __x) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__const__));


extern double floor (double __x); extern double __floor (double __x);


extern double fmod (double __x, double __y); extern double __fmod (double __x, double __y);




extern int __isinf (double __value) __attribute__ ((__const__));


extern int __finite (double __value) __attribute__ ((__const__));




extern int isinf (double __value) __attribute__ ((__const__));


extern int finite (double __value) __attribute__ ((__const__));







extern double infnan (int __error) __attribute__ ((__const__)); extern double __infnan (int __error) __attribute__ ((__const__));


extern double drem (double __x, double __y); extern double __drem (double __x, double __y);



extern double significand (double __x); extern double __significand (double __x);




extern double copysign (double __x, double __y) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__const__));




extern double nan (__const char *__tagb) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__const__));




extern int __isnan (double __value) __attribute__ ((__const__));



extern int isnan (double __value) __attribute__ ((__const__));


extern double j0 (double); extern double __j0 (double);
extern double j1 (double); extern double __j1 (double);
extern double jn (int, double); extern double __jn (int, double);
extern double y0 (double); extern double __y0 (double);
extern double y1 (double); extern double __y1 (double);
extern double yn (int, double); extern double __yn (int, double);





extern double erf (double); extern double __erf (double);
extern double erfc (double); extern double __erfc (double);
extern double lgamma (double); extern double __lgamma (double);
extern double tgamma (double); extern double __tgamma (double);




extern double gamma (double); extern double __gamma (double);






extern double lgamma_r (double, int *__signgamp); extern double __lgamma_r (double, int *__signgamp);






extern double rint (double __x); extern double __rint (double __x);


extern double nextafter (double __x, double __y) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__const__));

extern double nexttoward (double __x, long double __y) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__const__));



extern double remainder (double __x, double __y); extern double __remainder (double __x, double __y);



extern double scalb (double __x, double __n); extern double __scalb (double __x, double __n);



extern double scalbn (double __x, int __n); extern double __scalbn (double __x, int __n);


extern int ilogb (double __x); extern int __ilogb (double __x);




extern double scalbln (double __x, long int __n); extern double __scalbln (double __x, long int __n);



extern double nearbyint (double __x); extern double __nearbyint (double __x);



extern double round (double __x); extern double __round (double __x);



extern double trunc (double __x) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__const__));




extern double remquo (double __x, double __y, int *__quo); extern double __remquo (double __x, double __y, int *__quo);






extern long int lrint (double __x); extern long int __lrint (double __x);
extern long long int llrint (double __x); extern long long int __llrint (double __x);



extern long int lround (double __x); extern long int __lround (double __x);
extern long long int llround (double __x); extern long long int __llround (double __x);



extern double fdim (double __x, double __y); extern double __fdim (double __x, double __y);


extern double fmax (double __x, double __y); extern double __fmax (double __x, double __y);


extern double fmin (double __x, double __y); extern double __fmin (double __x, double __y);



extern int __fpclassify (double __value)
     __attribute__ ((__const__));


extern int __signbit (double __value)
     __attribute__ ((__const__));



extern double fma (double __x, double __y, double __z); extern double __fma (double __x, double __y, double __z);
# 64 "/usr/include/math.h" 2 3
# 82 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 54 "/usr/include/bits/mathcalls.h" 3
extern float acosf (float __x); extern float __acosf (float __x);

extern float asinf (float __x); extern float __asinf (float __x);

extern float atanf (float __x); extern float __atanf (float __x);

extern float atan2f (float __y, float __x); extern float __atan2f (float __y, float __x);


extern float cosf (float __x); extern float __cosf (float __x);

extern float sinf (float __x); extern float __sinf (float __x);

extern float tanf (float __x); extern float __tanf (float __x);



extern void sincosf (float __x, float *__sinx, float *__cosx); extern void __sincosf (float __x, float *__sinx, float *__cosx);






extern float coshf (float __x); extern float __coshf (float __x);

extern float sinhf (float __x); extern float __sinhf (float __x);

extern float tanhf (float __x); extern float __tanhf (float __x);



extern float acoshf (float __x); extern float __acoshf (float __x);

extern float asinhf (float __x); extern float __asinhf (float __x);

extern float atanhf (float __x); extern float __atanhf (float __x);





extern float expf (float __x); extern float __expf (float __x);



extern float exp10f (float __x); extern float __exp10f (float __x);

extern float pow10f (float __x); extern float __pow10f (float __x);



extern float frexpf (float __x, int *__exponent); extern float __frexpf (float __x, int *__exponent);


extern float ldexpf (float __x, int __exponent); extern float __ldexpf (float __x, int __exponent);


extern float logf (float __x); extern float __logf (float __x);


extern float log10f (float __x); extern float __log10f (float __x);


extern float modff (float __x, float *__iptr); extern float __modff (float __x, float *__iptr);



extern float expm1f (float __x); extern float __expm1f (float __x);


extern float log1pf (float __x); extern float __log1pf (float __x);


extern float logbf (float __x); extern float __logbf (float __x);




extern float exp2f (float __x); extern float __exp2f (float __x);


extern float log2f (float __x); extern float __log2f (float __x);






extern float powf (float __x, float __y); extern float __powf (float __x, float __y);


extern float sqrtf (float __x); extern float __sqrtf (float __x);



extern float hypotf (float __x, float __y); extern float __hypotf (float __x, float __y);




extern float cbrtf (float __x); extern float __cbrtf (float __x);






extern float ceilf (float __x); extern float __ceilf (float __x);


extern float fabsf (float __x) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__const__));


extern float floorf (float __x); extern float __floorf (float __x);


extern float fmodf (float __x, float __y); extern float __fmodf (float __x, float __y);




extern int __isinff (float __value) __attribute__ ((__const__));


extern int __finitef (float __value) __attribute__ ((__const__));




extern int isinff (float __value) __attribute__ ((__const__));


extern int finitef (float __value) __attribute__ ((__const__));







extern float infnanf (int __error) __attribute__ ((__const__)); extern float __infnanf (int __error) __attribute__ ((__const__));


extern float dremf (float __x, float __y); extern float __dremf (float __x, float __y);



extern float significandf (float __x); extern float __significandf (float __x);




extern float copysignf (float __x, float __y) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__const__));




extern float nanf (__const char *__tagb) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__const__));




extern int __isnanf (float __value) __attribute__ ((__const__));



extern int isnanf (float __value) __attribute__ ((__const__));


extern float j0f (float); extern float __j0f (float);
extern float j1f (float); extern float __j1f (float);
extern float jnf (int, float); extern float __jnf (int, float);
extern float y0f (float); extern float __y0f (float);
extern float y1f (float); extern float __y1f (float);
extern float ynf (int, float); extern float __ynf (int, float);





extern float erff (float); extern float __erff (float);
extern float erfcf (float); extern float __erfcf (float);
extern float lgammaf (float); extern float __lgammaf (float);
extern float tgammaf (float); extern float __tgammaf (float);




extern float gammaf (float); extern float __gammaf (float);






extern float lgammaf_r (float, int *__signgamp); extern float __lgammaf_r (float, int *__signgamp);






extern float rintf (float __x); extern float __rintf (float __x);


extern float nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__const__));

extern float nexttowardf (float __x, long double __y) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__const__));



extern float remainderf (float __x, float __y); extern float __remainderf (float __x, float __y);



extern float scalbf (float __x, float __n); extern float __scalbf (float __x, float __n);



extern float scalbnf (float __x, int __n); extern float __scalbnf (float __x, int __n);


extern int ilogbf (float __x); extern int __ilogbf (float __x);




extern float scalblnf (float __x, long int __n); extern float __scalblnf (float __x, long int __n);



extern float nearbyintf (float __x); extern float __nearbyintf (float __x);



extern float roundf (float __x); extern float __roundf (float __x);



extern float truncf (float __x) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__const__));




extern float remquof (float __x, float __y, int *__quo); extern float __remquof (float __x, float __y, int *__quo);






extern long int lrintf (float __x); extern long int __lrintf (float __x);
extern long long int llrintf (float __x); extern long long int __llrintf (float __x);



extern long int lroundf (float __x); extern long int __lroundf (float __x);
extern long long int llroundf (float __x); extern long long int __llroundf (float __x);



extern float fdimf (float __x, float __y); extern float __fdimf (float __x, float __y);


extern float fmaxf (float __x, float __y); extern float __fmaxf (float __x, float __y);


extern float fminf (float __x, float __y); extern float __fminf (float __x, float __y);



extern int __fpclassifyf (float __value)
     __attribute__ ((__const__));


extern int __signbitf (float __value)
     __attribute__ ((__const__));



extern float fmaf (float __x, float __y, float __z); extern float __fmaf (float __x, float __y, float __z);
# 83 "/usr/include/math.h" 2 3
# 113 "/usr/include/math.h" 3
extern int signgam;
# 154 "/usr/include/math.h" 3
enum
  {
    FP_NAN,

    FP_INFINITE,

    FP_ZERO,

    FP_SUBNORMAL,

    FP_NORMAL

  };
# 236 "/usr/include/math.h" 3
typedef enum
{
  _IEEE_ = -1,
  _SVID_,
  _XOPEN_,
  _POSIX_,
  _ISOC_
} _LIB_VERSION_TYPE;




extern _LIB_VERSION_TYPE _LIB_VERSION;
# 259 "/usr/include/math.h" 3
struct __exception



  {
    int type;
    char *name;
    double arg1;
    double arg2;
    double retval;
  };


extern int matherr (struct __exception *__exc) throw ();
# 289 "/usr/include/math.h" 3
# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/float.h" 1 3
# 290 "/usr/include/math.h" 2 3
# 348 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathinline.h" 1 3
# 70 "/usr/include/bits/mathinline.h" 3
__inline float __copysignf (float __x, float __y) { float __z; __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); return __z; }
__inline float copysignf (float __x, float __y) { float __z; __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); return __z; }
__inline double __copysign (double __x, double __y) { double __z; __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); return __z; }
__inline double copysign (double __x, double __y) { double __z; __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); return __z; }





__inline float __fabsf (float __x) { return __builtin_fabsf (__x); }
__inline float fabsf (float __x) { return __builtin_fabsf (__x); }
__inline double __fabs (double __x) { return __builtin_fabs (__x); }
__inline double fabs (double __x) { return __builtin_fabs (__x); }
# 106 "/usr/include/bits/mathinline.h" 3
__inline float
__floorf (float __x)
{

  if (__x != 0 && fabsf (__x) < 16777216.0f)
    {





      float __tmp1, __tmp2;

      __asm ("cvtst/s %3,%2\n\t"



             "cvttq/svm %2,%1\n\t"

             "cvtqt/m %1,%0\n\t"
             : "=f"(__x), "=&f"(__tmp1), "=&f"(__tmp2)
             : "f"(__x));
    }
  return __x;
}

__inline double
__floor (double __x)
{
  if (__x != 0 && fabs (__x) < 9007199254740992.0)
    {
      double __tmp1;
      __asm (



             "cvttq/svm %2,%1\n\t"

             "cvtqt/m %1,%0\n\t"
             : "=f"(__x), "=&f"(__tmp1)
             : "f"(__x));
    }
  return __x;
}

__inline float floorf (float __x) { return __floorf(__x); }
__inline double floor (double __x) { return __floor(__x); }


__inline float __fdimf (float __x, float __y)
{
  return __x < __y ? 0.0f : __x - __y;
}

__inline float fdimf (float __x, float __y)
{
  return __x < __y ? 0.0f : __x - __y;
}

__inline double __fdim (double __x, double __y)
{
  return __x < __y ? 0.0 : __x - __y;
}

__inline double fdim (double __x, double __y)
{
  return __x < __y ? 0.0 : __x - __y;
}
# 349 "/usr/include/math.h" 2 3
# 409 "/usr/include/math.h" 3
}
# 44 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 2 3
# 88 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
namespace std
{


  template<typename _Tp> _Tp __cmath_power(_Tp, unsigned int);

  template<typename _Tp>
  inline _Tp
    __cmath_abs(_Tp __x)
    {
      return __x < _Tp() ? -__x : __x;
    }

  inline long
  abs(long __i) { return ::labs(__i); }

  inline ldiv_t
  div(long __i, long __j) { return ::ldiv(__i, __j); }


  inline float
  abs(float __x) { return __builtin_fabsf(__x); }
# 119 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline float
  acos(float __x) { return ::acosf(__x); }






  inline float
  asin(float __x) { return ::asinf(__x); }






  inline float
  atan(float __x) { return ::atanf(__x); }






  inline float
  atan2(float __y, float __x) { return ::atan2f(__y, __x); }







  inline float
  ceil(float __x) { return ::ceilf(__x); }
# 163 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline float
  cos(float __x) { return ::cosf(__x); }






  inline float
  cosh(float __x) { return ::coshf(__x); }






  inline float
  exp(float __x) { return ::expf(__x); }






  inline float
  fabs(float __x) { return __builtin_fabsf(__x); }
# 198 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline float
  floor(float __x) { return ::floorf(__x); }






  inline float
  fmod(float __x, float __y) { return ::fmodf(__x, __y); }







  inline float
  frexp(float __x, int* __exp) { return ::frexpf(__x, __exp); }






  inline float
  ldexp(float __x, int __exp) { return ::ldexpf(__x, __exp); }







  inline float
  log(float __x) { return ::logf(__x); }






  inline float
  log10(float __x) { return ::log10f(__x); }






  inline float
  modf(float __x, float* __iptr) { return ::modff(__x, __iptr); }
# 261 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  template<typename _Tp>
    inline _Tp
    __pow_helper(_Tp __x, int __n)
    {
      return __n < 0
        ? _Tp(1)/__cmath_power(__x, -__n)
        : __cmath_power(__x, __n);
    }


  inline float
  pow(float __x, float __y) { return ::powf(__x, __y); }






  inline float
  pow(float __x, int __n)
  {
    return __pow_helper(__x, __n);
  }





  inline float
  sin(float __x) { return ::sinf(__x); }






  inline float
  sinh(float __x) { return ::sinhf(__x); }
# 308 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline float
  sqrt(float __x) { return ::sqrtf(__x); }






  inline float
  tan(float __x) { return ::tanf(__x); }






  inline float
  tanh(float __x) { return ::tanhf(__x); }






  extern "C" double acos(double __x);

  extern "C" double asin(double __x);

  extern "C" double atan(double __x);

  extern "C" double atan2(double __y, double __x);

  extern "C" double ceil(double __x);





  extern "C" double cos(double __x);


  extern "C" double cosh(double __x);

  extern "C" double exp(double __x);


  inline double
  fabs(double __x) { return __builtin_fabs(__x); }





  inline double
  abs(double __x) { return __builtin_fabs(__x); }





  extern "C" double floor(double __x);

  extern "C" double fmod(double __x, double __y);

  extern "C" double frexp(double __x, int* __exp);

  extern "C" double ldexp(double __x, int __exp);

  extern "C" double log(double __x);

  extern "C" double log10(double __x);

  extern "C" double modf(double __x, double* __iptr);

  extern "C" double pow(double __x, double __y);

  inline double
  pow(double __x, int __i)
  {
    return __pow_helper(__x, __i);
  }





  extern "C" double sin(double __x);


  extern "C" double sinh(double __x);





  extern "C" double sqrt(double __x);


  extern "C" double tan(double __x);

  extern "C" double tanh(double __x);



  inline long double
  abs(long double __x) { return __builtin_fabsl(__x); }
# 426 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline long double
  acos(long double __x) { return ::acos(static_cast<double>(__x)); }






  inline long double
  asin(long double __x) { return ::asin(static_cast<double>(__x)); }






  inline long double
  atan(long double __x) { return ::atan(static_cast<double>(__x)); }






  inline long double
  atan2(long double __y, long double __x)
  { return ::atan2(static_cast<double>(__y), static_cast<double>(__x)); }






  inline long double
  ceil(long double __x) { return ::ceil(static_cast<double>(__x)); }
# 470 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline long double
  cos(long double __x) { return ::cos(static_cast<double>(__x)); }






  inline long double
  cosh(long double __x) { return ::cosh(static_cast<double>(__x)); }






  inline long double
  exp(long double __x) { return ::exp(static_cast<double>(__x)); }



  inline long double
  fabs(long double __x) { return __builtin_fabsl(__x); }
# 505 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline long double
  floor(long double __x) { return ::floor(static_cast<double>(__x)); }






  inline long double
  fmod(long double __x, long double __y)
  { return ::fmod(static_cast<double>(__x), static_cast<double>(__y)); }






  inline long double
  frexp(long double __x, int* __exp)
  { return ::frexp(static_cast<double>(__x), __exp); }






  inline long double
  ldexp(long double __x, int __exp)
  { return ::ldexp(static_cast<double>(__x), __exp); }






  inline long double
  log(long double __x) { return ::log(static_cast<double>(__x)); }






  inline long double
  log10(long double __x) { return ::log10(static_cast<double>(__x)); }






  inline long double
  modf(long double __x, long double* __iptr)
  {
    double __tmp;
    double __res = ::modf(static_cast<double>(__x), &__tmp);
    * __iptr = static_cast<long double>(__tmp);
    return __res;
  }






  inline long double
  pow(long double __x, long double __y)
  { return ::pow(static_cast<double>(__x), static_cast<double>(__y)); }


  inline long double
  pow(long double __x, int __n)
  {
    return __pow_helper(__x, __n);
  }
# 588 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline long double
  sin(long double __x) { return ::sin(static_cast<double>(__x)); }






  inline long double
  sinh(long double __x) { return ::sinh(static_cast<double>(__x)); }
# 607 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 3
  inline long double
  sqrt(long double __x) { return ::sqrt(static_cast<double>(__x)); }






  inline long double
  tan(long double __x) { return ::tan(static_cast<double>(__x)); }






  inline long double
  tanh(long double __x) { return ::tanh(static_cast<double>(__x)); }

}



# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/cmath.tcc" 1 3
# 35 "../../../../gcc/libstdc++-v3/include/c_std/bits/cmath.tcc" 3
namespace std {
         template<typename _Tp>
    _Tp
    __cmath_power(_Tp __x, unsigned int __n)
    {
      _Tp __y = __n % 2 ? __x : 1;

      while (__n >>= 1)
        {
          __x = __x * __x;
          if (__n % 2)
            __y = __y * __x;
        }

      return __y;
    }
}
# 631 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cmath.h" 2 3
# 44 "../../../../gcc/libstdc++-v3/include/bits/std_complex.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 1 3
# 38 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 3

# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 1 3
# 39 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 3
# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstddef.h" 1 3
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 1 3
# 39 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 3
# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdarg.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdarg.h" 3
# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stdarg.h" 1 3
# 43 "/home/matze/gcc-cvs/gccbin/gcc/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "/home/matze/gcc-cvs/gccbin/gcc/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdarg.h" 2 3

namespace std
{
  using ::va_list;
}
# 41 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstddef.h" 1 3
# 42 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 2 3
# 44 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 3
# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3

extern "C" {



# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3




# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stdarg.h" 1 3
# 39 "/usr/include/stdio.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 41 "/usr/include/stdio.h" 2 3







typedef struct _IO_FILE FILE;
# 57 "/usr/include/stdio.h" 3
# 1 "../../../../gcc/libstdc++-v3/libio/libio.h" 1 3
# 30 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
# 1 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 1 3







# 1 "../include/bits/c++config.h" 1 3
# 9 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 2 3







# 1 "/usr/include/sys/types.h" 1 3
# 17 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 2 3






# 1 "../../../../gcc/libstdc++-v3/include/std/cstddef" 1 3
# 24 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 2 3
# 35 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 3
typedef unsigned int wint_t;







typedef struct
{
  int count;
  wint_t value;
}__c_mbstate_t;




typedef size_t _G_size_t;
# 68 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 3
typedef __off_t _G_fpos_t;
typedef __off64_t _G_fpos64_t;
# 84 "../../../../gcc/libstdc++-v3/libio/_G_config.h" 3
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "../../../../gcc/libstdc++-v3/libio/libio.h" 2 3
# 51 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stdarg.h" 1 3
# 52 "../../../../gcc/libstdc++-v3/libio/libio.h" 2 3
# 160 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;







# 1 "/usr/include/bits/stdio-lock.h" 1 3
# 20 "/usr/include/bits/stdio-lock.h" 3
# 1 "/usr/include/pthread.h" 1 3
# 18 "/usr/include/pthread.h" 3
# 1 "/usr/include/features.h" 1 3
# 19 "/usr/include/pthread.h" 2 3

# 1 "/usr/include/sched.h" 1 3
# 23 "/usr/include/sched.h" 3
# 1 "/usr/include/features.h" 1 3
# 24 "/usr/include/sched.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 27 "/usr/include/sched.h" 2 3


# 1 "/usr/include/time.h" 1 3
# 30 "/usr/include/sched.h" 2 3


# 1 "/usr/include/bits/sched.h" 1 3
# 47 "/usr/include/bits/sched.h" 3
struct sched_param
  {
    int sched_priority;
  };

extern "C" {



extern int clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg) throw ();



}
# 33 "/usr/include/sched.h" 2 3

extern "C" {


extern int __sched_setparam (__pid_t __pid, __const struct sched_param *__param) throw ();

extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) throw ();



extern int __sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();


extern int __sched_setscheduler (__pid_t __pid, int __policy, __const struct sched_param *__param) throw ();

extern int sched_setscheduler (__pid_t __pid, int __policy, __const struct sched_param *__param) throw ();



extern int __sched_getscheduler (__pid_t __pid) throw ();
extern int sched_getscheduler (__pid_t __pid) throw ();


extern int __sched_yield (void) throw ();
extern int sched_yield (void) throw ();


extern int __sched_get_priority_max (int __algorithm) throw ();
extern int sched_get_priority_max (int __algorithm) throw ();


extern int __sched_get_priority_min (int __algorithm) throw ();
extern int sched_get_priority_min (int __algorithm) throw ();


extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();

}
# 21 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/time.h" 1 3
# 28 "/usr/include/time.h" 3
# 1 "/usr/include/features.h" 1 3
# 29 "/usr/include/time.h" 2 3

extern "C" {







# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 39 "/usr/include/time.h" 2 3



# 1 "/usr/include/bits/time.h" 1 3
# 43 "/usr/include/time.h" 2 3
# 95 "/usr/include/time.h" 3
struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  __const char *tm_zone;




};




extern clock_t clock (void) throw ();


extern time_t time (time_t *__timer) throw ();


extern double difftime (time_t __time1, time_t __time0) throw ()
     __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) throw ();





extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) throw ();






extern char *strptime (__const char *__s, __const char *__fmt, struct tm *__tp) throw ();






extern struct tm *gmtime (__const time_t *__timer) throw ();



extern struct tm *localtime (__const time_t *__timer) throw ();




extern struct tm *__gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();

extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();




extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) throw ();





extern char *asctime (__const struct tm *__tp) throw ();


extern char *ctime (__const time_t *__timer) throw ();






extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) throw ();



extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) throw ();





extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) throw ();



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) throw ();
# 228 "/usr/include/time.h" 3
extern time_t timegm (struct tm *__tp) throw ();


extern time_t timelocal (struct tm *__tp) throw ();


extern int dysize (int __year) throw ();





extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) throw ();
# 257 "/usr/include/time.h" 3
extern int getdate_err;





extern struct tm *getdate (__const char *__string) throw ();
# 272 "/usr/include/time.h" 3
extern int getdate_r (__const char *__restrict __string, struct tm *__restrict __resbufp) throw ();




}
# 22 "/usr/include/pthread.h" 2 3


# 1 "/usr/include/signal.h" 1 3
# 29 "/usr/include/signal.h" 3
# 1 "/usr/include/features.h" 1 3
# 30 "/usr/include/signal.h" 2 3

extern "C" {

# 1 "/usr/include/bits/sigset.h" 1 3
# 34 "/usr/include/signal.h" 2 3
# 49 "/usr/include/signal.h" 3
typedef __sigset_t sigset_t;
# 362 "/usr/include/signal.h" 3
}
# 25 "/usr/include/pthread.h" 2 3
# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 26 "/usr/include/pthread.h" 2 3


extern "C" {
# 49 "/usr/include/pthread.h" 3
enum
{
  PTHREAD_CREATE_JOINABLE,

  PTHREAD_CREATE_DETACHED

};

enum
{
  PTHREAD_INHERIT_SCHED,

  PTHREAD_EXPLICIT_SCHED

};

enum
{
  PTHREAD_SCOPE_SYSTEM,

  PTHREAD_SCOPE_PROCESS

};

enum
{
  PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP

  ,
  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP,
  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL

};

enum
{
  PTHREAD_PROCESS_PRIVATE,

  PTHREAD_PROCESS_SHARED

};


enum
{
  PTHREAD_RWLOCK_PREFER_READER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_WRITER_NP
};






struct _pthread_cleanup_buffer
{
  void (*__routine) (void *);
  void *__arg;
  int __canceltype;
  struct _pthread_cleanup_buffer *__prev;
};



enum
{
  PTHREAD_CANCEL_ENABLE,

  PTHREAD_CANCEL_DISABLE

};
enum
{
  PTHREAD_CANCEL_DEFERRED,

  PTHREAD_CANCEL_ASYNCHRONOUS

};
# 141 "/usr/include/pthread.h" 3
extern int pthread_create (pthread_t *__thread, __const pthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg) throw ();





extern pthread_t pthread_self (void) throw ();


extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();


extern void pthread_exit (void *__retval) throw () __attribute__ ((__noreturn__));




extern int pthread_join (pthread_t __th, void **__thread_return) throw ();





extern int pthread_detach (pthread_t __th) throw ();







extern int pthread_attr_init (pthread_attr_t *__attr) throw ();


extern int pthread_attr_destroy (pthread_attr_t *__attr) throw ();


extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, int __detachstate) throw ();



extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, int *__detachstate) throw ();



extern int pthread_attr_setschedparam (pthread_attr_t *__attr, __const struct sched_param *__param) throw ();



extern int pthread_attr_getschedparam (__const pthread_attr_t *__attr, struct sched_param *__param) throw ();



extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) throw ();



extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__attr, int *__policy) throw ();



extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit) throw ();



extern int pthread_attr_getinheritsched (__const pthread_attr_t *__attr, int *__inherit) throw ();



extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) throw ();


extern int pthread_attr_getscope (__const pthread_attr_t *__attr, int *__scope) throw ();




extern int pthread_attr_setguardsize (pthread_attr_t *__attr, size_t __guardsize) throw ();



extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, size_t *__guardsize) throw ();







extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) throw ();



extern int pthread_attr_getstackaddr (__const pthread_attr_t *__attr, void **__stackaddr) throw ();





extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) throw ();



extern int pthread_attr_getstacksize (__const pthread_attr_t *__attr, size_t *__stacksize) throw ();






extern int pthread_setschedparam (pthread_t __target_thread, int __policy, __const struct sched_param *__param) throw ();



extern int pthread_getschedparam (pthread_t __target_thread, int *__policy, struct sched_param *__param) throw ();





extern int pthread_getconcurrency (void) throw ();


extern int pthread_setconcurrency (int __level) throw ();






extern int __pthread_mutex_init (pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutex_attr) throw ();

extern int pthread_mutex_init (pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutex_attr) throw ();



extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();


extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();






extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();
extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();


extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();
extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();





extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) throw ();

extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) throw ();



extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__attr, int *__kind) throw ();
# 323 "/usr/include/pthread.h" 3
extern int pthread_cond_init (pthread_cond_t *__cond, __const pthread_condattr_t *__cond_attr) throw ();



extern int pthread_cond_destroy (pthread_cond_t *__cond) throw ();


extern int pthread_cond_signal (pthread_cond_t *__cond) throw ();


extern int pthread_cond_broadcast (pthread_cond_t *__cond) throw ();



extern int pthread_cond_wait (pthread_cond_t *__cond, pthread_mutex_t *__mutex) throw ();






extern int pthread_cond_timedwait (pthread_cond_t *__cond, pthread_mutex_t *__mutex, __const struct timespec *__abstime) throw ();






extern int pthread_condattr_init (pthread_condattr_t *__attr) throw ();


extern int pthread_condattr_destroy (pthread_condattr_t *__attr) throw ();







extern int pthread_rwlock_init (pthread_rwlock_t *__rwlock, __const pthread_rwlockattr_t *__attr) throw ();



extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) throw ();


extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) throw ();





extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) throw ();


extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) throw ();


extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *__attr, int *__pshared) throw ();




extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, int __pshared) throw ();



extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr, int *__pref) throw ();




extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, int __pref) throw ();
# 420 "/usr/include/pthread.h" 3
extern int __pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) throw ();

extern int pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) throw ();



extern int pthread_key_delete (pthread_key_t __key) throw ();


extern int __pthread_setspecific (pthread_key_t __key, __const void *__pointer) throw ();

extern int pthread_setspecific (pthread_key_t __key, __const void *__pointer) throw ();



extern void *__pthread_getspecific (pthread_key_t __key) throw ();
extern void *pthread_getspecific (pthread_key_t __key) throw ();
# 445 "/usr/include/pthread.h" 3
extern int __pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) throw ();

extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) throw ();







extern int pthread_setcancelstate (int __state, int *__oldstate) throw ();



extern int pthread_setcanceltype (int __type, int *__oldtype) throw ();


extern int pthread_cancel (pthread_t __thread) throw ();




extern void pthread_testcancel (void) throw ();
# 481 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer, void (*__routine) (void *), void *__arg) throw ();
# 491 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer, int __execute) throw ();
# 502 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer, void (*__routine) (void *), void *__arg) throw ();
# 513 "/usr/include/pthread.h" 3
extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer, int __execute) throw ();




# 1 "/usr/include/bits/sigthread.h" 1 3
# 31 "/usr/include/bits/sigthread.h" 3
extern int pthread_sigmask (int __how, __const __sigset_t *__newmask, __sigset_t *__oldmask) throw ();



extern int pthread_kill (pthread_t __thread, int __signo) throw ();
# 519 "/usr/include/pthread.h" 2 3
# 534 "/usr/include/pthread.h" 3
extern int __pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) throw ();


extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) throw ();






extern void pthread_kill_other_threads_np (void) throw ();



extern void __pthread_initialize (void) throw ();

}
# 21 "/usr/include/bits/stdio-lock.h" 2 3

typedef pthread_mutex_t _IO_lock_t;
# 169 "../../../../gcc/libstdc++-v3/libio/libio.h" 2 3
# 180 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 197 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 272 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
struct _IO_wide_data;


struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 319 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};





struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 358 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
                                 size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);




typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;


typedef struct
{
  __io_read_fn *read;
  __io_write_fn *write;
  __io_seek_fn *seek;
  __io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;

struct _IO_cookie_file;


extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
                             void *__cookie, _IO_cookie_io_functions_t __fns);




extern "C" {


extern int __underflow (_IO_FILE *) throw ();
extern int __uflow (_IO_FILE *) throw ();
extern int __overflow (_IO_FILE *, int) throw ();
extern wint_t __wunderflow (_IO_FILE *) throw ();
extern wint_t __wuflow (_IO_FILE *) throw ();
extern wint_t __woverflow (_IO_FILE *, wint_t) throw ();
# 440 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) throw ();
extern int _IO_putc (int __c, _IO_FILE *__fp) throw ();
extern int _IO_feof (_IO_FILE *__fp) throw ();
extern int _IO_ferror (_IO_FILE *__fp) throw ();

extern int _IO_peekc_locked (_IO_FILE *__fp) throw ();





extern void _IO_flockfile (_IO_FILE *) throw ();
extern void _IO_funlockfile (_IO_FILE *) throw ();
extern int _IO_ftrylockfile (_IO_FILE *) throw ();
# 466 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
                        __gnuc_va_list, int *__restrict) throw ();
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
                         __gnuc_va_list) throw ();
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) throw ();
extern _G_size_t _IO_sgetn (_IO_FILE *, void *, _G_size_t) throw ();

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) throw ();
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) throw ();

extern void _IO_free_backup_area (_IO_FILE *) throw ();
# 508 "../../../../gcc/libstdc++-v3/libio/libio.h" 3
}
# 58 "/usr/include/stdio.h" 2 3



typedef _G_fpos_t fpos_t;




typedef _G_fpos64_t fpos64_t;
# 110 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 111 "/usr/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;







extern int remove (__const char *__filename) throw ();

extern int rename (__const char *__old, __const char *__new) throw ();




extern FILE *tmpfile (void) throw ();
# 140 "/usr/include/stdio.h" 3
extern FILE *tmpfile64 (void) throw ();


extern char *tmpnam (char *__s) throw ();




extern char *tmpnam_r (char *__s) throw ();
# 160 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx) throw ();




extern int fclose (FILE *__stream) throw ();

extern int fflush (FILE *__stream) throw ();



extern int fflush_unlocked (FILE *__stream) throw ();




extern int fcloseall (void) throw ();





extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) throw ();


extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) throw ();
# 203 "/usr/include/stdio.h" 3
extern FILE *fopen64 (__const char *__restrict __filename, __const char *__restrict __modes) throw ();

extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) throw ();






extern FILE *fdopen (int __fd, __const char *__modes) throw ();





extern FILE *fopencookie (void *__restrict __magic_cookie, __const char *__restrict __modes, _IO_cookie_io_functions_t __io_funcs) throw ();






extern FILE *open_memstream (char **__restrict __bufloc, size_t *__restrict __sizeloc) throw ();






extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) throw ();





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) throw ();



extern void setlinebuf (FILE *__stream) throw ();




extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) throw ();


extern int printf (__const char *__restrict __format, ...) throw ();

extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) throw ();



extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ();



extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) throw ();


extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ();





extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) throw ()

     __attribute__ ((__format__ (__printf__, 3, 4)));

extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__printf__, 3, 0)));





extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, __gnuc_va_list __arg) throw ()

     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()

     __attribute__ ((__format__ (__printf__, 2, 3)));
extern int asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()

     __attribute__ ((__format__ (__printf__, 2, 3)));


extern int vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) throw ()

     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...) throw ()
     __attribute__ ((__format__ (__printf__, 2, 3)));




extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) throw ();


extern int scanf (__const char *__restrict __format, ...) throw ();

extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) throw ();




extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__scanf__, 2, 0)));


extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) throw ()
     __attribute__ ((__format__ (__scanf__, 1, 0)));


extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) throw ()


     __attribute__ ((__format__ (__scanf__, 2, 0)));




extern int fgetc (FILE *__stream) throw ();
extern int getc (FILE *__stream) throw ();


extern int getchar (void) throw ();







extern int getc_unlocked (FILE *__stream) throw ();
extern int getchar_unlocked (void) throw ();




extern int fgetc_unlocked (FILE *__stream) throw ();




extern int fputc (int __c, FILE *__stream) throw ();
extern int putc (int __c, FILE *__stream) throw ();


extern int putchar (int __c) throw ();







extern int fputc_unlocked (int __c, FILE *__stream) throw ();




extern int putc_unlocked (int __c, FILE *__stream) throw ();
extern int putchar_unlocked (int __c) throw ();





extern int getw (FILE *__stream) throw ();


extern int putw (int __w, FILE *__stream) throw ();




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) throw ();




extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) throw ();





extern char *gets (char *__s) throw ();
# 413 "/usr/include/stdio.h" 3
extern __ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) throw ();


extern __ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) throw ();




extern __ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) throw ();






extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) throw ();




extern int fputs_unlocked (__const char *__restrict __s, FILE *__restrict __stream) throw ();




extern int puts (__const char *__s) throw ();



extern int ungetc (int __c, FILE *__stream) throw ();



extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();


extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) throw ();




extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();

extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) throw ();






extern int fseek (FILE *__stream, long int __off, int __whence) throw ();

extern long int ftell (FILE *__stream) throw ();

extern void rewind (FILE *__stream) throw ();
# 493 "/usr/include/stdio.h" 3
extern int fseeko (FILE *__stream, __off_t __off, int __whence) throw ();

extern __off_t ftello (FILE *__stream) throw ();



extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) throw ();


extern int fsetpos (FILE *__stream, __const fpos_t *__pos) throw ();
# 527 "/usr/include/stdio.h" 3
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) throw ();
extern __off64_t ftello64 (FILE *__stream) throw ();

extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) throw ();

extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) throw ();



extern void clearerr (FILE *__stream) throw ();

extern int feof (FILE *__stream) throw ();

extern int ferror (FILE *__stream) throw ();



extern void clearerr_unlocked (FILE *__stream) throw ();
extern int feof_unlocked (FILE *__stream) throw ();
extern int ferror_unlocked (FILE *__stream) throw ();




extern void perror (__const char *__s) throw ();




extern int sys_nerr;
extern __const char *__const sys_errlist[];


extern int _sys_nerr;
extern __const char *__const _sys_errlist[];





extern int fileno (FILE *__stream) throw ();




extern int fileno_unlocked (FILE *__stream) throw ();






extern FILE *popen (__const char *__command, __const char *__modes) throw ();


extern int pclose (FILE *__stream) throw ();





extern char *ctermid (char *__s) throw ();





extern char *cuserid (char *__s) throw ();




struct obstack;


extern int obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __format, ...) throw ();

extern int obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __format, __gnuc_va_list __args) throw ();
# 614 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) throw ();



extern int ftrylockfile (FILE *__stream) throw ();


extern void funlockfile (FILE *__stream) throw ();
# 635 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 32 "/usr/include/bits/stdio.h" 3
inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) throw ()
{
  return vfprintf (stdout, __fmt, __arg);
}


inline int
getchar (void) throw ()
{
  return _IO_getc (stdin);
}




inline int
getc_unlocked (FILE *__fp) throw ()
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


inline int
getchar_unlocked (void) throw ()
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




inline int
putchar (int __c) throw ()
{
  return _IO_putc (__c, stdout);
}




inline int
fputc_unlocked (int __c, FILE *__stream) throw ()
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





inline int
putc_unlocked (int __c, FILE *__stream) throw ()
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


inline int
putchar_unlocked (int __c) throw ()
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}





inline __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream) throw ()
{
  return __getdelim (__lineptr, __n, '\n', __stream);
}





inline int
feof_unlocked (FILE *__stream) throw ()
{
  return (((__stream)->_flags & 0x10) != 0);
}


inline int
ferror_unlocked (FILE *__stream) throw ()
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 636 "/usr/include/stdio.h" 2 3


}
# 45 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 2 3
# 94 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdio.h" 3
namespace std
{
  using ::FILE;
  using ::fpos_t;

  extern "C" int remove(const char*);
  extern "C" int rename(const char*, const char*);
  extern "C" FILE* tmpfile(void);
  extern "C" char* tmpnam(char*);
  extern "C" int fclose(FILE*);
  extern "C" int fflush(FILE*);
  extern "C" FILE* fopen(const char*, const char*);
  extern "C" FILE* freopen(const char*, const char*, FILE*);
  extern "C" void setbuf(FILE*, char*);
  extern "C" int setvbuf(FILE*, char*, int, size_t);
  extern "C" int fprintf(FILE*, const char*, ...);
  extern "C" int fscanf(FILE*, const char*, ...);
  extern "C" int printf(const char*, ...);
  extern "C" int scanf(const char*, ...);
  extern "C" int snprintf(char *, size_t, const char*, ...);
  extern "C" int sprintf(char *, const char*, ...);
  extern "C" int sscanf(const char*, const char*, ...);
  extern "C" int vfprintf(FILE*, const char*, va_list);
  extern "C" int vfscanf(FILE*, const char*, va_list);
  extern "C" int vprintf(const char*, va_list);
  extern "C" int vscanf(const char*, va_list);
  extern "C" int vsnprintf(char*, size_t, const char*, va_list);
  extern "C" int vsprintf(char*, const char*, va_list);
  extern "C" int vsscanf(const char*, const char*, va_list);
  extern "C" int fgetc(FILE *);
  extern "C" char *fgets(char*, int, FILE*);
  extern "C" int fputc(int, FILE*);
  extern "C" int fputs(const char*, FILE*);
  extern "C" int getc(FILE*);
  extern "C" int getchar(void);
  extern "C" char *gets(char*);
  extern "C" int putc(int, FILE*);
  extern "C" int putchar(int);
  extern "C" int puts(const char*);
  extern "C" int ungetc(int, FILE*);
  extern "C" size_t fread(void*, size_t, size_t, FILE*);
  extern "C" size_t fwrite(const void*, size_t, size_t, FILE*);
  extern "C" int fgetpos(FILE*, fpos_t*);
  extern "C" int fseek(FILE*, long int, int);
  extern "C" int fsetpos(FILE*, const fpos_t*);
  extern "C" long int ftell(FILE*);
  extern "C" void rewind(FILE*);
  extern "C" void clearerr(FILE*);
  extern "C" int feof(FILE*);
  extern "C" int ferror(FILE*);
  extern "C" void perror(const char*);
}
# 42 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cstdarg.h" 1 3
# 43 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 2 3
# 46 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 27 "/usr/include/wchar.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/wchar.h" 2 3



# 1 "/usr/include/stdio.h" 1 3
# 32 "/usr/include/wchar.h" 2 3






# 1 "/home/matze/gcc-cvs/gccbin/gcc/include/stddef.h" 1 3
# 39 "/usr/include/wchar.h" 2 3
# 53 "/usr/include/wchar.h" 3
typedef struct
{
  int count;
  wint_t value;
} mbstate_t;
# 77 "/usr/include/wchar.h" 3
struct tm;


extern "C" {


extern wchar_t *wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ();


extern wchar_t *wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ();



extern wchar_t *wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) throw ();


extern wchar_t *wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) throw ();



extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();

extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();




extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();


extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();




# 1 "/usr/include/xlocale.h" 1 3
# 113 "/usr/include/wchar.h" 2 3

extern int __wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) throw ();


extern int __wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) throw ();





extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();



extern size_t wcsxfrm (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();
# 136 "/usr/include/wchar.h" 3
extern int __wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) throw ();




extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) throw ();



extern wchar_t *wcsdup (__const wchar_t *__s) throw ();



extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) throw ();

extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) throw ();



extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) throw ();



extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) throw ();

extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) throw ();


extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) throw ();
# 174 "/usr/include/wchar.h" 3
extern wchar_t *wcstok (wchar_t *__restrict __s, __const wchar_t *__restrict __delim, wchar_t **__restrict __ptr) throw ();




extern size_t __wcslen (__const wchar_t *__s) throw ();
extern size_t wcslen (__const wchar_t *__s) throw ();



extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) throw ();




extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) throw ();


extern int wmemcmp (__const wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();



extern wchar_t *wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) throw ();




extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) throw ();



extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();




extern wint_t btowc (int __c) throw ();



extern int wctob (wint_t __c) throw ();



extern int mbsinit (__const mbstate_t *__ps) throw ();



extern size_t mbrtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n, mbstate_t *__p) throw ();




extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, mbstate_t *__restrict __ps) throw ();



extern size_t __mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ();

extern size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) throw ();





extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
                               mbstate_t *__restrict __ps) throw ()
{ return (__ps != __null
          ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); }




extern size_t mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ();





extern size_t wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) throw ();







extern size_t mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) throw ();





extern size_t wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) throw ();
# 277 "/usr/include/wchar.h" 3
extern int wcwidth (wint_t __c) throw ();



extern int wcswidth (__const wchar_t *__s, size_t __n) throw ();





extern double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();




extern float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();

extern long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) throw ();






extern long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();






__extension__
extern long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




__extension__
extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();







__extension__
extern long long int wcstoll (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();




__extension__
extern unsigned long long int wcstoull (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base) throw ();
# 355 "/usr/include/wchar.h" 3
# 1 "/usr/include/xlocale.h" 1 3
# 356 "/usr/include/wchar.h" 2 3



extern long int __wcstol_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



extern unsigned long int __wcstoul_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern long long int __wcstoll_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();



__extension__
extern unsigned long long int __wcstoull_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) throw ();





extern double __wcstod_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();



extern float __wcstof_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();



extern long double __wcstold_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) throw ();







extern double __wcstod_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();


extern float __wcstof_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();


extern long double __wcstold_internal (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __group) throw ();





extern long int __wcstol_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) throw ();





extern unsigned long int __wcstoul_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) throw ();







__extension__
extern long long int __wcstoll_internal (__const wchar_t * __restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) throw ();






__extension__
extern unsigned long long int __wcstoull_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) throw ();
# 443 "/usr/include/wchar.h" 3
extern __inline double wcstod (__const wchar_t *__restrict __nptr,
                               wchar_t **__restrict __endptr) throw ()
{ return __wcstod_internal (__nptr, __endptr, 0); }
extern __inline long int wcstol (__const wchar_t *__restrict __nptr,
                                 wchar_t **__restrict __endptr,
                                 int __base) throw ()
{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
                                           wchar_t **__restrict __endptr,
                                           int __base) throw ()
{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }


extern __inline float wcstof (__const wchar_t *__restrict __nptr,
                              wchar_t **__restrict __endptr) throw ()
{ return __wcstof_internal (__nptr, __endptr, 0); }
extern __inline long double wcstold (__const wchar_t *__restrict __nptr,
                                         wchar_t **__restrict __endptr) throw ()
{ return __wcstold_internal (__nptr, __endptr, 0); }


__extension__
extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr,
                                      wchar_t **__restrict __endptr,
                                      int __base) throw ()
{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
__extension__
extern __inline unsigned long long int wcstouq (__const wchar_t *
                                                __restrict __nptr,
                                                wchar_t **__restrict __endptr,
                                                int __base) throw ()
{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }







extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) throw ();



extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) throw ();
# 502 "/usr/include/wchar.h" 3
}
# 47 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 2 3
# 62 "../../../../gcc/libstdc++-v3/include/c_std/bits/std_cwchar.h" 3
namespace std
{
  using ::mbstate_t;
}
# 41 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/bits/stringfwd.h" 1 3
# 38 "../../../../gcc/libstdc++-v3/include/bits/stringfwd.h" 3

# 1 "../include/bits/c++config.h" 1 3
# 40 "../../../../gcc/libstdc++-v3/include/bits/stringfwd.h" 2 3

namespace std
{
  template<class _CharT>
    struct char_traits;

  template<typename _Alloc>
    class allocator;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_string;

  typedef basic_string<char> string;



}
# 42 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 2 3
# 1 "../../../../gcc/libstdc++-v3/include/bits/functexcept.h" 1 3
# 34 "../../../../gcc/libstdc++-v3/include/bits/functexcept.h" 3
# 1 "../../../../gcc/libstdc++-v3/libsupc++/exception_defines.h" 1 3
# 35 "../../../../gcc/libstdc++-v3/include/bits/functexcept.h" 2 3

namespace std
{

  void
  __throw_bad_exception(void);


  void
  __throw_bad_alloc(void);


  void
  __throw_bad_cast(void);

  void
  __throw_bad_typeid(void);


  void
  __throw_logic_error(const char* __s);

  void
  __throw_domain_error(const char* __s);

  void
  __throw_invalid_argument(const char* __s);

  void
  __throw_length_error(const char* __s);

  void
  __throw_out_of_range(const char* __s);

  void
  __throw_runtime_error(const char* __s);

  void
  __throw_range_error(const char* __s);

  void
  __throw_overflow_error(const char* __s);

  void
  __throw_underflow_error(const char* __s);


  void
  __throw_ios_failure(const char* __s);
}
# 43 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 2 3

namespace std
{

  template<> class char_traits<char>;




  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ios;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_streambuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_istream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_iostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
            typename _Alloc = allocator<_CharT> >
    class basic_stringbuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_istringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_ostringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_stringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_filebuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ifstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ofstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_fstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class istreambuf_iterator;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class ostreambuf_iterator;



  class ios_base;


  template<class _State> struct fpos;





  typedef fpos<mbstate_t> streampos;





  typedef basic_ios<char> ios;
  typedef basic_streambuf<char> streambuf;
  typedef basic_istream<char> istream;
  typedef basic_ostream<char> ostream;
  typedef basic_iostream<char> iostream;
  typedef basic_stringbuf<char> stringbuf;
  typedef basic_istringstream<char> istringstream;
  typedef basic_ostringstream<char> ostringstream;
  typedef basic_stringstream<char> stringstream;
  typedef basic_filebuf<char> filebuf;
  typedef basic_ifstream<char> ifstream;
  typedef basic_ofstream<char> ofstream;
  typedef basic_fstream<char> fstream;
# 147 "../../../../gcc/libstdc++-v3/include/bits/std_iosfwd.h" 3
}
# 45 "../../../../gcc/libstdc++-v3/include/bits/std_complex.h" 2 3

namespace std
{


  template<typename _Tp> class complex;
  template<> class complex<float>;
  template<> class complex<double>;
  template<> class complex<long double>;

  template<typename _Tp> _Tp abs(const complex<_Tp>&);
  template<typename _Tp> _Tp arg(const complex<_Tp>&);
  template<typename _Tp> _Tp norm(const complex<_Tp>&);

  template<typename _Tp> complex<_Tp> conj(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp&);


  template<typename _Tp> complex<_Tp> cos(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> cosh(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> exp(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> log(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> log10(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, int);
  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&, const _Tp&);
  template<typename _Tp> complex<_Tp> pow(const complex<_Tp>&,
                                           const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> pow(const _Tp&, const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> sin(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> sinh(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> sqrt(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> tan(const complex<_Tp>&);
  template<typename _Tp> complex<_Tp> tanh(const complex<_Tp>&);



  template<typename _Tp>
    class complex
    {
    public:
      typedef _Tp value_type;

      complex(const _Tp& = _Tp(), const _Tp & = _Tp());



      template<typename _Up>
        complex(const complex<_Up>&);

      _Tp real() const;
      _Tp imag() const;

      complex<_Tp>& operator=(const _Tp&);
      complex<_Tp>& operator+=(const _Tp&);
      complex<_Tp>& operator-=(const _Tp&);
      complex<_Tp>& operator*=(const _Tp&);
      complex<_Tp>& operator/=(const _Tp&);




      template<typename _Up>
        complex<_Tp>& operator=(const complex<_Up>&);
      template<typename _Up>
        complex<_Tp>& operator+=(const complex<_Up>&);
      template<typename _Up>
        complex<_Tp>& operator-=(const complex<_Up>&);
      template<typename _Up>
        complex<_Tp>& operator*=(const complex<_Up>&);
      template<typename _Up>
        complex<_Tp>& operator/=(const complex<_Up>&);

    private:
      _Tp _M_real, _M_imag;
    };

  template<typename _Tp>
    inline _Tp
    complex<_Tp>::real() const { return _M_real; }

  template<typename _Tp>
    inline _Tp
    complex<_Tp>::imag() const { return _M_imag; }

  template<typename _Tp>
    inline
    complex<_Tp>::complex(const _Tp& __r, const _Tp& __i)
    : _M_real(__r), _M_imag(__i) { }

  template<typename _Tp>
    template<typename _Up>
    inline
    complex<_Tp>::complex(const complex<_Up>& __z)
    : _M_real(__z.real()), _M_imag(__z.imag()) { }

  template<typename _Tp>
    complex<_Tp>&
    complex<_Tp>::operator=(const _Tp& __t)
    {
     _M_real = __t;
     _M_imag = _Tp();
     return *this;
    }


  template<typename _Tp>
    inline complex<_Tp>&
    complex<_Tp>::operator+=(const _Tp& __t)
    {
      _M_real += __t;
      return *this;
    }


  template<typename _Tp>
    inline complex<_Tp>&
    complex<_Tp>::operator-=(const _Tp& __t)
    {
      _M_real -= __t;
      return *this;
    }


  template<typename _Tp>
    complex<_Tp>&
    complex<_Tp>::operator*=(const _Tp& __t)
    {
      _M_real *= __t;
      _M_imag *= __t;
      return *this;
    }


  template<typename _Tp>
    complex<_Tp>&
    complex<_Tp>::operator/=(const _Tp& __t)
    {
      _M_real /= __t;
      _M_imag /= __t;
      return *this;
    }

  template<typename _Tp>
    template<typename _Up>
    complex<_Tp>&
    complex<_Tp>::operator=(const complex<_Up>& __z)
    {
      _M_real = __z.real();
      _M_imag = __z.imag();
      return *this;
    }


  template<typename _Tp>
    template<typename _Up>
    complex<_Tp>&
    complex<_Tp>::operator+=(const complex<_Up>& __z)
    {
      _M_real += __z.real();
      _M_imag += __z.imag();
      return *this;
    }


  template<typename _Tp>
    template<typename _Up>
    complex<_Tp>&
    complex<_Tp>::operator-=(const complex<_Up>& __z)
    {
      _M_real -= __z.real();
      _M_imag -= __z.imag();
      return *this;
    }



  template<typename _Tp>
    template<typename _Up>
    complex<_Tp>&
    complex<_Tp>::operator*=(const complex<_Up>& __z)
    {
      const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag();
      _M_imag = _M_real * __z.imag() + _M_imag * __z.real();
      _M_real = __r;
      return *this;
    }



  template<typename _Tp>
    template<typename _Up>
    complex<_Tp>&
    complex<_Tp>::operator/=(const complex<_Up>& __z)
    {
      const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag();
      const _Tp __n = norm(__z);
      _M_imag = (_M_real * __z.imag() - _M_imag * __z.real()) / __n;
      _M_real = __r / __n;
      return *this;
    }


  template<typename _Tp>
    inline complex<_Tp>
    operator+(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) += __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator+(const complex<_Tp>& __x, const _Tp& __y)
    { return complex<_Tp> (__x) += __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator+(const _Tp& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__y) += __x; }

  template<typename _Tp>
    inline complex<_Tp>
    operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) -= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator-(const complex<_Tp>& __x, const _Tp& __y)
    { return complex<_Tp> (__x) -= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator-(const _Tp& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) -= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator*(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) *= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator*(const complex<_Tp>& __x, const _Tp& __y)
    { return complex<_Tp> (__x) *= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator*(const _Tp& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__y) *= __x; }

  template<typename _Tp>
    inline complex<_Tp>
    operator/(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) /= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator/(const complex<_Tp>& __x, const _Tp& __y)
    { return complex<_Tp> (__x) /= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator/(const _Tp& __x, const complex<_Tp>& __y)
    { return complex<_Tp> (__x) /= __y; }

  template<typename _Tp>
    inline complex<_Tp>
    operator+(const complex<_Tp>& __x)
    { return __x; }

  template<typename _Tp>
    inline complex<_Tp>
    operator-(const complex<_Tp>& __x)
    { return complex<_Tp>(-__x.real(), -__x.imag()); }

  template<typename _Tp>
    inline bool
    operator==(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return __x.real() == __y.real() && __x.imag() == __y.imag(); }

  template<typename _Tp>
    inline bool
    operator==(const complex<_Tp>& __x, const _Tp& __y)
    { return __x.real() == __y && __x.imag() == _Tp(); }

  template<typename _Tp>
    inline bool
    operator==(const _Tp& __x, const complex<_Tp>& __y)
    { return __x == __y.real() && _Tp() == __y.imag(); }

  template<typename _Tp>
    inline bool
    operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y)
    { return __x.real() != __y.real() || __x.imag() != __y.imag(); }

  template<typename _Tp>
    inline bool
    operator!=(const complex<_Tp>& __x, const _Tp& __y)
    { return __x.real() != __y || __x.imag() != _Tp(); }

  template<typename _Tp>
    inline bool
    operator!=(const _Tp& __x, const complex<_Tp>& __y)
    { return __x != __y.real() || _Tp() != __y.imag(); }

  template<typename _Tp, typename _CharT, class _Traits>
    basic_istream<_CharT, _Traits>&
    operator>>(basic_istream<_CharT, _Traits>&, complex<_Tp>&);

  template<typename _Tp, typename _CharT, class _Traits>
    basic_ostream<_CharT, _Traits>&
    operator<<(basic_ostream<_CharT, _Traits>&, const complex<_Tp>&);


  template<typename _Tp>
    inline _Tp
    real(const complex<_Tp>& __z)
    { return __z.real(); }

  template<typename _Tp>
    inline _Tp
    imag(const complex<_Tp>& __z)
    { return __z.imag(); }

  template<typename _Tp>
    inline _Tp
    abs(const complex<_Tp>& __z)
    {
      _Tp __x = __z.real();
      _Tp __y = __z.imag();
      const _Tp __s = abs(__x) + abs(__y);
      if (__s == _Tp())
        return __s;
      __x /= __s;
      __y /= __s;
      return __s * sqrt(__x * __x + __y * __y);
    }

  template<typename _Tp>
    inline _Tp
    arg(const complex<_Tp>& __z)
    { return atan2(__z.imag(), __z.real()); }

  template<typename _Tp>
    inline _Tp
    norm(const complex<_Tp>& __z)
    {
      _Tp __res = abs(__z);
      return __res * __res;
    }

  template<typename _Tp>
    inline complex<_Tp>
    polar(const _Tp& __rho, const _Tp& __theta)
    { return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); }

  template<typename _Tp>
    inline complex<_Tp>
    conj(const complex<_Tp>& __z)
    { return complex<_Tp>(__z.real(), -__z.imag()); }


  template<typename _Tp>
    inline complex<_Tp>
    cos(const complex<_Tp>& __z)
    {
      const _Tp __x = __z.real();
      const _Tp __y = __z.imag();
      return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y));
    }

  template<typename _Tp>
    inline complex<_Tp>
    cosh(const complex<_Tp>& __z)
    {
      const _Tp __x = __z.real();
      const _Tp __y = __z.imag();
      return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y));
    }

  template<typename _Tp>
    inline complex<_Tp>
    exp(const complex<_Tp>& __z)
    { return polar(exp(__z.real()), __z.imag()); }

  template<typename _Tp>
    inline complex<_Tp>
    log(const complex<_Tp>& __z)
    { return complex<_Tp>(log(abs(__z)), arg(__z)); }

  template<typename _Tp>
    inline complex<_Tp>
    log10(const complex<_Tp>& __z)
    { return log(__z) / log(_Tp(10.0)); }

  template<typename _Tp>
    inline complex<_Tp>
    sin(const complex<_Tp>& __z)
    {
      const _Tp __x = __z.real();
      const _Tp __y = __z.imag();
      return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y));
    }

  template<typename _Tp>
    inline complex<_Tp>
    sinh(const complex<_Tp>& __z)
    {
      const _Tp __x = __z.real();
      const _Tp __y = __z.imag();
      return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y));
    }

  template<typename _Tp>
    complex<_Tp>
    sqrt(const complex<_Tp>& __z)
    {
      _Tp __x = __z.real();
      _Tp __y = __z.imag();

      if (__x == _Tp())
        {
          _Tp __t = sqrt(abs(__y) / 2);
          return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
        }
      else
        {
          _Tp __t = sqrt(2 * (abs(__z) + abs(__x)));
          _Tp __u = __t / 2;
          return __x > _Tp()
            ? complex<_Tp>(__u, __y / __t)
            : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
        }
    }

  template<typename _Tp>
    inline complex<_Tp>
    tan(const complex<_Tp>& __z)
    {
      return sin(__z) / cos(__z);
    }

  template<typename _Tp>
    inline complex<_Tp>
    tanh(const complex<_Tp>& __z)
    {
      return sinh(__z) / cosh(__z);
    }

  template<typename _Tp>
    inline complex<_Tp>
    pow(const complex<_Tp>& __z, int __n)
    {
      return __pow_helper(__z, __n);
    }

  template<typename _Tp>
    inline complex<_Tp>
    pow(const complex<_Tp>& __x, const _Tp& __y)
    {
      return exp(__y * log(__x));
    }

  template<typename _Tp>
    inline complex<_Tp>
    pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
    {
      return exp(__y * log(__x));
    }

  template<typename _Tp>
    inline complex<_Tp>
    pow(const _Tp& __x, const complex<_Tp>& __y)
    {
      return exp(__y * log(__x));
    }



  template<> class complex<float>
  {
  public:
    typedef float value_type;

    complex(float = 0.0f, float = 0.0f);



    explicit complex(const complex<double>&);
    explicit complex(const complex<long double>&);

    float real() const;
    float imag() const;

    complex<float>& operator=(float);
    complex<float>& operator+=(float);
    complex<float>& operator-=(float);
    complex<float>& operator*=(float);
    complex<float>& operator/=(float);




    template<typename _Tp>
      complex<float>&operator=(const complex<_Tp>&);
    template<typename _Tp>
      complex<float>& operator+=(const complex<_Tp>&);
    template<class _Tp>
      complex<float>& operator-=(const complex<_Tp>&);
    template<class _Tp>
      complex<float>& operator*=(const complex<_Tp>&);
    template<class _Tp>
      complex<float>&operator/=(const complex<_Tp>&);

  private:
    typedef __complex__ float _ComplexT;
    _ComplexT _M_value;

    complex(_ComplexT __z) : _M_value(__z) { }

    friend class complex<double>;
    friend class complex<long double>;
  };

  inline float
  complex<float>::real() const
  { return __real__ _M_value; }

  inline float
  complex<float>::imag() const
  { return __imag__ _M_value; }

  inline
  complex<float>::complex(float r, float i)
  {
    __real__ _M_value = r;
    __imag__ _M_value = i;
  }

  inline complex<float>&
  complex<float>::operator=(float __f)
  {
    __real__ _M_value = __f;
    __imag__ _M_value = 0.0f;
    return *this;
  }

  inline complex<float>&
  complex<float>::operator+=(float __f)
  {
    __real__ _M_value += __f;
    return *this;
  }

  inline complex<float>&
  complex<float>::operator-=(float __f)
  {
    __real__ _M_value -= __f;
    return *this;
  }

  inline complex<float>&
  complex<float>::operator*=(float __f)
  {
    _M_value *= __f;
    return *this;
  }

  inline complex<float>&
  complex<float>::operator/=(float __f)
  {
    _M_value /= __f;
    return *this;
  }

  template<typename _Tp>
  inline complex<float>&
  complex<float>::operator=(const complex<_Tp>& __z)
  {
    __real__ _M_value = __z.real();
    __imag__ _M_value = __z.imag();
    return *this;
  }

  template<typename _Tp>
  inline complex<float>&
  complex<float>::operator+=(const complex<_Tp>& __z)
  {
    __real__ _M_value += __z.real();
    __imag__ _M_value += __z.imag();
    return *this;
  }

  template<typename _Tp>
    inline complex<float>&
    complex<float>::operator-=(const complex<_Tp>& __z)
    {
     __real__ _M_value -= __z.real();
     __imag__ _M_value -= __z.imag();
     return *this;
    }

  template<typename _Tp>
    inline complex<float>&
    complex<float>::operator*=(const complex<_Tp>& __z)
    {
      _ComplexT __t;
      __real__ __t = __z.real();
      __imag__ __t = __z.imag();
      _M_value *= __t;
      return *this;
    }

  template<typename _Tp>
    inline complex<float>&
    complex<float>::operator/=(const complex<_Tp>& __z)
    {
      _ComplexT __t;
      __real__ __t = __z.real();
      __imag__ __t = __z.imag();
      _M_value /= __t;
      return *this;
    }



  template<> class complex<double>
  {
  public:
    typedef double value_type;

    complex(double =0.0, double =0.0);



    complex(const complex<float>&);
    explicit complex(const complex<long double>&);

    double real() const;
    double imag() const;

    complex<double>& operator=(double);
    complex<double>& operator+=(double);
    complex<double>& operator-=(double);
    complex<double>& operator*=(double);
    complex<double>& operator/=(double);



    template<typename _Tp>
      complex<double>& operator=(const complex<_Tp>&);
    template<typename _Tp>
      complex<double>& operator+=(const complex<_Tp>&);
    template<typename _Tp>
      complex<double>& operator-=(const complex<_Tp>&);
    template<typename _Tp>
      complex<double>& operator*=(const complex<_Tp>&);
    template<typename _Tp>
      complex<double>& operator/=(const complex<_Tp>&);

  private:
    typedef __complex__ double _ComplexT;
    _ComplexT _M_value;

    complex(_ComplexT __z) : _M_value(__z) { }

    friend class complex<float>;
    friend class complex<long double>;
  };

  inline double
  complex<double>::real() const
  { return __real__ _M_value; }

  inline double
  complex<double>::imag() const
  { return __imag__ _M_value; }

  inline
  complex<double>::complex(double __r, double __i)
  {
    __real__ _M_value = __r;
    __imag__ _M_value = __i;
  }

  inline complex<double>&
  complex<double>::operator=(double __d)
  {
    __real__ _M_value = __d;
    __imag__ _M_value = 0.0;
    return *this;
  }

  inline complex<double>&
  complex<double>::operator+=(double __d)
  {
    __real__ _M_value += __d;
    return *this;
  }

  inline complex<double>&
  complex<double>::operator-=(double __d)
  {
    __real__ _M_value -= __d;
    return *this;
  }

  inline complex<double>&
  complex<double>::operator*=(double __d)
  {
    _M_value *= __d;
    return *this;
  }

  inline complex<double>&
  complex<double>::operator/=(double __d)
  {
    _M_value /= __d;
    return *this;
  }

  template<typename _Tp>
    inline complex<double>&
    complex<double>::operator=(const complex<_Tp>& __z)
    {
      __real__ _M_value = __z.real();
      __imag__ _M_value = __z.imag();
      return *this;
    }

  template<typename _Tp>
    inline complex<double>&
    complex<double>::operator+=(const complex<_Tp>& __z)
    {
      __real__ _M_value += __z.real();
      __imag__ _M_value += __z.imag();
      return *this;
    }

  template<typename _Tp>
    inline complex<double>&
    complex<double>::operator-=(const complex<_Tp>& __z)
    {
      __real__ _M_value -= __z.real();
      __imag__ _M_value -= __z.imag();
      return *this;
    }

  template<typename _Tp>
    inline complex<double>&
    complex<double>::operator*=(const complex<_Tp>& __z)
    {
      _ComplexT __t;
      __real__ __t = __z.real();
      __imag__ __t = __z.imag();
      _M_value *= __t;
      return *this;
    }

  template<typename _Tp>
    inline complex<double>&
    complex<double>::operator/=(const complex<_Tp>& __z)
    {
      _ComplexT __t;
      __real__ __t = __z.real();
      __imag__ __t = __z.imag();
      _M_value /= __t;