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

📄 test_ieee.c

📁 标准c库代码,可以应用于各个系统提供了大量的基本函数
💻 C
字号:
#include "test.h"#include <ieeefp.h>/* Test fp getround and fp setround */void_DEFUN_VOID(test_getround){  newfunc("fpgetround/fpsetround");  line(1);  fpsetround(FP_RN);  test_iok(fpgetround(), FP_RN);  line(2);  fpsetround(FP_RM);  test_iok(fpgetround(), FP_RM);  line(3);    fpsetround(FP_RP);  test_iok(fpgetround(), FP_RP);  line(4);    fpsetround(FP_RZ);  test_iok(fpgetround(), FP_RZ);}/* And fpset/fpgetmask */void_DEFUN_VOID(test_getmask){  newfunc("fpsetmask/fpgetmask");  line(1);  fpsetmask(FP_X_INV);  test_iok(fpgetmask(),FP_X_INV);  line(2);  fpsetmask(FP_X_DX);  test_iok(fpgetmask(),FP_X_DX);  line(3);  fpsetmask(FP_X_OFL );  test_iok(fpgetmask(),FP_X_OFL);  line(4);    fpsetmask(FP_X_UFL);  test_iok(fpgetmask(),FP_X_UFL);  line(5);    fpsetmask(FP_X_IMP);  test_iok(fpgetmask(),FP_X_IMP);}void_DEFUN_VOID(test_getsticky){  newfunc("fpsetsticky/fpgetsticky");  line(1);  fpsetsticky(FP_X_INV);  test_iok(fpgetsticky(),FP_X_INV);  line(2);  fpsetsticky(FP_X_DX);  test_iok(fpgetsticky(),FP_X_DX);  line(3);  fpsetsticky(FP_X_OFL );  test_iok(fpgetsticky(),FP_X_OFL);  line(4);    fpsetsticky(FP_X_UFL);  test_iok(fpgetsticky(),FP_X_UFL);  line(5);    fpsetsticky(FP_X_IMP);  test_iok(fpgetsticky(),FP_X_IMP);}void_DEFUN_VOID(test_getroundtoi){  newfunc("fpsetroundtoi/fpgetroundtoi");  line(1);  fpsetroundtoi(FP_RDI_TOZ);  test_iok(fpgetroundtoi(),FP_RDI_TOZ);  line(2);  fpsetroundtoi(FP_RDI_RD);  test_iok(fpgetroundtoi(),FP_RDI_RD);}double _DEFUN(dnumber,(msw, lsw),	int msw _AND	int lsw){    __ieee_double_shape_type v;  v.parts.lsw = lsw;  v.parts.msw = msw;  return v.value;}  /* Lets see if changing the rounding alters the arithmetic.     Test by creating numbers which will have to be rounded when     added, and seeing what happens to them */ /* Keep them out here to stop  the compiler from folding the results */double n;double m;double add_rounded_up;double add_rounded_down;double sub_rounded_down ;double sub_rounded_up ;  double r1,r2,r3,r4;void_DEFUN_VOID(test_round){  n =                dnumber(0x40000000, 0x00000008); /* near 2 */  m =                dnumber(0x40400000, 0x00000003); /* near 3.4 */    add_rounded_up   = dnumber(0x40410000, 0x00000004); /* For RN, RP */  add_rounded_down = dnumber(0x40410000, 0x00000003); /* For RM, RZ */  sub_rounded_down = dnumber(0xc0410000, 0x00000004); /* for RN, RM */  sub_rounded_up   = dnumber(0xc0410000, 0x00000003); /* for RP, RZ */  newfunc("fpsetround");    line(1);    fpsetround(FP_RN);  r1 = n + m;  test_mok(r1, add_rounded_up, 64);    line(2);  fpsetround(FP_RM);  r2 = n + m;  test_mok(r2, add_rounded_down, 64);    fpsetround(FP_RP);  line(3);  r3 = n + m;  test_mok(r3,add_rounded_up, 64);    fpsetround(FP_RZ);  line(4);  r4 = n + m;  test_mok(r4,add_rounded_down,64);  fpsetround(FP_RN);  r1 = - n - m;  line(5);  test_mok(r1,sub_rounded_down,64);    fpsetround(FP_RM);  r2 = - n - m;  line(6);  test_mok(r2,sub_rounded_down,64);  fpsetround(FP_RP);  r3 = - n - m;  line(7);  test_mok(r3,sub_rounded_up,64);  fpsetround(FP_RZ);  r4 = - n - m;  line(8);  test_mok(r4,sub_rounded_up,64);}void_DEFUN_VOID(test_ieee){  fp_rnd old = fpgetround();  test_getround();  test_getmask();  test_getsticky();  test_getroundtoi();  test_round();  fpsetround(old);  }

⌨️ 快捷键说明

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