fenv

Autres langues

Langue: ja

Autres versions - même langue

Version: 2000-08-12 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept - ÉâÆ°¾®¿ôÅÀ¤Î´Ý¤á¤ÈÎã³°¤Î¼è¤ê°·¤¤

½ñ¼°


#include <fenv.h>



int feclearexcept(int excepts);


int fegetexceptflag(fexcept_t *flagp, int excepts);
int feraiseexcept(int excepts);
int fesetexceptflag(const fexcept_t *flagp, int excepts);
int fetestexcept(int excepts); int fegetround(void);
int fesetround(int rounding_mode); int fegetenv(fenv_t *envp);
int feholdexcept(fenv_t *envp);
int fesetenv(const fenv_t *envp);
int feupdateenv(const fenv_t *envp);

-lm ¤Ç¥ê¥ó¥¯¤¹¤ë¡£

ÀâÌÀ

¤³¤ì¤é¤Î 11 ¸Ä¤Î´Ø¿ô¤Ï C99 ¤ÇÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢ ÉâÆ°¾®¿ôÅÀ¤Î´Ý¤á¤ÈÎã³° (¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¡¢¥¼¥í¤Ë¤è¤ë½ü»»¤Ê¤É) ¤Î¼è¤ê°·¤¤¤òµ¬Äꤹ¤ë¡£

Îã³°

DivideByZero Îã³°¤Ï¡¢Í­¸Â¤Î¿ôÃͤËÂФ¹¤ë±é»»¤¬¡¢ ̵¸ÂÂç¤ÎÅú¤¨¤òÀ¸À®¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤Ëµ¯¤³¤ë¡£

Overflow Îã³°¤Ï¡¢ ·ë²Ì¤¬ÉâÆ°¾®¿ôÅÀ¿ôÃͤÇɽµ­¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ë¡¢ ¤½¤ÎÀäÂÐÃͤ¬É½¸½²Äǽ¤ÊÉâÆ°¾®¿ôÅÀ¿ô¤Î (Í­¸Â¤Î) ºÇÂçÃͤè¤ê¤â (¤º¤Ã¤È) Â礭¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤è¤¦¤Ê¾ì¹ç¤Ëµ¯¤³¤ë¡£

Underflow Îã³°¤Ï¡¢ ·ë²Ì¤¬ÉâÆ°¾®¿ôÅÀ¿ôÃͤÇɽµ­¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ë¡¢ ¤½¤ÎÀäÂÐÃͤ¬Àµ¤ÎÀµµ¬²½ÉâÆ°¾®¿ôÅÀ¿ô¤ÎºÇ¾®Ãͤè¤ê¤â ¾®¤µ¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦ (¤½¤·¤Æ ÈóÀµµ¬²½¿ô¤Çɽ¸½¤·¤¿¾ì¹ç¤ËÈó¾ï¤ËÀºÅÙ¤ò¼º¤Ã¤Æ¤·¤Þ¤¦) ¤è¤¦¤Ê¾ì¹ç¤Ëµ¯¤³¤ë¡£

Inexact Îã³°¤Ï¡¢´Ý¤á¸å¤Î±é»»·ë²Ì¤¬¡¢ ̵¸ÂÀºÅ٤ηë²Ì¤È°Û¤Ê¤ë¤è¤¦¤Ê¾ì¹ç¤Ëµ¯¤³¤ë¡£ Overflow ¤Þ¤¿¤Ï Underflow ¤¬µ¯¤­¤¿¤È¤­¤Ë¤Ï¡¢¾ï¤Ë¤³¤ÎÎã³°¤âµ¯¤³¤ë¡£

Invalid Îã³°¤Ï¡¢±é»»·ë²Ì¤¬¤¦¤Þ¤¯ÄêµÁ¤Ç¤­¤Ê¤¤·ë²Ì¤òÀ¸¤¸¤ë¤è¤¦¤Ê¾ì¹ç¤Ëµ¯¤³¤ë¡£ Î㤨¤Ð 0/0¡¢Ìµ¸ÂÂç - ̵¸ÂÂç¡¢sqrt(-1) ¤Ê¤É¡£

Îã³°½èÍý

