Сложность функций из cmath

177
23 марта 2019, 05:50

Как можно узнать сложность функций из <cmath>? Например, какая асимптотика у std::exp() или std::pow()? На cppreference не нашёл.

Answer 1

Понятие сложности алгоритма определяет временную длительность и объём занимаемой памяти при его выполнении в зависимости от изменения количества элементов входной последовательности. Например, всевозможные методы сортировок могут иметь сложность n^2, n*log(n) и т.п.

Применительно к математическим функциям, типа упомянутых std::pow или std::exp нельзя говорить о такой сложности. А учитывая, что в реализациях функций (спасибо @Komdosh за смежный ответ) нет циклов, зависимых от входных значений, то и про зависимость длительности вычислений от значения аргумента говорить не приходится. Более того, реализациям не накладываются какие-то ни было ограничения, поэтому совершенно спокойно на одной машине std::exp может работать быстрее, чем std::pow, а на другой совсем наоборот.

Answer 2

Зависит от функций и реализаций. Для std::pow(a, b) это обычно O(log b). Стандарт это не оговаривает

READ ALSO
cin &gt;&gt; setter() как реализовать?

cin >> setter() как реализовать?

основная задача добавить данные введенные с клавиатуры через сеттер вопрос можно ли реализовать подобное не добавляя переменнуюСейчас...

163
Отключение и включение скринсейвера

Отключение и включение скринсейвера

Как отключить/включить скринсавер в Win10 ? Стандартные способы опробованные ниже не работают:

146
Невозможно преобразовать const char в char

Невозможно преобразовать const char в char

Программа которая заменяет каждую букву в тексте на букву которая идет после нее в алфавите через n символовПри компиляции выдает ошибку...

154