, начиная с 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 ++, подробно здесь .