草庐IT

Double-precision_floating-point_f

全部标签

c++ - 如何在编译时静态生成 float 据?

鉴于我想对一些数据执行过滤,我如何才能避免在运行时生成这些数据,同时保持改变这些过滤器的大小和数据分布的灵active,同时保持漂亮干净的可重用代码。我知道我可以使用模板来执行如下操作:templateclassFilter{staticconstfloatf;staticconstFilternext;inlinefloat*begin(constFilter&el){return&f;}inlinefloat*end(constFilter&el){return(&f)+x+1;}};templateclassFilter{staticconstfloatf;inlinefloat

c++ - double 到固定宽度的字符串转换

我想打印一个double值,到一个不超过8个字符的字符串中。打印的数字应尽可能多,例如5.259675489205688.514e-6-9.4e-12我尝试了C++iostreams和printf风格,但都没有按照我希望的方式尊重提供的大小:cout给出:5.62525e-0055.62525e-005我知道我可以指定一个精度,但我必须在这里提供一个非常小的精度,以涵盖最坏的情况。有什么想法可以在不牺牲太多精度的情况下强制执行精确的字段宽度吗?我需要这个来打印矩阵。我真的必须想出自己的转换函数吗?5年前有人问过类似的问题:ConvertdoubletoStringwithfixedwi

c++ - float1 与 CUDA 中的 float

我注意到cuda中有一个float1结构类型。与简单的float相比,是否有任何性能优势,例如,在使用float数组与float1数组的情况下?struct__device_builtin__float1{floatx;};在float4中有一个性能优势,这取决于场合,因为对齐是4x4bytes=16bytes。是否仅用于带有float1参数的__device__函数?提前致谢。 最佳答案 关注@talonmies对帖子的评论CUDAThrustreductionwithdouble2arrays,我比较了使用CUDAThrust计

c++ - float 的类内静态 const 初始化与 C++ 中的 int 有何不同?

我有一个包含staticconst成员的类,我正在类声明中对其进行初始化:#includeclassFoo{public:staticconstinti=9;staticconstfloatf=2.9999;};intmain(){std::cout当使用带有选项--std=c++11的GCC4.8.2编译时,它给出了这个编译错误:foo.cpp:7:32:error:‘constexpr’neededforin-classinitializationofstaticdatamember‘constfloatFoo::f’ofnon-integraltype[-fpermissive]

c++ - 将 std::complex<double> 类型转换为 __complex128

我正在尝试使用GCC中的quadmath库。我有一个复数double值,我想将其类型转换为相应的四精度复数__complex128。以下是一个最小的(非)工作示例:#include#include#includeusingnamespacestd::complex_literals;intmain(){std::complexx=1+2i;std::printf("x=%5.5g+%5.5g\n",x.real(),x.imag());__complex128y=2+2i;y=x;return0;}当我尝试编译这段代码时g++test.cpp-lquadmath-otest我收到以下错

c++ - 为什么 boost::call_traits<double>::param_type 是 "const double&"而不是 "double"

我在win32program@windows7机器上使用代码“boost::call_traits::param_type”。令我惊讶的是,它不是“double”而是“constdouble&”。我认为所有原始类型都适合对函数参数使用“按值传递”,这不是常识吗?因为很多人会使用is_pod来判断是否使用引用,不是吗? 最佳答案 根据doc,该优化显然只适用于“小型”内置类型。.快速浏览source,看起来“小”类型被认为是满足sizeof(T)的类型.在32位机器上,这显然不包括double.在某些情况下,将参数传递为double可

c++ - std::vector<double> 销毁抛出 sigabrt

我有一个std::vectorGDB在其中显示它包含这些值:Wphvector[0]10.750281685547618double[1]0.0053087812248281997double[2]4.2807534148705719e-08double[3]5.7427427663508097e-07double[4]0double在函数退出时自动销毁时,它会抛出一个SIGABRT。0raiseraise.c640x7fffeec5ad051abortabort.c920x7fffeec5eab62__libc_messagelibc_fatal.c1890x7fffeec93d7b

c++ - 一种快速的、基于排名的 float 基数排序?

我正在寻找一个快速稳定的基数排序实现(支持float),它返回排序顺序的索引而不是排序值。PierreTerdiman的版本来自他的文章"RadixSortRevisited"完全符合我的要求,但它已有13年以上的历史,不适合现代流水线CPU。MichaelHerf的来自"RadixTricks"的RadixSort11速度非常快,唯一的问题是它返回排序后的值而不是索引,而且它会破坏输入数组的值。如有任何帮助,我们将不胜感激。 最佳答案 你可以展开每个项目以包含其原始索引(这可以在第一次计数过程中完成)。当然,出于排序目的,索引数字

c++ - 用 boost::spirit 解析成一个 vector<vector<double>>

我的目的是将逗号分隔的值列表解析为嵌套vector。这个列表是二维的。基本问题是:是否可以用boost::spirit解析成vector的vector?类似于“牵引力”下的表格:''RPM0,5000,10000,15000,20000,25000''Temp'-40.,0.,20.,40.''Traction200.,175.,170.,165.,160.,150.200.,175.,170.,165.,160.,150.165.,165.,160.,155.,145.,145.160.,155.,150.,145.,145.,140.'下一步,我想读入4维数据,但目前我正在努力处理

c++ - 将 float 组图像转换为可用于 opencv 的格式

我想知道是否有一种简单的方法可以将我的float组图像转换为iplimage,这可以由opencv处理。当然,我可以创建一个具有相同大小的空iplimage,并将所有像素从我的float组图像复制到empltyiplimage,但是是否有更优雅的解决方案。也许是一种更快、内存消耗更少的方法,因为源图像非常大,复制过程需要一段时间。最好的问候,正音 最佳答案 你可以这样做(假设32位float):float*my_float_image_data;CvSizesize;size.height=height;size.width=wid