Sto lavorando a una nuova versione del mio Mandelbrot screensaver e sto esaurendo la precisione in virgola mobile: i valori semplici double non hanno cifre significative sufficienti per le mie esigenze.Qualunque equivalente di "esteso" per C#?
Ulteriori cifre significative = maggiori livelli di zoom nella frattale
nuovo quando ho scritto una versione di questo salvaschermo in Delphi 7, ho usato il tipo extended virgola mobile, 80 bit nel formato.
In .NET, è possibile passare a decimal, ma il risultato di prestazioni per questo è terribile, rallentando la generazione di frattali di un fattore di circa 20.
Esiste un equivalente di esteso a per .NET? Oppure, in alternativa, esistono tipi numerici con maggiore precisione rispetto allo doppio che utilizza ancora l'FPU per la valutazione e che pertanto non ha il rendimento elevato di decimale?
Aggiornamento
mio Screensaver riesce già per ingrandire nel frattale da molti (tanti!) Ordini di grandezza; al momento viene reimpostato al frattale di base solo quando il tipo numerico in uso non è in grado di separare le ordinate per i pixel adiacenti. I 16 bit in più di precisione del miglioramento a doppio esteso mi darebbero quasi 16 doppioni più grandi.
Per quanto riguarda le prestazioni, il mio algoritmo riesce già a eliminare il 95-99% dei calcoli richiesti (rispetto a un'implementazione ingenua che calcola molti pixel), mantenendo l'integrità del frattale.
Probabilmente è necessario scrivere codice nativo per questo, poiché l'estensione fa uso del registro a virgola mobile a 80 bit in x86. O non sono sicuro se sia possibile ridurre la fame del programma per maggiore precisione. Non sono esperto in questo, quindi non posso dare ulteriori consigli. – nhahtdh