gmp — быстрая библиотека произвольной точности c ++: __float128 быстрее, чем MPFR?

Я знаю, есть пара веток на похожие темы ( Какова лучшая (по скорости) библиотека произвольной точности для C ++? а также Лучшая кроссплатформенная (портативная) математическая библиотека произвольной точности ) и я беру из этих потоков чем GMP или что-то на его основе, например, MPFR является самой быстрой доступной библиотекой, но я особенно задаюсь вопросом: если бы я только хотел сказать, что 30 декардовых мест будет, __float128 четырехместной библиотеки будет быстрее?

Кроме того, как MAPM складывается против MPFR?

Это выглядит с этого сайта:

http://pari.math.u-bordeaux.fr/benchs/timings-mpfr.html

что MPFR работает довольно хорошо, но есть также CLN и apfloat?

3

Решение

Если вы хотите только 30 знаков после запятой, я почти уверен (без фактического сравнения), что GMP или MPFR не могут быть такими же быстрыми, как некоторые простые домашние процедуры. Конечно, это немного зависит от операций, которые вам нужны.

Причиной этого является то, что GMP et al. действительно хорошо написаны с очень большими целыми числами (например, 1000+ или даже 1,000,000+ десятичных цифр). Но для очень маленьких, но слишком больших для int-bignums, издержки некоторых дополнительных операций if, вызовов или даже выделения памяти убьют их в каждом тесте.

Это простое упражнение для создания ваших собственных функций C ++, которые дают вам 128-битное сложение / вычитание из 2 64-битных беззнаковых. Даже умножение выполняется легко. Деление может быть не так просто, но вам это нужно? Более сложные функции (root, log и т. Д.) — это гораздо больше работы, чем GMP et al. возможно окупится.

1

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

Других решений пока нет …