我正在C / C ++中的Visual Studio 2012专业版(Windows)中编写程序,该程序包含使用计算许多幂的功能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()
。
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
请参阅该站点以获取可下载的源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句