Long double: from mac to windows..

di il
4 risposte

Long double: from mac to windows..

Ciao a tutti,
Ho scritto un programma in C (per comodità salvato come .cpp e compilato come C++); ho lavorato usando un Mac Book (Intel).
Nel programma sono presenti molti long double e molte operazioni su essi: lavora con numeri molto grandi.

Tutte le prove che ho fatto sul mac sono andate bene, ma passando a Windows (mi è stato richiesto) ho avuto problemi.

Ho installato DevCpp che utilizza MinGW.

Leggendo tra i vari forum, ho scoperto che il tipo long double non è supportato da Windows, e che MinGW utilizza le librerie di Windows, quindi errori e NaN a mai finire, sia in fase di calcoli che in fase di printf.

Facendo un sizeof dei tipi ho scoperto quanto segue:
MAC
DOUBLE=8, LONG DOUBLE=16
WINZ
DOUBLE=8, LONG DOUBLE=12

Sapete se c'è un modo per risolvere questo problema o per aggirarlo?

Grazie in anticipo

4 Risposte

  • Re: Long double: from mac to windows..

    Sulla carta il long double è supportato da Windows, ma lo standard in 3.9.1.8 precisa che un long double deve avere almeno la precisione di un double e che la rappresentazione di un floating point type è implementation defined.
    Il che comporta che sia sizeof(long double) == 16 sia sizeof(long double) == 8 sono lecite per lo standard.
    Detto questo o riscrivi il codice per usare semplici double oppure devi cercare qualche libreria per il calcolo numerico per numeri molto grandi (GNU mi pare ne abbia una [gnumeric?])
  • Re: Long double: from mac to windows..

    OK,
    grazie.
    Proverò a cercare qualche libreria.
  • Re: Long double: from mac to windows..

    shodan ha scritto:


    libreria per il calcolo numerico per numeri molto grandi (GNU mi pare ne abbia una [gnumeric?])
    http://gmplib.org
  • Re: Long double: from mac to windows..

    Grazie
Devi accedere o registrarti per scrivere nel forum
4 risposte