RT-AICHIPV3-sample
マクロ定義 | 関数
tinyMathFunction.h ファイル
被依存関係図:

[ソースコード]

マクロ定義

#define PI   (3.1415926f)
 
#define ABS(IN)   ((IN) < 0 ? - (IN) : (IN))
 
#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 
#define MIN(a, b)   ((a) < (b) ? (a) : (b))
 
#define SWAP(a, b)   ((a != b) && (a += b,b = a - b,a -= b))
 
#define MAX3(a, b, c)   ((a) > (MAX(b, c)) ? (a) : (MAX(b, c)))
 
#define MAX4(a, b, c, d)   ((a) > (MAX3(b, c, d)) ? (a) : (MAX3(b, c, d)))
 
#define MIN3(a, b, c)   ((a) < (MIN(b, c)) ? (a) : (MIN(b, c)))
 
#define MIN4(a, b, c, d)   ((a) < (MIN3(b, c, d)) ? (a) : (MIN3(b, c, d)))
 
#define SIGN(x)   ((x<0)?(-1):((x>0)?1:0))
 
#define DEG2RAD(deg)   (((deg) * PI) / 180.0)
 
#define RAD2DEG(rad)   (((rad) * 180.0) / 3.1415926535)
 

関数

float tInvSqrt (float x)
 
float tSqrt (float x)
 
void quickSort (int numbers[], int left, int right)
 

マクロ定義詳解

◆ ABS

#define ABS (   IN)    ((IN) < 0 ? - (IN) : (IN))

◆ DEG2RAD

#define DEG2RAD (   deg)    (((deg) * PI) / 180.0)

◆ MAX

#define MAX (   a,
 
)    ((a) > (b) ? (a) : (b))

◆ MAX3

#define MAX3 (   a,
  b,
 
)    ((a) > (MAX(b, c)) ? (a) : (MAX(b, c)))

◆ MAX4

#define MAX4 (   a,
  b,
  c,
 
)    ((a) > (MAX3(b, c, d)) ? (a) : (MAX3(b, c, d)))

◆ MIN

#define MIN (   a,
 
)    ((a) < (b) ? (a) : (b))

◆ MIN3

#define MIN3 (   a,
  b,
 
)    ((a) < (MIN(b, c)) ? (a) : (MIN(b, c)))

◆ MIN4

#define MIN4 (   a,
  b,
  c,
 
)    ((a) < (MIN3(b, c, d)) ? (a) : (MIN3(b, c, d)))

◆ PI

#define PI   (3.1415926f)

◆ RAD2DEG

#define RAD2DEG (   rad)    (((rad) * 180.0) / 3.1415926535)

◆ SIGN

#define SIGN (   x)    ((x<0)?(-1):((x>0)?1:0))

◆ SWAP

#define SWAP (   a,
 
)    ((a != b) && (a += b,b = a - b,a -= b))

関数詳解

◆ quickSort()

void quickSort ( int  numbers[],
int  left,
int  right 
)

クイックソートの実装

引数
numbers[]配列
leftクイックソートする区間の左端
rightクイックソートする区間の右端
戻り値
acosの値

◆ tInvSqrt()

float tInvSqrt ( float  x)

高速なinvSqrt(x)の実装.
ニュートン法を一回実行するごとにfloatの乗算が3回必要
INVSQRT_NEWTON_METHOD_NUMでニュートン法の適用回数を決める
math.hのsqrt()に対して
0:誤差は ±0.05以下
1:誤差は ±0.005以下
2:誤差は ±0.000005以下
3:誤差は ほぼなし

引数
x定義域は[-1.0,1.0]
戻り値
acosの値

◆ tSqrt()

float tSqrt ( float  x)

高速なsqrt(x)の実装.
invSqrt(x)*xでsqrt(x)を計算
invSqrt(x)のニュートン法ステップ3回でほぼ誤差なしになる.

引数
x定義域は[-1.0,1.0]
戻り値
acosの値