Я считаю, log2
легче вычислить. Вы можете умножить / разделить свое число на степень два (очень быстро), чтобы оно лежало в (0,5, 2], а затем использовать аппроксимацию Паде (возьмите M близко к N), что легко чтобы получить раз и навсегда, и чей порядок вы можете выбрать в соответствии с вашими потребностями. Вам нужны только арифметические операции, которые вы можете делать с внутренними SSE. Не забудьте добавить / удалить константу в соответствии с вышеуказанным коэффициентом масштабирования.
Если вам нужен натуральный логарифм, разделите на log2(e)
, чтобы вы могли вычислить его раз и навсегда.
Нередко можно увидеть пользовательские функции журнала в некоторых конкретных проектах. Стандартные библиотечные функции предназначены для общего случая, но вам нужно нечто более конкретное. Я искренне думаю, что это не так сложно сделать самостоятельно.