EJG*_*G89 4 c++ root cubic visual-studio-2012
我正在 Visual Studio 2012 Professional (Windows) 中用 C/C++ 编写一个程序,其中包括使用pow(). 我运行分析器来找出为什么需要这么长时间才能运行,我发现这pow()就是瓶颈。
我重写了诸如
pow(x,1.5)到x*sqrt(x)
和
pow(x,1.75)到sqrt(x*x*x*sqrt(x))
这显着提高了程序的速度。
有一些权力是这样的pow(x,1.0/3.0),所以我寻找立方根函数cbrt()来加快速度,但它似乎在 Visual Studio 中不可用,我几乎无法想象,所以我的问题是:
我在哪里可以找到cbrt()Visual Studio 2012 Professional 中的该函数,如果没有,除了 之外还有哪些替代方案pow(x,1.0/3.0)?
亲切的问候,
恩斯特·扬
该站点探索了几种用 C 语言有效计算立方根的计算方法,并且有一些源代码可供下载。
(编辑:谷歌搜索“快速立方根”会出现几个更有前途的搜索结果。)
立方根是一个令人感兴趣的主题,因为它们在许多常见公式中使用,并且 Microsoft Visual Studio 中不包含快速立方根函数。
在没有特殊立方根函数的情况下,典型的策略是通过幂函数进行计算(例如,pow(x, 1.0/3.0))。当负数处理不当时,这可能会在速度和准确性方面出现问题。
他的网站有一些关于所使用方法的基准。他们都比 快得多pow()。
Run Code Online (Sandbox Code Playgroud)32-bit float tests ---------------------------------------- cbrt_5f 8.8 ms 5 mbp 6.223 abp pow 144.5 ms 23 mbp 23.000 abp halley x 1 31.8 ms 15 mbp 18.961 abp halley x 2 59.0 ms 23 mbp 23.000 abp newton x 1 23.4 ms 10 mbp 12.525 abp newton x 2 48.9 ms 20 mbp 22.764 abp newton x 3 72.0 ms 23 mbp 23.000 abp newton x 4 89.6 ms 23 mbp 23.000 abp
请参阅该网站以获取可下载的源代码。
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |