Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-03-2009, 12:03   #21
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
allora, usando codeblock, senza particolari opzioni, lasciando tutto com'è, e lavorando solo su double ottengo in modalità debug gli stessi risultati che ottieni tu utilizzando long double in mod. debug e release -O

cioè:

Codice:
Input:
0.502136157219797 = 3FE0117FD8ACBD94
0.435382796399849 = 3FDBDD4FCDF1D0EB

Metodo 1:
0.991491721163342 = 3FEFBA4CD894D781
1.296829383863886 = 3FF4BFD02B02FEDB

Metodo 2:
0.991491721163342 = 3FEFBA4CD894D781
1.296829383863886 = 3FF4BFD02B02FEDB

Metodo 3:
0.991491721163342 = 3FEFBA4CD894D781
1.296829383863886 = 3FF4BFD02B02FEDB

Metodo 4:
0.991491721163342 = 3FEFBA4CD894D781
1.296829383863886 = 3FF4BFD02B02FEDB
come mai ?? eppure guardando le opzioni di compilazione debug nn c'è nulla impostato a parte il -g ...

comunque se metto tutto long double non mi funziona il codice, xkè penso la storia dei 2 puntatori int nn vada bene in quanto non c'è + corrispondenza, long double sono 80 bit mentre 2 int arrivano a 64 giusto ?
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 12:07   #22
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ottieni gli stessi risultati solo per il solito motivo dell'ordine delle istruzioni: essendo il compilatore una versione diversa, il codice prodotto è diverso.

Funziona con i long double, ma devi usare i double per la conversione, dopo assegni a long double.
Come ho fatto io nel codice.

Tu devi in ogni caso fare la verifica con le varie opzioni in release.

Ultima modifica di cionci : 09-03-2009 alle 12:09.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 12:41   #23
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
allora, lavorando con i double ottengo gli stessi risultati utilizzando le opzioni standard in debug mode, in release -O -O1 -O2

questi risultati sono gli stessi che ottengo normalmente utilizzando i double e le opzioni standard del debug.

con -O3 ho risultati sballatissimi, in quanto non vengono restituiti gli esatti valori di input...

Codice:
Input:
0.502136157219797 = 77BE285077C05C94
0.435382796399849 = 0022FFE0FFFFFFFF
allora ora voglio capire una cosa, a cosa servono queste ottimizzazioni, dovrebbero velocizzare il programma ?

come mai il mio codeblock non da risultati diversi se uso double e long double ?

il problema non era causato dal fatto che l'fpu lavora a 80 bit e noi mettendoli in un double perdiamo precisione ?
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 12:50   #24
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dipende dal compilatore, non da Code::blocks.
Le opzioni servono per rendere il codice più veloce, evidentemente in quella versione del compilatore, l'ottimizzazione non interviene.

E' possibile anche che gcc su Windows non abbia il supporto ai long double.
Per vederlo fai questa prova:

printf("%d", sizeof(long double));

Deve ritornare 10.

Con -O3 succedeva anche a me. Probabilmente il compilatore interviene in qualche modo modificando il codice generato. Imho quindi escludi -O3, che già ti fa partire con un errore più alto (oppure no, magari quella rappresentazione floating point è molto più vicina al numero reale che vuoi rappresentare, chi lo sa )

Nota che il codice che uso per la conversione potrebbe non funzionare più se cambi tipologia di macchina, ad esempio passando da una macchina Little Endian a Big Endian: http://en.wikipedia.org/wiki/Endianness
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 13:59   #25
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
codeblock mi dice che il size di un long double è 12 !!

ho fatto anche le prove direttamente sotto ubuntu, utilizzando gcc da terminale, long e double non mi danno distinzioni, se comincio a giocare con le ottimizzazioni varia qualcosa...

comunque sta storia dei double ? anche sotto ubuntu sizeof (long double) mi da 12 !


Quote:
Originariamente inviato da cionci Guarda i messaggi
Con -O3 succedeva anche a me. Probabilmente il compilatore interviene in qualche modo modificando il codice generato. Imho quindi escludi -O3, che già ti fa partire con un errore più alto (oppure no, magari quella rappresentazione floating point è molto più vicina al numero reale che vuoi rappresentare, chi lo sa )
-o3 altera il valore di input calcolato a partire dagli esadecimali, quello di partenza e di ritorno non è lo stesso valore, quindi inutile osservare i risultati delle operazioni.
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 14:16   #26
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da TuLKaS85 Guarda i messaggi
codeblock mi dice che il size di un long double è 12 !!

comunque sta storia dei double ? anche sotto ubuntu sizeof (long double) mi da 12 !
Va bene, perché allineano ai 4 byte successivi
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 16:20   #27
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
Quote:
Originariamente inviato da cionci Guarda i messaggi
[code]

L'FPU dei processori x86 internamente lavora SEMPRE a 80 bit. Di conseguenza trasferire un risultato intermedio su un double a 64 bit porta ad un perdita di precisione. Quindi diventa chiaro che il risultato dipende sia dall'ordine di esecuzione delle operazioni, sia da come viene costruito il risultato.
Partiamo dal principio.
Avevo notato che lo stesso codice dava risultati leggermente differenti a seconda del linguaggio utilizzato.

Matlab e Fortran vanno di pari passo mentre C prende un altra strada.

