Newsgroup: it.comp.lang.vo-clipper
Titolo: Facciamo il punto sulla ROUND()

Dopo le ultime discussioni mi sembra di poter
stabilire quanto segue:
Abbiamo diverse versioni di round di cui le più significative mi sembrano:
1)  La ROUND2() di EMG che riutilizza la ROUND()
2)  Almeno 3 versioni di ROUND2()/ROUND3() che non coinvolgono
   operazioni tra numeri floating point.
Forse mi sono perso qualche verrsione intermedia, ma mi sembra che le
ultime  3 siano:
a) Quella di EMG
b) Quella di Davide Giuolo
c) La mia (Clipper + C)
Ora mi sento di poter affermare quanto segue:
La versione 1) di EMG è senza dubbio la più efficiente e concisa
e sembra non avere nessun problema con tutte le prove fatte finora,
però coinvolge di nuovo la funzione ROUND() originale, che sappiamo
per certo avere dei problemi, quindi non possiamo essere certi del
funzionamento corretto nel 100% dei casi.
Le altre versioni che operano sostanzialmente su stringhe, sono più o meno
equivalenti in termini di prestazioni, ma presentano a mio avviso la
certezza
del risultato.
Potrebbero sbagliare solo se sbagliasse la STR() iniziale, ma mi sembra
un'ipotesi molto remota.
Che dire a questo punto ? Francamente non lo so.
I numeri floating point sono per loro natura approssimati, non potranno mai
tornare un risultato completamente corretto.
Basti pensare che il double del Clipper è rappresentato con 52 bit di
mantissa
(corrispondenti a circa 16 cifre decimali) e un esponente che arriva a
2^1023
(corrispondente ad un numero di più di 320 cifre decimali !!)
Come si può pretendere la precisione assoluta !!??
Ognuno si accontenti della precisione di cui abbisogna.
Aspetto le vs. considerazioni.
Ciao
 Paolo R.
 
paolo....@soft-com.it
 
www.soft-com.it

 Che dire a questo punto ? Francamente non lo so.
Questo è il mio pensiero: finora solo Davide ha avuto la forza d'animo
di fare dei test abbastanza esaustivi e questi non hanno evidenziato
problemi. Quindi, secondo me, a questo punto ognuno può utilizzare la
funzione che gli risulta più simpatica tra queste che hanno superato
brillantemente il test di Davide. Se poi, sul campo, verranno fuori
problemi allora se ne potrà riparlare. Non credo si possa fare di più
per il momento.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 per il momento.
Purtroppo non posso che concordare con te su questo punto.
Eravamo partiti da qui, e qui siamo tornati. Non è possibile ciclare tutte
le combinazioni, però direi che ora possiamo dire che diverse soluzioni, tra
quelle proposte, sono quasi sicure.
Inoltre non dimentichiamo che abbiamo diverse alternative. Se un Cliente
dovesse lamentare malfunzionamenti, presto si fa a sostituire una round con
un'altra e ricompilare i programmi.
Ciao.
Davide.

 Che dire a questo punto ? Francamente non lo so.
A meno che qualcuno non riesca a dare una soluzione "certa" al problema,
credo che non si possa dire di più. Non è possibile ciclare tutti i numeri
in un test, quindi non si può avere la certezza "matematica"  che una
qualsiasi funzione si comporti sempre bene.
Comunque a mio avviso si è lavorato bene, ed ora abbiamo diverse buone
soluzioni. Abbastanza per poter far fronte ad un eventuale problema con i
Clienti in tempi rapidi (eventualmente sostituendone una con un altra), e
non avere quindi il fiato sul collo nel risolvere il problema emerso.
Ciao.
Davide.

 un'altra e ricompilare i programmi.
Vero, anche se la scocciatura della riconsegna (anche se magari via
e-mail) e l'eventuale disappunto del cliente potrebbero non essere cose
positive...
