● 関数リファレンス

テーブルから指定の種類を検索する

    FLOATEX_TBLPTR __stdcall   floatex_checktable(FLOATEX_TBLPTR val_tbl,int n,unsigned int type);

引数

引数名意味
val_tbl数値群を格納している FLOATEX型配列の先頭アドレス
nval_tbl に指定する配列の要素数
type検索するデータの種類

戻り値

発見した場合は、そのアドレスを返します。見つからなかった場合は NULL を返します。

説明

val_tbl が指す配列から、指定の種類のデータを検索します。

type には、次の値を単独、または OR 接合で指定します。

意味
FEX_CHKTBL_P_UNSUPPORT+ の未サポートフォーマット
FEX_CHKTBL_M_UNSUPPORT- の未サポートフォーマット
FEX_CHKTBL_P_QNAN+ のクワイエット型 NaN
FEX_CHKTBL_M_QNAN- のクワイエット型 NaN
FEX_CHKTBL_P_SNAN+ のシグナル型 NaN
FEX_CHKTBL_M_SNAN- のシグナル型 NaN
FEX_CHKTBL_P_NORMAL+ のノーマル数
FEX_CHKTBL_M_NORMAL- のノーマル数
FEX_CHKTBL_P_INFINITY+ の無限大
FEX_CHKTBL_M_INFINITY- の無限大
FEX_CHKTBL_P_ZERO+ の0
FEX_CHKTBL_M_ZERO- の0
FEX_CHKTBL_P_DENORMAL+ のデノーマル数
FEX_CHKTBL_M_DENORMAL- のデノーマル数

検索は val_tbl から上位側へ向かって行われます。配列内に該当するデータが複数存在する場合は、val_tbl に最も近い要素が返されます。
n ≦ 0 の場合は、処理を行わず NULL を返して終了します。

テスト.

#include <stdio.h>
#include "floatex.h"

/* 配列内にある正のノーマル値を全て表示します */
void    search_all_values(FLOATEX_TBLPTR porg,int max)
{
    FLOATEX_TBLPTR  ptr;
    int             cnt,index;
    char            buf[32];

    cnt = max--;
    ptr = porg;

    while((ptr = floatex_checktable(ptr,cnt,FEX_CHKTBL_P_NORMAL)) != NULL){
        index = ptr - porg;
        floatex_ldstr_ldtoa(*ptr,buf);
        printf("インデックス:%2d     内容:%s\n",index,buf);

        ptr++;
        cnt = max - index;
    }
}

void __cdecl    main(void)
{
    FLOATEX         v[32] = {0};
    unsigned int    oldcw;

    oldcw = floatex_storecw();
    floatex_loadcw(FEX_PC_64 | FEX_RC_NEAR | FEX_MCW_EM);

    /* 正の値のセット */

    floatex_copy(v[0],fex_const_1);
    floatex_copy(v[2],fex_const_2);
    floatex_copy(v[14],fex_const_3);
    floatex_copy(v[31],fex_const_4);

    /* 負の値のセット */

    floatex_nabs(floatex_copy(v[8],fex_const_5));
    floatex_nabs(floatex_copy(v[11],fex_const_6));
    floatex_nabs(floatex_copy(v[26],fex_const_7));

    /* 内容の検索と表示 */
    search_all_values(v,sizeof(v) / sizeof(FLOATEX));

    floatex_ldstr_term();
    floatex_loadcw(oldcw);
}


結果.

インデックス: 0     内容:1
インデックス: 2     内容:2
インデックス:14     内容:3
インデックス:31     内容:4