Кубическая корневая функция cbrt () в 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)?

С уважением,

Эрнст Ян

3

Решение

Этот сайт исследует несколько вычислительных методов для эффективного вычисления корня куба в C и имеет некоторый исходный код, который вы можете загрузить.

(РЕДАКТИРОВАТЬ: Поиск Google для «быстрый корень куба«предлагает еще несколько многообещающих хитов.)

Корни кубов представляют интерес, поскольку они используются во многих распространенных формулах, а функция быстрого корня куба не включена в 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

Смотрите сайт для загрузки источника.

4

Другие решения

Других решений пока нет …