Partial Fraction Decomposition for TI-85
by Ravi Prasad (4/17/92)


You must first run the uudecode "UUD20" program which will create the
"PRTLFRAC.85P" file and then you must run the "LINK85" program to load
the file to your TI85.

While writing the partial fraction program, I was forced to write an
n'th order derivative program.  A small routine in the "PRTLFRAC" 
program determines the derivative of a function F(x) = U(x) / V(x).  
The "DERIV" routine lets you get the n'th derivative of a polynomial.
Since I needed to get a derivative of a function f(x) = u(x) / g(x),
I used a combination of divide and multiply and deriv in a loop to get
the required result. The multiply and divide routines 
are basically the same ones currently on the archive listed as 
"Pmul" and "Pdiv" with  only slight modifications as needed. 
To properly add or subtract polynomials, I was also had to write 
a routine that would fix the list size of different degree polynomials.  
This routine can be used seperately as can the DERIV routine 
to do further handle polynomials.

                          Running the program.

Simply execute the "PRTLFRAC" program by selecting it from the PROG menu
You will be prompted to enter N(x) and the roots to D(x).  N(x) is the numerator
of the function to be worked on.  Accordingly, D(x) is the denominator of
the same function.  Due to accuracy problems, I was forced to write a routine
where you must enter the roots of the denominator versus entering the
denominator polynomial itselt.  Anyway, I latter emply the multiply routine
and build the needed denominator.  It is a good idea to enter duplicated roots
of D(x) at the same time, although not necessary.  After a while, the partial
fraction decomposition is done and the necessary information presented in
matrix form.  The matrix is also saved under the variable "x" for your
future review.  Again, due to accuracy problems on the TI, I have employed
a routine which randomly selects a number and checks the value of this
number in the original function, and then in the newly decomposed fraction
form.  If a difference between the two exist by more than the "tol" value
setup in you TI-85, the matrix presented is displayed with question marks.
I have found that in most cases, the difference is trivial and can be
ignored.  The difference between the two versions are held in the
greek character "omega" for your further review.

                                          2
example: give the                        x
                           F(x) = -------------------
                                        2
                                   (x+1)   (x+2)

                                                           2
enter in LIST form N(x): {1,0,0}        which represents 1x  + 0x + 0
enter in LIST form Roots of D(x): {-1,-1,-2}  which shows -1 as a double root

the solution presented in matrix form says that the fuction F(x) can also
be represented as:

        -3             1              4
     --------  +  -----------  +  ----------
            1            2               1
       (x+1)         (x+1)          (x+2)

The numerator values (-3,1,4) are presented in row 1 of the matrix
The values (x+n) where n is 1,1,2 are presented in row 2 of the matrix
The powers on the denominator (1,2,1) appear in row 3.

The matrix has been organixed such that each column corresponds to each term.

Again, as previously mentioned, if the computational difference greater
than the internal "tol" value exist between the original function and
the decomposed form, the screen has question marks displed next to the
sample matrix.  In most cases this is not anything significant.
One last note,  as always, I have made common practice to start all program 
variables with the greek letter omega.  This makes deletion of the variables 
much easier since they appear all together in the memory management screen.

