Division of polynomials

PROBLEM
Given the N+1 coefficients of a polynomial of degree N in A.0,A.1,...,A.N, and M+1 coefficients of a polynomial of degree M in B.0,B.1,...,B.M, divide the polynomial A. by the polynomial B. giving a quotient polynomial in Q.1,Q.2,...,Q.NmM, where NmM=N-M and remainder polynomial whose coefficients are in R.1,R.2,...,R.Mm1, where Mm1=M-1.

IMPLEMENTATION
Unit: internal subroutine
 
Global variables: input arrays A., B.; output arrays Q., R.
 
Parameters: positive integers N, M; N>=M>=0
 
Result: quotient polynomial in Q.1,Q.2,...,Q.NmM, where NmM=N-M; remainder polynomial in R.1,R.2,...,R.Mm1, where Mm1=M-1
 

POLDIV: procedure expose A. B. R. Q.
parse arg N, M
Q. = 0
do J = 0 to N; R.J = A.J; end
do K = N - M to 0 by -1
  MpK = M + K; Q.K = R.MpK / B.M
  do J = M + K - 1 to K by -1
    JmK = J - K; R.J = R.J - Q.K * B.JmK
  end
end
return

 

EXAMPLE
The following program

N = 4; M = 2
A.0 = 6; A.1 = -5; A.2 = 4; A.3 = -3; A.4 = 2
B.0 = 1; B.1 = -3; B.2 = 1
call POLDIV N, M
Quo = ""
do J = N - M to 0 by -1; Quo = Quo Q.J"*X**"J; end
Rem = ""
do J = M - 1 to 0 by -1; Rem = Rem R.J"*X**"J; end
say "quotient" Quo || "; remainder" Rem
exit

POLDIV: procedure expose A. B. R. Q.
...

displays on the screen

quotient 2*X**2 3*X**1 11*X**0; remainder 25*X**1 -5*X**0

 

CONNECTIONS

Literature
Press W.H., Teukolsky S.A., Vetterling W.T., Flannery B.P. Numerical Recipes in C : the art of scientific computing
- 2nd ed. University Press, Cambridge, 1992
Faddejev A.K., Sominskij J.S. Sbornik zadac po vyssej algebre
Nauka, Moskva 1964


Cover Contents Index Main page

last modified 9th August 2001
Copyright 2000-2001 Vladimir Zabrodsky
Czech Republic