This is the mail archive of the
java-discuss@sourceware.cygnus.com
mailing list for the Java project.
Error building libgcj on HP 10.20
- To: java-discuss at sourceware dot cygnus dot com
- Subject: Error building libgcj on HP 10.20
- From: "'David Scott Urban" <urban at ast dot lmco dot com>
- Date: Fri, 07 Jan 2000 11:20:32 -0700 (MST)
I am trying to build libgcj on aq HP running HPUX 10.20.
Uname -a - HP-UX spica B.10.20 A 9000/735 unknown
gcc -v - Reading specs from
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/specs
gcc version 2.95.2 19991024 (release)
cpp -v - Reading specs from
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/specs
gcc version 2.95.2 19991024 (release)
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/cpp -lang-c -v
-iprefix
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/hppa1.1-hp-hpux10
.20/2.95.2/ -Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -DPWB -Dhpux -Dunix
-D__hppa__ -D__hp9000s800__ -D__hp9000s800 -D__hp9k8__ -D__PWB__ -D__hpux__
-D__unix__ -D__hppa -D__hp9000s800 -D__hp9k8 -D__PWB -D__hpux -D__unix
-Asystem(unix) -Asystem(hpux) -Acpu(hppa) -Amachine(hppa) -D__hp9000s700
-D_PA_RISC1_1 -D_HPUX_SOURCE -D_HIUX_SOURCE -D__STDC_EXT__ -
GNU CPP version 2.95.2 19991024 (release) (hppa)
#include "..." search starts here:
#include <...> search starts here:
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/../../../../hppa1
.1-hp-hpux10.20/include
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/../../../../inclu
de/g++-3
/usr/local/include
End of omitted list.
During the build, I received the following error:
c++ -DHAVE_CONFIG_H -I. -I../../../libgcj/libjava -I./include
-I../../../libgcj/libjava -Iinclude -I../../../libgcj/libjava/include
-I../../../libgcj/libjava/../boehm-gc -I./../boehm-gc -DSILENT=1 -DNO_SIGNALS=1
-DNO_DEBUGGING=1 -DJAVA_FINALIZATION=1
-I../../../libgcj/libjava/../compat-include -I../../../libgcj/libjava/../zlib
-I../../../libgcj/libjava/../libffi/include -I../libffi/include -fno-rtti
-fvtable-thunks -fsjlj-exceptions -W -Wall -g -O2 -Wp,-MD,.deps/interpret.pp -c
-fPIC -DPIC ../../../libgcj/libjava/interpret.cc -o .libs/interpret.lo
In file included from ../../../libgcj/libjava/include/jvm.h:14,
from ../../../libgcj/libjava/interpret.cc:17:
../../../libgcj/libjava/gcj/javaprims.h:260: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/gcj/javaprims.h:262: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/gcj/javaprims.h:264: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/gcj/javaprims.h:269: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/gcj/javaprims.h:275: warning: `__malloc__' attribute
directive ignored
In file included from ../../../libgcj/libjava/interpret.cc:17:
../../../libgcj/libjava/include/jvm.h:64: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:66: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:68: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:105: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:149: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:151: warning: `__malloc__' attribute
directive ignored
../../../libgcj/libjava/include/jvm.h:166: warning: `__malloc__' attribute
directive ignored
In file included from ../../../libgcj/libjava/java/lang/mprec.h:36,
from ../../../libgcj/libjava/java/lang/fdlibm.h:25,
from ../../../libgcj/libjava/interpret.cc:20:
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:
In function `double pow(double, int)':
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:74
: declaration of C function `double pow(double, int)' conflicts with
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:71
: previous declaration `double pow(double, double)' here
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:
In function `double pow(double, int)':
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:75
: warning: `double' used for argument 2 of `pow(double, int)'
In file included from ../../../libgcj/libjava/interpret.cc:20:
../../../libgcj/libjava/java/lang/fdlibm.h: At top level:
../../../libgcj/libjava/java/lang/fdlibm.h:73: declaration of C function `double
pow(double, double)' conflicts with
/home/urban/local/hp10/lib/gcc-lib/hppa1.1-hp-hpux10.20/2.95.2/include/math.h:74
: previous declaration `double pow(double, int)' here
gmake[2]: *** [interpret.lo] Error 1
Any help would be reatly appreciated.
Scott Urban
D. S. Urban
email : urban@ast.lmco.com
-------------------------------------------------------------------------------
To be the person, you must know the person. To know the person, you must
understand the person. To understand the person, you must listen. To listen,
you must open your mind and put aside all preconceived ideas and notions.
-------------------------------------------------------------------------------
All opinions expressed are my own not that of my employer
PS: Attached are the two header files creating the problems
/* @(#)fdlibm.h 5.1 93/09/24 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <config.h>
#include <stdlib.h>
/* CYGNUS LOCAL: Include files. */
#include "ieeefp.h"
#include "mprec.h"
/* CYGNUS LOCAL: Default to XOPEN_MODE. */
#define _XOPEN_MODE
#ifdef __STDC__
#define __P(p) p
#else
#define __P(p) ()
#endif
#ifndef HUGE
#define HUGE ((float)3.40282346638528860e+38)
#endif
/*
* set X_TLOSS = pi*2**52, which is possibly defined in <values.h>
* (one may replace the following line by "#include <values.h>")
*/
#define X_TLOSS 1.41484755040568800000e+16
/* These typedefs are true for the targets running Java. */
#define _IEEE_LIBM
/*
* ANSI/POSIX
*/
extern double acos __P((double));
extern double asin __P((double));
extern double atan __P((double));
extern double atan2 __P((double, double));
extern double cos __P((double));
extern double sin __P((double));
extern double tan __P((double));
extern double cosh __P((double));
extern double sinh __P((double));
extern double tanh __P((double));
extern double exp __P((double));
extern double frexp __P((double, int *));
extern double ldexp __P((double, int));
extern double log __P((double));
extern double log10 __P((double));
extern double modf __P((double, double *));
extern double pow __P((double, double));
extern double sqrt __P((double));
extern double ceil __P((double));
extern double fabs __P((double));
extern double floor __P((double));
extern double fmod __P((double, double));
extern double erf __P((double));
extern double erfc __P((double));
extern double gamma __P((double));
extern double hypot __P((double, double));
extern int isnan __P((double));
extern int finite __P((double));
extern double j0 __P((double));
extern double j1 __P((double));
extern double jn __P((int, double));
extern double lgamma __P((double));
extern double y0 __P((double));
extern double y1 __P((double));
extern double yn __P((int, double));
extern double acosh __P((double));
extern double asinh __P((double));
extern double atanh __P((double));
extern double cbrt __P((double));
extern double logb __P((double));
extern double nextafter __P((double, double));
extern double remainder __P((double, double));
/* Functions that are not documented, and are not in <math.h>. */
extern double logb __P((double));
#ifdef _SCALB_INT
extern double scalb __P((double, int));
#else
extern double scalb __P((double, double));
#endif
extern double significand __P((double));
/* ieee style elementary functions */
extern double __ieee754_sqrt __P((double));
extern double __ieee754_acos __P((double));
extern double __ieee754_acosh __P((double));
extern double __ieee754_log __P((double));
extern double __ieee754_atanh __P((double));
extern double __ieee754_asin __P((double));
extern double __ieee754_atan2 __P((double,double));
extern double __ieee754_exp __P((double));
extern double __ieee754_cosh __P((double));
extern double __ieee754_fmod __P((double,double));
extern double __ieee754_pow __P((double,double));
extern double __ieee754_lgamma_r __P((double,int *));
extern double __ieee754_gamma_r __P((double,int *));
extern double __ieee754_log10 __P((double));
extern double __ieee754_sinh __P((double));
extern double __ieee754_hypot __P((double,double));
extern double __ieee754_j0 __P((double));
extern double __ieee754_j1 __P((double));
extern double __ieee754_y0 __P((double));
extern double __ieee754_y1 __P((double));
extern double __ieee754_jn __P((int,double));
extern double __ieee754_yn __P((int,double));
extern double __ieee754_remainder __P((double,double));
extern int32_t __ieee754_rem_pio2 __P((double,double*));
#ifdef _SCALB_INT
extern double __ieee754_scalb __P((double,int));
#else
extern double __ieee754_scalb __P((double,double));
#endif
/* fdlibm kernel function */
extern double __kernel_standard __P((double,double,int));
extern double __kernel_sin __P((double,double,int));
extern double __kernel_cos __P((double,double));
extern double __kernel_tan __P((double,double,int));
extern int __kernel_rem_pio2 __P((double*,double*,int,int,int,const int32_t*));
/* Undocumented float functions. */
extern float logbf __P((float));
#ifdef _SCALB_INT
extern float scalbf __P((float, int));
#else
extern float scalbf __P((float, float));
#endif
extern float significandf __P((float));
/*
* Functions callable from C, intended to support IEEE arithmetic.
*/
extern double copysign __P((double, double));
extern int ilogb __P((double));
extern double rint __P((double));
extern float rintf __P((float));
extern double scalbn __P((double, int));
/* ieee style elementary float functions */
extern float __ieee754_sqrtf __P((float));
extern float __ieee754_acosf __P((float));
extern float __ieee754_acoshf __P((float));
extern float __ieee754_logf __P((float));
extern float __ieee754_atanhf __P((float));
extern float __ieee754_asinf __P((float));
extern float __ieee754_atan2f __P((float,float));
extern float __ieee754_expf __P((float));
extern float __ieee754_coshf __P((float));
extern float __ieee754_fmodf __P((float,float));
extern float __ieee754_powf __P((float,float));
extern float __ieee754_lgammaf_r __P((float,int *));
extern float __ieee754_gammaf_r __P((float,int *));
extern float __ieee754_log10f __P((float));
extern float __ieee754_sinhf __P((float));
extern float __ieee754_hypotf __P((float,float));
extern float __ieee754_j0f __P((float));
extern float __ieee754_j1f __P((float));
extern float __ieee754_y0f __P((float));
extern float __ieee754_y1f __P((float));
extern float __ieee754_jnf __P((int,float));
extern float __ieee754_ynf __P((int,float));
extern float __ieee754_remainderf __P((float,float));
extern int32_t __ieee754_rem_pio2f __P((float,float*));
#ifdef _SCALB_INT
extern float __ieee754_scalbf __P((float,int));
#else
extern float __ieee754_scalbf __P((float,float));
#endif
/* float versions of fdlibm kernel functions */
extern float __kernel_sinf __P((float,float,int));
extern float __kernel_cosf __P((float,float));
extern float __kernel_tanf __P((float,float,int));
extern int __kernel_rem_pio2f __P((float*,float*,int,int,int,const int32_t*));
/* The original code used statements like
n0 = ((*(int*)&one)>>29)^1; * index of high word *
ix0 = *(n0+(int*)&x); * high word of x *
ix1 = *((1-n0)+(int*)&x); * low word of x *
to dig two 32 bit words out of the 64 bit IEEE floating point
value. That is non-ANSI, and, moreover, the gcc instruction
scheduler gets it wrong. We instead use the following macros.
Unlike the original code, we determine the endianness at compile
time, not at run time; I don't see much benefit to selecting
endianness at run time. */
#ifndef __IEEE_BIG_ENDIAN
#ifndef __IEEE_LITTLE_ENDIAN
#error Must define endianness
#endif
#endif
/* A union which permits us to convert between a double and two 32 bit
ints. */
#ifdef __IEEE_BIG_ENDIAN
typedef union
{
double value;
struct
{
uint32_t msw;
uint32_t lsw;
} parts;
} ieee_double_shape_type;
#endif
#ifdef __IEEE_LITTLE_ENDIAN
typedef union
{
double value;
struct
{
uint32_t lsw;
uint32_t msw;
} parts;
} ieee_double_shape_type;
#endif
/* Get two 32 bit ints from a double. */
#define EXTRACT_WORDS(ix0,ix1,d) \
do { \
ieee_double_shape_type ew_u; \
ew_u.value = (d); \
(ix0) = ew_u.parts.msw; \
(ix1) = ew_u.parts.lsw; \
} while (0)
/* Get the more significant 32 bit int from a double. */
#define GET_HIGH_WORD(i,d) \
do { \
ieee_double_shape_type gh_u; \
gh_u.value = (d); \
(i) = gh_u.parts.msw; \
} while (0)
/* Get the less significant 32 bit int from a double. */
#define GET_LOW_WORD(i,d) \
do { \
ieee_double_shape_type gl_u; \
gl_u.value = (d); \
(i) = gl_u.parts.lsw; \
} while (0)
/* Set a double from two 32 bit ints. */
#define INSERT_WORDS(d,ix0,ix1) \
do { \
ieee_double_shape_type iw_u; \
iw_u.parts.msw = (ix0); \
iw_u.parts.lsw = (ix1); \
(d) = iw_u.value; \
} while (0)
/* Set the more significant 32 bits of a double from an int. */
#define SET_HIGH_WORD(d,v) \
do { \
ieee_double_shape_type sh_u; \
sh_u.value = (d); \
sh_u.parts.msw = (v); \
(d) = sh_u.value; \
} while (0)
/* Set the less significant 32 bits of a double from an int. */
#define SET_LOW_WORD(d,v) \
do { \
ieee_double_shape_type sl_u; \
sl_u.value = (d); \
sl_u.parts.lsw = (v); \
(d) = sl_u.value; \
} while (0)
/* A union which permits us to convert between a float and a 32 bit
int. */
typedef union
{
float value;
uint32_t word;
} ieee_float_shape_type;
/* Get a 32 bit int from a float. */
#define GET_FLOAT_WORD(i,d) \
do { \
ieee_float_shape_type gf_u; \
gf_u.value = (d); \
(i) = gf_u.word; \
} while (0)
/* Set a float from a 32 bit int. */
#define SET_FLOAT_WORD(d,i) \
do { \
ieee_float_shape_type sf_u; \
sf_u.word = (i); \
(d) = sf_u.value; \
} while (0)
#ifdef __cplusplus
}
#endif
/* @(#) $Revision: ../hdr/math.h@@/main/r10dav/libc_dav/libc_dav_cpe/6 $ */
#ifndef _MATH_INCLUDED
#define _MATH_INCLUDED
#ifndef _SYS_STDSYMS_INCLUDED
# include <sys/stdsyms.h>
#endif /* _SYS_STDSYMS_INCLUDED */
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__BUILTIN_MATH) && !defined(__cplusplus) && !defined(_SVID2) && !defined(_XPG2)
# pragma NO_SIDE_EFFECTS acos, asin, atan, atan2, cos, sin, tan
# pragma NO_SIDE_EFFECTS acosd, asind, atand, atan2d, cosd, sind, tand
# pragma NO_SIDE_EFFECTS cosh, sinh, tanh, acosh, asinh, atanh
# pragma NO_SIDE_EFFECTS exp, ldexp, log, log10, log2, pow
# pragma NO_SIDE_EFFECTS sqrt, ceil, fabs, floor, fmod
# pragma NO_SIDE_EFFECTS acosf, asinf, atanf, atan2f, cosf, sinf, tanf
# pragma NO_SIDE_EFFECTS sinhf, coshf, tanhf, acosdf, asindf, atandf, atan2df
# pragma NO_SIDE_EFFECTS cosdf, sindf, tandf, expf, fabsf, logf, log10f, log2f
# pragma NO_SIDE_EFFECTS powf, sqrtf, fmodf
# pragma NO_SIDE_EFFECTS rint, finite, finitef, copysign, copysignf
# pragma NO_SIDE_EFFECTS scalb, logb, drem
# pragma NO_SIDE_EFFECTS cbrt, cbrtf
# pragma NO_SIDE_EFFECTS nextafter, remainder, expm1, ilogb, log1p
#endif /* #if for pragma */
#ifdef _INCLUDE__STDC__
#ifndef HUGE_VAL
# define HUGE_VAL 1.7976931348623157e+308
#endif
# if defined(__STDC__) || defined(__cplusplus)
extern double acos(double);
extern double asin(double);
extern double atan(double);
extern double atan2(double, double);
extern double cos(double);
extern double sin(double);
extern double tan(double);
/* Degree-value trigonometric functions */
#ifdef _INCLUDE_HPUX_SOURCE
extern double acosd(double);
extern double asind(double);
extern double atand(double);
extern double atan2d(double, double);
extern double cosd(double);
extern double sind(double);
extern double tand(double);
#endif
extern double cosh(double);
extern double sinh(double);
extern double tanh(double);
#ifdef _INCLUDE_XOPEN_SOURCE_EXTENDED
extern double acosh(double);
extern double asinh(double);
extern double atanh(double);
extern double cbrt(double);
#endif
extern double exp(double);
extern double frexp(double, int *);
extern double ldexp(double, int);
extern double log(double);
extern double log10(double);
#ifdef _INCLUDE_HPUX_SOURCE
extern double log2(double);
#endif
extern double modf(double, double *);
extern double pow(double, double);
# ifdef __cplusplus
}
inline double pow(double __d,int __expon) {
return pow(__d,(double)__expon);
}
extern "C" {
#else
# endif
extern double sqrt(double);
extern double ceil(double);
extern double fabs(double);
extern double floor(double);
extern double fmod(double, double);
#ifdef _INCLUDE_XOPEN_SOURCE_EXTENDED
/*
* IEEE Recommended Functions (double and some float type versions):
* The following functions are recommended in the IEEE 754 Floating Point Standard:
*
*/
extern double rint(double);
extern double scalb(double,double);
extern double logb(double);
extern double nextafter(double, double);
extern double remainder(double, double);
/* Other useful functions */
extern double expm1(double);
extern int ilogb(double);
extern double log1p(double);
#endif /* _INCLUDE_XOPEN_SOURCE_EXTENDED */
#ifdef _INCLUDE_HPUX_SOURCE
/*
* Float-type Mathematical functions:
* The following mathematical functions are provided for high performance
* low-precision float-type applications. These functions will correctly
* set errno and return a reasonable result on error, but the error handling
* features are not guaranteed to be completely standards compliant. These
#ifdef __cplusplus
#define exception __math_exception
#endif
struct exception;
* functions will NOT invoke matherr().
#ifdef __cplusplus
#undef exception
#endif
*/
extern float acosf( float);
extern float asinf( float);
extern float atanf( float);
extern float atan2f( float, float);
extern float cosf( float);
extern float sinf( float);
extern float tanf( float);
extern float sinhf( float);
extern float coshf( float);
extern float tanhf( float);
extern float acosdf( float);
extern float asindf( float);
extern float atandf( float);
extern float atan2df( float, float);
extern float cosdf( float);
extern float sindf( float);
extern float tandf( float);
extern float expf( float);
extern float fabsf( float);
extern float logf( float);
extern float log10f( float);
extern float log2f( float);
extern float powf( float, float );
extern float sqrtf(float);
extern float fmodf(float,float);
extern float cbrtf(float);
/*
* IEEE Recommended Functions (double and some float type versions):
* The following functions are recommended in the IEEE 754 Floating Point Standard:
*
*/
extern int finite(double);
extern int finitef(float);
extern double copysign(double,double);
extern float copysignf(float,float);
extern double drem(double, double);
#endif /* _HPUX_SOURCE */
# else /* not __STDC__ || __cplusplus */
extern double acos();
extern double asin();
extern double atan();
extern double atan2();
extern double cos();
extern double sin();
extern double tan();
/* Degree-value trigonometric functions */
#ifdef _INCLUDE_HPUX_SOURCE
extern double acosd();
extern double asind();
extern double atand();
extern double atan2d();
extern double cosd();
extern double sind();
extern double tand();
#endif
extern double cosh();
extern double sinh();
extern double tanh();
#ifdef _INCLUDE_XOPEN_SOURCE_EXTENDED
extern double acosh();
extern double asinh();
extern double atanh();
extern double cbrt();
#endif
extern double exp();
extern double frexp();
extern double ldexp();
extern double log();
extern double log10();
#ifdef _INCLUDE_HPUX_SOURCE
extern double log2();
#endif
extern double modf();
extern double pow();
extern double sqrt();
extern double ceil();
extern double fabs();
extern double floor();
extern double fmod();
#ifdef _INCLUDE_XOPEN_SOURCE_EXTENDED
extern double rint();
extern double scalb();
extern double logb();
extern double nextafter();
extern double remainder();
extern double expm1();
extern int ilogb();
extern double log1p();
#endif /* _INCLUDE_XOPEN_SOURCE_EXTENDED */
#ifdef _INCLUDE_HPUX_SOURCE
extern int finite();
extern double copysign();
extern double drem();
#endif
# endif /* __STDC__ || __cplusplus */
#endif /* _INCLUDE__STDC__ */
#ifdef _INCLUDE_XOPEN_SOURCE
/* some useful constants */
# define M_E 2.7182818284590452354
# define M_LOG2E 1.4426950408889634074
# define M_LOG10E 0.43429448190325182765
# define M_LN2 0.69314718055994530942
# define M_LN10 2.30258509299404568402
# define M_PI 3.14159265358979323846
# define M_PI_2 1.57079632679489661923
# define M_PI_4 0.78539816339744830962
# define M_1_PI 0.31830988618379067154
# define M_2_PI 0.63661977236758134308
# define M_2_SQRTPI 1.12837916709551257390
# define M_SQRT2 1.41421356237309504880
# define M_SQRT1_2 0.70710678118654752440
# define MAXFLOAT ((float)3.40282346638528860e+38)
#if defined(__BUILTIN_MATH) && !defined(__cplusplus) && !defined(_SVID2) && !defined(_XPG2)
# pragma NO_SIDE_EFFECTS erf, erfc, gamma, lgamma, isnan
# pragma NO_SIDE_EFFECTS isnanf, isinf, isinff
# pragma NO_SIDE_EFFECTS hypot, j0, j1, jn, y0, y1, yn
#endif /* #if for pragma */
# if defined(__STDC__) || defined(__cplusplus)
extern double erf(double);
extern double erfc(double);
extern double gamma(double);
extern double lgamma(double);
# ifdef _REENTRANT
extern double lgamma_r(double, int *);
# endif /* _REENTRANT */
extern int isnan(double);
#ifdef _INCLUDE_HPUX_SOURCE
extern int isnanf(float);
extern int isinf(double);
extern int isinff(float);
#endif
extern double hypot(double, double);
extern double j0(double);
extern double j1(double);
extern double jn(int, double);
extern double y0(double);
extern double y1(double);
extern double yn(int, double);
# else /* not __STDC__ || __cplusplus */
extern double erf();
extern double erfc();
extern double gamma();
extern double lgamma();
# ifdef _REENTRANT
extern double lgamma_r();
# endif /* _REENTRANT */
extern int isnan();
extern int isinf();
extern double hypot();
extern double j0();
extern double j1();
extern double jn();
extern double y0();
extern double y1();
extern double yn();
# endif /* __STDC__ || __cplusplus */
extern int signgam;
#endif /* _INCLUDE_XOPEN_SOURCE */
#ifdef _INCLUDE_HPUX_SOURCE
# define HUGE HUGE_VAL
# ifndef _LONG_DOUBLE
# define _LONG_DOUBLE
typedef struct {
unsigned int word1, word2, word3, word4;
} long_double;
# endif /* _LONG_DOUBLE */
# if __cplusplus < 199707L
#ifdef __cplusplus
#define exception __math_exception
#endif
struct exception {
#ifdef __cplusplus
#undef exception
#endif
int type;
char *name;
double arg1;
double arg2;
double retval;
};
# endif /* __cplusplus < 199707L */
extern int errno;
#if defined(__BUILTIN_MATH) && !defined(__cplusplus) && !defined(_SVID2) && !defined(_XPG2)
# pragma NO_SIDE_EFFECTS cabs, atof
#endif /* #if for pragma */
# if defined(__STDC__) || defined(__cplusplus)
# if __cplusplus < 199707L
#ifdef __cplusplus
#define exception __math_exception
#endif
#ifdef __cplusplus
#define exception __math_exception
#endif
struct exception;
extern int matherr(struct exception *);
#ifdef __cplusplus
#undef exception
#endif
#ifdef __cplusplus
#undef exception
#endif
# endif /* __cplusplus < 199707L */
extern double cabs();
# ifndef _ATOF_DEFINED
# define _ATOF_DEFINED
extern double atof(const char *);
# endif /* _ATOF_DEFINED */
# else /* not __STDC__ || __cplusplus */
# if __cplusplus < 199707L
#ifdef __cplusplus
#define exception __math_exception
#endif
struct exception;
extern int matherr();
#ifdef __cplusplus
#undef exception
#endif
# endif /* __cplusplus < 199707L */
extern double cabs();
# ifndef _ATOF_DEFINED
# define _ATOF_DEFINED
extern double atof();
# endif /* _ATOF_DEFINED */
# endif /* __STDC__ || __cplusplus */
# define _ABS(x) ((x) < 0 ? -(x) : (x))
# define _REDUCE(TYPE, X, XN, C1, C2) { \
double x1 = (double)(TYPE)X, x2 = X - x1; \
X = x1 - (XN) * (C1); X += x2; X -= (XN) * (C2); }
# define _POLY1(x, c) ((c)[0] * (x) + (c)[1])
# define _POLY2(x, c) (_POLY1((x), (c)) * (x) + (c)[2])
# define _POLY3(x, c) (_POLY2((x), (c)) * (x) + (c)[3])
# define _POLY4(x, c) (_POLY3((x), (c)) * (x) + (c)[4])
# define _POLY5(x, c) (_POLY4((x), (c)) * (x) + (c)[5])
# define _POLY6(x, c) (_POLY5((x), (c)) * (x) + (c)[6])
# define _POLY7(x, c) (_POLY6((x), (c)) * (x) + (c)[7])
# define _POLY8(x, c) (_POLY7((x), (c)) * (x) + (c)[8])
# define _POLY9(x, c) (_POLY8((x), (c)) * (x) + (c)[9])
# define DOMAIN 1
# define SING 2
# define OVERFLOW 3
# define UNDERFLOW 4
# define TLOSS 5
# define PLOSS 6
/********************************************/
/* fpclassify operand analysis routines */
/********************************************/
/* These codes are returned by the fpclassify(f) routines. */
#define FP_PLUS_NORM 0
#define FP_MINUS_NORM 1
#define FP_PLUS_ZERO 2
#define FP_MINUS_ZERO 3
#define FP_PLUS_INF 4
#define FP_MINUS_INF 5
#define FP_PLUS_DENORM 6
#define FP_MINUS_DENORM 7
#define FP_SNAN 8
#define FP_QNAN 9
# if defined(__STDC__) || defined(__cplusplus)
extern int fpclassify(double);
extern int fpclassifyf(float);
extern int isnan(double);
extern int isnanf(float);
#else
extern int fpclassify();
extern int isnan();
#endif
/********************************************/
/* fpgetround suite of FPU service routines */
/********************************************/
/* fpgetround Types */
typedef long fp_control;
typedef int fp_except;
typedef enum {
FP_RZ=0,
FP_RN,
FP_RP,
FP_RM
} fp_rnd;
# if defined(__STDC__) || defined(__cplusplus)
extern fp_rnd fpgetround(void);
extern fp_rnd fpsetround(fp_rnd);
# else /* not __STDC__ || __cplusplus */
extern fp_rnd fpgetround();
extern fp_rnd fpsetround();
# endif /* __STDC__ || __cplusplus */
/* Floating Point Exception Flags */
#define FP_X_INV 0x10 /* invalid operation exceptions */
#define FP_X_DZ 0x08 /* divide-by-zero exception */
#define FP_X_OFL 0x04 /* overflow exception */
#define FP_X_UFL 0x02 /* underflow exception */
#define FP_X_IMP 0x01 /* imprecise (inexact result) */
#define FP_X_CLEAR 0x00 /* simply zero to clear all flags */
# if defined(__STDC__) || defined(__cplusplus)
extern fp_except fpgetmask(void);
extern fp_except fpsetmask(fp_except);
extern fp_except fpgetsticky(void);
extern fp_except fpsetsticky(fp_except);
# else /* not __STDC__ || __cplusplus */
extern fp_except fpgetmask();
extern fp_except fpsetmask();
extern fp_except fpgetsticky();
extern fp_except fpsetsticky();
# endif /* __STDC__ || __cplusplus */
/*
* fpsetdefaults sets modes as follows:
* rounding mode : FP_RN
* sticky flags : FP_X_CLEAR
* mask : FP_X_INV+FP_X_DZ+FP_X_OFL
* fast mode : TRUE (eg denorms treated as zero)
*/
# if defined(__STDC__) || defined(__cplusplus)
extern void fpsetdefaults(void);
extern int fpgetfastmode(void);
extern int fpsetfastmode(int);
extern fp_control fpgetcontrol(void);
extern fp_control fpsetcontrol(fp_control);
# else /* not __STDC__ || __cplusplus */
extern void fpsetdefaults();
extern int fpgetfastmode();
extern int fpsetfastmode();
extern fp_control fpgetcontrol();
extern fp_control fpsetcontrol();
# endif /* __STDC__ || __cplusplus */
/*
* Fortran applications: The above fpgetround suite of calls can be
* used in fortran applications by inserting the following into the
* fortran source code:
*
* $ALIAS fpsetround = 'fpsetround' (%val)
* $ALIAS fpsetsticky = 'fpsetsticky' (%val)
* $ALIAS fpsetmask = 'fpsetmask' (%val)
* $ALIAS fpsetfastmode = 'fpsetfastmode' (%val)
* $ALIAS fpsetcontrol = 'fpsetcontrol' (%val)
* $ALIAS fpsetdefaults = 'fpsetdefaults'
*
* integer fpgetround
* integer fpgetsticky
* integer fpgetmask
* integer fpgetfastmode
* external fpgetround,fpgetsticky,fpgetmask,fpgetfastmode
*
* C Note that fpsetdefaults has no parameters or return value.
*
*/
#endif /* _INCLUDE_HPUX_SOURCE */
#ifdef __cplusplus
}
/* For AT&T compatibility */
#ifndef _STDLIB_INCLUDED
extern "C" int abs(int);
#endif /* _STDLIB_INCLUDED */
#endif
#endif /* _MATH_INCLUDED */