● fixed X ユーティリティー - 関数リファレンス
符号付き乗算
int __stdcall fixedutil_signed_mul(PFIXEDVAL px ,PFIXEDVAL py, int width ,PFIXEDVAL pworkarea );
int __stdcall fixedutil_signed_mul32(PFIXEDVAL px ,long y, int width ,PFIXEDVAL pworkarea );
引数
引数名 | 意味 |
px | 被乗数が格納されている FIXEDVAL領域の先頭アドレス |
py | 乗数が格納されている FIXEDVAL領域の先頭アドレス |
y | long 型の乗数 |
width | px 、py の指す FIXEDVAL値の数値幅(バイト単位) |
pworkarea | 関数が使用するワークエリアを指す FIXEDVAL領域の先頭アドレス |
ワークエリアに必要なサイズ | … | fixedutil_signed_mul の場合 width × 5 以上のサイズが必要 fixedutil_signed_mul32 の場合 width × 3 以上のサイズが必要 |
戻り値
正常終了した場合は 1 、オーバーフローが発生した場合はゼロを返します。
説明
x × y を計算し、結果を px の指す領域へ格納します。
この関数は演算時の符号を考慮します。正または負の表現範囲を超えた演算結果になった場合はゼロ、それ以外は 1 を返します。
関数fixedutil_signed_mul32 は、width の数値幅を持つ被乗数 x を long型の乗数 y で掛け、結果を px の指す領域に格納します。引数 y がポインタではなく乗数そのものであるという事以外は、関数fixedutil_signed_mul と同じです。
引数 px 、py の指す領域は、両方共 width が示す数値幅以上のサイズを持っている必要があり、width は 4 の倍数である必要があります。結果は px に格納されますが、領域のサイズは2倍である必要はありません(結果が領域を超える場合はオーバーフローとして処理されます)。