Go to the first, previous, next, last section, table of contents.

# Utility functions for built in types

Files ``builtin.h'` and corresponding ``.cc'` implementation files contain various convenient inline and non-inline utility functions. These include useful enumeration types, such as `TRUE`, `FALSE` ,the type definition for pointers to libg++ error handling functions, and the following functions.

`long abs(long x); double abs(double x);`
  inline versions of abs. Note that the standard libc.a version, `int abs(int)` is not declared as inline.
`void clearbit(long& x, long b);`
  clears the b'th bit of x (inline).
`void setbit(long& x, long b);`
  sets the b'th bit of x (inline)
`int testbit(long x, long b);`
  returns the b'th bit of x (inline).
`int even(long y);`
  returns true if x is even (inline).
`int odd(long y);`
  returns true is x is odd (inline).
`int sign(long x); int sign(double x);`
  returns -1, 0, or 1, indicating whether x is less than, equal to, or greater than zero (inline).
`long gcd(long x, long y);`
  returns the greatest common divisor of x and y.
`long lcm(long x, long y);`
  returns the least common multiple of x and y.
`long lg(long x);`
  returns the floor of the base 2 log of x.
`long pow(long x, long y); double pow(double x, long y);`
  returns x to the integer power y using via the iterative O(log y) "Russian peasant" method.
`long sqr(long x); double sqr(double x);`
  returns x squared (inline).
`long sqrt(long y);`
  returns the floor of the square root of x.
`unsigned int hashpjw(const char* s);`
  a hash function for null-terminated char* strings using the method described in Aho, Sethi, & Ullman, p 436.
`unsigned int multiplicativehash(int x);`
  a hash function for integers that returns the lower bits of multiplying x by the golden ratio times pow(2, 32). See Knuth, Vol 3, p 508.
`unsigned int foldhash(double x);`
  a hash function for doubles that exclusive-or's the first and second words of x, returning the result as an integer.
`double start_timer()`
  Starts a process timer.
`double return_elapsed_time(double last_time)`
  Returns the process time since last_time. If last_time == 0 returns the time since the last start_timer. Returns -1 if start_timer was not first called.

File ``Maxima.h'` includes versions of `MAX, MIN` for builtin types.

File ``compare.h'` includes versions of `compare(x, y)` for builtin types. These return negative if the first argument is less than the second, zero for equal, and positive for greater.

Go to the first, previous, next, last section, table of contents.