Pregunta

Estoy buscando una implementación de referencia de las operaciones IEEE-754. ¿Existe tal cosa?

¿Fue útil?

Solución

Creo que las bibliotecas C Softfloat y fdlibm son adecuados para lo que está buscando. Otros incluyen Linux (GNU libc, glibc) o *bsd libc's Funciones matemáticas. Finalmente, Crlibm También debe ser de interés para usted.

Ulrich Drepper tiene un interesante Mira diferentes bibliotecas de matemáticas, eso también podría valer la pena leer.

Otros consejos

Debo decepcionarte: prácticamente no hay ninguno.

Si bien técnicamente hay sistemas compatibles con IEEE-754 porque no implementan características no requeridas descritas en el estándar, una implementación de referencia que permite

  • acceso a todos los modos de redondeo
  • Soporte de señalización de NANS
  • Apoye la captura de las cinco trampas

no existe en los idiomas estándar. Esto causa problemas recurrentes de William Kahan, la fuerza principal detrás del estándar y su adaptación en los procesadores Intel.

No sé si hay algunos idiomas esotéricos que hacer Apoyarlos, pero puedo descartar Java, C#, C ++, Fortran.

EDITAR: Si bien hay una falta de soporte de compiladores, aconsejo a la implementación de Hausers Softfloat dada por McTylr. Hauser sabe lo que está haciendo.

http://portal.acm.org/citation.cfm?id=227699.227701&coll=portal&dl=acm&cfid=77938829&cftokoken=18578907

Una pregunta bastante confusa; En C ++ se supone que este tipo de detalle es atendido por el hardware o el compilador. Entonces, en C ++, la adición de punto flotante sería

float a = 1.0;
float b = 2.0;
float c = a + b;

Estoy seguro de que esto no es lo que realmente quisiste decir; Quizás te beneficiarías de esta página ¿Qué intenta emular hardware compatible con IEEE-754 en JavaScript?

Un trabajo para ti podría Python. Python tiene una función que puede convertir IEEE-754 Punto de flotación hexadecimal de precisión de 32/64 bits

   import struct
   struct.unpack('!f', '41973333'.decode('hex'))[0]

Puede escribir su aplicación en Python o simplemente crear una función de Python y llamarla en C/C ++

No estoy seguro de cómo llamar a Python desde C/C ++, pero es posible. Llamar a las funciones de Python de C ++

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top