Îã³°¤Îɽ¤·Êý¤Ë¤Ï 2 ¤Ä¤ÎÊýË¡¤¬¤¢¤ë¡£ ¤Ò¤È¤Ä¤Ï¡¢Ã±°ì¤Î¥Ó¥Ã¥È¤Ç (Îã³°¤¬¤¢¤Ã¤¿¤«¤Ê¤«¤Ã¤¿¤«¤ò) ɽ¤¹ÊýË¡¤Ç¡¢ ¤³¤ì¤é¤Î¥Ó¥Ã¥È¤ÏÀ°¿ô¤Î¤¢¤ë¥Ó¥Ã¥È°ÌÃÖ¤ËÂбþ¤·¡¢¥Ó¥Ã¥È¤ÎÂбþÉÕ¤±¤Ï ¼ÂÁõ°Í¸¤Ç¤¢¤ë¡£¤â¤¦°ì¤Ä¤Ï¡¢ÆâÉô¹½Â¤ÂΤò»È¤Ã¤Æɽ¤¹ÊýË¡¤Ç¡¢ ¤³¤ÎÊýË¡¤ÎÊý¤¬Îã³°¤Ë´Ø¤¹¤ë¤è¤ê¿¤¯¤Î¾ðÊó (Î㤨¤ÐÎã³°¤¬µ¯¤³¤Ã¤¿¥³¡¼¥É¤Î¥¢¥É¥ì¥¹¤Ê¤É) ¤¬´Þ¤Þ¤ì¤ë¡£

FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW, FE_UNDERFLOW ¤Î³Æ¥Þ¥¯¥í¤Ï¡¢¤½¤ì¤¾¤ìÂбþ¤¹¤ëÎã³°¤Î½èÍý¤ò ¼ÂÁõ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤ËÄêµÁ¤µ¤ì¤ë¡£ ¤³¤Î¤È¤­Âбþ¤¹¤ë¥Ó¥Ã¥È¤ò¤½¤ì¤¾¤ìÄêµÁ¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¢ Îã³°½èÍý´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ò¡¢Î㤨¤Ð FE_OVERFLOW|FE_UNDERFLOW ¤È¤¤¤¦À°¿ô¤Î°ú¤­¿ô¤òÍѤ¤¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¾¤ÎÎã³°¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ FE_ALL_EXCEPT ¥Þ¥¯¥í¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëÎã³°¤ËÂбþ¤¹¤ë¥Ó¥Ã¥È¤¬Á´¤Æ¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë (¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëÎã³°Á´¤Æ¤ÎÏÀÍýϤǤ¢¤ë)¡£

feclearexcept() ´Ø¿ô¤Ï¡¢°ú¤­¿ô excepts ¤Î¥Ó¥Ã¥ÈÎó¤Ç»ØÄꤵ¤ì¤¿Îã³°¤ò¥¯¥ê¥¢¤¹¤ë (½èÍý¤Ï¼ÂÁõ¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëÎã³°¤Ë¤Ä¤¤¤Æ¤Î¤ß¹Ô¤ï¤ì¤ë)¡£

fegetexceptflag() ´Ø¿ô¤Ï¡¢°ú¤­¿ô excepts ¤Ç»ØÄꤵ¤ì¤¿Îã³°¥Õ¥é¥°¤Î¾õÂÖ¤ò *flagp ¤¬»Ø¤¹ÆâÉô¥ª¥Ö¥¸¥§¥¯¥È¤ËÊݸ¤¹¤ë¡£

feraiseexcept() ´Ø¿ô¤Ï¡¢ excepts ¤Î¥Ó¥Ã¥ÈÎó¤Ç»ØÄꤵ¤ì¤¿Îã³°¤Î¤¦¤Á¡¢ ¼ÂÁõ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤â¤Î¤òȯÀ¸¤µ¤»¤ë¡£

fesetexceptflag() ´Ø¿ô¤Ï¡¢ excepts ¤Ç»ØÄꤵ¤ì¤¿Îã³°¤ËÂбþ¤¹¤ë¥Õ¥é¥°¤Î¾õÂÖ¤ò *flagp ¤ÎÃͤËÀßÄꤹ¤ë¡£ *flagp ¤ÎÃͤϡ¢¤³¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë fegetexceptflag() ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¼èÆÀ¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ (¤³¤Î¤È¤­¡¢ fegetexceptflag() ¤ÎºÇ¸å¤Î°ú¤­¿ô¤Ë¤Ï¡¢ fesetexceptflag() ¤ËÅϤ¹ excepts ¤Î¤¹¤Ù¤Æ¤Î¥Ó¥Ã¥È¤ò´Þ¤àÃͤò»ØÄꤹ¤ë¤³¤È)¡£

