Ответ 1
Я думаю, вы ответили на свой вопрос.:-) Там нет log2(x)
, потому что вы можете сделать log(x, 2)
. Как пишет Zen of Python (
Изменить: log2 был пересмотрен в и добавлен в Python 3.3.
почему он не существует?
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
Я знаю, что могу делать log (x, 2), но log2 действительно распространен, поэтому я немного озадачен.
О, похоже, он определен только в C99, а не C90, я думаю, это отвечает на мой вопрос. Все еще кажется глупым.
Я думаю, вы ответили на свой вопрос.:-) Там нет log2(x)
, потому что вы можете сделать log(x, 2)
. Как пишет Zen of Python (
Изменить: log2 был пересмотрен в и добавлен в Python 3.3.
Я не уверен, что вы хотите, но:
- С математической точки зрения вы можете сделать для exmaple math.log(x)/math.log(2).
- Если вход X имеет целочисленный тип, и вы ожидаете интегрального округленного результата - вы можете сделать это быстрее, с правом сдвига. Это работает с командой SHR и без taylor series + локальная интерполяция, находящаяся под капотом вызовов libc log().