Какие логарифмические функции / методы доступны в target-c / cocoa-touch? - PullRequest
9 голосов
/ 21 мая 2009

Я пытался найти логарифм + target-c, но все, что я получаю, это тестовые страницы по математике от учителей или объяснения, что такое логарифм;)

У меня есть некоторые измерения, например 83912,41234, а другие 32,94232. Мне нужно сжать этот огромный спектр до значений от 0 до 100, и 32,94232 будет, по крайней мере, больше 2, где 83912,41234 будет около 100. Поэтому я думаю, что функция логарифма будет моим другом здесь.

UPDATE: Я наткнулся на файл math.h через «Открыть быстро» (очень хорошая команда в Xcode: SHIFT + CMD + D), и там, большой сюрприз:

extern double log ( double );
extern float logf ( float );

extern double log10 ( double );
extern float log10f ( float );

extern double log2 ( double );
extern float log2f ( float );

extern double log1p ( double );
extern float log1pf ( float );

extern double logb ( double );
extern float logbf ( float );

Но: нет текста, нет комментариев. Я не такой уродец. Так что было бы неплохо какое-то описание, то есть какой логарифм для какого случая, как выглядит кривая и т. Д., Поэтому любые отличные ссылки высоко ценятся!

Ответы [ 3 ]

15 голосов
/ 20 октября 2009

Также, получая логарифм с произвольной базой:

float logx(float value, float base) 
{
   return log10f(value) / log10f(base);
}
2 голосов
/ 21 мая 2009

math.h является стандартным включением. На странице Википедии имеется некоторая документация.

Еще один способ «сжать» значения - подогнать их к прямой линии. Для вас пример:

Уравнение прямой

y = mx + c
y = 'squished' value.
x = The value you want to squish
m = Gradient of the line
c = intercept on the y axis

Быстрый расчет ваших значений дает что-то вроде:

y = 1.17e-3 x + 1.96

Надеюсь, это поможет.

1 голос
/ 21 мая 2009

Как насчет того, чтобы взять книгу о функциях стандартной библиотеки C?

В противном случае вы можете попробовать man-страницы: man 3 logf, например

...