matlab interp C code generation, Waring: comparing floating point with == or != is unsafe
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I use interp1,interp2 in a .m file and generate C code, then the _sharedutils folder has a new xxxxx_interp1.c file to realize interp function, but the generated C code use "if floating point == floating point ", so C complier warn: comparing floating point with == or != is unsafe, how can I solve the problem in matlab and let it generate the rigtht C code.
0 Kommentare
Antworten (2)
SlipperyGnome
am 23 Jun. 2022
When comparing floating point numbers, because of very small rounding off errors, using '==' or '!=' will generate compiler warnings.
You can set an error tolerance upto the magnitude you need it to be same.
num1=0.8-0.5;
num2=0.3;
Error_tolerance= (1e-15)*max(num1,num2);
if (abs(num1-num2) < Error_tolerance)
disp(0);
else
disp("not 0")
end
This tolerance value method would work accurately upto 1e-15. You can also go to this link for better understanding.
2 Kommentare
SlipperyGnome
am 1 Jul. 2022
One of the ways is you can try remodelling with a lookup table block, which can henceforth generate better code for you.
Hope this helps!
Szabolcs Fodor
am 25 Okt. 2023
Hello there,
did you found a reasonable solution for this issue? I'm facing similar issues and this is a big no for our embeded system.
Please get back to me if you found a solution.
Cheers,
Szabi
0 Kommentare
Siehe auch
Kategorien
Mehr zu Model Compatibility finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!