草庐IT

c++ - 如何诊断 g++ 4.3.4 中对 sqrt(int&) 的模糊调用

我的代码如下:#include#includefloatfoo(floatf){std::cout即使使用-pedantic-std=c++98-Wall-Wextra也不会报告最后一行中的调用不明确,但它不一定在其他编译器中工作,因为同样的原因foo(i)没有。gcc将以下内容添加到命名空间std:templateinlinetypename__gnu_cxx::__enable_if::__value,double>::__typesqrt(_Tp__x){return__builtin_sqrt(__x);}也就是说,它为所有整数类型X添加了inlinedoublesqrt(X)

c++ - sqrt(x) 和 pow(x,0.5) 的区别

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我想知道为什么在C/c++中有sqrt()函数,因为我们可以使用pow(x,0.5);sqrt(x)与pow(x,0.5)有何不同。有sqrt函数的特定原因吗?

c++ - GNU C++ 中程序的奇怪行为,使用 float

看看这个程序:#include#includeusingnamespacestd;typedefpaircoords;doubledist(coordsa,coordsb){returnsqrt((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second));}intmain(){coordsA=make_pair(1,0);coordsB=make_pair(0,1);coordsC=make_pair(-1,0);coordsD=make_pair(0,-1);cerr.precision(2

c++ - 为什么在我的计算机上没有 g++ 中的 -O2 时 sqrt 会变得更快?

考虑以下代码:#include#includeconstintCOUNT=1000000000;intmain(){doublesum=0;for(inti=1;i没有-O2,它在我的电脑上只运行2.9s,而使用-O2运行6.4s。我的电脑是Fedora23,g++5.3.1。我在Ubuntu14.04(使用g++4.8)上尝试过同样的事情,它没有问题(所有6.4s)。 最佳答案 原始版本使用调用glibcsqrt函数。优化版使用SSEsqrtsd指令。但是在指令完成后,它会检查结果值是否不是NaN。如果结果值为NaN,则它调用gl

c++ - 我可以将此宏更改为内联函数而不影响性能吗?

(编辑:让我们将其命名为“测量如何出错的教训。”但我仍然没有弄清楚究竟是什么导致了差异。)我发现了一个非常快的整数平方根函数here通过马克·克朗。至少在我的机器上使用GCC,它显然是我测试过的最快的整数平方根函数(包括Hacker'sDelight、thispage和标准库中的floor(sqrt())中的函数)。稍微清理一下格式、重命名变量并使用固定宽度类型后,它看起来像这样:staticuint32_tmcrowne_isqrt(uint32_tval){uint32_ttemp,root=0;if(val>=0x40000000){root=0x8000;val-=0x4000

c++ - 如何提高小值的定点平方根

我正在使用DrDobb的文章“OptimizingMath-IntensiveApplicationswithFixed-PointArithmetic”中描述的AnthonyWilliams的定点库来使用RhumbLinemethod计算两个地理点之间的距离。当点之间的距离很大(大于几公里)时,此方法效果很好,但在较小的距离时效果很差。最坏的情况是当两点相等或接近相等时,结果是194米的距离,而我需要在距离>=1米时至少有1米的精度。通过与double浮点实现的比较,我将问题定位到fixed::sqrt()函数,该函数在小值时表现不佳:xstd::sqrt(x)fixed::sqrt

C语言二——sqrt函数

 sqrt是C语言中的一个数学函数,用于计算平方根。它的函数原型如下:doublesqrt(doublex);sqrt函数接受一个浮点数参数x,并返回x的平方根,结果也为浮点数类型。 这段代码计算了一个数字的平方根并输出结果。具体而言,它计算了16的平方根,并将结果存储在变量squareRoot中。然后,通过使用printf函数将计算结果打印出来。#include#includeintmain(){doublenumber=16.0;doublesquareRoot=sqrt(number);printf("Thesquarerootof%.2lfis%.2lf\n",number,squar

java - 为什么快速平方根反比在 Java 上如此奇怪和缓慢?

我正在尝试在java上实现FastInverseSquareRoot以加速vector规范化。但是,当我在Java中实现单精度版本时,一开始我获得的速度与1F/(float)Math.sqrt()大致相同,然后迅速下降到一半。这很有趣,因为虽然Math.sqrt使用(我假设)本地方法,但这涉及浮点除法,我听说这真的很慢。我计算数字的代码如下:publicstaticfloatfastInverseSquareRoot(floatx){floatxHalf=0.5F*x;inttemp=Float.floatToRawIntBits(x);temp=0x5F3759DF-(temp>>1

python - python : 'Pow' object has no attribute 'sqrt' 中的多变量线性化

作为Python世界的新手,我只是简单地将以下两个变量函数线性化:函数使用相当常规的牛顿法:线性化方法到目前为止,这是我尝试过的:importnumpyasnpimportmathfromsympyimportsymbols,diffd=1.7deff(arg1,arg2):return(arg1-arg2)/(np.power(np.linalg.norm(arg1-arg2),2)-np.power(d,2))deflinearize_f(f,arg1,arg2,equi_arg1,equi_arg2):arg1,arg2=symbols('arg1arg2',real=True)

python - 我怎样才能解决 y = (x+1)**3 -2 for x in sympy?

我想在sympy中为x求解y=(x+1)**3-2以找到它的反函数。我尝试使用solve,但没有得到预期的效果。这是我在cmd的IPython控制台中写的(Python3.5.2上的sympy1.0):In[1]:fromsympyimport*In[2]:x,y=symbols('xy')In[3]:n=Eq(y,(x+1)**3-2)In[4]:solve(n,x)Out[4]:[-(-1/2-sqrt(3)*I/2)*(-27*y/2+sqrt((-27*y-54)**2)/2-27)**(1/3)/3-1,-(-1/2+sqrt(3)*I/2)*(-27*y/2+sqrt((-