我正在寻找的详细信息long double,并__float128在GCC/86(更多的是出于好奇不是因为的实际问题).
很少有人可能会需要这些(我只是,这是第一次真正需要的double),但我想你知道你的工具箱里有什么以及它的含义仍然值得(而且很有趣).
有鉴于此,请原谅我有些开放的问题:
double,或者它们是否属于一流类型?"long double" site:gcc.gnu.org/onlinedocs没有给我很多真正有用的东西.float,并且不关心是8或16字节的内存是烧毁...是合理的期望,人们可以也只是跳long double或__float128代替double无显著的性能影响?long double类型应该消除此问题.另一方面,我理解long double类型是互斥的-mfpmath=sse,因为SSE中没有"扩展精度"这样的东西.__float128另一方面,SSE数学应该可以完美地工作(尽管没有四分之一精度指令肯定不适用于1:1指令库).我对这些假设是对的吗?(3.和4.可能可以通过花费在分析和反汇编上的一些工作来解决,但也许其他人之前有过相同的想法,并且已经完成了这项工作.)
背景(这是TL; DR部分):
我最初绊倒了long double,因为我一直在寻找起来DBL_MAX的<float.h>,并incidentially LDBL_MAX是在下一行."哦,看,GCC实际上有128位双打,不是我需要它们,但是......很酷"是我的第一个念头.惊喜,惊喜:sizeof(long double)回报12 ......等等,你的意思是16?
毫不奇怪,C和C++标准没有给出类型的非常具体的定义.C99(6.2.5 10)表示数字double是long doubleC++ 03状态(3.9.1 8)的一个子集,long double其精度至少与double(同样的,只是措辞不同)相同.基本上,标准把一切的实现,以同样的方式与long, …
在我的项目中,我必须在double元素矩阵上计算除法,乘法,减法和加法.问题是,当矩阵的大小增加时,我的输出的准确性会受到严重影响.目前我正在使用double我认为使用8 bytes内存的每个元素并且具有16 digits与小数位无关的精度.即使对于大尺寸的矩阵,所有元素占用的存储器也在几千字节的范围内.所以我可以负担得起datatypes需要更多内存的东西.所以我想知道哪种数据类型更精确double.我尝试在一些书中搜索,我可以找到long double.但我不知道它的精确度是多少.如果我想要比这更精确怎么办?