1 // This may look like C code, but it is really -*- C++ -*-
4 Copyright (C) 1988, 1992 Free Software Foundation
5 written by Doug Lea (dl@rocky.oswego.edu)
7 This file is part of the GNU C++ Library. This library is free
8 software; you can redistribute it and/or modify it under the terms of
9 the GNU Library General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your
11 option) any later version. This library is distributed in the hope
12 that it will be useful, but WITHOUT ANY WARRANTY; without even the
13 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the GNU Library General Public License for more details.
15 You should have received a copy of the GNU Library General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21 arithmetic, etc. functions on built in types
28 //#include <_G_config.h>
41 #define _VOLATILE_VOID volatile void
43 #define _VOLATILE_VOID void
46 typedef void (*one_arg_error_handler_t)(const char*);
47 typedef void (*two_arg_error_handler_t)(const char*, const char*);
50 long lg(unsigned long);
51 double pow(double, long);
55 double return_elapsed_time(double last_time = 0.0);
57 char* dtoa(double x, char cvt = 'g', int width = 0, int prec = 6);
59 char* chr(char ch, int width = 0);
60 char* str(const char* s, int width = 0);
62 unsigned int hashpjw(const char*);
63 unsigned int multiplicativehash(int);
64 unsigned int foldhash(double);
66 extern _VOLATILE_VOID default_one_arg_error_handler(const char*);
67 extern _VOLATILE_VOID default_two_arg_error_handler(const char*, const char*);
69 extern two_arg_error_handler_t
70 set_lib_error_handler(two_arg_error_handler_t f);
76 double sqr(double arg);
79 long lcm(long x, long y);
80 void (setbit)(long& x, long b);
81 void clearbit(long& x, long b);
82 int testbit(long x, long b);
86 inline int sign(long arg)
88 return (arg == 0) ? 0 : ( (arg > 0) ? 1 : -1 );
91 inline int sign(double arg)
93 return (arg == 0.0) ? 0 : ( (arg > 0.0) ? 1 : -1 );
96 inline long sqr(long arg)
101 #ifndef __hpux /* hpux defines this in math.h */
102 inline double sqr(double arg)
108 inline int even(long arg)
113 inline int odd(long arg)
118 inline long lcm(long x, long y)
120 return x / gcd(x, y) * y;
123 inline void (setbit)(long& x, long b)
128 inline void clearbit(long& x, long b)
133 inline int testbit(long x, long b)
135 return ((x & (1 << b)) != 0);