fx16型用のマクロ

説明

FX16_SHIFT fx16型のためのシフト数(12)が定義されています。
FX16_INT_SIZE fx16型の整数部分のビット幅(3)が定義されています。
FX16_DEC_SIZE fx16型の小数部分のビット幅(12)が定義されています。
FX16_INT_MASK fx16型の整数部分のマスク(0x7000)が定義されています。
FX16_DEC_MASK fx16型の小数部分のマスク(0x0fff)が定義されています。
FX16_SIGN_MASK fx16型の符号部分のマスク(0x8000)が定義されています。
FX16_MAX fx16型が取りうる最大値(0x7fff)が定義されています。
FX16_MIN fx16型が取りうる最小値(0x8000)が定義されています。
FX_FX16_TO_F32 fx16型をf32型に変換します。
FX_F32_TO_FX16
FX16_CONST
f32型をfx16型に変換します。

マクロの定義

#define FX16_SHIFT          12
#define FX16_INT_SIZE       3
#define FX16_DEC_SIZE       12

#define FX16_INT_MASK       0x7000
#define FX16_DEC_MASK       0x0fff
#define FX16_SIGN_MASK      0x8000

#define FX16_MAX            (fx16)(0x7fff)
#define FX16_MIN            (fx16)(0x8000)
#define FX_FX16_TO_F32(x)    ((f32)((x) / (f32)(1 << FX16_SHIFT)))
#define FX_F32_TO_FX16(x)    ((fx16)(((x) > 0) ? 
                                     (fx16)((x) * (1 << FX16_SHIFT) + 0.5f ) : 
                                     (fx16)((x) * (1 << FX16_SHIFT) - 0.5f )))

#define FX16_CONST(x)       FX_F32_TO_FX16(x)

履歴

Ver. 2004/02/25