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

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

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

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

1

Решение

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

3

Другие решения

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

1

По вопросам рекламы [email protected]