Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-05-2003, 11:59   #1
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
La funzione segno e l'inferno dei numeri reali

Mi serviva una funzione che mi restituisse il segno di un numero e mi sono fatto questa:

template<class T>
inline const T SEGNO(const T &a )
{return a >= 0 ? 1 : -1;}

Poi mi è capitato di pensare all'aritmetica floating point e mi sono detto:
se è un numero picccolissimo minore di zero l' a.f.p lo arrotonda a zero e sballa.
Poi mi sono ricordato che esistono lo zero negativo e positivo.
Secondo voi la funzione è affidabile?

Per parlare poi delle safe comparisons e tutte le possibili dannazioni dello Real Inferno,
potremmo-potreste raggruppare e postare tutte le comparazioni affidabili in floating point?
(==, <= etc e tutte quelle che non mi vengono in mente...)

Grazie
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2003, 12:10   #2
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
L'uguaglianza non si verifica mai con i numeri FP...
In teoria dovrebbe comunque funzionare sempre...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2003, 13:33   #3
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
per cominciare
google: "macheps"

P.S.
allora Piazza Plebiscito o Pert ?
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2003, 15:53   #4
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
Quote:
Originally posted by "a2000"

per cominciare
google: "macheps"
Già fatto,ma il tema delle safe comparisons è controverso.Al prossimo giro posto le funzioni che ho trovato.

Quote:
P.S.
allora Piazza Plebiscito o Pert
mandami un PVT per spiegarti meglio
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2003, 08:40   #5
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
Il problema nella comparazione classica
if ( fabs(a-b) <= Machine_Epsilon * fabs(a))

è che non funziona se a è uguale zero:

Quote:
From: [email protected] (Hans-Bernhard Broeker)
Subject: Re: Comparison of 2 floating point values
Date: 21 Dec 1999 00:00:00 GMT
Message-ID: <[email protected]>
References: <[email protected]> <[email protected]> <[email protected]> <[email protected]>
Followup-To: comp.graphics.algorithms,comp.graphics.api.opengl
X-Complaints-To: [email protected]
X-Trace: nets3.rz.RWTH-Aachen.DE 945780991 21761 137.226.32.75 (21 Dec 1999 12:56:31 GMT)
Organization: RWTH Aachen, III. physikalisches Institut B
NNTP-Posting-Date: 21 Dec 1999 12:56:31 GMT
Newsgroups: comp.graphics.algorithms,comp.graphics.api.opengl

Paul Hsieh ([email protected]) wrote:
> Usually to compare two numbers assuming a certain amount accuracy you do
> it like this:

> if( fabs(a/b-1) < MachEps )

Caution with this; you may get divide by zero problems. Avoid
division, like this:

if ( fabs(a-b) <= Machine_Epsilon * fabs(a))

Which is what the comp.lang.c FAQ recommends. And even _that_ doesn't
work if a is zero... you'ld need a special case, like:

#define EQ(a,b,precision) \
(fabs(a-b) <= precision * (a==0? (Machine_Epsilon*fabs(a)) \
: (Machine_Smallest)))

Where 'precision' is a factor that describes how much precision has
already been lost, relative to what the machine floating point format
can describe. This has to be a factor bigger than 1, to make sense.
It's this 'precision' factor you have to hand-tune to for every single
application of such a comparison, on every platform.

The latter is because comparing to a relative difference of
'Machine_Epsilon' is not a useful thing. By definition of Epsilon and
the structure of floating point numbers, it is roughly the smallest
*relative* difference between any two FP numbers. I.e. two numbers
with a relative difference of less than Epsilon would be exactly
equal, already, not just approximately, and the whole point of using a
test other than simple '==' would be moot.

As I hope you can see, dealing with floating point numbers can be
surprisingly complicated, as soon as you get down to the gory details.
--
Hans-Bernhard Broeker ([email protected])
Even if all the snow were burnt, ashes would remain.
poi ci sono le funzioni proposte da Matt Austern che è pur sempre un'autorità.
Ops scusatemi,non sono di Matt Austern(magari);la risposta è di Matt Austern

http://cpptips.hyperformix.com/cpptips/fp_eq

Avevo pensato di mettere tutto in un header in modo da avere a disposizione sempre
le capacità della macchina:

#include <limits>
...
numeric_limits<double> double_info;
const double EPS=double_info.epsilon();
...

ma dice che non è l'ideale se hai 50 moduli che utilizzano lo stesso header.

Che ne pensate?
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2003, 10:30   #6
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
Insomma...ma funziona o no la tua funzione ? In ogni caso se c'è un epsilon negativo o positivo puoi sempre vedere che sia maggiore o minore di 0...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2003, 15:34   #7
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
Quote:
Originally posted by "cionci"

Insomma...ma funziona o no la tua funzione ? In ogni caso se c'è un epsilon negativo o positivo puoi sempre vedere che sia maggiore o minore di 0...
Si... almeno credo (su stà materia mi sento molto insicuro)

Mi riferivo nel mio ultimo post a quelle funzioni che cercano di
appurare più o meno affidabilmente se 2 numeri sono uguali .
Scusatemi,avrei dovuto dirlo esplicitamente

ps a2000 quando ti serve non c'è mai.
verloc è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
Nintendo si prepara a dare il benservito...
Arriva la Canon R6 Mark III con un obiet...
Una famiglia ha ridotto un conto ospedal...
Le carte collezionabili dell'INPS conqui...
Football Manager 26 debutta su Steam con...
A 189,99€ con coupon: il NAS UGREEN che ...
Arm cresce ancora: ricavi oltre 1 miliar...
Xiaomi Redmi Note 14 5G ora a soli 179€:...
Spotify dovrà affrontare una nuov...
17,69€: praticamente regalato il caricat...
ECOVACS DEEBOT T80 OMNI, 600€ di sconto ...
EA fa chiarezza su controllo creativo e ...
Google Maps punta sull'AI: tante novit&a...
Qualcomm guarda oltre gli smartphone: ri...
539€, 629€ o 679€: 3 portatili HP o Acer...
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: 11:05.


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