Python中的倒数平方根

7

11
如果像求倒数平方根这样的操作速度对您非常重要,那么Python可能不是合适的编程语言。 - interjay
1
你是否遇到了导致你问这个问题的瓶颈? - Steven Rumbalski
3
@ Interjay: 我在开发一个滤波器的测试平台时使用Python。之后这个滤波器会在微控制器上使用C/C++运行。我选择Python代替Octave,因为它是一种工程化滤波算法快速开发的方式。Python的速度不慢,而且由于背后有C/C++库的支持,所以也很可比较。 @ Steven Rumbalski: 实际上并没有。我只需要计算多次倒数平方根,因为所描述的方法是最快、最优雅的方法,所以我想可能会有一个Python命令可以使用它。 - Andreas Gschossmann
2
@ Perkins:这就是我一直在做的事情。我只是想,也许已经有一个命令,在C/C++背后运行这个算法。 @ Cairnarvon:当然这不是什么大问题。实际上,这就是我一直在做的事情。但如果Python中已经有一个命令,那么使用它会更方便。 - Andreas Gschossmann
1
感谢大家的回答 :)。 - Andreas Gschossmann
显示剩余4条评论
2个回答

9
您可以在Python中实现此操作,但不是直接的方式(即:需要调用很多函数),因此执行x**-.5可能会更快。所以这可能是一个有趣的练习,但并不实用。

https://github.com/ajcr/ajcr.github.io/blob/master/_posts/2016-04-01-fast-inverse-square-root-python.md#implementing-the-method-in-python - abhiTronix

1

你已经可以通过 x**-1/2 来进行倒数平方根运算,因此不需要编写复杂的函数来实现它,这种方式可能更快且更容易。

就像 interjay 所说,如果你真的担心这样的速度问题,那么你可能应该使用更快、更精确的语言来获得更快的方法。

我找到的唯一可能具有此功能的库是 mpmath

祝好运!


2
谢谢。是的,我正在考虑从一开始就用C/C++开发与时间相关的部分,因为这只是一个过滤器的测试平台(带有一些GUI元素进行可视化)。之后它无论如何都将在微控制器上运行C/C++。 - Andreas Gschossmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接