Managing integer divide by zero checks in MATLAB R2016b codegen output
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
When generating C code using codegen in at least MATLAB R2016b that contains integer divisions like:
out = uint32(a)/uint32(b)
an elaborate scheme to check for division by zero is implemented as follows in C:
if (b == 0U) {
if (a == 0U) {
out = 0U;
} else {
out = MAX_uint32_T;
}
} else {
// the actual division regular case
}
I would like to be able to tell codegen that these zero checks are not necessary and only output the commented line but I am not able to find a configuration option for this functionality.
I would like so see an option like SaturateOnIntegerOverflow that is able to turn off adding code for Inf special cases but for zero division.
A different option would be the ability to tell codegen what range of values to expect for various input parameters or values.
Are either of the two options above available?
I am using the regular MATLAB Coder Toolbox from the command line in MATLAB R2016b as follows:
configstruct = coder.config('mex'); % can be exe
configstruct.SomeOption1 = SomeValue1;
configstruct.SomeOption2 = SomeValue2;
codegen(...
'SomeFunction.m',...
'-config',configstruct,...
'args',{...},...
);
The Embedded Coder Toolbox and Simulink are available to me if absolutely required.
4 Kommentare
Antworten (1)
Birdman
am 13 Nov. 2017
Go to Configuration Parameters->All Parameters and write Remove code that protects against division arithmetic exceptions. Its default value is off(unchecked). Make that on(checked).
10 Kommentare
Birdman
am 26 Nov. 2017
Don't you have a way to implement what you are doing right now in Simulink? Because it will be a lot easier for you.
Siehe auch
Kategorien
Mehr zu Simulink Coder finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!