c/8339: insn does not satisfy its constraints
double@inebraska.com
double@inebraska.com
Thu Oct 24 09:19:00 GMT 2002
>Number: 8339
>Category: c
>Synopsis: insn does not satisfy its constraints
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Oct 24 09:16:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:
>Release: 3.2
>Organization:
>Environment:
System: Linux ee-pdouble.pdouble.net 2.4.19-gentoo-r9 #2 Mon Sep 16 16:28:23 CDT 2002 i686 Intel(R) Pentium(R) 4 Mobile CPU 1.60GHz GenuineIntel GNU/Linux
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /var/tmp/portage/gcc-3.2-r2/work/gcc-3.2/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,ada,f77,objc,java --enable-threads=posix --enable-long-long --disable-checking --enable-cstdio=stdio --enable-clocale=generic --enable-__cxa_atexit --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/include/g++-v32 --with-local-prefix=/usr/local --enable-shared --enable-nls --without-included-gettext
Machine: Dell Inspiron 8200 laptop with BIOS version A06
RAM: 512M
CPU: (from /proc/cpuinfo)
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 Mobile CPU 1.60GHz
stepping : 4
cpu MHz : 1595.744
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips : 3145.72
OS: Gentoo Linux
glibc version is 2.3.1
glib version is 1.2.10
>Description:
Internal compiler error occurs with optimizations turned on in certain situations. Appears to be use of the "sse2" chip. The error is as follows:
gsmatrix.c: In function `gs_matrix_invert':
gsmatrix.c:148: insn does not satisfy its constraints:
(insn 199 194 200 (set (reg:DF 24 rxmm3)
(float_extend:DF (reg:SF 8 st(0) [111]))) 133 {*extendsfdf2_1} (nil)
(nil))
gsmatrix.c:148: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8369
>How-To-Repeat:
This is the command:
gcc `cat ./obj/cc.tr` -DDISPLAYGHOSTSCRIPT -DVERSION=\"0.5.10\" -DGS_VERSION=\"5.50\" -O2 -Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common -O3 -pipe -march=pentium4 -mmmx -msse2 -mfpmath=sse -fexpensive-optimizations -fschedule-insns2 -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -DHAVE_TCPD_H -DHAVE_SYSLOG_H -I. -I./obj -o ./obj/gsmatrix.o -c ./gsmatrix.c
This is the preprocessor output:
--- cut here ---
# 1 "gsmatrix.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "gsmatrix.c"
# 26 "gsmatrix.c"
# 1 "math_.h" 1
# 31 "math_.h"
# 1 "std.h" 1
# 30 "std.h"
# 1 "stdpre.h" 1
# 181 "stdpre.h"
typedef unsigned char byte;
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 196 "stdpre.h"
# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 291 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 292 "/usr/include/features.h" 2 3
# 320 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 321 "/usr/include/features.h" 2 3
# 27 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/bits/types.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 201 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 3
typedef unsigned int size_t;
# 30 "/usr/include/bits/types.h" 2 3
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
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;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
typedef __quad_t *__qaddr_t;
typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;
typedef struct
{
int __val[2];
} __fsid_t;
typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef int __clockid_t;
typedef int __timer_t;
typedef int __key_t;
typedef unsigned short int __ipc_pid_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;
typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;
typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;
typedef __u_quad_t __ino64_t;
typedef __loff_t __off64_t;
typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;
typedef int __intptr_t;
typedef unsigned int __socklen_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 __pthread_attr_s
{
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;
# 140 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 144 "/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;
# 61 "/usr/include/sys/types.h" 3
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;
# 99 "/usr/include/sys/types.h" 3
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;
# 132 "/usr/include/sys/types.h" 3
# 1 "/usr/include/time.h" 1 3
# 74 "/usr/include/time.h" 3
typedef __time_t time_t;
# 92 "/usr/include/time.h" 3
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3
typedef __timer_t timer_t;
# 133 "/usr/include/sys/types.h" 2 3
# 146 "/usr/include/sys/types.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 147 "/usr/include/sys/types.h" 2 3
typedef unsigned long int ulong_;
typedef unsigned short int ushort_;
typedef unsigned int uint_;
# 190 "/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__)));
# 212 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 37 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 38 "/usr/include/endian.h" 2 3
# 213 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/select.h" 1 3
# 31 "/usr/include/sys/select.h" 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
typedef __sigset_t sigset_t;
# 1 "/usr/include/time.h" 1 3
# 116 "/usr/include/time.h" 3
struct timespec
{
__time_t tv_sec;
long int tv_nsec;
};
# 45 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/bits/time.h" 1 3
# 67 "/usr/include/bits/time.h" 3
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 47 "/usr/include/sys/select.h" 2 3
typedef __suseconds_t suseconds_t;
typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3
typedef struct
{
__fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) ;
# 122 "/usr/include/sys/select.h" 3
# 216 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/sysmacros.h" 1 3
# 219 "/usr/include/sys/types.h" 2 3
# 230 "/usr/include/sys/types.h" 3
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 262 "/usr/include/sys/types.h" 3
# 197 "stdpre.h" 2
# 218 "stdpre.h"
typedef int bool;
# 254 "stdpre.h"
typedef const char *ptr_ord_t;
# 293 "stdpre.h"
typedef double floatp;
# 323 "stdpre.h"
typedef const char *client_name_t;
# 31 "std.h" 2
# 1 "obj/arch.h" 1
# 34 "std.h" 2
# 48 "std.h"
typedef ushort bits16;
typedef uint bits32;
# 125 "std.h"
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 1 3
# 39 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 44 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 2 3
# 54 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
typedef struct _IO_FILE FILE;
# 64 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
typedef struct _IO_FILE __FILE;
# 74 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 32 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 14 "/usr/include/_G_config.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 294 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 3
typedef long int wchar_t;
# 321 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 24 "/usr/include/_G_config.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3
# 1 "/usr/include/bits/wchar.h" 1 3
# 51 "/usr/include/wchar.h" 2 3
# 71 "/usr/include/wchar.h" 3
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3
# 1 "/usr/include/gconv.h" 1 3
# 28 "/usr/include/gconv.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3
# 29 "/usr/include/gconv.h" 2 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stddef.h" 1 3
# 32 "/usr/include/gconv.h" 2 3
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
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__)));
# 33 "/usr/include/libio.h" 2 3
# 53 "/usr/include/libio.h" 3
# 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdarg.h" 1 3
# 43 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3
# 162 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 172 "/usr/include/libio.h" 3
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 195 "/usr/include/libio.h" 3
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 263 "/usr/include/libio.h" 3
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 _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 311 "/usr/include/libio.h" 3
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
typedef struct _IO_FILE _IO_FILE;
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_;
# 350 "/usr/include/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);
# 402 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 432 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;
extern int _IO_peekc_locked (_IO_FILE *__fp) ;
extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 462 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;
extern void _IO_free_backup_area (_IO_FILE *) ;
# 75 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 2 3
# 89 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
typedef _G_fpos_t fpos_t;
# 138 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 139 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 2 3
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
extern int remove (__const char *__filename) ;
extern int rename (__const char *__old, __const char *__new) ;
extern FILE *tmpfile (void) ;
# 170 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern char *tmpnam (char *__s) ;
extern char *tmpnam_r (char *__s) ;
# 187 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__malloc__));
extern int fclose (FILE *__stream) ;
extern int fflush (FILE *__stream) ;
extern int fflush_unlocked (FILE *__stream) ;
# 210 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename,
__const char *__restrict __modes) ;
extern FILE *freopen (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream) ;
# 240 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 263 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) ;
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) ;
extern void setlinebuf (FILE *__stream) ;
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...) ;
extern int printf (__const char *__restrict __format, ...) ;
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) ;
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) ;
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
;
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) ;
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 3, 0)));
# 334 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...) ;
extern int scanf (__const char *__restrict __format, ...) ;
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) ;
# 360 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;
extern int getchar (void) ;
extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;
extern int fgetc_unlocked (FILE *__stream) ;
extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;
extern int putchar (int __c) ;
extern int fputc_unlocked (int __c, FILE *__stream) ;
extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;
extern int getw (FILE *__stream) ;
extern int putw (int __w, FILE *__stream) ;
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
;
# 426 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern char *gets (char *__s) ;
# 450 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
;
# 460 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int puts (__const char *__s) ;
extern int ungetc (int __c, FILE *__stream) ;
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s) ;
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern int fseek (FILE *__stream, long int __off, int __whence) ;
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream) ;
# 504 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
;
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 540 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;
extern int feof (FILE *__stream) ;
extern int ferror (FILE *__stream) ;
extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;
extern void perror (__const char *__s) ;
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 571 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern int fileno (FILE *__stream) ;
extern int fileno_unlocked (FILE *__stream) ;
extern FILE *popen (__const char *__command, __const char *__modes) ;
extern int pclose (FILE *__stream) ;
extern char *ctermid (char *__s) ;
# 618 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;
extern int ftrylockfile (FILE *__stream) ;
extern void funlockfile (FILE *__stream) ;
# 639 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 33 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
return _IO_getc (stdin);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getchar_unlocked (void)
{
return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}
extern __inline int
putchar (int __c)
{
return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 111 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
# 640 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2/include/stdio.h" 2 3
# 126 "std.h" 2
void dprintf_file_and_line(FILE *,const char *,int);
# 199 "std.h"
void eprintf_program_name(FILE *,const char *);
const char *gs_program_name(void);
# 228 "std.h"
void lprintf_file_and_line(FILE *,const char *,int);
# 32 "math_.h" 2
# 1 "/usr/include/math.h" 1 3
# 29 "/usr/include/math.h" 3
# 1 "/usr/include/bits/huge_val.h" 1 3
# 34 "/usr/include/math.h" 2 3
# 1 "/usr/include/bits/mathdef.h" 1 3
# 41 "/usr/include/math.h" 2 3
# 65 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 53 "/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 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) ;
# 87 "/usr/include/bits/mathcalls.h" 3
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 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) ;
# 127 "/usr/include/bits/mathcalls.h" 3
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) ;
# 152 "/usr/include/bits/mathcalls.h" 3
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) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__const__));
extern double fabs (double __x) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__const__));
extern double floor (double __x) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__const__));
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 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__));
# 231 "/usr/include/bits/mathcalls.h" 3
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) ;
# 265 "/usr/include/bits/mathcalls.h" 3
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 remainder (double __x, double __y) ; extern double __remainder (double __x, double __y) ;
extern double scalbn (double __x, int __n) ; extern double __scalbn (double __x, int __n) ;
extern int ilogb (double __x) ; extern int __ilogb (double __x) ;
# 66 "/usr/include/math.h" 2 3
# 88 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 53 "/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 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) ;
# 87 "/usr/include/bits/mathcalls.h" 3
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 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) ;
# 127 "/usr/include/bits/mathcalls.h" 3
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) ;
# 152 "/usr/include/bits/mathcalls.h" 3
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) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__const__));
extern float fabsf (float __x) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__const__));
extern float floorf (float __x) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__const__));
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 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__));
# 231 "/usr/include/bits/mathcalls.h" 3
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) ;
# 265 "/usr/include/bits/mathcalls.h" 3
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 remainderf (float __x, float __y) ; extern float __remainderf (float __x, float __y) ;
extern float scalbnf (float __x, int __n) ; extern float __scalbnf (float __x, int __n) ;
extern int ilogbf (float __x) ; extern int __ilogbf (float __x) ;
# 89 "/usr/include/math.h" 2 3
# 109 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 53 "/usr/include/bits/mathcalls.h" 3
extern long double acosl (long double __x) ; extern long double __acosl (long double __x) ;
extern long double asinl (long double __x) ; extern long double __asinl (long double __x) ;
extern long double atanl (long double __x) ; extern long double __atanl (long double __x) ;
extern long double atan2l (long double __y, long double __x) ; extern long double __atan2l (long double __y, long double __x) ;
extern long double cosl (long double __x) ; extern long double __cosl (long double __x) ;
extern long double sinl (long double __x) ; extern long double __sinl (long double __x) ;
extern long double tanl (long double __x) ; extern long double __tanl (long double __x) ;
extern long double coshl (long double __x) ; extern long double __coshl (long double __x) ;
extern long double sinhl (long double __x) ; extern long double __sinhl (long double __x) ;
extern long double tanhl (long double __x) ; extern long double __tanhl (long double __x) ;
# 87 "/usr/include/bits/mathcalls.h" 3
extern long double acoshl (long double __x) ; extern long double __acoshl (long double __x) ;
extern long double asinhl (long double __x) ; extern long double __asinhl (long double __x) ;
extern long double atanhl (long double __x) ; extern long double __atanhl (long double __x) ;
extern long double expl (long double __x) ; extern long double __expl (long double __x) ;
extern long double frexpl (long double __x, int *__exponent) ; extern long double __frexpl (long double __x, int *__exponent) ;
extern long double ldexpl (long double __x, int __exponent) ; extern long double __ldexpl (long double __x, int __exponent) ;
extern long double logl (long double __x) ; extern long double __logl (long double __x) ;
extern long double log10l (long double __x) ; extern long double __log10l (long double __x) ;
extern long double modfl (long double __x, long double *__iptr) ; extern long double __modfl (long double __x, long double *__iptr) ;
# 127 "/usr/include/bits/mathcalls.h" 3
extern long double expm1l (long double __x) ; extern long double __expm1l (long double __x) ;
extern long double log1pl (long double __x) ; extern long double __log1pl (long double __x) ;
extern long double logbl (long double __x) ; extern long double __logbl (long double __x) ;
# 152 "/usr/include/bits/mathcalls.h" 3
extern long double powl (long double __x, long double __y) ; extern long double __powl (long double __x, long double __y) ;
extern long double sqrtl (long double __x) ; extern long double __sqrtl (long double __x) ;
extern long double hypotl (long double __x, long double __y) ; extern long double __hypotl (long double __x, long double __y) ;
extern long double cbrtl (long double __x) ; extern long double __cbrtl (long double __x) ;
extern long double ceill (long double __x) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__const__));
extern long double fabsl (long double __x) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__const__));
extern long double floorl (long double __x) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__const__));
extern long double fmodl (long double __x, long double __y) ; extern long double __fmodl (long double __x, long double __y) ;
extern int __isinfl (long double __value) __attribute__ ((__const__));
extern int __finitel (long double __value) __attribute__ ((__const__));
extern int isinfl (long double __value) __attribute__ ((__const__));
extern int finitel (long double __value) __attribute__ ((__const__));
extern long double dreml (long double __x, long double __y) ; extern long double __dreml (long double __x, long double __y) ;
extern long double significandl (long double __x) ; extern long double __significandl (long double __x) ;
extern long double copysignl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__const__));
# 231 "/usr/include/bits/mathcalls.h" 3
extern int __isnanl (long double __value) __attribute__ ((__const__));
extern int isnanl (long double __value) __attribute__ ((__const__));
extern long double j0l (long double) ; extern long double __j0l (long double) ;
extern long double j1l (long double) ; extern long double __j1l (long double) ;
extern long double jnl (int, long double) ; extern long double __jnl (int, long double) ;
extern long double y0l (long double) ; extern long double __y0l (long double) ;
extern long double y1l (long double) ; extern long double __y1l (long double) ;
extern long double ynl (int, long double) ; extern long double __ynl (int, long double) ;
extern long double erfl (long double) ; extern long double __erfl (long double) ;
extern long double erfcl (long double) ; extern long double __erfcl (long double) ;
extern long double lgammal (long double) ; extern long double __lgammal (long double) ;
# 265 "/usr/include/bits/mathcalls.h" 3
extern long double gammal (long double) ; extern long double __gammal (long double) ;
extern long double lgammal_r (long double, int *__signgamp) ; extern long double __lgammal_r (long double, int *__signgamp) ;
extern long double rintl (long double __x) ; extern long double __rintl (long double __x) ;
extern long double nextafterl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__const__));
extern long double remainderl (long double __x, long double __y) ; extern long double __remainderl (long double __x, long double __y) ;
extern long double scalbnl (long double __x, int __n) ; extern long double __scalbnl (long double __x, int __n) ;
extern int ilogbl (long double __x) ; extern int __ilogbl (long double __x) ;
# 110 "/usr/include/math.h" 2 3
# 125 "/usr/include/math.h" 3
extern int signgam;
# 252 "/usr/include/math.h" 3
typedef enum
{
_IEEE_ = -1,
_SVID_,
_XOPEN_,
_POSIX_,
_ISOC_
} _LIB_VERSION_TYPE;
extern _LIB_VERSION_TYPE _LIB_VERSION;
# 277 "/usr/include/math.h" 3
struct exception
{
int type;
char *name;
double arg1;
double arg2;
double retval;
};
extern int matherr (struct exception *__exc);
# 362 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathinline.h" 1 3
# 291 "/usr/include/bits/mathinline.h" 3
extern __inline double __sgn (double) ; extern __inline double __sgn (double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline float __sgnf (float) ; extern __inline float __sgnf (float __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline long double __sgnl (long double) ; extern __inline long double __sgnl (long double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); }
# 425 "/usr/include/bits/mathinline.h" 3
extern __inline double atan2 (double __y, double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline float atan2f (float __y, float __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline long double atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }
extern __inline long double __atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }
extern __inline double fmod (double __x, double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline float fmodf (float __x, float __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline long double fmodl (long double __x, long double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; }
# 440 "/usr/include/bits/mathinline.h" 3
extern __inline double sqrt (double __x) { register double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline float sqrtf (float __x) { register float __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline long double sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }
extern __inline long double __sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }
extern __inline double fabs (double __x) { return __builtin_fabs (__x); }
extern __inline float fabsf (float __x) { return __builtin_fabsf (__x); }
extern __inline long double fabsl (long double __x) { return __builtin_fabsl (__x); }
extern __inline long double __fabsl (long double __x) { return __builtin_fabsl (__x); }
# 466 "/usr/include/bits/mathinline.h" 3
extern __inline double atan (double __x) { register double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline float atanf (float __x) { register float __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline long double atanl (long double __x) { register long double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; }
extern __inline long double __sgn1l (long double) ; extern __inline long double __sgn1l (long double __x) { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; }
# 492 "/usr/include/bits/mathinline.h" 3
extern __inline double floor (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float floorf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double floorl (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw
%0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 503 "/usr/include/bits/mathinline.h" 3
extern __inline double ceil (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float ceilf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double ceill (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0
" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 521 "/usr/include/bits/mathinline.h" 3
extern __inline double
ldexp (double __x, int __y)
{
register long double __value; __asm __volatile__ ("fscale" : "=t" (__value) : "0" (__x), "u" ((long double) __y)); return __value;
}
# 539 "/usr/include/bits/mathinline.h" 3
extern __inline double log1p (double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline float log1pf (float __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline long double log1pl (long double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; }
# 553 "/usr/include/bits/mathinline.h" 3
extern __inline double asinh (double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline float asinhf (float __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline long double asinhl (long double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); }
extern __inline double acosh (double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline float acoshf (float __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline long double acoshl (long double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); }
extern __inline double atanh (double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline float atanhf (float __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline long double atanhl (long double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); }
extern __inline double hypot (double __x, double __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline float hypotf (float __x, float __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline long double hypotl (long double __x, long double __y) { return __sqrtl (__x * __x + __y * __y); }
extern __inline double logb (double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline float logbf (float __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline long double logbl (long double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; }
# 652 "/usr/include/bits/mathinline.h" 3
extern __inline double drem (double __x, double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline float dremf (float __x, float __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline long double dreml (long double __x, long double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; }
# 665 "/usr/include/bits/mathinline.h" 3
extern __inline int
__finite (double __x)
{
return (__extension__
(((((union { double __d; int __i[2]; }) {__d: __x}).__i[1]
| 0x800fffffu) + 1) >> 31));
}
# 363 "/usr/include/math.h" 2 3
# 423 "/usr/include/math.h" 3
# 38 "math_.h" 2
# 27 "gsmatrix.c" 2
# 1 "gx.h" 1
# 30 "gx.h"
# 1 "stdio_.h" 1
# 48 "stdio_.h"
int unlink(const char *);
# 31 "gx.h" 2
# 1 "gserror.h" 1
# 32 "gx.h" 2
# 1 "gsio.h" 1
# 31 "gsio.h"
extern FILE *gs_stdin, *gs_stdout, *gs_stderr;
# 33 "gx.h" 2
# 1 "gstypes.h" 1
# 36 "gstypes.h"
typedef ulong gs_id;
# 45 "gstypes.h"
typedef struct gs_string_s {
byte *data;
uint size;
} gs_string;
typedef struct gs_const_string_s {
const byte *data;
uint size;
} gs_const_string;
typedef struct gs_point_s {
double x, y;
} gs_point;
typedef struct gs_int_point_s {
int x, y;
} gs_int_point;
typedef struct gs_log2_scale_point_s {
int x, y;
} gs_log2_scale_point;
typedef struct gs_rect_s {
gs_point p, q;
} gs_rect;
typedef struct gs_int_rect_s {
gs_int_point p, q;
} gs_int_rect;
# 34 "gx.h" 2
# 1 "gsmemory.h" 1
# 43 "gsmemory.h"
# 1 "gsmemraw.h" 1
# 46 "gsmemraw.h"
typedef struct gs_memory_status_s {
ulong allocated;
ulong used;
} gs_memory_status_t;
typedef struct gs_raw_memory_s gs_raw_memory_t;
# 168 "gsmemraw.h"
typedef struct gs_raw_memory_procs_s {
byte *(*alloc_bytes_immovable)(gs_raw_memory_t *mem,uint nbytes,client_name_t cname); void *(*resize_object)(gs_raw_memory_t *mem,void *obj,uint new_num_elements,client_name_t cname); void (*free_object)(gs_raw_memory_t *mem,void *data,client_name_t cname); void (*status)(gs_raw_memory_t *mem,gs_memory_status_t *status); void (*free_all)(gs_raw_memory_t *mem,uint free_mask,client_name_t cname); void (*consolidate_free)(gs_raw_memory_t *mem);
} gs_raw_memory_procs_t;
struct gs_raw_memory_s {
gs_raw_memory_procs_t procs;
};
# 44 "gsmemory.h" 2
typedef struct gs_memory_struct_type_s gs_memory_struct_type_t;
typedef const gs_memory_struct_type_t *gs_memory_type_ptr_t;
typedef struct gs_memory_s gs_memory_t;
typedef struct gs_ptr_procs_s gs_ptr_procs_t;
typedef const gs_ptr_procs_t *gs_ptr_type_t;
typedef struct gs_gc_root_s gs_gc_root_t;
typedef client_name_t struct_name_t;
uint gs_struct_type_size(gs_memory_type_ptr_t);
struct_name_t gs_struct_type_name(gs_memory_type_ptr_t);
typedef struct gs_memory_procs_s {
byte *(*alloc_bytes_immovable)(gs_memory_t *mem,uint nbytes,client_name_t cname); void *(*resize_object)(gs_memory_t *mem,void *obj,uint new_num_elements,client_name_t cname); void (*free_object)(gs_memory_t *mem,void *data,client_name_t cname); void (*status)(gs_memory_t *mem,gs_memory_status_t *status); void (*free_all)(gs_memory_t *mem,uint free_mask,client_name_t cname); void (*consolidate_free)(gs_memory_t *mem);
# 102 "gsmemory.h"
byte *(*alloc_bytes)(gs_memory_t *mem,uint nbytes,client_name_t cname);
# 113 "gsmemory.h"
void *(*alloc_struct)(gs_memory_t *mem,gs_memory_type_ptr_t pstype,client_name_t cname);
void *(*alloc_struct_immovable)(gs_memory_t *mem,gs_memory_type_ptr_t pstype,client_name_t cname);
# 127 "gsmemory.h"
byte *(*alloc_byte_array)(gs_memory_t *mem,uint num_elements,uint elt_size,client_name_t cname);
byte *(*alloc_byte_array_immovable)(gs_memory_t *mem,uint num_elements,uint elt_size,client_name_t cname);
# 141 "gsmemory.h"
void *(*alloc_struct_array)(gs_memory_t *mem,uint num_elements,gs_memory_type_ptr_t pstype,client_name_t cname);
void *(*alloc_struct_array_immovable)(gs_memory_t *mem,uint num_elements,gs_memory_type_ptr_t pstype,client_name_t cname);
# 154 "gsmemory.h"
uint (*object_size)(gs_memory_t *mem,const void *obj);
# 166 "gsmemory.h"
gs_memory_type_ptr_t (*object_type)(gs_memory_t *mem,const void *obj);
# 176 "gsmemory.h"
byte *(*alloc_string)(gs_memory_t *mem,uint nbytes,client_name_t cname);
byte *(*alloc_string_immovable)(gs_memory_t *mem,uint nbytes,client_name_t cname);
# 190 "gsmemory.h"
byte *(*resize_string)(gs_memory_t *mem,byte *data,uint old_num,uint new_num,client_name_t cname);
# 201 "gsmemory.h"
void (*free_string)(gs_memory_t *mem,byte *data,uint nbytes,client_name_t cname);
# 215 "gsmemory.h"
int (*register_root)(gs_memory_t *mem,gs_gc_root_t *root,gs_ptr_type_t ptype,void **pp,client_name_t cname);
# 226 "gsmemory.h"
void (*unregister_root)(gs_memory_t *mem,gs_gc_root_t *root,client_name_t cname);
# 241 "gsmemory.h"
void (*enable_free)(gs_memory_t *mem,bool enable);
} gs_memory_procs_t;
int gs_register_struct_root(gs_memory_t *mem,gs_gc_root_t *root,void **pp,client_name_t cname);
void gs_ignore_free_object(gs_memory_t *mem,void *data,client_name_t cname);
void gs_ignore_free_string(gs_memory_t *mem,byte *data,uint nbytes,client_name_t cname);
void gs_ignore_consolidate_free(gs_memory_t *mem);
void *gs_raw_alloc_struct_immovable(gs_raw_memory_t * rmem,gs_memory_type_ptr_t pstype,client_name_t cname);
# 272 "gsmemory.h"
struct gs_memory_s {
gs_memory_procs_t procs;
};
# 35 "gx.h" 2
# 1 "gdebug.h" 1
# 61 "gdebug.h"
extern char gs_debug[128];
bool gs_debug_c(int);
# 71 "gdebug.h"
extern FILE *gs_debug_out;
# 125 "gdebug.h"
void debug_dump_bytes(const byte * from,const byte * to,const char *msg);
void debug_dump_bitmap(const byte * from,uint raster,uint height,const char *msg);
void debug_print_string(const byte * str,uint len);
# 36 "gx.h" 2
typedef struct gs_imager_state_s gs_imager_state;
typedef struct gs_state_s gs_state;
# 28 "gsmatrix.c" 2
# 1 "gserrors.h" 1
# 29 "gsmatrix.c" 2
# 1 "gxfarith.h" 1
# 30 "gxfarith.h"
# 1 "obj/gconfigv.h" 1
# 31 "gxfarith.h" 2
# 1 "gxarith.h" 1
# 35 "gxarith.h"
int imod(int m,int n);
int igcd(int x,int y);
# 32 "gxfarith.h" 2
# 135 "gxfarith.h"
double gs_sin_degrees(double angle);
double gs_cos_degrees(double angle);
typedef struct gs_sincos_s {
double sin, cos;
bool orthogonal;
} gs_sincos_t;
void gs_sincos_degrees(double angle,gs_sincos_t * psincos);
# 30 "gsmatrix.c" 2
# 1 "gxfixed.h" 1
# 35 "gxfixed.h"
typedef long fixed;
typedef ulong ufixed;
# 238 "gxfixed.h"
typedef struct gs_fixed_point_s {
fixed x, y;
} gs_fixed_point;
typedef struct gs_fixed_rect_s {
gs_fixed_point p, q;
} gs_fixed_rect;
# 31 "gsmatrix.c" 2
# 1 "gxmatrix.h" 1
# 30 "gxmatrix.h"
# 1 "gsmatrix.h" 1
# 36 "gsmatrix.h"
struct gs_matrix_s {
float xx, xy, yx, yy, tx, ty;
};
typedef struct gs_matrix_s gs_matrix;
# 60 "gsmatrix.h"
void gs_make_identity(gs_matrix *);
int gs_make_translation(floatp,floatp,gs_matrix *), gs_make_scaling(floatp,floatp,gs_matrix *),
gs_make_rotation(floatp,gs_matrix *);
int gs_matrix_multiply(const gs_matrix *,const gs_matrix *,gs_matrix *),
gs_matrix_invert(const gs_matrix *,gs_matrix *), gs_matrix_translate(const gs_matrix *,floatp,floatp,gs_matrix *),
gs_matrix_scale(const gs_matrix *,floatp,floatp,gs_matrix *),
gs_matrix_rotate(const gs_matrix *,floatp,gs_matrix *);
int gs_point_transform(floatp,floatp,const gs_matrix *,gs_point *),
gs_point_transform_inverse(floatp,floatp,const gs_matrix *,gs_point *),
gs_distance_transform(floatp,floatp,const gs_matrix *,gs_point *),
gs_distance_transform_inverse(floatp,floatp,const gs_matrix *,gs_point *),
gs_points_bbox(const gs_point[4],gs_rect *), gs_bbox_transform_only(const gs_rect *,const gs_matrix *,gs_point[4]),
gs_bbox_transform(const gs_rect *,const gs_matrix *,gs_rect *),
gs_bbox_transform_inverse(const gs_rect *,const gs_matrix *,gs_rect *);
# 31 "gxmatrix.h" 2
# 39 "gxmatrix.h"
typedef struct gs_matrix_fixed_s {
float xx, xy, yx, yy, tx, ty;
fixed tx_fixed, ty_fixed;
bool txy_fixed_valid;
} gs_matrix_fixed;
int gs_point_transform2fixed(const gs_matrix_fixed *,floatp,floatp,gs_fixed_point *);
int gs_distance_transform2fixed(const gs_matrix_fixed *,floatp,floatp,gs_fixed_point *);
# 57 "gxmatrix.h"
typedef struct {
long l;
fixed f;
} coeff1;
typedef struct {
coeff1 xx, xy, yx, yy;
int skewed;
int shift;
int max_bits;
fixed round;
} fixed_coeff;
# 32 "gsmatrix.c" 2
static const gs_matrix gs_identity_matrix =
{(float)(1), (float)(0), (float)(0), (float)(1), (float)(0), (float)(0)};
void
gs_make_identity(gs_matrix * pmat)
{
*pmat = gs_identity_matrix;
}
int
gs_make_translation(floatp dx, floatp dy, gs_matrix * pmat)
{
*pmat = gs_identity_matrix;
pmat->tx = dx;
pmat->ty = dy;
return 0;
}
int
gs_make_scaling(floatp sx, floatp sy, gs_matrix * pmat)
{
*pmat = gs_identity_matrix;
pmat->xx = sx;
pmat->yy = sy;
return 0;
}
int
gs_make_rotation(floatp ang, gs_matrix * pmat)
{
gs_sincos_t sincos;
gs_sincos_degrees(ang, &sincos);
pmat->yy = pmat->xx = sincos.cos;
pmat->xy = sincos.sin;
pmat->yx = -sincos.sin;
pmat->tx = pmat->ty = 0.0;
return 0;
}
int
gs_matrix_multiply(const gs_matrix * pm1, const gs_matrix * pm2, gs_matrix * pmr)
{
double xx1 = pm1->xx, yy1 = pm1->yy;
double tx1 = pm1->tx, ty1 = pm1->ty;
double xx2 = pm2->xx, yy2 = pm2->yy;
double xy2 = pm2->xy, yx2 = pm2->yx;
if ((((pm1)->xy) == 0.0 && ((pm1)->yx) == 0.0)) {
pmr->tx = tx1 * xx2 + pm2->tx;
pmr->ty = ty1 * yy2 + pm2->ty;
if (((xy2) == 0.0))
pmr->xy = 0;
else
pmr->xy = xx1 * xy2,
pmr->ty += tx1 * xy2;
pmr->xx = xx1 * xx2;
if (((yx2) == 0.0))
pmr->yx = 0;
else
pmr->yx = yy1 * yx2,
pmr->tx += ty1 * yx2;
pmr->yy = yy1 * yy2;
} else {
double xy1 = pm1->xy, yx1 = pm1->yx;
pmr->xx = xx1 * xx2 + xy1 * yx2;
pmr->xy = xx1 * xy2 + xy1 * yy2;
pmr->yy = yx1 * xy2 + yy1 * yy2;
pmr->yx = yx1 * xx2 + yy1 * yx2;
pmr->tx = tx1 * xx2 + ty1 * yx2 + pm2->tx;
pmr->ty = tx1 * xy2 + ty1 * yy2 + pm2->ty;
}
return 0;
}
int
gs_matrix_invert(const gs_matrix * pm, gs_matrix * pmr)
{
if ((((pm)->xy) == 0.0 && ((pm)->yx) == 0.0)) {
if (((pm->xx) == 0.0) || ((pm->yy) == 0.0))
return ((-23));
pmr->tx = -(pmr->xx = 1.0 / pm->xx) * pm->tx;
pmr->xy = 0.0;
pmr->yx = 0.0;
pmr->ty = -(pmr->yy = 1.0 / pm->yy) * pm->ty;
} else {
double det = pm->xx * pm->yy - pm->xy * pm->yx;
double mxx = pm->xx, mtx = pm->tx;
if (det == 0)
return ((-23));
pmr->xx = pm->yy / det;
pmr->xy = -pm->xy / det;
pmr->yx = -pm->yx / det;
pmr->yy = mxx / det;
pmr->tx = -(mtx * pmr->xx + pm->ty * pmr->yx);
pmr->ty = -(mtx * pmr->xy + pm->ty * pmr->yy);
}
return 0;
}
int
gs_matrix_translate(const gs_matrix * pm, floatp dx, floatp dy, gs_matrix * pmr)
{
gs_point trans;
int code = gs_distance_transform(dx, dy, pm, &trans);
if (code < 0)
return code;
if (pmr != pm)
*pmr = *pm;
pmr->tx += trans.x;
pmr->ty += trans.y;
return 0;
}
int
gs_matrix_scale(const gs_matrix * pm, floatp sx, floatp sy, gs_matrix * pmr)
{
pmr->xx = pm->xx * sx;
pmr->xy = pm->xy * sx;
pmr->yx = pm->yx * sy;
pmr->yy = pm->yy * sy;
if (pmr != pm) {
pmr->tx = pm->tx;
pmr->ty = pm->ty;
}
return 0;
}
int
gs_matrix_rotate(const gs_matrix * pm, floatp ang, gs_matrix * pmr)
{
double mxx, mxy;
gs_sincos_t sincos;
gs_sincos_degrees(ang, &sincos);
mxx = pm->xx, mxy = pm->xy;
pmr->xx = sincos.cos * mxx + sincos.sin * pm->yx;
pmr->xy = sincos.cos * mxy + sincos.sin * pm->yy;
pmr->yx = sincos.cos * pm->yx - sincos.sin * mxx;
pmr->yy = sincos.cos * pm->yy - sincos.sin * mxy;
if (pmr != pm) {
pmr->tx = pm->tx;
pmr->ty = pm->ty;
}
return 0;
}
int
gs_point_transform(floatp x, floatp y, const gs_matrix * pmat,
gs_point * ppt)
{
ppt->x = x * pmat->xx + pmat->tx;
ppt->y = y * pmat->yy + pmat->ty;
if (!((pmat->yx) == 0.0))
ppt->x += y * pmat->yx;
if (!((pmat->xy) == 0.0))
ppt->y += x * pmat->xy;
return 0;
}
int
gs_point_transform_inverse(floatp x, floatp y, const gs_matrix * pmat,
gs_point * ppt)
{
if ((((pmat)->xy) == 0.0 && ((pmat)->yx) == 0.0)) {
if (((pmat->xx) == 0.0) || ((pmat->yy) == 0.0))
return ((-23));
ppt->x = (x - pmat->tx) / pmat->xx;
ppt->y = (y - pmat->ty) / pmat->yy;
return 0;
} else if ((((pmat)->xx) == 0.0 && ((pmat)->yy) == 0.0)) {
if (((pmat->xy) == 0.0) || ((pmat->yx) == 0.0))
return ((-23));
ppt->x = (y - pmat->ty) / pmat->xy;
ppt->y = (x - pmat->tx) / pmat->yx;
return 0;
} else {
gs_matrix imat;
int code = gs_matrix_invert(pmat, &imat);
if (code < 0)
return code;
return gs_point_transform(x, y, &imat, ppt);
}
}
int
gs_distance_transform(floatp dx, floatp dy, const gs_matrix * pmat,
gs_point * pdpt)
{
pdpt->x = dx * pmat->xx;
pdpt->y = dy * pmat->yy;
if (!((pmat->yx) == 0.0))
pdpt->x += dy * pmat->yx;
if (!((pmat->xy) == 0.0))
pdpt->y += dx * pmat->xy;
return 0;
}
int
gs_distance_transform_inverse(floatp dx, floatp dy,
const gs_matrix * pmat, gs_point * pdpt)
{
if ((((pmat)->xy) == 0.0 && ((pmat)->yx) == 0.0)) {
if (((pmat->xx) == 0.0) || ((pmat->yy) == 0.0))
return ((-23));
pdpt->x = dx / pmat->xx;
pdpt->y = dy / pmat->yy;
} else if ((((pmat)->xx) == 0.0 && ((pmat)->yy) == 0.0)) {
if (((pmat->xy) == 0.0) || ((pmat->yx) == 0.0))
return ((-23));
pdpt->x = dy / pmat->xy;
pdpt->y = dx / pmat->yx;
} else {
double det = pmat->xx * pmat->yy - pmat->xy * pmat->yx;
if (det == 0)
return ((-23));
pdpt->x = (dx * pmat->yy - dy * pmat->yx) / det;
pdpt->y = (dy * pmat->xx - dx * pmat->xy) / det;
}
return 0;
}
int
gs_points_bbox(const gs_point pts[4], gs_rect * pbox)
{
# 303 "gsmatrix.c"
{ double min01, max01, min23, max23; if ( pts[0].x < pts[1].x ) min01 = pts[0].x, max01 = pts[1].x; else min01 = pts[1].x, max01 = pts[0].x; if ( pts[2].x < pts[3].x ) min23 = pts[2].x, max23 = pts[3].x; else min23 = pts[3].x, max23 = pts[2].x; pbox-
>Fix:
Remove the "-msse2 -mfpmath=sse" options from the compile command:
gcc `cat ./obj/cc.tr` -DDISPLAYGHOSTSCRIPT -DVERSION=\"0.5.10\" -DGS_VERSION=\"5.50\" -O2 -Wall -Wcast-align -Wstrict-prototypes -Wwrite-strings -fno-common -O3 -pipe -march=pentium4 -mmmx -fexpensive-optimizations -fschedule-insns2 -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -DHAVE_TCPD_H -DHAVE_SYSLOG_H -I. -I./obj -o ./obj/gsmatrix.o -c ./gsmatrix.c
>Release-Note:
>Audit-Trail:
>Unformatted:
>p.x = (((min01) < (min23)) ? (min01) : (min23)); pbox->q.x = (((max01) > (max23)) ? (max01) : (max23)); };
{ double min01, max01, min23, max23; if ( pts[0].y < pts[1].y ) min01 = pts[0].y, max01 = pts[1].y; else min01 = pts[1].y, max01 = pts[0].y; if ( pts[2].y < pts[3].y ) min23 = pts[2].y, max23 = pts[3].y; else min23 = pts[3].y, max23 = pts[2].y; pbox- >p.y = (((min01) < (min23)) ? (min01) : (min23)); pbox->q.y = (((max01) > (max23)) ? (max01) : (max23)); };
return 0;
}
static int
bbox_transform_either_only(const gs_rect * pbox_in, const gs_matrix * pmat,
gs_point pts[4],
int (*point_xform) (floatp,floatp,const gs_matrix *,gs_point *))
{
int code;
if ((code = (*point_xform) (pbox_in->p.x, pbox_in->p.y, pmat, &pts[0])) < 0 ||
(code = (*point_xform) (pbox_in->p.x, pbox_in->q.y, pmat, &pts[1])) < 0 ||
(code = (*point_xform) (pbox_in->q.x, pbox_in->p.y, pmat, &pts[2])) < 0 ||
(code = (*point_xform) (pbox_in->q.x, pbox_in->q.y, pmat, &pts[3])) < 0
)
do { } while (0);
return code;
}
static int
bbox_transform_either(const gs_rect * pbox_in, const gs_matrix * pmat,
gs_rect * pbox_out,
int (*point_xform) (floatp,floatp,const gs_matrix *,gs_point *))
{
int code;
# 344 "gsmatrix.c"
gs_point pts[4];
if ((code = bbox_transform_either_only(pbox_in, pmat, pts, point_xform)) < 0)
return code;
return gs_points_bbox(pts, pbox_out);
}
int
gs_bbox_transform(const gs_rect * pbox_in, const gs_matrix * pmat,
gs_rect * pbox_out)
{
return bbox_transform_either(pbox_in, pmat, pbox_out,
gs_point_transform);
}
int
gs_bbox_transform_only(const gs_rect * pbox_in, const gs_matrix * pmat,
gs_point points[4])
{
return bbox_transform_either_only(pbox_in, pmat, points,
gs_point_transform);
}
int
gs_bbox_transform_inverse(const gs_rect * pbox_in, const gs_matrix * pmat,
gs_rect * pbox_out)
{
return bbox_transform_either(pbox_in, pmat, pbox_out,
gs_point_transform_inverse);
}
int
gs_point_transform2fixed(const gs_matrix_fixed * pmat,
floatp x, floatp y, gs_fixed_point * ppt)
{
fixed px, py, t;
double dtemp;
int code;
if (!pmat->txy_fixed_valid) {
gs_point fpt;
gs_point_transform(x, y, (const gs_matrix *)pmat, &fpt);
if (!(((fpt.x) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (fpt.x) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) && ((fpt.y) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (fpt.y) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)))))
return ((-13));
ppt->x = ((fixed)((fpt.x)*(float)(1<<12)));
ppt->y = ((fixed)((fpt.y)*(float)(1<<12)));
return 0;
}
if (!((pmat->xy) == 0.0)) {
if ((code = (dtemp = (y) * (pmat->yx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (px = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0 ||
(code = (dtemp = (x) * (pmat->xy), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (py = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0
)
return code;
if (!((pmat->xx) == 0.0)) {
if ((code = (dtemp = (x) * (pmat->xx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (t = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0)
return code;
px += t;
}
if (!((pmat->yy) == 0.0)) {
if ((code = (dtemp = (y) * (pmat->yy), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (t = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0)
return code;
py += t;
}
} else {
if ((code = (dtemp = (x) * (pmat->xx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (px = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0 ||
(code = (dtemp = (y) * (pmat->yy), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (py = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0
)
return code;
if (!((pmat->yx) == 0.0)) {
if ((code = (dtemp = (y) * (pmat->yx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (t = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0)
return code;
px += t;
}
}
ppt->x = px + pmat->tx_fixed;
ppt->y = py + pmat->ty_fixed;
return 0;
}
int
gs_distance_transform2fixed(const gs_matrix_fixed * pmat,
floatp dx, floatp dy, gs_fixed_point * ppt)
{
fixed px, py, t;
double dtemp;
int code;
if ((code = (dtemp = (dx) * (pmat->xx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (px = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0 ||
(code = (dtemp = (dy) * (pmat->yy), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (py = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0
)
return code;
if (!((pmat->yx) == 0.0)) {
if ((code = (dtemp = (dy) * (pmat->yx), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (t = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0)
return code;
px += t;
}
if (!((pmat->xy) == 0.0)) {
if ((code = (dtemp = (dx) * (pmat->xy), (((dtemp) >= -2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2)) && (dtemp) < 2.0 * (1L << (((sizeof(fixed) * 8 - 12)) - 2))) ? (t = ((fixed)((dtemp)*(float)(1<<12))), 0) : ((-13))))) < 0)
return code;
py += t;
}
ppt->x = px;
ppt->y = py;
return 0;
}
--- cut here ---
More information about the Gcc-bugs
mailing list