# fx64型用のマクロ

## 説明

FX64_SHIFT | fx64型のためのシフト数(12)が定義されています。
FX64_INT_SIZE | fx64型の整数部分のビット幅(51)が定義されています。
FX64_DEC_SIZE | fx64型の小数部分のビット幅(12)が定義されています。
FX64_INT_MASK | fx64型の整数部分のマスクが定義されています。
FX64_DEC_MASK | fx64型の小数部分のマスク(0x0fff)が定義されています。
FX64_SIGN_MASK | fx64型の符号部分のマスクが定義されています。
FX64_MAX | fx64型が取りうる最大値が定義されています。
FX64_MIN | fx64型が取りうる最小値が定義されています。

## マクロの定義

    #define FX64_SHIFT          12
    #define FX64_INT_SIZE       51
    #define FX64_DEC_SIZE       12

    #define FX64_INT_MASK       ((fx64)0x7ffffffffffff000)
    #define FX64_DEC_MASK       ((fx64)0x0000000000000fff)
    #define FX64_SIGN_MASK      ((fx64)0x8000000000000000)

    #define FX64_MAX            ((fx64)0x7fffffffffffffff)
    #define FX64_MIN            ((fx64)0x8000000000000000)
    #define FX_FX64_TO_F32(x)   ((f32)((x) / (f32)(1 << FX64_SHIFT)))
    #define FX_F32_TO_FX64(x)   ((fx64)(((x) > 0) ? \
                                        ((x) * (1 << FX32_SHIFT) + 0.5f ) : \
                                        ((x) * (1 << FX32_SHIFT) - 0.5f )))

    #define FX64_CONST(x)       FX_F32_TO_FX64(x)

## 履歴

Ver. 2004/02/25