Ho una funzione getSlope che prende come parametri 4 doppie e restituisce un altro doppio calcolato utilizzando questi parametri dati nel modo seguente:perdita imprevisto di precisione quando si divide doppie
double QSweep::getSlope(double a, double b, double c, double d){
double slope;
slope=(d-b)/(c-a);
return slope;
}
Il problema è che quando si chiama questa funzione con argomenti per esempio:
getSlope(2.71156, -1.64161, 2.70413, -1.72219);
il risultato restituito è:
10.8557
e questo non è un buon risultato per i miei calcoli. Ho calcolato la pendenza utilizzando Mathematica e il risultato per la pista per gli stessi parametri è:
10.8452
o più cifre per la precisione:
10.845222072678331.
Il risultato restituito dal mio programma non è buono nei miei ulteriori calcoli. Inoltre, non ho capito come il programma restituisce 10.8557 a partire dal 10.845222072678331 (supponendo che questo sia il risultato approssimativo per la divisione)? Come posso ottenere il buon risultato per la mia divisione?
grazie in anticipo, Madalina
ho stampare il risultato utilizzando la riga di comando:
std::cout<<slope<<endl;
Può darsi che i miei parametri non sono forse buoni, come li leggo da un altro programma (che calcola un grafico, dopo aver letto questi parametri dal suo grafico li ho appena mostrati per vedere il loro valore ma forse i vettori visualizzati non hanno la stessa precisione interna per il valore calcolato..Non so che è davvero strano . Alcuni numerici appare un errore ..)
Quando il grafico da cui sto leggendo i miei parametri è calcolato, vengono utilizzate alcune librerie numeriche scritte in C++ (con modelli). Nessun OpenGL è usato per questo calcolo.
ringraziamento, Madalina
Verificare come il metodo è stato compilato in asm. Puoi farlo nel debugger, credo (almeno nello studio visivo). –
Il mio calc di Windows dà un buon risultato come Mathematica: D – klew
Quale compilatore, quale piattaforma? – peterchen