// This may look like C code, but it is really -*- C++ -*-
Copyright (C) 1988, 1992 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.
arithmetic, etc. functions on built in types
#define _VOLATILE_VOID volatile void
#define _VOLATILE_VOID void
typedef void (*one_arg_error_handler_t
)(const char*);
typedef void (*two_arg_error_handler_t
)(const char*, const char*);
double pow(double, long);
double return_elapsed_time(double last_time
= 0.0);
char* dtoa(double x
, char cvt
= 'g', int width
= 0, int prec
= 6);
unsigned int hashpjw(const char*);
unsigned int multiplicativehash(int);
unsigned int foldhash(double);
extern _VOLATILE_VOID
default_one_arg_error_handler(const char*);
extern _VOLATILE_VOID
default_two_arg_error_handler(const char*, const char*);
extern two_arg_error_handler_t lib_error_handler
;
extern two_arg_error_handler_t
set_lib_error_handler(two_arg_error_handler_t f
);
long lcm(long x
, long y
);
void (setbit
)(long& x
, long b
);
void clearbit(long& x
, long b
);
int testbit(long x
, long b
);
#if ! _G_MATH_H_INLINES /* hpux and SCO define this in math.h */
inline double abs(double arg
)
return (arg
< 0.0)? -arg
: arg
;
inline float abs(float arg
)
return (arg
< 0.0)? -arg
: arg
;
inline short abs(short arg
)
return (arg
< 0)? -arg
: arg
;
inline long abs(long arg
)
return (arg
< 0)? -arg
: arg
;
inline int sign(long arg
)
return (arg
== 0) ? 0 : ( (arg
> 0) ? 1 : -1 );
inline int sign(double arg
)
return (arg
== 0.0) ? 0 : ( (arg
> 0.0) ? 1 : -1 );
inline long sqr(long arg
)
#if ! _G_MATH_H_INLINES /* hpux and SCO define this in math.h */
inline double sqr(double arg
)
inline int even(long arg
)
inline long lcm(long x
, long y
)
return x
/ gcd(x
, y
) * y
;
inline void (setbit
)(long& x
, long b
)
inline void clearbit(long& x
, long b
)
inline int testbit(long x
, long b
)
return ((x
& (1 << b
)) != 0);