precision difference in matlab and gnu g++
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi all,
I have two short code examples which do the same. One is written in matlab the other in c++.
The result in matlab code is -2.168404344971009e-19.
The result in c++ code is -3.01755e-20
The difference in results is much toooo huge! What can I do?
Thanks in advance!
--- matlab code start ---
w = -0.00161579
rho = -3.23158e-05
gamma = 0.02
Igrad = 0.0004
w = w - rho * gamma / Igrad
--- matlab code end ---
--- c++ code start ---
#include <iostream>
int main() {
double w = -0.00161579;
double rho = -3.23158e-05;
double Igrad = 0.0004;
const double gamma = 0.02;
w = w - rho * gamma / Igrad;
std::cout << w << std::endl;
}
--- c++ code end ---
0 Commenti
Risposte (2)
Titus Edelhofer
il 3 Ago 2012
Hi,
not really: both answers are equally correct up to round off: the roundoff for the last difference is
eps(rho*gamma/Igrad)
which is in fact the answer MATLAB gives. Every answer that deviates from this by a maximum of 2.168e-19 is "correct".
Titus
0 Commenti
DavidK
il 3 Ago 2012
2 Commenti
Titus Edelhofer
il 3 Ago 2012
Again: everything in the interval [2* -2.168404344971009e-19 0] is equally correct.
Walter Roberson
il 4 Ago 2012
c++ does not use fixed-point arithmetic. c++ has the same roundoff problems that MATLAB has. It is possible, however, that in C++ the rounding mode is initialized differently.
Vedere anche
Categorie
Scopri di più su C Shared Library Integration in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!