// This may look like C code, but it is really -*- C++ -*-
Copyright (C) 1988 Free Software Foundation
written by Doug Lea (dl@rocky.oswego.edu)
This file is part of the GNU C++ Library. This library is free
software; you can redistribute it and/or modify it under the terms of
the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. This library is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#if defined(hp300) && defined(__HAVE_FPU__)
#ifdef __HAVE_68881__ /* MC68881/2 Floating-Point Coprocessor */
extern "C" { /* fill in what we've left out */
double copysign(double,double);
double hypot(double,double);
/* Please add inline asm code for other machines here! */
double atan2(double, double);
double copysign(double,double);
double drem(double,double);
double fmod(double, double);
double frexp(double, int*);
double hypot(double,double);
#if !defined(sequent) && !defined(DGUX) &&!defined(sony) && !defined(masscomp) && !defined(hpux)
double ldexp(double, int);
double modf(double, double*);
double pow(double, double);
double scalb
_G_ARGS((double, int));
/* libg++ doesn't use this since it is not available on some systems */
/* the following ifdef is just for compiling OOPS */
#ifndef DONT_DECLARE_EXCEPTION
double arg1
, arg2
, retval
;
extern "C" int matherr(libm_exception
*);
/* On some systems, HUGE ought to be MAXFLOAT or IEEE infinity */
/* sequents don't supply these. The following should suffice */
#if defined(sequent) || defined(DGUX) || defined(sony) || defined(masscomp) \
static inline int isnan(double x
) { return x
!= x
; }
static inline int isinf(double x
) { return x
> DBL_MAX
|| x
< -DBL_MAX
; }
/* These seem to be sun & sysV names of these 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_1_PI 0.31830988618379067154
#define M_PI_4 0.78539816339744830962
#define M_2_PI 0.63661977236758134308
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2 1.41421356237309504880
#define M_SQRT1_2 0.70710678118654752440
#ifndef PI // as in stroustrup