matlab interp C code generation, Waring: comparing floating point with == or != is unsafe
조회 수: 3 (최근 30일)
이전 댓글 표시
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1042520/image.png)
댓글 수: 0
답변 (2개)
SlipperyGnome
2022년 6월 23일
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
SlipperyGnome
2022년 7월 1일
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
2023년 10월 25일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Model Compatibility에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!