precision difference in matlab and gnu g++
5 views (last 30 days)
Show older comments
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 Comments
Answers (2)
Titus Edelhofer
on 3 Aug 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 Comments
DavidK
on 3 Aug 2012
2 Comments
Titus Edelhofer
on 3 Aug 2012
Again: everything in the interval [2* -2.168404344971009e-19 0] is equally correct.
Walter Roberson
on 4 Aug 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.
See Also
Categories
Find more on C Shared Library Integration in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!