Log2 в математическом модуле python

почему он не существует?

import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']

Я знаю, что могу делать log (x, 2), но log2 действительно распространен, поэтому я немного озадачен.

О, похоже, он определен только в C99, а не C90, я думаю, это отвечает на мой вопрос. Все еще кажется глупым.

Ответ 1

Я думаю, вы ответили на свой вопрос.:-) Там нет log2(x), потому что вы можете сделать log(x, 2). Как пишет Zen of Python (

Тем не менее, log2 рассматривался в (прокручивается до последних 3 сообщений), в котором добавлено несколько других математических функций C99 к модулю math для Python 2.7 и 3.2.

Изменить: log2 был пересмотрен в и добавлен в Python 3.3.

Ответ 2

Я не уверен, что вы хотите, но:

- С математической точки зрения вы можете сделать для exmaple math.log(x)/math.log(2).

- Если вход X имеет целочисленный тип, и вы ожидаете интегрального округленного результата - вы можете сделать это быстрее, с правом сдвига. Это работает с командой SHR и без taylor series + локальная интерполяция, находящаяся под капотом вызовов libc log().