Sfondo
Odio il modo. Net / IEEE-754 gestisce l'uguaglianza dei numeri in virgola mobile (FPN) (cioè doppio, float). Richiede al programmatore di essere preveggente rispetto alla cronologia del numero ancora da determinare, in quanto il programmatore deve scegliere un valore "ragionevole" di epsilon dove spesso non è possibile determinare un tale valore (poiché il programmatore non può determinare in anticipo di tempo quante operazioni, quindi arrotondamenti, il numero sarà soggetto a).
Vorrei creare un FPN "migliore" all'interno di .Net. Alla creazione, si imposta il suo errore scientifico iniziale (o si accetta un valore predefinito, il valore predefinito è il minimo). Quando si eseguivano operazioni sul FPN, tali operazioni aggiornavano l'errore scientifico (per tenere conto dell'effetto dell'arrotondamento). Quando si verifica l'uguaglianza di due FPN, è possibile determinare se i loro intervalli si sovrappongono (e anche la probabilità che siano lo stesso numero).
Domanda
Il codice stesso è semplice, le mie domande sono:
- In che modo le operazioni (+ - * / per iniziare) influiscono sull'errore scientifico di un FPN? Esistono delle formule per determinare questo errore scientifico?
- Capisco che un'ulteriore complicazione è la distribuzione non uniforme degli FPN. Ciò può ovviamente essere spiegato ridimensionando l'errore in proporzione all'errore scientifico intrinseco del risultato; ma esiste una formula per determinare l'errore scientifico intrinseco presente in un dato FPN?