x/=y;和#includex=sqrt(y);编辑:我知道这些操作并不等价,我只是武断地提议x/=y作为x=sqrt(y)的基准。p> 最佳答案 您问题的答案取决于您的目标平台。假设你使用的是最常见的x86cpus,我可以给你这个链接http://instlatx64.atw.hu/这是一组测量的指令延迟(CPU在有参数后需要多长时间才能得到结果)以及它们如何为许多x86和x86_64处理器进行流水线处理。如果您的目标不是x86,您可以尝试自己衡量成本或查阅您的CPU文档。首先你应该得到你的操作的反汇编器(来自编译器,例如gcc:
我想知道是否可以快速执行pow(),例如thisone,比快速sqrt(x)更快地获得整数的平方根。我们知道sqrt(x)=pow(x,0.5f)我无法自己测试速度,因为我没有找到sqrt的快速实现。我的问题是:pow(x,0.5f)的快速实现是否比快速sqrt(x)更快?编辑:我的意思是powf-pow需要float而不是double。(double更具误导性) 最佳答案 关于C标准库sqrt和pow,答案是否。首先,如果pow(x,.5f)比sqrt(x)的实现更快,负责维护sqrt的工程师将用pow(x,.5f)。其次,商业库
相反,此操作返回-1.IND,因为sqrt(-1)返回-1.IND。C++reference上提到的域名错误这个sqrt返回负值不保留这实际上是i的信息?是否有某种方法可以对所有负数执行此操作,以便它返回正确的值,即pow(sqrt(-36),2)将返回-36? 最佳答案 您可以使用std::complex像这样实现您的目标:#include#includeintmain(){conststd::complexresult=std::pow(std::sqrt(std::complex(-36,0)),2);std::cout输出:
我正在尝试在python中运行二次方程。但是,它一直给我警告RuntimeWarning:invalidvalueencounteredinsqrt这是我的代码:importnumpyasnpa=0.75+(1.25-0.75)*np.random.randn(10000)print(a)b=8+(12-8)*np.random.randn(10000)print(b)c=-12+2*np.random.randn(10000)print(c)x0=(-b-np.sqrt(b**2-(4*a*c)))/(2*a)print(x0) 最佳答案
>>>np.__version__'1.7.0'>>>np.sqrt(10000000000000000000)3162277660.1683793>>>np.sqrt(100000000000000000000.)10000000000.0>>>np.sqrt(100000000000000000000)Traceback(mostrecentcalllast):File"",line1,inAttributeError:sqrt嗯...AttributeError:sqrt那么这里发生了什么?math.sqrt似乎没有同样的问题。 最佳答案
在尝试计算二维numpy数组的标准偏差时,我发现了一个非常不寻常的错误。基本上,我正在这样做:np.std(myarray,axis=1)出现以下错误:/home/user/env/local/lib/python2.7/site-packages/numpy/core/fromnumeric.pycinstd(a,axis,dtype,out,ddof,keepdims)25882589return_methods._std(a,axis=axis,dtype=dtype,out=out,ddof=ddof,->2590keepdims=keepdims)25912592defvar
x**(1/2)、math.sqrt()和cmath.sqrt()有什么区别?为什么cmath.sqrt()单独得到二次项的复根?我应该专门将它用于我的平方根吗?他们在后台做了什么不同的事情? 最佳答案 如果您分别查看cmath和math的文档,您会发现:cmath“提供对复数数学函数的访问”math“函数不能用于复数;如果您需要复数支持,请使用cmath模块中的同名函数。”(**)运算符maps到pow函数,重要的区别是pow将其参数转换为float。因此,对于相同的参数,您可能会看到三个函数的不同结果,如here所示.请注意,如
defellipse(numPoints,genX=np.linspace,HALF_WIDTH=10,HALF_HEIGHT=6.5):xs=10.*genX(-1,1,numPoints)ys=6.5*np.sqrt(1-(xs**2))return(xs,ys,"-")我收到一条错误消息,指出在平方根中遇到了无效值。我看不到它是什么。sqrt(0)=06.5*sqrt(1-(-1**2))=0它们应该可以工作,但是y值有问题,它们返回“nan” 最佳答案 可能xs**2返回一个数字>1带有负数的sqrt将返回nan(不是数字)
这个问题在这里已经有了答案:Whyismath.sqrt()incorrectforlargenumbers?(4个答案)Isfloatingpointmathbroken?(31个答案)关闭4年前。如果你取一个数,求它的平方根,去掉小数点,然后求它的二次方,结果应该总是小于或等于原数。这似乎在python中成立,直到您出于某种原因在99999999999999975425上尝试它。importmathdefcheck(n):assertmath.pow(math.floor(math.sqrt(n)),2)它看起来像math.pow(math.floor(math.sqrt(9999
引自“PythonProgramming:AnIntroductiontoComputerScience”Wecouldhavetakenthesquarerootusingexponentiation**.Usingmath.sqrtissomewhatmoreefficient.“有点”,但程度如何,如何? 最佳答案 理论上,hammar'sanswer和duffymo'sanswer是很好的猜测。但实际上,在我的机器上,它并不更有效率:>>>importtimeit>>>timeit.timeit(stmt='[n**0.5f