● 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領域の先頭アドレス
ylong 型の乗数
widthpxpy の指す 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 と同じです。

引数 pxpy の指す領域は、両方共 width が示す数値幅以上のサイズを持っている必要があり、width は 4 の倍数である必要があります。結果は px に格納されますが、領域のサイズは2倍である必要はありません(結果が領域を超える場合はオーバーフローとして処理されます)。