⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fenv.h

📁 C语言库函数介绍
💻 H
字号:
@函数名称:     feraiseexcept
函数原型:     void feraiseexcept(int excepts)
函数功能:     引发指定的异常
函数返回:
参数说明:     指定的浮点异常标志
FE_INEXACT   不精确的返回
FE_DIVBYZERO 除数零
FE_UNDERFLOW 下溢出
FE_OVERFLOW  上溢出
FE_INVALID  标记不准确
FE_ALL_EXCEPT 以上全部
注:前五个的值为2的某次方,即二进制数有一位为1(具体视编译器而定),最后一个为前面数或运算结果(二进制数全1)
所属文件:     <fenv.h>

#include <stdio.h>
#include <math.h>
#include <fenv.h>

double DoSomethingWrong(void)
{
	feraiseexcept(FE_OVERFLOW);
	return 1.0;
}

int main()
{
	fenv_t env;
	int sets;
	double f;
	feholdexcept(&env);/* 保存环境,清除标记并禁用捕获 */
	feclearexcept(FE_INVALID | FE_OVERFLOW);
	f=DoSomethingWrong();
	sets = fetestexcept(FE_INVALID | FE_OVERFLOW);
	if(sets & FE_INVALID)printf("infalid");
	else if(sets & FE_OVERFLOW)printf("overflow");
	else fegetexceptflag(&env,FE_DIVBYZERO);
	/* 恢复环境并引发相关的异常 */
	feupdateenv(&env);
    return 0;
}


@函数名称:     feclearexcept
函数原型:     void feclearexcept(int excepts)
函数功能:     清除指定的标记
函数返回:
参数说明:     指定的浮点异常
所属文件:     <fenv.h>

@函数名称:     fegetexceptflag
函数原型:     void fegetexceptflag(fexcept_t *flagp, int excepts)
函数功能:     保存指定的标记
函数返回:
参数说明:     flagp-指向保存结果,excepts-指定的浮点异常标志
所属文件:     <fenv.h>

@函数名称:     fesetexceptflag
函数原型:     void fesetexceptflag(const fexcept_t *flagp, int excepts)
函数功能:     恢复指定的标记
函数返回:
参数说明:     flagp-指向保存结果,excepts-指定的浮点异常标志
所属文件:     <fenv.h>

@函数名称:     fetestexcept
函数原型:     int fetestexcept(int excepts)
函数功能:     返回指定标记的设置
函数返回:     引发异常的组合字
参数说明:     指定的浮点异常标志
所属文件:     <fenv.h>


@函数名称:     fegetround
函数原型:     int fegetround(void)
函数功能:     返回对应于当前舍入方向的宏值
函数返回:     宏:
FE_TONEAREST  	最近值
FE_UPWARD 	向正无穷大
FE_DOWNWARD 	向负无穷大
FE_TOWARDZERO 	趋于零,丢分数
参数说明:
所属文件:     <fenv.h>

#include <stdio.h>
#include <math.h>
#include <fenv.h>

int main()
{
   int sd,i;
   double x,y;

   sd = fegetround();
   fesetround(FE_DOWNWARD);
   x=sqrt(.5);
printf("sqrt(.5) = 0x%08x 0x%08x = %16.15e\n",((int*)&x)[0],((int*)&x)[1],x);
   fesetround(sd);
   /*...*/
   return 0;
}


@函数名称:     fesetround
函数原型:     int fesetround(int round)
函数功能:     将当前的舍入方向设置为其参数指定的方向
函数返回:     成功则返回非零值
参数说明:     舍入方向的宏
所属文件:     <fenv.h>


@函数名称:     fegetenv
函数原型:     void fegetenv(fenv_t *envp)
函数功能:     将环境变量保存
函数返回:
参数说明:     指向保存结果的结构,除上面所述宏值,常量FE_DFL_ENV表示缺省环境
所属文件:     <fenv.h>

@函数名称:     fesetenv
函数原型:     void fesetenv(const fenv_t *envp)
函数功能:     恢复环境变量
函数返回:
参数说明:     指向保存的结构
所属文件:     <fenv.h>

#include <stdio.h>
#include <math.h>
#include <fenv.h>

void func (double x, double y)
{
   fenv_t env;
   x = x + y;        /* floating-point op; may raise exceptions */
   fegetenv(&env);    /* save state of env after add */
   /*...*/
   y = y * x;        /* floating-point op; may raise exceptions */
   fesetenv(FE_DFL_ENV);
}

int main()
{
   double x,y;
   func(x,y);
   return 0;
}

@函数名称:     feholdexcept
函数原型:     int feholdexcept(fenv_t *envp)
函数功能:     将环境保存,清除所有异常标记并建立不间断的模式
函数返回:     0-成功
参数说明:     指向保存结果的结构
所属文件:     <fenv.h>

@函数名称:     feupdateenv
函数原型:     void feupdateenv(const fenv_t *envp)
函数功能:     恢复保存的环境,然后引发其标记的异常
函数返回:
参数说明:     指向保存结果的结构
所属文件:     <fenv.h>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -