Подтвердить что ты не робот

Временная сложность функции С++ math library pow()?

Я хотел знать, какая худшая временная сложность функции pow(), построенной на С++?

4b9b3361

Ответ 1

Это зависит от базовой архитектуры. В самой общей архитектуре настольных компьютеров x86 это постоянная операция времени.

См. этот вопрос для получения более подробной информации о том, как он может быть реализован на x86: Как: pow (real, real) в x86

Ответ 2

Вот одна реализация, посмотрите. Разумеется, это довольно сложная часть кода, в которой есть 19 специальных случаев. Сложность времени не зависит от значений, переданных в.

Ниже приведено краткое описание метода, используемого для вычисления pow(x,y):

Method:  Let `x =  2 * (1+f)`
  • Вычислить и вернуть log2(x) в две части:   log2(x) = w1 + w2 где w1 имеет 53-24 = 29 битные конечные нули.

  • Выполните y*log2(x) = n+y' путем моделирования точности muti  арифметика, где |y'|<=0.5.

  • Возврат x**y = 2**n*exp(y'*log2)

Ответ 3

Вы не упоминаете, какую систему/архитектуру вы используете, поэтому мы оставляем догадки.

Однако , если вы не ищете специфику и просто хотите просмотреть код свободно доступной реализации См. http://www.netlib.org/fdlibm/, в частности http://www.netlib.org/fdlibm/w_pow.c

Подробнее см. в этом вопросе: fooobar.com/info/8521/...