草庐IT

浮点数二分

全部标签

c++ - 使用 C++ Catch 测试浮点 std::vector

CatchC++单元测试框架是否有可能比较基于浮点类型的std::vectors?我知道我可以比较两个容器和每个元素的大小(使用Approx),但这很麻烦。整数类型vector的比较工作正常。现在,我必须使用这样的结构REQUIRE(computed.size()==expected.size());for(size_ti=0;i但我想使用一个衬里(它适用于整数类型):REQUIRE(computed==expected); 最佳答案 下面的构造由Catch2自己提供。无需自己动手。REQUIRE_THAT(computed,Cat

c++ - C++ 应用程序中 NaN 不引发浮点异常的原因

为了在我的C++程序中找到浮点变量被设置为NaN的原因,我启用了这样的浮点异常:#includefeenableexcept(FE_INVALID|FE_OVERFLOW);我知道它有效,因为当我写的时候:intval=0.0/0.0;在我的程序中出现了一个浮点异常。但是NaN在我程序的浮点计算中“扩散”,我不知道哪个变量首先设置为NaN。是什么原因导致设置为NaN的变量不会导致float异常? 最佳答案 如果任何输入有一个安静的NaN值,它会导致几乎所有消耗它的浮点运算的结果都是NaN而不会引发无效异常。最可能的解释是某些数据是从

c++ - 使用浮点文字初始化 const int

示例intmain(){constinti=1.0;//NoticeIamassigningadoubletoanintherechara[i];}问题用g++-O0-Wall-pedantic-ansi-std=c++11编译上面的代码没有错误(除了未使用的变量)。但是,如果我删除-std=c++11,我会收到以下警告:warning:ISOC++forbidsvariablelengtharray根据thisSOquestion,我相信在C++03中,代码是无效的。但是,有人可以解释一下规则在C++11中发生了什么变化吗?(这个问题是我回答的apreviousquestion的结果

c++ - Visual C++ 中的浮点精度

你好,我正在尝试使用robustpredicatesJonathanRichardShewchuk的计算几何。我不是程序员,所以我什至不确定我在说什么,我可能犯了一些基本错误。要点是谓词应该允许具有自适应浮点精度的精确运算。在我的电脑上:Asuspro31/S(CoreDueCentrino处理器)它们不工作。问题可能在于我的计算机可能使用了浮点精度方面的一些改进,这与Shewchuk使用的精度存在冲突。作者说:/*Onsomemachines,theexactarithmeticroutinesmightbedefeatedbythe*//*useofinternalextended

C++ 从 .txt 中读取浮点值并将它们放入一个未知大小的二维数组中

在C++中,我想读取一个包含float列的文本文件并将它们放入二维数组中。第一行将是第一列,依此类推。数组的大小是未知的,它取决于可能变化的行和列。我尝试过使用“getline”、“inFile>>”,但我所做的所有更改都有一些问题。例如,有没有办法在值存在后删除不需要的行/行?文件看起来像这样(+/-):字符“\t”字符“\t”字符“\n”float“\t”float“\t”float“\t”float“\n”float“\t”float“\t”float“\t”float“\n”float“\t”float“\t”float“\t”float“\n”谢谢到目前为止我有这个:intR

c++ - 有与没有额外变量的奇怪浮点行为,为什么?

当我在VC++2013(32位,无优化)中运行以下代码时:#include#include#includedoublemulpow10(doubleconstvalue,intconstpow10){staticdoubleconsttable[]={1E+000,1E+001,1E+002,1E+003,1E+004,1E+005,1E+006,1E+007,1E+008,1E+009,1E+010,1E+011,1E+012,1E+013,1E+014,1E+015,1E+016,1E+017,1E+018,1E+019,};returnpow10::max_digits10;wh

c++ - 什么是浮点推测以及它与编译器的浮点模型有何不同

英特尔C++编译器提供了两个用于控制float的选项:-fp-推测(快速/安全/严格/关闭)-fp-模型(精确/快速/严格和源/双/扩展)我想我理解fp-model的作用。但是什么是fp-speculation以及它与fp-model有什么关系?我还没有找到解释这个的任何英特尔文档! 最佳答案 -fp-model影响如何执行浮点计算,并且可以更改数值结果(通过许可不安全优化或更改中间计算的精度)结果进行评估)。-fp-speculation不会更改数值结果,但会影响操作引发的浮点标志(或者如果启用了浮点陷阱,则会采取哪些陷阱)。99

c++ - IEEE-754 浮点计算、相等和缩小

在下面的代码中,函数foo1、foo2和foo3是等价的。然而,当runfoo3没有从循环中终止时,是否存在这种情况的原因?templateTfoo1(){Tx=T(1);Ty=T(0);for(;;){if(x==y)break;y=x;++x;}returnx;}templateTfoo2(){Tx=T(0);for(;;){Ty=x+T(1);if(!(x!=y))break;++x;}returnx;}templateTfoo3(){Tx=T(0);while(x!=(x+T(1)))++x;returnx;}intmain(){printf("1float:%20.5f\n"

c++ - SSE减少浮点 vector

如何使用sse内在函数获取浮点vector的总和元素(减少)?简单的串口代码:void(float*input,float&result,unsignedintNumElems){result=0;for(autoi=0;i 最佳答案 通常您会在循环中生成4个部分和,然后在循环后对4个元素进行水平求和,例如#include#include#includefloatvsum(constfloat*a,intn){floatsum;__m128vsum=_mm_set1_ps(0.0f);assert((n&3)==0);assert(

c++ - 如何在 C++ 中编写可移植的浮点运算?

假设您正在编写一个执行大量浮点运算的C++应用程序。假设此应用程序需要在合理范围内的硬件和操作系统平台(例如32位和64位硬件、32位和64位版本的Windows和Linux...)之间具有可移植性。您如何确保您的浮点算法在所有平台上都相同?例如,如何确保32位浮点值在所有平台上都真正是32位?对于整数,我们有stdint.h但似乎不存在等效的float。[编辑]我得到了非常有趣的答案,但我想为这个问题增加一些精确度。对于整数,我可以这样写:#include[...]int32_tmyInt;并确保无论我使用何种(C99兼容)平台,myInt都是32位整数。如果我写:doublemyD