Polynomials Division Script
MATLAB/OCTAVE Script to Perform Polynomial Division
In Modular Arithmetic we perform also addition, subtraction and multiplication. Modular division
is avoided. Modular addition means finding Modulo of two or more added numbers. Modular
subtraction means to find Modulo of two or more subtracted numbers. Modular Multiplication
means finding Modulo of two or more multiplied numbers. Modular division doesn’t exist as it
is ignored because we need to guarantee that the quotient (of divided numbers before Modulo
operation) is an integer.
Division operation is still need for some arithmetics like CRC, therefore to perform such operation, the (dividend & divisor) are considered as polynomials.
The following script can be used to perform the division and it can run in MATLAB or Octave.
You can clone it directly from this Github page:
https://github.com/electgon/MATLAB_scripts/blob/master/crc_division.m
clear
pkg load communications
dividend = [1,1,0,1,0,1,1,0,1,1,0,0,0,0];
divisor =[1,0,0,1,1];
len_end = length(dividend);
len_sor = length(divisor);
if (len_sor <= len_end)
len_diff = len_end - len_sor;
for app_idx = len_sor+1 : len_sor+len_diff
divisor(:, app_idx) = 0;
end
else
printf("Division is not possible, dividend must be longer than divisor\n")
end
if (len_diff >= 0)
for div_idx = 1:len_diff+1
if (dividend(div_idx) == 1)
dividend = xor(dividend, divisor);
div_res(div_idx) = 1;
else
div_res(div_idx) = 0;
end
if (div_idx == len_diff+1)
break;
end
divisor = shift(divisor, 1);
divisor(:,1) = 0;
end
end
quotient = dec2hex(bi2de(div_res, 'left-msb'))
remainder = dec2hex(bi2de(dividend, 'left-msb'))
divisor = dec2hex(bi2de(divisor, 'left-msb'))