precision difference in matlab and gnu g++
Afficher commentaires plus anciens
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 ---
Réponses (2)
Titus Edelhofer
le 3 Août 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
DavidK
le 3 Août 2012
2 commentaires
Titus Edelhofer
le 3 Août 2012
Again: everything in the interval [2* -2.168404344971009e-19 0] is equally correct.
Walter Roberson
le 4 Août 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.
Catégories
En savoir plus sur Write C Functions Callable from MATLAB (MEX Files) dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!