草庐IT

浮点数二分

全部标签

c++ - 扩展精度浮点库 C/C++

我正在寻找具有以下特性的扩展精度浮点库:固定数据类型大小(即扩展精度float占用固定数量的内存)变量不需要初始化指定尾数和指数的大小C/C++接口(interface)支持非常大的float>10^10000我能找到的最接近的是IvanoPrimi的HPA库。这个库的唯一问题是我无法扩展指数(它固定为15位)。它允许我对尾数进行多种选择,但可表示的最大数字始终限于10^4932。GMP等其他库需要初始化并且不允许固定大小的数据类型。关键是我不需要任意精度,而只是扩展。但我需要有非常大的指数。感谢您的帮助!标记 最佳答案 似乎ttm

c++ - 分割大量的3D点数据

我需要对一大组3D点进行分区(使用C++)。点以二进制float组的形式存储在硬盘上,文件通常大于10GB。我需要将该集合划分为大小小于1GB的较小子集。子集中的点应该仍然具有相同的邻域,因为我需要对数据执行某些算法(例如,对象检测)。我想我可以使用KD-Tree。但是,如果不能将所有点都加载到RAM中,我如何有效地构建KD树呢?也许我可以将文件映射为虚拟内存。然后我可以保存一个指向属于一个段的每个3D点的指针,并将其存储在KD树的一个节点中。那行得通吗?还有其他想法吗?感谢您的帮助。我希望你能理解这个问题:D 最佳答案 您基本上需

c++ - 在 ARM 平台上正确检测混合端浮点格式

我最近遇到了第三方库的问题,该库使用以下代码在ARM平台上测试混合端浮点格式:#ifdefined(__arm__)&&!(__ARM_EABI__)此检查在Android平台上错误地检测到混合端格式,但在iOS平台上工作正常。经过一番研究,我发现debianArmEabiPortdocument在GCC浮点预处理器宏部分中包含以下内容(强调我的):Whenportingcodeto"armel",thefollowingpreprocessormacrosareinteresting:__VFP_FP__meansthatthefloatingpointformatinuseisth

c++ - 启用浮点异常的浮点堆栈处理

我遇到了在VisualStudio2005中打开浮点异常的问题。如果我有这样的代码:doubled=0.0;doubled2=3.0;doubled3=d2/d;如果我注册一个SEH处理程序例程,那么我可以轻松地将除零转换为C++异常并捕获它。到目前为止一切顺利。但是,当我这样做时,第一个操作数(上例中的0.0)留在FPU寄存器堆栈中。如果我这样做八次,那么从那时起,我将开始在每个浮点操作中得到一个浮点堆栈检查异常。我可以使用__asmblock来执行FSTP来处理这个问题,从而将杂散值从堆栈中弹出,一切都很好。然而,这让我很担心,因为我还没有在任何地方看到这个讨论。我如何确定应该弹出

C++ 将浮点值转换为枚举 - 但不是 VS 2010

我有一些模板代码适用于Xcode4.5和LLVM3.0,但适用于VS2010ExpressC++工具链(v10.0.30319.1)。我正在使用我无法控制的第三方API。它以只能由API函数解释的黑盒“blob”形式为我的代码提供值://API_Secretisablack-boxencapsulationofafloating-pointnumberorabooleanvalue.//Itisprovidedbyathird-partyAPI,withassociatedaccessfunctions.//Forallintentsandpurposes,it'sacompleteb

c++ - constexpr:浮点表示错误?

我希望将常量从度数转换为弧度(在编译时),所以我选择使用constexpr。但是,我的程序无法编译,因此我尝试通过一些测试来调试问题。这些测试在编译期间继续产生错误。当涉及许多有效数字时,问题似乎与浮点运算相关。我尝试了快速谷歌搜索,并阅读了Stroustrup书中的第10.4节(常量表达式)。任何帮助将不胜感激。我一定遗漏了一些明显的东西。测试代码:voidtestConstantExpressions(){constexprdoublex0=1.0;constexprdoubley0=2.0;constexprdoublez0=4.0;constexprdoublew0=x0/(y

c++ - C++ 中是否允许浮点表达式收缩?

浮点表达式有时可以在处理硬件上收缩,例如使用融合乘加作为单个硬件操作。显然,使用这些this不仅仅是一个实现细节,还受编程语言规范的约束。具体来说,C89标准不允许这样的缩略,而在C99中,只要定义了一些宏,它们是允许的。详见thisSOanswer.但是C++呢?是否不允许浮点收缩?某些标准允许吗?普遍允许? 最佳答案 总结收缩是允许的,但为用户提供了一个工具来禁用它们。标准中不明确的语言笼罩了禁用它们是否会提供预期结果的问题。我在官方C++2003标准和2017n4659草案中对此进行了调查。除非另有说明,否则C++引文均来自2

c++ - Jsoncpp 错误地写入浮点值

我正在使用jsoncpp读取JSON文件。当我写回文件时,我的浮点值略有偏差。为了进行测试,我决定将文件解析为Json::Value,然后将该值写回到文件中。我希望它看起来一样,但浮点值不同。例子:"Parameters":{"MinXValue":0.1,"MaxXValue":0.15,"MinYValue":0.25,"MaxYValue":1.1,"MinObjectSizeValue":1}写成:"Parameters":{"MinXValue":0.10000000000000001,"MaxXValue":0.14999999999999999,"MinYValue":0

c++ - 二分法输入方程,C++

我有这个代码:#include#include#includeusingnamespacestd;doublef(doublex);doublebiseccion(doublea,doubleb,doubletolerancia,intmaxiter);intmain(){doublea,b,raiz;doubletolerancia=0.00000;intmaxiter=25;cout>a;cout>b;couttolerancia)&&(numiter我希望用户在请求间隔开始之前输入它,而不是在我的代码中写入“x*x*x-x-2”。我该怎么做?我尝试使用变量来存储“x*x*x-x-

c++ - 浮点值加倍和除法

我有一个函数,我相信它会将一个int转换为一个浮点值,并将其拆分为该值的符号指数和小数部分。使用IEEE754表示浮点值。unsignedtest(unsignedx){//splitthegivenbitsofsignexponentandfraction,combinetoreturnunsignedintsign=(x&0x80000000)>>31;unsignedintexpo=(x&0x7F800000)>>23;unsignedintfrac=(x&0x007fffff);return(sign但是我不确定如何从这个浮点表示中计算出减半或加倍的值。unsigneddoub