How to use the model from Matlab

% The source code needs to be downloaded first:
websave("mex_evoapprox.c","https://ehw.fit.vutbr.cz/evoapproxlib/mex_evoapprox.c");
websave("add8_388.c","https://raw.githubusercontent.com/ehw-fit/evoapprox8b/master/adders_8/source_c/add8_388.c");
% Then, the MEX function add8_388 can be compiled:
mex mex_evoapprox.c add8_388.c -DEXTFUN=add8_388 -DOPTYPE=uint8_t -DRESTYPE=uint16_t -output add8_388;
% Optionally, path to GCC compiler can be specified:
%mex GCC='/usr/local/bin/gcc-6.3' mex_evoapprox.c add8_388.c -DEXTFUN=add8_388 -DOPTYPE=uint8_t -DRESTYPE=uint16_t -output add8_388;

% Finally, the MEX function can be called in your Matlab code as follows:
add8_388(123,210) % 123 + 210
add8_388([1,2,3,4,5],[10,20,30,40,50]) % 1+10 2+20 3+30 4+40 5+50

%DETERMINE ERROR metrics:
BW = 8 %bit-width
allcombs = [0:1:2^(BW+BW)-1]; 
inputs = [floor(allcombs/2^BW); mod(allcombs,2^BW)]; %all possible input vectors

req = inputs(1,:)+inputs(2,:);  %exact addition
res = add8_388(inputs(1,:),inputs(2,:));

ED = req - res; %error with respect to the `req`
ep=sum(ED~=0)/length(ED) % error probability
wce=max(abs(ED)) % worst-case error
nwce=max(abs(ED))/(2^(BW+BW)) % normalized worst-case error (multipliers)
nwce=max(abs(ED))/(2^(BW+1)) % normalized worst-case error (adders)
mae=mean(abs(ED)) % mean error distance
mse=mean(ED.^2) % mean square error