草庐IT

Double-precision_floating-point_f

全部标签

c++ - 可以使用 memset 来填充一组 std::complex<float> 吗?

具体来说,我想知道这一行是否:memset(cjzyp,(0,0),size_cjzy*sizeof(std::complex));将填写cjzyp,complex的数组s,具有复数零值((0,0))。 最佳答案 std::memset将转换为unsignedchar的int作为第二个参数,它不会工作。使用std::fill代替http://www.cplusplus.com/reference/algorithm/fill/cjzyp=newstd::complex[100]std::fill(cjzyp,cjzyp+100,st

c++ - 将 float 转换为表示为 int 的通用定点

我正在为我构建的一些硬件编写一个软件驱动程序,它只实现定点运算。我搜索了高低但似乎无法找到允许我将float转换为固定(x:y)+1符号位的通用算法。我还想将其表示为一个int,以便我可以测试用python和c++编写的一般模拟算法的准确性和速度比较。(我使用的是64位MacbookPro)我在诺基亚网站上找到的最接近我需要的东西http://developer.nokia.com/Community/Wiki/Fixed-point_math_for_Python但他们只转换为16:16并且不太了解常量65536.0从何而来,而我需要x:y。编辑---我仍然发现在转换回来时所有小数部

c++ - 如何继承boost::geometry::model::point?

我想继承bg::model::point用自己的功能扩展它。*point*s应存储在rtree中.以下最小示例无法编译我的派生点(boost1.54,gcc4.7.2)的用法:#include#include#include#include#include#includenamespacebg=boost::geometry;namespacebgi=boost::geometry::index;namespaceboost{namespacegeometry{namespaceindex{//apparentlynecessary:templatestructindexable>{t

c++ - 模棱两可的调用 : int to double or bool

我有一个参数类,我重载了构造函数以接受bool值或double值。当你给它一个int时,它无法构建:errorC2668:'Parameter::Parameter':ambiguouscalltooverloadedfunctioncouldbe'Parameter::Parameter(std::string,std::string,double)'or'Parameter::Parameter(std::string,std::string,bool)'我相信我有两个选择:使用int默认值重载将我的变量显式转换为double我有很多参数,其中一些是无符号长整型、float等(在多

c++ - 具有 boost::multiprecision::mpfr_float 的 Eigen3 动态矩阵

我想制作矩阵并使用Eigen3库使用它们,我的数字类型是Boost.Multiprecision的mpfr_float包装器。我可以很好地制作矩阵,但是除了矩阵加法之外,我尝试过的所有操作都失败了。仅将两个单位矩阵相乘会产生垃圾结果!这是一个MWE:#include#include#include#includenamespaceEigen{usingboost::multiprecision::mpfr_float;templatestructNumTraits{typedefboost::multiprecision::mpfr_floatReal;typedefboost::mu

c++ - 将 float 转换为字符串的最快 C++ 方法

我遇到了将float转换为字符串的问题,其中to_string对我来说太慢了,因为我的数据可能涉及几百万个float。我已经在howtowritethosedataoutfast上找到了解决方案.然而,在解决了那个问题之后,我很快意识到,float到string的转换留下了很大的影响。那么,除了使用其他非标准库之外,还有什么想法或解决方案吗? 最佳答案 以下是一些将float转换为十进制字符串表示形式的最快算法:FlorianLoitsch的Grisu:PrintingFloating-PointNumbersQuicklyandA

c++ - double float 的显示及其比较

序言我正在研究一个为不懂浮点运算的人开发的系统。出于这个原因,float比较的实现不会暴露给使用该系统的人。目前float的比较是这样发生的(由于遗留原因,这不能改变)://Ifeithernumberisnotfinite,dodefaultcomparisonif(!IsFinite(num1)||!IsFinite(num2)){output=(num1==num2);}else{//Getexponentsofbothnumberstodetermineepsilonforcomparisontmp=(OSINT32*)&num1+1;exp1=(((*tmp)>>20)&0x

c++ - 混合函数 - 增加 float

我正在浏览代码库并找到以下模板函数:templateTmix(constT&a,constT&b,constT2&interp){staticconstexprT2one=((T2)1);return(a*(one-interp))+(b*interp);}和下面的评论//You'dthinkinsteadofdoingthea*(1-t)+b*t,it'dbefaster//andonelessmultiplytodoa+(b-a)*t,right?Bad!Increasesfloating//pointexceptionoccurances.SameasLERP有人可以强调为什么这

c++ - 为什么我的 double 可以包含低于机器 epsilon 的值?

我正在使用double求解一个方程,我得到的是-7.07649e-17而不是0。我同意它非常接近,我可以说它是相等的,但是I'vereadthatthemachineepsilonfortheC++doubletypeis2^-52这比我得到的值大。那么为什么我的值比机器epsilon低?为什么该值不四舍五入为零?这没什么大不了的,但是当我进行逻辑测试时,我的值似乎不为零... 最佳答案 这个故事中有两个不同的常量。一个是epsilon,它是一个最小值,当添加到1.0时会产生不同于1.0的值。如果将较小的值添加到1.0,您将再次得到

c++ - 编译器使用的 double 表示的显式规范

最近遇到visual-c++好像不是IEEE754的问题兼容,而是使用subnormalrepresentation.也就是说,其中的doublefloat没有通常表示的1个符号位、11个指数位和52个显式存储的有效小数位,见下文。由于gcc和clang是兼容的,因此非常需要一致的跨平台行为我想知道是否可以强制visual-c++使用正常表示。或者让gcc和clang使用次正规表示当然也可以解决问题。不同双重表示的问题可以在visual-c++中重现,gcc和clang使用以下代码:#include#includeintmain(){try{std::stod("8.097571188