tail head cat sleep
QR code linking to this page

manページ  — FPGETROUND

名称

fpgetround, fpsetround, fpsetprec, fpgetprec, fpgetmask, fpsetmask, fpgetsticky, fpresetsticky – IEEE 浮動小数点インタフェース

内容

書式

#include <ieeefp.h>

typedef enum {
       FP_RN,          /* round to nearest */
       FP_RM,          /* round down to minus infinity */
       FP_RP,          /* round up to plus infinity */
       FP_RZ           /* truncate */
} fp_rnd_t;


fp_rnd_t
fpgetround(void);

fp_rnd_t
fpsetround(fp_rnd_t direction);

typedef enum { FP_PS, /* 24 bit (single-precision) */ FP_PRS, /* reserved */ FP_PD, /* 53 bit (double-precision) */ FP_PE /* 64 bit (extended-precision) */ } fp_prec_t;


fp_prec_t
fpgetprec(void);

fp_prec_t
fpsetprec(fp_prec_t precision);

#define fp_except_t    int
#define FP_X_INV       0x01    /* invalid operation */
#define FP_X_DNML      0x02    /* denormal */
#define FP_X_DZ                0x04    /* zero divide */
#define FP_X_OFL       0x08    /* overflow */
#define FP_X_UFL       0x10    /* underflow */
#define FP_X_IMP       0x20    /* (im)precision */
#define FP_X_STK       0x40    /* stack fault */

fp_except_t
fpgetmask(void);

fp_except_t
fpsetmask(fp_except_t mask);

fp_except_t
fpgetsticky(void);

fp_except_t
fpresetsticky(fp_except_t sticky);

解説

浮動小数点例外が検出されると、例外スティッキフラグが設定され、例外マスク が検査されます。マスクが設定されている場合はトラップが発生します。この ルーチンでは、浮動小数点例外マスクの設定、および例外が発生した後での例外 スティッキフラグのリセットができます。浮動小数点丸めモードと精度も 設定できます。

fpgetround() 関数は、現在の浮動小数点丸めモードを戻します。

fpsetround() 関数は、浮動小数点丸めモードを設定し、前のモードを 戻します。

fpgetprec() 関数は、現在の浮動小数点精度を戻します。

fpsetprec() 関数は、浮動小数点精度を設定し、前の精度を戻します。

fpgetmask() 関数は、現在の浮動小数点例外マスクを戻します。

fpsetmask() 関数は、浮動小数点例外マスクを設定し、前のマスクを戻します。

fpgetsticky() 関数は、現在の浮動小数点スティッキフラグを戻します。

fpresetsticky() 関数は、浮動小数点スティッキフラグをクリアし、前のフラグ を戻します。

以下は、0 除算によるトラップを防ぐコード例です。

fpsetmask(~FP_X_DZ);
a = 1.0;
b = 0;
c = a / b;
fpresetsticky(FP_X_DZ);
fpsetmask(FP_X_DZ);

関連項目

isnan(3)

警告

浮動小数点例外が発生した後、かつ、マスクを設定する前に、 スティッキフラグをリセットする必要があります。スティッキフラグをリセット する前に別の例外が発生した場合は、誤った例外タイプが 通知されることがあります。

歴史

このルーチンは、同じ名前の SysV/386 ルーチンに基づいています。

FPGETROUND (3) August 23, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.