Esiste un'implementazione C/C ++ open source delle operazioni IEEE-754? [Chiuso
-
25-09-2019 - |
Domanda
Sto cercando un'implementazione di riferimento delle operazioni IEEE-754. C'è una cosa del genere?
Soluzione
Credo alle biblioteche C Flusso di soft e fdlibm sono adatti a quello che stai cercando. Altri includono Linux (GNU Libc, GLIBC) o *BSD Libc's funzioni matematiche. Infine, CRLIBM Dovrebbe anche essere di interesse per te.
Ulrich Drepper ha un interessante Guarda diverse biblioteche matematiche, potrebbe valere anche la pena leggere.
Altri suggerimenti
Devo deluderti: praticamente non ce n'è.
Mentre tecnicamente ci sono sistemi conformi IEEE-754 perché non implementano funzionalità non richieste descritte nello standard, un'implementazione di riferimento che consente
- Accesso a tutte le modalità di arrotondamento
- Support Segning NANS
- Supporto di intrappolamento di tutte e cinque le trappole
non esiste nelle lingue standard. Ciò provoca guai ricorrenti di William Kahan, la forza principale dietro lo standard e il suo adattamento sui processori Intel.
Non so se ci sono alcune lingue esoteriche che fare Sostenerli, ma posso escludere Java, C#, C ++, Fortran.
EDIT: Sebbene manca il supporto del compilatore, consiglio l'implementazione di Hausers softfloat fornita da McTylr. Hauser sa cosa sta facendo.
Una domanda piuttosto confusa; In C ++ si presume che questo tipo di dettaglio sia curato dall'hardware o dal compilatore. Quindi, nell'aggiunta del punto galleggiante C ++ sarebbe
float a = 1.0;
float b = 2.0;
float c = a + b;
Sono sicuro che questo non è quello che intendevi effettivamente; Forse ne trarresti beneficio questa pagina Quale cerca di emulare hardware conforme IEEE-754 in JavaScript?
Un lavoro in giro per te potrebbe Python. Python ha una funzione in grado di convertire IEEE-754 Point float esagonale a 32/64 bit
import struct
struct.unpack('!f', '41973333'.decode('hex'))[0]
Puoi scrivere l'app in Python o semplicemente creare una funzione Python e chiamarla in C/C ++
Non sono sicuro di come chiamare Python da C/C ++ ma è possibile. Chiamare le funzioni di Python da C ++