Помощь - Поиск - Пользователи - Календарь
Полная версия: Как вычислить Log2 ?
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Altair
Как вычислить log2 если доступны только ln(x), log10(x) ?
спасибо!

Ага, нашел...


inline double log2(double x)
{
return log(x)/0.30102999566398119521373889472449; // log2(x) = log10(x)/log10(2)
}

inline float log2f(float x)
{
return logf(x)/0.30102999566398119521373889472449f; // log2(x) = log10(x)/log10(2)
}

вопрос сводиться вот к чему, можно ли все это описать просто вот так:
Цитата

double log2(double x)
{
return log(x)/0.30102999566398119521373889472449; // log2(x) = log10(x)/log10(2)
}

?
Altair
тема закрыта. Оказывается такая функция встроенная есть smile.gif
volvo
yes2.gif Именно так и реализуется...

Только обычно еще LOG2TO10 define-ится перед этим, и пишут:

#define LOG2TO10 0.30102999566398119521373889472449
double log2(double x)
{
return log(x) / LOG2TO10;
}

Кстати, зачем так много значащих цифр? Такой точности все равно у double нет...

Цитата
такая функция встроенная есть
А вот это ты напрасно ... Не везде она есть...
Altair
Во, volvo, как раз я видел LOG2TO10 в некоторых кодах но не понял сначала что это... smile.gif
Цитата
Кстати, зачем так много значащих цифр?

сам не знаю, нашел эту функцию по поиску в http://koders.com/
smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.