fetestexcept() ´Ø¿ô¤Ï¡¢ excepts °ú¤­¿ô¤Ç¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¥Ó¥Ã¥È¤Î¤¦¤Á¡¢ ¸½ºßÀßÄꤵ¤ì¤Æ¤¤¤ëÎã³°¤ËÂбþ¤¹¤ë¥Ó¥Ã¥È¤¬ 1 ¤Ë¤Ê¤Ã¤¿¥ï¡¼¥É¤òÊÖ¤¹¡£

´Ý¤á

FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD ¤Î³Æ¥Þ¥¯¥í¤Ï¡¢¤½¤ì¤¾¤ìÂбþ¤¹¤ë´Ý¤á¤ÎÊý¸þ¤ò ¼ÂÁõ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤ËÄêµÁ¤µ¤ì¤ë¡£

fegetround() ´Ø¿ô¤Ï¸½ºß¤Î´Ý¤á¥â¡¼¥É¤ËÂбþ¤¹¤ë¥Þ¥¯¥í¤òÊÖ¤¹¡£

fesetround() ´Ø¿ô¤Ï´Ý¤á¥â¡¼¥É¤ò°ú¤­¿ô¤ËÍ¿¤¨¤é¤ì¤¿Ãͤˤ·¡¢ À®¸ù¤·¤¿¤é¥¼¥í¤òÊÖ¤¹¡£

ÉâÆ°¾®¿ôÅÀ´ØÏ¢¤Î´Ä¶­

ÉâÆ°¾®¿ôÅÀ´ØÏ¢¤Î´Ä¶­¤ÎÁ´ÂΤϡ¢ À©¸æ¥â¡¼¥É¤ä¾õÂ֥ե饰¤â´Þ¤á¡¢ fenv_t ·¿¤ÎÆâÉô¥ª¥Ö¥¸¥§¥¯¥È°ì¤Ä¤Ç¼è¤ê°·¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Î´Ä¶­¤Ï¡¢ (const fenv_t * ·¿¤Î) FE_DFL_ENV ¤Ç¼¨¤µ¤ì¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¥×¥í¥°¥é¥à¤Î³«»Ï»þ¤Ë¹½ÃÛ¤µ¤ì¤ë´Ä¶­¤Ç¤¢¤ê¡¢ ISO C ¤Ç¤Ï¡¢´Ý¤á¥â¡¼¥É¤òºÇ¤â¶á¤¤Ãͤؤδݤá (FE_TONEAREST) ¤ËÀßÄꤷ¡¢¤¹¤Ù¤Æ¤ÎÎã³°¤ò¥¯¥ê¥¢¤·¡¢ÉÔÄä»ß (non-stop) (Îã³°¤¬µ¯¤­¤Æ¤â·Ñ³¤¹¤ë) ¥â¡¼¥É¤È¤¹¤ë¤è¤¦¤Ëµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£

fegetenv() ´Ø¿ô¤Ï¡¢¸½ºß¤ÎÉâÆ°¾®¿ôÅÀ´Ä¶­¤ò¡¢¥ª¥Ö¥¸¥§¥¯¥È *envp ¤ËÊݸ¤¹¤ë¡£

feholdexcept() ´Ø¿ô¤âƱ¤¸Æ°ºî¤ò¹Ô¤¤¡¢ ¤µ¤é¤Ë²Äǽ¤Ç¤¢¤ì¤Ð¡¢Á´¤Æ¤ÎÎã³°¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¡¢ non-stop (Îã³°»þ¤Ë¤â¼Â¹Ô¤ò·Ñ³) ¥â¡¼¥É¤ËÀßÄꤹ¤ë¡£

fesetenv() ´Ø¿ô¤Ï¡¢ÉâÆ°¾®¿ôÅÀ´Ä¶­¤ò¡¢¥ª¥Ö¥¸¥§¥¯¥È *envp ¤«¤é¼è¤ê½Ð¤·¤¿ÃͤËÌ᤹¡£ ¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢Í­¸ú¤Ç¤¢¤ë¤³¤È¤¬»öÁ°¤Ë¤ï¤«¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ Î㤨¤Ð¡¢ fegetenv() ¤ä feholdexcept() ¤ò¸Æ¤Ó½Ð¤·¤¿·ë²Ì¤Ç¤¢¤ë¤È¤«¡¢ FE_DFL_ENV ¤ËÅù¤·¤¤¤È¤«¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ÏÎã³°¤òȯÀ¸¤·¤Ê¤¤¡£

