Visual Studio 2012 中的三次根函数 cbrt()

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)

亲切的问候,

恩斯特·扬

Typ*_*eIA 5

该站点探索了几种用 C 语言有效计算立方根的计算方法,并且有一些源代码可供下载。

编辑:谷歌搜索“快速立方根”会出现几个更有前途的搜索结果。)

立方根是一个令人感兴趣的主题,因为它们在许多常见公式中使用,并且 Microsoft Visual Studio 中不包含快速立方根函数。

在没有特殊立方根函数的情况下,典型的策略是通过幂函数进行计算(例如,pow(x, 1.0/3.0))。当负数处理不当时,这可能会在速度和准确性方面出现问题。

他的网站有一些关于所使用方法的基准。他们都比 快得多pow()

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
Run Code Online (Sandbox Code Playgroud)

请参阅该网站以获取可下载的源代码。

  • 自从发布此答案后,链接的网站已离线。回溯机链接:http://web.archive.org/web/20131227144655/http://metamerist.com/cbrt/cbrt.htm (4认同)