#include <math.h>
#include <stdlib.h>
#include <float.h>
Go to the source code of this file.
Classes | |
struct | btTypedObject |
rudimentary class to provide type info More... | |
Defines | |
#define | BT_BULLET_VERSION 281 |
#define | SIMD_FORCE_INLINE __forceinline |
#define | ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a |
#define | ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a |
#define | ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a |
#define | btAssert(x) |
#define | btFullAssert(x) |
#define | btLikely(_c) _c |
#define | btUnlikely(_c) _c |
#define | BT_LARGE_FLOAT 1e18f |
#define | BT_DECLARE_ALIGNED_ALLOCATOR() |
#define | SIMD_2_PI btScalar(6.283185307179586232) |
#define | SIMD_PI (SIMD_2_PI * btScalar(0.5)) |
#define | SIMD_HALF_PI (SIMD_2_PI * btScalar(0.25)) |
#define | SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0)) |
#define | SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI) |
#define | SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) |
#define | btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x)))) |
#define | SIMD_EPSILON FLT_EPSILON |
#define | SIMD_INFINITY FLT_MAX |
#define | BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name |
#define | btFsels(a, b, c) (btScalar)btFsel(a,b,c) |
Typedefs | |
typedef float | btScalar |
The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision. | |
Functions | |
int | btGetVersion () |
btScalar | btSqrt (btScalar y) |
btScalar | btFabs (btScalar x) |
btScalar | btCos (btScalar x) |
btScalar | btSin (btScalar x) |
btScalar | btTan (btScalar x) |
btScalar | btAcos (btScalar x) |
btScalar | btAsin (btScalar x) |
btScalar | btAtan (btScalar x) |
btScalar | btAtan2 (btScalar x, btScalar y) |
btScalar | btExp (btScalar x) |
btScalar | btLog (btScalar x) |
btScalar | btPow (btScalar x, btScalar y) |
btScalar | btFmod (btScalar x, btScalar y) |
btScalar | btAtan2Fast (btScalar y, btScalar x) |
bool | btFuzzyZero (btScalar x) |
bool | btEqual (btScalar a, btScalar eps) |
bool | btGreaterEqual (btScalar a, btScalar eps) |
int | btIsNegative (btScalar x) |
btScalar | btRadians (btScalar x) |
btScalar | btDegrees (btScalar x) |
btScalar | btFsel (btScalar a, btScalar b, btScalar c) |
bool | btMachineIsLittleEndian () |
unsigned | btSelect (unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) |
btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 Thanks Phil Knight. | |
int | btSelect (unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero) |
float | btSelect (unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero) |
template<typename T > | |
void | btSwap (T &a, T &b) |
unsigned | btSwapEndian (unsigned val) |
unsigned short | btSwapEndian (unsigned short val) |
unsigned | btSwapEndian (int val) |
unsigned short | btSwapEndian (short val) |
unsigned int | btSwapEndianFloat (float d) |
btSwapFloat uses using char pointers to swap the endianness | |
float | btUnswapEndianFloat (unsigned int a) |
void | btSwapEndianDouble (double d, unsigned char *dst) |
double | btUnswapEndianDouble (const unsigned char *src) |
btScalar | btNormalizeAngle (btScalar angleInRadians) |
template<typename T > | |
T * | btAlignPointer (T *unalignedPtr, size_t alignment) |
align a pointer to the provided alignment, upwards |
#define ATTRIBUTE_ALIGNED128 | ( | a | ) | __declspec (align(128)) a |
Definition at line 61 of file btScalar.h.
#define ATTRIBUTE_ALIGNED16 | ( | a | ) | __declspec(align(16)) a |
Definition at line 59 of file btScalar.h.
#define ATTRIBUTE_ALIGNED64 | ( | a | ) | __declspec(align(64)) a |
Definition at line 60 of file btScalar.h.
#define BT_BULLET_VERSION 281 |
Definition at line 31 of file btScalar.h.
#define BT_DECLARE_ALIGNED_ALLOCATOR | ( | ) |
SIMD_FORCE_INLINE void* operator new(size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ SIMD_FORCE_INLINE void operator delete(void* ptr) { btAlignedFree(ptr); } \ SIMD_FORCE_INLINE void* operator new(size_t, void* ptr) { return ptr; } \ SIMD_FORCE_INLINE void operator delete(void*, void*) { } \ SIMD_FORCE_INLINE void* operator new[](size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes,16); } \ SIMD_FORCE_INLINE void operator delete[](void* ptr) { btAlignedFree(ptr); } \ SIMD_FORCE_INLINE void* operator new[](size_t, void* ptr) { return ptr; } \ SIMD_FORCE_INLINE void operator delete[](void*, void*) { } \
Definition at line 328 of file btScalar.h.
#define BT_DECLARE_HANDLE | ( | name | ) | typedef struct name##__ { int unused; } *name |
Definition at line 456 of file btScalar.h.
#define BT_LARGE_FLOAT 1e18f |
Definition at line 260 of file btScalar.h.
#define btAssert | ( | x | ) |
Definition at line 97 of file btScalar.h.
#define btFsels | ( | a, | ||
b, | ||||
c | ||||
) | (btScalar)btFsel(a,b,c) |
Definition at line 464 of file btScalar.h.
#define btFullAssert | ( | x | ) |
Definition at line 100 of file btScalar.h.
#define btLikely | ( | _c | ) | _c |
Definition at line 102 of file btScalar.h.
Definition at line 412 of file btScalar.h.
#define btUnlikely | ( | _c | ) | _c |
Definition at line 103 of file btScalar.h.
#define SIMD_2_PI btScalar(6.283185307179586232) |
Definition at line 405 of file btScalar.h.
#define SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI) |
Definition at line 409 of file btScalar.h.
#define SIMD_EPSILON FLT_EPSILON |
Definition at line 419 of file btScalar.h.
#define SIMD_FORCE_INLINE __forceinline |
Definition at line 58 of file btScalar.h.
#define SIMD_HALF_PI (SIMD_2_PI * btScalar(0.25)) |
Definition at line 407 of file btScalar.h.
#define SIMD_INFINITY FLT_MAX |
Definition at line 420 of file btScalar.h.
#define SIMD_PI (SIMD_2_PI * btScalar(0.5)) |
Definition at line 406 of file btScalar.h.
#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0)) |
Definition at line 408 of file btScalar.h.
#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490) |
Definition at line 410 of file btScalar.h.
typedef float btScalar |
The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.
Definition at line 258 of file btScalar.h.
Definition at line 382 of file btScalar.h.
T* btAlignPointer | ( | T * | unalignedPtr, | |
size_t | alignment | |||
) |
align a pointer to the provided alignment, upwards
Definition at line 639 of file btScalar.h.
Definition at line 389 of file btScalar.h.
Definition at line 396 of file btScalar.h.
Definition at line 397 of file btScalar.h.
Definition at line 423 of file btScalar.h.
Definition at line 379 of file btScalar.h.
Definition at line 454 of file btScalar.h.
Definition at line 441 of file btScalar.h.
Definition at line 398 of file btScalar.h.
Definition at line 378 of file btScalar.h.
Definition at line 401 of file btScalar.h.
Definition at line 459 of file btScalar.h.
bool btFuzzyZero | ( | btScalar | x | ) | [inline] |
Definition at line 439 of file btScalar.h.
int btGetVersion | ( | ) | [inline] |
Definition at line 33 of file btScalar.h.
Definition at line 444 of file btScalar.h.
int btIsNegative | ( | btScalar | x | ) | [inline] |
Definition at line 449 of file btScalar.h.
Definition at line 399 of file btScalar.h.
bool btMachineIsLittleEndian | ( | ) | [inline] |
Definition at line 467 of file btScalar.h.
Definition at line 605 of file btScalar.h.
Definition at line 400 of file btScalar.h.
Definition at line 453 of file btScalar.h.
int btSelect | ( | unsigned | condition, | |
int | valueIfConditionNonZero, | |||
int | valueIfConditionZero | |||
) | [inline] |
Definition at line 491 of file btScalar.h.
float btSelect | ( | unsigned | condition, | |
float | valueIfConditionNonZero, | |||
float | valueIfConditionZero | |||
) | [inline] |
Definition at line 497 of file btScalar.h.
unsigned btSelect | ( | unsigned | condition, | |
unsigned | valueIfConditionNonZero, | |||
unsigned | valueIfConditionZero | |||
) | [inline] |
btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360 Thanks Phil Knight.
See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html
Definition at line 481 of file btScalar.h.
Definition at line 380 of file btScalar.h.
Definition at line 358 of file btScalar.h.
void btSwap | ( | T & | a, | |
T & | b | |||
) | [inline] |
Definition at line 506 of file btScalar.h.
unsigned short btSwapEndian | ( | unsigned short | val | ) | [inline] |
Definition at line 520 of file btScalar.h.
unsigned btSwapEndian | ( | int | val | ) | [inline] |
Definition at line 525 of file btScalar.h.
unsigned short btSwapEndian | ( | short | val | ) | [inline] |
Definition at line 530 of file btScalar.h.
unsigned btSwapEndian | ( | unsigned | val | ) | [inline] |
Definition at line 515 of file btScalar.h.
void btSwapEndianDouble | ( | double | d, | |
unsigned char * | dst | |||
) | [inline] |
Definition at line 571 of file btScalar.h.
unsigned int btSwapEndianFloat | ( | float | d | ) | [inline] |
btSwapFloat uses using char pointers to swap the endianness
btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. so instead of returning a float/double, we return integer/long long integer
Definition at line 541 of file btScalar.h.
Definition at line 381 of file btScalar.h.
double btUnswapEndianDouble | ( | const unsigned char * | src | ) | [inline] |
Definition at line 587 of file btScalar.h.
float btUnswapEndianFloat | ( | unsigned int | a | ) | [inline] |
Definition at line 555 of file btScalar.h.