メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcMath.h

超簡易 数学系ライブラリ [詳細]

#include "dkcOSIndependent.h"
#include <math.h>

dkcMath.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

構成

struct  dkc_XorShiftRandomNumberGenerator

マクロ定義

#define M_PI   3.14159265358979323846
 何故定義されとらんのだ!!!ヽ(`Д´)ノムキィ
#define dkcmPrime79(n)   ((n * n) - (79 * n) + 1601)
 ハッカーの楽しみ ( 日本語版 Hacker's Delight ) 第16章 素数に関する式 p.290より

型定義

typedef dkc_XorShiftRandomNumberGenerator DKC_XORSHIFT_RNG

関数

DKC_EXTERN void WINAPI dkcSrand (ULONG *seed, ULONG num)
 C言語の標準srand()を種値(ステート)を外部に保存できるようにしたもの
DKC_EXTERN int WINAPI dkcRand (ULONG *seed)
 C言語の標準rand()を種値(ステート)を外部に保存できるようにしたもの
DKC_EXTERN int WINAPI dkcRandom (ULONG *seed, ULONG Max_)
 0からMax_までの乱数を出力する。
DKC_EXTERN int WINAPI dkcSqrtInit ()
DKC_EXTERN float WINAPI dkcSqrtFast (float a)
DKC_EXTERN int WINAPI dkcFloatToInt (float a)
DKC_INLINE void dkcXorShiftRNG128DefaultInit (DKC_XORSHIFT_RNG *p)
DKC_INLINE void dkcXorShiftRNG128Init (DKC_XORSHIFT_RNG *p, uint32 seed)
 この関数が正解かどうかは不明
DKC_INLINE uint32 dkcXorShiftRNG128 (DKC_XORSHIFT_RNG *p)
DKC_EXTERN uint32 WINAPI dkcPrime79 (uint32 n)
 param n[in] 0から79までの数を入れる


説明

超簡易 数学系ライブラリ

から:
2004/04/29
覚え書き:
結果が間違っている可能性あり。 精度が悪い可能性あり。 NVIDIAのfastmath.cppを一部に使用
TODO:
How to do?

dkcMath.h で定義されています。


マクロ定義

#define dkcmPrime79  )     ((n * n) - (79 * n) + 1601)
 

ハッカーの楽しみ ( 日本語版 Hacker's Delight ) 第16章 素数に関する式 p.290より

dkcMath.h78 行で定義されています。

参照元 dkcPrime79().

#define M_PI   3.14159265358979323846
 

何故定義されとらんのだ!!!ヽ(`Д´)ノムキィ

dkcMath.h20 行で定義されています。


型定義

typedef struct dkc_XorShiftRandomNumberGenerator DKC_XORSHIFT_RNG
 


関数

DKC_EXTERN int WINAPI dkcFloatToInt float  a  ) 
 

DKC_EXTERN uint32 WINAPI dkcPrime79 uint32  n  ) 
 

param n[in] 0から79までの数を入れる

戻り値:
素数を返す
覚え書き:
ハッシュ関数に使うのかな?

dkcMath.c46 行で定義されています。

参照先 dkcmFORCE_NOT_ASSERT, と dkcmPrime79.

00047 {
00048     dkcmFORCE_NOT_ASSERT(n > 79);
00049     return dkcmPrime79(n);
00050 }

DKC_EXTERN int WINAPI dkcRand ULONG *  seed  ) 
 

C言語の標準rand()を種値(ステート)を外部に保存できるようにしたもの

dkcMath.c35 行で定義されています。

参照元 dkcRandom().

00036 {
00037     (*seed) = (*seed) * 1103515245L + 12345;
00038     return (unsigned)((*seed) / 65536L) % 32768U;
00039 }

DKC_EXTERN int WINAPI dkcRandom ULONG *  seed,
ULONG  Max_
 

0からMax_までの乱数を出力する。

dkcMath.c41 行で定義されています。

参照先 dkcRand().

参照元 dkcRandomV().

00042 {
00043     return dkcRand(seed) * (Max_ ) / SHRT_MAX;
00044 }

DKC_EXTERN float WINAPI dkcSqrtFast float  a  ) 
 

DKC_EXTERN int WINAPI dkcSqrtInit  ) 
 

DKC_EXTERN void WINAPI dkcSrand ULONG *  seed,
ULONG  num
 

C言語の標準srand()を種値(ステート)を外部に保存できるようにしたもの

dkcMath.c30 行で定義されています。

00031 {
00032     *seed = num;
00033 }

DKC_INLINE uint32 dkcXorShiftRNG128 DKC_XORSHIFT_RNG p  ) 
 

dkcMath.h60 行で定義されています。

参照先 uint32, dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z.

00060                                                         {
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 }

DKC_INLINE void dkcXorShiftRNG128DefaultInit DKC_XORSHIFT_RNG p  ) 
 

dkcMath.h43 行で定義されています。

参照先 dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z.

00043                                                                  {
00044     //static unsigned long x=123456789,y=362436069,z=521288629,w=88675123;
00045     p->x = 123456789;
00046     p->y = 362436069;
00047     p->z = 521288629;
00048     p->w = 88675123;
00049 }

DKC_INLINE void dkcXorShiftRNG128Init DKC_XORSHIFT_RNG p,
uint32  seed
 

この関数が正解かどうかは不明

dkcMath.h52 行で定義されています。

参照先 dkc_XorShiftRandomNumberGenerator::w, dkc_XorShiftRandomNumberGenerator::x, dkc_XorShiftRandomNumberGenerator::y, と dkc_XorShiftRandomNumberGenerator::z.

00052                                                                       {
00053     
00054     p->x = seed;
00055     p->y = 362436069;
00056     p->z = 521288629;
00057     p->w = 88675123;
00058 }


dkutil_cに対してMon Jan 16 00:42:13 2006に生成されました。  doxygen 1.4.4