Используя существующую функцию Java BigDecimals, а именно, чтобы разрешить арифметику с ограниченной точностью, как описано здесь , я недавно реализовал sqrt / 1, exp / 1, tan / 1 и т. Д. Для этих числовых объектов.
Числовые алгоритмы сами по себе используют ряды Маклаурина и Тейлора, а также соответствующие сокращения диапазона, чтобы обеспечить достаточную скорость и широту ряда.
Вот пример расчета, константа Рамануджана:
Jekejeke Prolog 2, Runtime Library 1.1.8
(c) 1985-2017, XLOG Technologies GmbH, Switzerland
?- use_module(library(stream/console)).
% 0 consults and 0 unloads in 0 ms.
Yes
?- X is mp(exp(pi*sqrt(163)), 60).
X = 0d262537412640768743.999999999999250072597198185688879353856320
Эта штука была написана в смеси Пролога и Явы. Скорость и точность этого все еще в стадии разработки. Код в настоящее время с открытым исходным кодом на GitHub .