Java BigDecimal.power(BigDecimal exponent): Есть ли библиотека Java, которая это делает?

Java BigDecimal.pow(int) метод принимает только целочисленный параметр, параметр BigDecimal.

Есть ли библиотека, например Apache commons-lang, которая поддерживает BigDecimal.pow(BigDecimal)? Он должен уметь вычислять "1.21".pow("0.5") для возврата "1.1".

Ответ 1

Существует Math.BigDecimal реализация основных математических функций с исходным кодом, доступным из библиотеки Cornell University здесь (также вы можете скачать библиотеку как tar.gz). Вот пример использования библиотеки:

import org.nevec.rjm.*;
import java.math.BigDecimal;

public class test {
    public static void main(String... args) {
        BigDecimal a = new BigDecimal("1.21");
        BigDecimal b = new BigDecimal("0.5");

        System.out.println(BigDecimalMath.pow(a, b).toString());
    }
}

Распечатывает:

1.1

Update

Информация о лицензии отсутствует на странице или в файлах исходного кода. В реферате публичной статьи , в которой описывается работа библиотеки, содержится фраза "Полный исходный код доступен".

НО, портал arXiv.org (где размещаются бумага и исходные файлы) имеет следующие лицензионное агрегирование:

Информация о лицензии arXiv

arXiv - это хранилище научного материала, и постоянный доступ необходим для сохранения научной записи. Таким образом, arXiv сохраняет постоянную запись о каждой заявке и заявке на замещение.

arXiv не запрашивает передачу авторских прав. Однако мы требуем достаточных прав, чтобы мы могли беспрепятственно распространять представленные статьи. Чтобы отправить статью в arXiv, податель должен либо:

Итак, в основном любая работа (так как документ и сопроводительный исходный код будет юридически назван), поданный и принятый в arXiv, который не указывает на использование Creative Commons Attribution- Лицензия некоммерческого-ShareAlike будет опубликована в общественном достоянии и будет использована лицензия Creative Commons Attribution.

Заключение

В связи с тем, что эта работа (бумага и исходный код) не требует (на самом деле он ничего не заявляет о лицензировании) использование лицензии Creative Commons Attribution-Noncommercial-ShareAlike, тогда, основываясь на правилах справки справочной информации arXiv, в разделе Creative Commons Лицензия на атрибуцию, которая позволяет вам делиться, копировать, распространять и передавать, ремикшировать (адаптировать) и делать коммерческое использование работы.

Кроме того, если у вас все еще есть юридические сомнения относительно лицензирования, вы можете связаться с автором работы Ричардом Дж. Матраром прямо на портале arXiv.org(вам нужно зарегистрироваться на портале, чтобы это сделать)

Ответ 2

Используется Havent, но видел suanshu

BigDecimalUtils имеет функцию pow(), которая соответствует вашим потребностям

public static java.math.BigDecimal pow(java.math.BigDecimal a,
                                       java.math.BigDecimal b)
Compute a to the power of b.

Ответ 3

Библиотека Apfloat, похоже, делает это, проверьте документы API.

ApcomplexMath.pow(Apcomplex z, Apcomplex w)

Apcomplex является классом-оболочкой, например. BigDecimal.