Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-04-2007, 19:18   #1
peter2
Senior Member
 
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
[generico] multiplo

indipendentemente dal linguaggio che si usa, come fate a capire se un numero reale x è multiplo di un altro reale y??

usando la funzione mod(x,y) ( qui )
nel caso in cui siano effettivamente multipli, mod(x,y) viene 0.9999991 con tanti nove in funzione della precisione che si sta usando.

come fare?
__________________
peter
peter2 è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2007, 20:00   #2
Psylo
Junior Member
 
L'Avatar di Psylo
 
Iscritto dal: Aug 2006
Città: Pescara
Messaggi: 62
conosco solo php (sono agli inizi) e per fare tale verifica uso il "modulo" (%) che ritorna il resto della divisione tra due numeri...quindi se x%y==0 (cioè la divisione tra x e y da' come resto 0..) vuol dire che x è un multiplo esatto di y.
__________________
"I giganti sembrano tali solo a coloro che vivono in ginocchio.."
Psylo è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2007, 23:26   #3
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
Attenzione che stiamo parlando di numeri reali...quindi non si fanno mai confronti fra numeri reali (anche lo zero è un numero reale) senza assegnare un certo margine di incertezza...

Ad esempio dati a e b:

c = a * b
c = c * (b - 1)
c = c / b
c = c / (b - 1)

E' molto probabile che a == c ritorni falso...questo è dovuto al fatto che i floating point non sono chiaramente infiniti come i numeri reali e di conseguenza ci possono essere errori di rappresentazione dovuti appunto alla granularità dell'inseme dei floating point.
Ecco perché controllare che:

Mod(a, b) == 0 per affermare che a è multiplo di b è molto rischioso.
E non solo perché Mod(a,b) potrebbe essere 0.000000001, ma anche perché potrebbe essere (b - 0.000000001)
Quindi prima di tutto dobbiamo assegnare un certo margine di incertezza...che so, 1 su 100000.
Quindi per possiamo affermare con un certa sicurezza che a è multiplo di b:

m = mod(a,b)
e = 0.00001 * b <---- errore accettabile dovuto alla rappresentazione

se (m - e) < 0 oppure (m + e) > b allora a è multiplo di b
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2007, 23:49   #4
peter2
Senior Member
 
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
Quote:
Originariamente inviato da cionci Guarda i messaggi
Attenzione che stiamo parlando di numeri reali...quindi non si fanno mai confronti fra numeri reali (anche lo zero è un numero reale) senza assegnare un certo margine di incertezza...

Ad esempio dati a e b:

c = a * b
c = c * (b - 1)
c = c / b
c = c / (b - 1)

E' molto probabile che a == c ritorni falso...questo è dovuto al fatto che i floating point non sono chiaramente infiniti come i numeri reali e di conseguenza ci possono essere errori di rappresentazione dovuti appunto alla granularità dell'inseme dei floating point.
Ecco perché controllare che:

Mod(a, b) == 0 per affermare che a è multiplo di b è molto rischioso.
E non solo perché Mod(a,b) potrebbe essere 0.000000001, ma anche perché potrebbe essere (b - 0.000000001)
Quindi prima di tutto dobbiamo assegnare un certo margine di incertezza...che so, 1 su 100000.
Quindi per possiamo affermare con un certa sicurezza che a è multiplo di b:

m = mod(a,b)
e = 0.00001 * b <---- errore accettabile dovuto alla rappresentazione

se (m - e) < 0 oppure (m + e) > b allora a è multiplo di b
esatto, proprio quello che volevo fare io, solo che volevo legare l'incertezza al tipo di rappresentazione fp (4 o 8 bit) e quindi alla precisione, in modo che valga universalmente.

in realtà temo che se a è multiplo di b la distanza di mod(a,b) da 0 (cioè il suo valore) dipenda da a/b stesso, cioè da quanto grande è a rispetto a b.

basta vedere che mod(a,b)=a-b*int(a/b)
__________________
peter
peter2 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2007, 14:00   #5
Psylo
Junior Member
 
L'Avatar di Psylo
 
Iscritto dal: Aug 2006
Città: Pescara
Messaggi: 62
Quote:
Originariamente inviato da peter2 Guarda i messaggi
esatto, proprio quello che volevo fare io, solo che volevo legare l'incertezza al tipo di rappresentazione fp (4 o 8 bit) e quindi alla precisione, in modo che valga universalmente.

in realtà temo che se a è multiplo di b la distanza di mod(a,b) da 0 (cioè il suo valore) dipenda da a/b stesso, cioè da quanto grande è a rispetto a b.

basta vedere che mod(a,b)=a-b*int(a/b)
minchia che figura...
...e io che pensavo che eri un niubbo ignorante come me...
...mi defilo...
__________________
"I giganti sembrano tali solo a coloro che vivono in ginocchio.."

Ultima modifica di Psylo : 12-04-2007 alle 14:03.
Psylo è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2007, 15:23   #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
Quote:
Originariamente inviato da peter2 Guarda i messaggi
in realtà temo che se a è multiplo di b la distanza di mod(a,b) da 0 (cioè il suo valore) dipenda da a/b stesso, cioè da quanto grande è a rispetto a b.
Non credo...anche perché a e b possono avere avuto anche una "vita" completamente diversa ed aver subito varie operazioni con un accumulo di errore anche notevole per una e magari nullo per l'altra...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2007, 15:45   #7
peter2
Senior Member
 
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non credo...anche perché a e b possono avere avuto anche una "vita" completamente diversa ed aver subito varie operazioni con un accumulo di errore anche notevole per una e magari nullo per l'altra...
no ho capito che cosa c'entra l'accumulazione dell'errore su a (b) sul fatto che possa essere multiplo o meno di b (a)

in ogni caso non ne sono uscito....
mi date un algoritmo che, dati (a,b) reali, riesca a capire se a è multiplo di b, in qualsiasi precisione si stia lavorando

(a,b)=

(0.0001,0.1) (multiplo)
(0.001,0.1) (multiplo)
(5.,4.) (NON multiplo)
(5.,3.) (NON multiplo)
__________________
peter
peter2 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Valve definisce i requisiti di certifica...
Microsoft accelera l'integrazione tra Xb...
Smartphone potenti sotto i 300€: ecco i ...
iPhone 18 Pro: le ultime sulle novit&agr...
WhatsApp: sono in arrivo gli abbonamenti...
Sempre più pubblicità per ...
Robot aspirapolvere e Offerte di Primave...
Apple non realizzerà un iPhone Fl...
Un Haier QLED 4K UHD 50'' con 6 Mesi DAZ...
Spotify dà i numeri: nel 2025 l'i...
Meta accelera sui chip AI proprietari: q...
IT-Wallet diventerà sempre pi&ugr...
La torta a 5 strati più costosa d...
Il nuovo MacBook Neo ha una memoria SSD ...
Xbox Project Helix, le prime specifiche ...
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: 09:59.


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