Mi sono concentrato principalmente sul C per comprendere cosa succede a questi bit, ed ho visto che anche utilizzando i long double i risultati non cambiano, quindi presumo che in qualche modo il risultato corretto sia proprio quello di C . Inoltre C riesce a dare i risultati corretti anche senza scomodare i long double...

Questo però succede al mio C sia codeblock che quello sotto ubuntu...
il tuo test invece mostra risultati diversi... che compilatore usi ?

il tuo primo test, quello senza ottimizzazioni, senza l'uso dei long da gli stessi output che a me da il fortran e il Matlab, e questo mi disorienta tutto il discorso...
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 16:24   #28
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
gcc su Ubuntu

Vedi, secondo me parti da una considerazione errata. Non esiste il risultato corretto: tutti i risultati sono approssimazioni.
Però esiste sicuramente una sequenza di operazioni floating point che minimizza l'errore.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 16:35   #29
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
non sò codeblock che versione di gcc usi, ma su ubuntu io ho la 4.2.3, sembra una versione un pò datata, mi sà che devo aggiornare...

tu che versione hai ? se riesco a mettermi nelle tue stesse condizioni di partenza, ed ottenere quei risultati penso di aver risolto.

Matlab e fortran danno gli stessi risultati che ottieni tu... se anche io ci riesco sono a cavallo
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 16:43   #30
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
gcc (Ubuntu 4.3.2-1ubuntu12) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Code::Blocks c'è anche per Linux eh

La versione che si scarica con Code::Blocks per Windows è datata...è la 3 e qualcosa.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 17:21   #31
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da cionci Guarda i messaggi
...
La versione che si scarica con Code::Blocks per Windows è datata...è la 3 e qualcosa.
Vero è

Da qui

http://www.tdragon.net/recentgcc/

è possibile scaricare la versione 4.3.3 per Windows. Ma attenzione, come puoi leggere nel sito, si tratta di una versione non ufficiale.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2009, 10:56   #32
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
Quote:
Originariamente inviato da =cionci
Compilatore GCC su Linux.
L'output che ottengo con l'eseguibile in formato Debug (no ottimizzazioni) è:

Input:
0.502136157219797 = 3FE0117FD8ACBD94
0.435382796399849 = 3FDBDD4FCDF1D0EB

Metodo 1:
0.991491721163342 = 3FEFBA4CD894D781
1.296829383863886 = 3FF4BFD02B02FEDA

Metodo 2:
0.991491721163342 = 3FEFBA4CD894D782
1.296829383863886 = 3FF4BFD02B02FEDA

Metodo 3:
0.991491721163342 = 3FEFBA4CD894D782
1.296829383863886 = 3FF4BFD02B02FEDA

Metodo 4:
0.991491721163342 = 3FEFBA4CD894D782
1.296829383863886 = 3FF4BFD02B02FEDA
allora ho installato ubuntu 10 che per default porta gcc 4.3.2 (installato come guest con vm-ware su windows xp)

gcc -v mi da quanto segue

i486-linux-gnu
Thread model: posix
gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu11)

eppure i valori escono sempre gli stessi...
speravo di trovarmi con i tuoi invece escono gli stessi che uscivano sia con codeblock che con il gcc 4.2.3

stesso compilatore stesso codice... stavolta come la mettiamo ?? non voglio pensare che il problema sia avere ubuntu sotto virtual machine...
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2009, 10:58   #33
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Già...io ho Ubuntu a 64 bit
Quindi è un altro compilatore, che genera codice ancora diverso.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2009, 11:11   #34
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
ah ok..
penso di poter installare ubuntu 64 bit sotto virtual machine, ormai devo provare ! Ma in generale è possibile installare un S.O a 64 bit su una macchina con processore normale ? Cioè capisco che è un idiozia, ma a livello di funzionamento penso partirebbe lo stesso o no ?

seconda domanda...

devo capire code::block che versione di gcc utilizza, non riesco a trovarla da nessuna parte.
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2009, 11:19   #35
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Su Windows nella directory bin c'è l'eseguibile del gcc, basta dargli gcc -v, ma come ti ho detto è un 3.qualcosa.

Solitamente sulla virtual machine devi avere anche il tuo sistema operativo a 64 bit. Dipende cosa intendi per processore normale...qualsiasi processore degli ultimi anno è compatibile con i 64 bit.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2009, 11:25   #36
TuLKaS85
Senior Member
 
L'Avatar di TuLKaS85
 
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
si infatti è la 3.4.5

cmq hai ragione , intendevo processori come i vecchi pentium 4, prima dell'avvento dei dual quad ecc...

vabbè grazie mille, concludo la questione dando la colpa delle differenze ai compilatori!
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2
TuLKaS85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
AWS Transform si evolve: agenti IA per m...
I social network hanno stancato gli ital...
Star Citizen supera i 900 milioni di dol...
Netflix ha eliminato la funzione Cast pe...
L'IA è una bolla e scoppier&agrav...
Un rapporto collega i data center di Ama...
Troppa concorrenza per Cherry (quella de...
Entro il 2035 la Cina vuole costruire de...
Tineco in super sconto: ultimo giorno di...
La Cina creerà una costellazione ...
I veicoli elettrici emettono radiazioni ...
Stai per acquistare una PS5? Attento al ...
iPhone 17 Pro Max finalmente disponibile...
Apple, Sony, Bose, Beats, Sennheiser, CM...
Arriva il Raspberry Pi 5 da 1 GB, ma por...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v