Независимая от платформы математическая библиотека - PullRequest
3 голосов
/ 15 июля 2009

Есть ли общедоступная библиотека, которая будет производить точные те же результаты для sin, cos, floor, ceil, exp и log на 32 бит и 64-разрядные Linux, Solaris и, возможно, другие платформы?

Я рассматриваю следующие варианты:
а) cephes скомпилировано с gcc -mfpmath=sse и одинаковыми уровнями оптимизации на каждом платформа ... но не ясно, что это будет работать.
б) MPFR но я боюсь, что это будет слишком медленно.

Относительно точности (отредактировано): для этого конкретного применения Мне действительно не нужно то, что производит ценность, которая численно ближе всего к точному значению. Мне просто нужны ответы быть одинаковым на всех платформах, ОС и "битность". Тот при этом значения должны быть разумными (5 цифр наверное хватит). Я прошу прощения за то, что не сделал это ясно в моем первоначальном вопросе.

Полагаю, MAPM или MPFR с достаточно низкой точностью могут подойти трюк, но я надеялся найти то, чего не было "множественная точность" машины / вкус к нему. В любом случае я буду попробуй это.

Ответы [ 5 ]

4 голосов
/ 22 июля 2009

crlibm - правильный инструмент для этого. Более ранний плакат связан с этим. Поскольку оно правильно округлено, при правильной компиляции оно даст идентичные по битам результаты на всех платформах с оборудованием, совместимым с IEEE-754. Это намного, намного быстрее, чем MPFR.

4 голосов
/ 15 июля 2009

Было бы что-то вроде: http://lipforge.ens -lyon.fr / www / crlibm / index.html будет то, что вы ищете (это библиотека, целью которой является возможность заменить стандартную математику библиотека C99 - так что сохраняйте достаточно хорошую производительность в обычных случаях - при этом гарантируя правильно округленный результат в соответствии с режимами округления IEEE 754)?

1 голос
/ 15 июля 2009

Вы упомянули использование SSE. Если вы планируете использовать только чипы x86, какие именно несоответствия вы ожидаете?

Что касается MPFR, не беспокойтесь - протестируйте его! Кстати, если это достаточно хорошо для включения в GCC, это, вероятно, достаточно хорошо для вас.

1 голос
/ 15 июля 2009

Вы хотите использовать MPFR. Эта библиотека существует уже много лет и была перенесена на каждую платформу под солнцем и оптимизирована сотнями людей.

Если MPFR недостаточно для ваших нужд, мы говорим о полных пользовательских реализациях ASM, и в этом случае может быть более целесообразно рассмотреть возможность его реализации на выделенном оборудовании.

1 голос
/ 15 июля 2009

Тебе это не нужно. floor и ceil будут точными, поскольку их вычисления просты.

Что вас беспокоит, так это последнее закругление для трансценденталов, таких как sin, cos и exp. Но они являются родными для микрокода ЦП и могут быть выполнены с высоким качеством последовательно независимо от библиотеки. Однако округление варьируется от архитектуры чипа к архитектуре.

Итак, если точные ответы для transindentals действительно являются вашей целью, вам действительно нужна портативная библиотека, и вы также откажетесь от огромной эффективности. Вы можете использовать переносную библиотеку, например MAPM , которая дает вам не только согласованные результаты ULP, но и побочную выгоду, позволяющую определить произвольную точность.

Вы можете проверить свою математическую точность с помощью инструментов, подобных этому и этого.

...