Альтернативная библиотека bignum для библиотеки GMP, которая поддерживает функцию косинуса

Кто-нибудь есть рекомендации, я работаю на Mac OSX и пытаюсь написать и запустить код C++.

Я запускаю код, чтобы ответить на математический вопрос, известный как "Проблема Таммеса". В данный момент у меня есть фрагмент кода с градиентным потоком, и он работает, чтобы распределить точки на сфере и минимизировать энергетическую функцию. Это работает для проблемы Томсона и низких значений t (индекса в функции энергии).

Тем не менее, проблема Tammes предназначена для стремления к бесконечности, и поэтому мне нужно сделать t довольно большим. Это хорошо, однако, когда я увеличиваю расстояние между двумя точками на моей сфере до степени t, число становится очень маленьким (все еще положительным), а затем, взяв обратную величину, я получаю свою энергию, которая тогда довольно велика. Проблема заключается в потере точности энергии при увеличении t, которую можно исправить с помощью библиотеки bignum. Однако, если я хочу найти размер сферических колпачков на сфере, мне нужно изменить правило косинуса, чтобы найти угол между точками. Поэтому для этого требуется, чтобы я взял косинус числа, которое не приемлемо из-за того, что GMP не поддерживает функцию cos.

2 ответа

Решение

Поскольку вы знакомы с GMP, я бы порекомендовал MPFR. Помимо использования арифметики с плавающей точкой с множественной точностью, она обеспечивает трансцендентные функции и режимы округления, основанные на IEEE 754 (2008).

Как насчет этой библиотеки? По общему признанию я не использовал это или GMP, но это могло бы работать для Вашей проблемы.

Другие вопросы по тегам