feupdateenv() ´Ø¿ô¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È *envp ¤¬É½¸½¤¹¤ëÉâÆ°¾®¿ôÅÀ´Ä¶­¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¡£ ¤¿¤À¤·¡¢¸½ºßȯÀ¸¤·¤Æ¤¤¤ëÎã³°¤Ï¥¯¥ê¥¢¤µ¤ì¤Ê¤¤¡£ ¤³¤Î´Ø¿ô¤ò¸Æ¤ó¤À¸å¤ËΩ¤Ã¤Æ¤¤¤ëÎã³°¤Ï¡¢ ´Ø¿ô¤ò¸Æ¤ÖÁ°¤ÎÃÍ¤È *envp ¤ÎÃͤȤΥӥåȤ´¤È¤Î OR ¤ò¼è¤Ã¤¿¤â¤Î¤Ë¤Ê¤ë¡£ ¾åµ­¤ÈƱÍͤˡ¢¥ª¥Ö¥¸¥§¥¯¥È *envp ¤Ï¡¢»öÁ°¤ËÍ­¸ú¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

ÊÖ¤êÃÍ

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢À®¸ù¤Î¾ì¹ç 0 ¤òÊÖ¤·¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È 0 °Ê³°¤òÊÖ¤¹¡£

½àµò

IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99.

Ãí°Õ

glibc ¤Ç¤ÎÃí°Õ

²Äǽ¤Ê¾ì¹ç¤Ë¤Ï¡¢GNU C Library ¤Ï¥Þ¥¯¥í FE_NOMASK_ENV ¤òÄêµÁ¤¹¤ë¡£¤³¤Î¥Þ¥¯¥í¤Ï¤¹¤Ù¤Æ¤ÎÎã³°¤Ç¥È¥é¥Ã¥×¤¬À¸¤¸¤ë¤è¤¦¤Ê´Ä¶­¤òɽ¤¹¡£ #ifdef ¤ò»È¤Ã¤Æ¤³¤Î¥Þ¥¯¥í¤ò¥Æ¥¹¥È¤Ç¤­¤ë¡£¤³¤ì¤Ï _GNU_SOURCE ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤Ã¤ÆÄêµÁ¤µ¤ì¤ë¡£ C99 ɸ½à¤ÏÉâÆ°¾®¿ôÅÀ¥Þ¥¹¥¯ (Î㤨¤ÐÆÃÄê¤Î¥Õ¥é¥°¤Ç¤Î¥È¥é¥Ã¥×¤Ê¤É) ¤Î³Æ¥Ó¥Ã¥È¤ÎÀßÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤ÏÄêµÁ¤·¤Æ¤¤¤Ê¤¤¡£ glibc 2.2 ¤Ï feenableexcept() ´Ø¿ô¤È fedisableexcept() ´Ø¿ô¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¡¢ ³Æ¡¹¤ÎÉâÆ°¾®¿ôÅÀ¥È¥é¥Ã¥×¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤Þ¤¿ fegetexcept() ¤Ë¤è¤Ã¤Æ¾õÂÖ¤ÎÌ䤤¹ç¤ï¤»¤â¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£

#define _GNU_SOURCE


#include <fenv.h> int feenableexcept(int excepts);
int fedisableexcept(int excepts);
int fegetexcept(void);

feenebleexcept() ´Ø¿ô¤È fedisableexcept() ´Ø¿ô¤Ï excepts ¤Ë¤è¤Ã¤Æɽ¸½¤µ¤ì¤ë³ÆÎã³°¤Î¥È¥é¥Ã¥×¤òÍ­¸ú (̵¸ú) ¤Ë¤¹¤ë¡£ À®¸ù¤·¤¿¾ì¹ç¤ÏľÁ°¤ËÍ­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤¿Îã³°¤Î¥»¥Ã¥È¤òÊÖ¤¹¡£ ¼ºÇÔ¤·¤¿¾ì¹ç¤Ï -1 ¤òÊÖ¤¹¡£ fegetexcept() ´Ø¿ô¤Ï¸½ºßÍ­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ëÎã³°Á´¤Æ¤«¤é¤Ê¤ë¥»¥Ã¥È¤òÊÖ¤¹¡£

´ØÏ¢¹àÌÜ

feature_test_macros(7)