Существует ли реализация операций IEEE-754 с открытым исходным кодом c/С++?
Я ищу ссылочную реализацию операций IEEE-754. Есть ли такая вещь?
Ответы
Ответ 1
Я считаю, что библиотеки C SoftFloat и fdlibm подходят для того, что вы ищете. Другие включают Linux (GNU libc, glibc) или * BSD libc математические функции. Наконец, CRlibm также должен вас заинтересовать.
Ульрих Дреппер имеет интересный взгляд на разные математические библиотеки, которые также можно прочитать.
Ответ 2
Я должен вас разочаровать: практически нет.
В то время как технически существуют системы, совместимые с IEEE-754, потому что они
не реализуют необязательные функции, описанные в стандарте, ссылку
реализация, позволяющая
- доступ ко всем режимам округления
- поддержка сигнализации NaNs
- поддержка захвата всех пяти ловушек
не существует на стандартных языках. Это вызывает повторяющиеся беды
Уильяма Кахана, главной силы стандарта и его адаптации
на процессорах Intel.
Я не знаю, есть ли какие-то эзотерические языки, которые их поддерживают,
но я могу исключить Java, С#, С++, Fortran.
EDIT: Несмотря на отсутствие поддержки компилятора, я советую Hausers SoftFloat
реализация, данная mctylr. Хаузер знает, что он делает.
http://portal.acm.org/citation.cfm?id=227699.227701&coll=portal&dl=ACM&CFID=77938829&CFTOKEN=18578907
Ответ 3
Довольно запутанный вопрос; в С++ предполагается, что этот вид деталей позаботится об оборудовании или компиляторе. Таким образом, добавление с плавающей запятой С++ было бы
float a = 1.0;
float b = 2.0;
float c = a + b;
Я уверен, что это не то, что вы на самом деле имели в виду; возможно, вам пригодится эта страница, которая пытается эмулировать аппаратное обеспечение, совместимое с IEEE-754, в javascript?
Ответ 4
одна работа для вас может быть python. python имеет функцию, которая может конвертировать IEEE-754 32/64 бит точности HEX с плавающей точкой
import struct
struct.unpack('!f', '41973333'.decode('hex'))[0]
Вы можете либо написать приложение в python, либо просто создать функцию python и вызвать его в C/С++
Я не уверен, как вызвать python из C/С++, но это возможно. Вызов функций Python из С++