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

# 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 * n) - (79 * n) + 1601)

| ハッカーの楽しみ ( 日本語版 Hacker's Delight ) 第16章 素数に関する式 p.290より dkcMath.h の 78 行で定義されています。 参照元 dkcPrime79().

#define M_PI 3.14159265358979323846

| 何故定義されとらんのだ!!!ヽ(`Д´)ノムキィ dkcMath.h の 20 行で定義されています。

## 型定義

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.c の 46 行で定義されています。 参照先 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.c の 35 行で定義されています。 参照元 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.c の 41 行で定義されています。 参照先 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.c の 30 行で定義されています。
    00031 {
    00032     *seed = num;
    00033 }

DKC_INLINE uint32 dkcXorShiftRNG128 | ( | DKC_XORSHIFT_RNG * | p | ) |

| dkcMath.h の 60 行で定義されています。 参照先 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.h の 43 行で定義されています。 参照先 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.h の 52 行で定義されています。 参照先 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 }