37 lines
882 B
Text
37 lines
882 B
Text
function [q, r] = poly_long_div(n, d)
|
|
gd = length(d);
|
|
pv = zeros(1, length(n));
|
|
pv(1:gd) = d;
|
|
if ( length(n) >= gd )
|
|
q = [];
|
|
while ( length(n) >= gd )
|
|
q = [q, n(1)/pv(1)];
|
|
n = n - pv .* (n(1)/pv(1));
|
|
n = shift(n, -1); %
|
|
tn = n(1:length(n)-1); % eat the higher power term
|
|
n = tn; %
|
|
tp = pv(1:length(pv)-1);
|
|
pv = tp; % make pv the same length of n
|
|
endwhile
|
|
r = n;
|
|
else
|
|
q = [0];
|
|
r = n;
|
|
endif
|
|
endfunction
|
|
|
|
[q, r] = poly_long_div([1,-12,0,-42], [1,-3]);
|
|
polyout(q, 'x');
|
|
polyout(r, 'x');
|
|
disp("");
|
|
[q, r] = poly_long_div([1,-12,0,-42], [1,1,-3]);
|
|
polyout(q, 'x');
|
|
polyout(r, 'x');
|
|
disp("");
|
|
[q, r] = poly_long_div([1,3,2], [1,1]);
|
|
polyout(q, 'x');
|
|
polyout(r, 'x');
|
|
disp("");
|
|
[q, r] = poly_long_div([1,3], [1,-12,0,-42]);
|
|
polyout(q, 'x');
|
|
polyout(r, 'x');
|