# 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