p = fipref;
p.NumericTypeDisplay = 'short';
p.FimathDisplay = 'none';
p.LoggingMode = 'on';
format compact
DataWordLength = 4
DataFracLength = 3
MultWordLength = 8
MultFracLength = 7
AccWordLength = 10
AccFracLength = 8
Tdata = numerictype('WordLength', DataWordLength, 'FractionLength', DataFracLength)
Tmult = numerictype('WordLength', MultWordLength, 'FractionLength', MultFracLength)
Taccum = numerictype('WordLength', AccWordLength, 'FractionLength', AccFracLength)
F = fimath('ProductMode','SpecifyPrecision', ...
'ProductWordLength',AccWordLength, 'ProductFractionLength',AccFracLength, ...
'SumMode','SpecifyPrecision', 'SumWordLength', AccWordLength, ...
'SumFractionLength',AccFracLength)
Fdata = fimath('ProductMode','SpecifyPrecision', ...
'ProductWordLength',DataWordLength, 'ProductFractionLength',DataFracLength, ...
'SumMode','SpecifyPrecision', 'SumWordLength', DataWordLength, ...
'SumFractionLength',DataFracLength)
x = fi(-1, Tdata, F)
y = fi(-1, Tdata, F)
z = fi(-1, Tdata, Fdata)
acc = fi(0, Taccum, F)
mult = fi(0, Tmult, F)
mult(:) = x * y
acc(:) = x * y
z(:) = acc
Best Answer