Defines |
#define | Malloc(s) MallocWithErrorMessage(s) |
| Function to allocate a block of memory.
|
#define | Realloc(p, s) ReallocWithErrorMessage(p, s) |
| Function to reallocate a block of memory.
|
#define | Free(p) free(p) |
| Function to free memory.
|
#define | M_2PI 6.28318530717958647692528676655900576 |
| The constant 2 pi.
|
#define | M_PI 3.14159265358979323846264338327950288 |
| The constant pi.
|
#define | M_PI_2 1.57079632679489661923132169163975144 |
| The constant pi/2.
|
#define | M_PI_4 0.78539816339744830961566084581987572 |
| The constant pi/4.
|
#define | M_PI_8 0.39269908169872415480783042290993786 |
| The constant pi/8.
|
#define | M_SQRT2 1.41421356237309504880168872420969808 |
| The constant sqrt(2)
|
#define | M_1_SQRT2 0.70710678118654752440084436210484904 |
| The constant 1/sqrt(2)
|
#define | M_E 2.71828182845904523536028747135266250 |
| The natural number.
|
#define | M_LOG2E 1.44269504088896340735992468100189213 |
| Log base 2 of the natural number.
|
#define | M_LOG10E 0.43429448190325182765112891891660508 |
| Log base 10 of the natural number.
|
#define | M_LN2 0.69314718055994530941723212145817657 |
| Natural log of 2.
|
#define | M_LN10 2.30258509299404568401799145468436421 |
| Natural log of 10.
|
#define | M_EULER 0.57721566490153286060651209008240243 |
| Euler number.
|
#define | ROUND(X) (floor((X) + 0.5)) |
| Round double X.
|
#define | ROUNDF(X) (floor((X) + 0.5f)) |
| Round float X.
|
#define | ATTRIBUTE_UNUSED |
#define | ATTRIBUTE_ALWAYSINLINE |
Functions |
void * | MallocWithErrorMessage (size_t Size) |
| malloc with an error message on failure.
|
void * | ReallocWithErrorMessage (void *Ptr, size_t Size) |
| realloc with an error message and free on failure.
|
void | ErrorMessage (const char *Format,...) |
| Redefine this function to customize error messages.
|
unsigned long | Clock () |
Memory management, portable types, math constants, and timing.
- Author:
- Pascal Getreuer <getreuer@gmail.com>
This purpose of this file is to improve portability.
Types uint8_t
, uint16_t
, uint32_t
should be defined as unsigned integer types such that
uint8_t
is 8-bit, range 0 to 255
uint16_t
is 16-bit, range 0 to 65535
uint32_t
is 32-bit, range 0 to 4294967295
Similarly, int8_t
, int16_t
, int32_t
should be defined as signed integer types such that
int8_t
is 8-bit, range -128 to +127
int16_t
is 16-bit, range -32768 to +32767
int32_t
is 32-bit, range -2147483648 to +2147483647
These definitions are implemented with types __int8
, __int16
, and __int32
under Windows and by including stdint.h under UNIX.
To define the math constants, math.h is included, and any of the following that were not defined by math.h are defined here according to the values from Hart & Cheney.
- M_2PI = 2 pi = 6.28318530717958647692528676655900576
- M_PI = pi = 3.14159265358979323846264338327950288
- M_PI_2 = pi/2 = 1.57079632679489661923132169163975144
- M_PI_4 = pi/4 = 0.78539816339744830961566084581987572
- M_PI_8 = pi/8 = 0.39269908169872415480783042290993786
- M_SQRT2 = sqrt(2) = 1.41421356237309504880168872420969808
- M_1_SQRT2 = 1/sqrt(2) = 0.70710678118654752440084436210484904
- M_E = e = 2.71828182845904523536028747135266250
- M_LOG2E = log_2(e) = 1.44269504088896340735992468100189213
- M_LOG10E = log_10(e) = 0.43429448190325182765112891891660508
- M_LN2 = log_e(2) = 0.69314718055994530941723212145817657
- M_LN10 = log_e(10) = 2.30258509299404568401799145468436421
- M_EULER = Euler = 0.57721566490153286060651209008240243
Copyright (c) 2010-2011, Pascal Getreuer All rights reserved.
This program is free software: you can use, modify and/or redistribute it under the terms of the simplified BSD License. You should have received a copy of this license along this program. If not, see <http://www.opensource.org/licenses/bsd-license.html>.
Definition in file basic.h.