00001
00012 #ifndef DKUTIL_C_MATH_H
00013 #define DKUTIL_C_MATH_H
00014
00015 #include "dkcOSIndependent.h"
00016 #include <math.h>
00017
00018 #ifndef M_PI
00019
00020 # define M_PI 3.14159265358979323846
00021 #endif
00022
00023
00025 DKC_EXTERN void WINAPI dkcSrand(ULONG *seed,ULONG num);
00027 DKC_EXTERN int WINAPI dkcRand(ULONG *seed);
00029 DKC_EXTERN int WINAPI dkcRandom(ULONG *seed,ULONG Max_);
00030
00031 DKC_EXTERN int WINAPI dkcSqrtInit();
00032
00033
00034 DKC_EXTERN float WINAPI dkcSqrtFast(float a);
00035
00036 DKC_EXTERN int WINAPI dkcFloatToInt(float a);
00037
00038
00039 typedef struct dkc_XorShiftRandomNumberGenerator{
00040 uint32 x,y,z,w;
00041 }DKC_XORSHIFT_RNG;
00042
00043 DKC_INLINE void dkcXorShiftRNG128DefaultInit(DKC_XORSHIFT_RNG *p){
00044
00045 p->x = 123456789;
00046 p->y = 362436069;
00047 p->z = 521288629;
00048 p->w = 88675123;
00049 }
00050
00052 DKC_INLINE void dkcXorShiftRNG128Init(DKC_XORSHIFT_RNG *p,uint32 seed){
00053
00054 p->x = seed;
00055 p->y = 362436069;
00056 p->z = 521288629;
00057 p->w = 88675123;
00058 }
00059
00060 DKC_INLINE uint32 dkcXorShiftRNG128(DKC_XORSHIFT_RNG *p){
00061 uint32 t;
00062 uint32 x,y,z,w;
00063 x = p->x;y = p->y;z = p->z;w = p->w;
00064 t=(x^(x<<11));
00065 x=y;
00066 y=z;
00067 z=w;
00068 ( w=(w^(w>>19))^(t^(t>>8)) );
00069
00070 p->x = x;p->y =y;p->z = z;p->w = w;
00071 return w;
00072 }
00073
00074
00075
00076
00078 #define dkcmPrime79(n) ((n * n) - (79 * n) + 1601)
00079
00081 DKC_EXTERN uint32 WINAPI dkcPrime79(uint32 n);
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 #if !defined( DKUTIL_C_MATH_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00106
00107 # include "dkcMath.c"
00108 #endif
00109
00110 #endif