Есть ли быстрая реализация функции log1p? - PullRequest
4 голосов
/ 01 декабря 2011

Я хочу иметь быструю функцию log1p для Java. В Java есть Math.log1p, но он слишком медленный для моих нужд.

Я нашел этот код для log1p здесь:

http://golang.org/src/pkg/math/log1p.go

для языка GO.

Это то же самое, что и в Java, или это быстрее? (при условии, что я переведу это на Java). Кто-нибудь знает о какой-то другой быстрой реализации log1p?

Спасибо.

1 Ответ

0 голосов
/ 01 декабря 2011

, начиная с log1p(x) = Math.log(x+1), достаточно найти алгоритм быстрого натурального логарифмирования.

Быстрый натуральный логарифм в Java

Я нашел здесь следующее приближение, иоб этом мало информации, за исключением того, что он называется «Алгоритм Борхардта» и взят из книги «Мертвое воссоединение: расчет без инструментов».Аппроксимация не очень хорошая (некоторые могут сказать, что очень плохая ...), она становится хуже, чем больше значения.Но аппроксимация также является монотонной, медленно растущей функцией, что вполне достаточно для моего случая использования.

public static double log (double x) {return 6 * (x - 1) / (x + 1 +)4 * (Math.sqrt (x)));}

Это приближение в 11,7 раза быстрее, чем Math.log ().

См. этот сайт.Кроме того, сравнение производительности для математических библиотек в java.

Но, вероятно, вам нужно , чтобы ссылаться на скомпилированный материал c ++, подробно здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...