From: eldorado@ecn.purdue.edu (Dave Jansen)
Newsgroups: comp.sources.hp48
Subject: v04i008:  laplace_dj - Laplace & Inverse Laplace Transforms v1.0, Part01/01
Date: 29 Feb 92 20:06:24 GMT
Followup-To: comp.sys.hp48
Organization: Univ. of North Carolina @ Wilmington

Checksum: 2466395008 (verify with brik -cv)
Submitted-by: Dave Jansen <eldorado@ecn.purdue.edu>
Posting-number: Volume 4, Issue 8
Archive-name: laplace_dj/part01

BEGIN_DOC laplace.doc
These are some public domain routines to work in conjunction with Wayne Scott's
polynomial routines.  The routines included will find any given level of a
Pascal triangle, convert the output of the PF (partial fraction routine)
complex linear terms to real quadratic terms, take this output and find
Inverse Laplace Transforms, and find Laplace and Inverse Laplace Transforms
of equations.

PASCALTRI - Finds a level of Pascal's triangle

            example :
                    Input       1:  4

                    Output      1:  { 1 4 6 4 1 }

CONV - When using the partial fraction program in Wayne Scott's Poly routines,
       quadratic terms in the denominator must be split into their corresponding
       linear terms (this is done with the RT or Root program).  This is
			 necessary to find the partial fraction, but afterwards it is often
			 important to work with real coefficients.  This routine will convert
			 all the complex terms in a poly list to the original quadratic with
			 real coefficients.

       example :
                   Polynomial Form            Actual Equation

       Input   2:  { 3 -2.5 1.25 1.25 }        3     -2.5      1.25       1.25
               1:  { -4 -4 (-2,2) (-2,-2) }  ----- + ----- + -------- + --------
                                             (S+4)   (S+4)   (S+2-2i)   (S+2+2i)

       Output  2:  { 3 -2.5 { 2.5 5 } }         3     -2.5      (2.5S + 5)
               1:  { 4 4 { 4 8 } }            ----- + ----- + --------------
                                              (S+4)   (S+4)   (S^2 + 4S + 8)

       Notice that the values in the denominator are no longer the roots
       but instead the coefficients of a polynomial.  For this reason, the
       values change sign.  Also, the nested list is a linear term in the
       numerator and a quadratic in the denominator.  The coefficient in front
       of the S^2 term is always one and so is not included in the list.

L2EQ - This routine converts the output list from the CONV routine above and
       returns the Inverse Laplace of the polynomial equation.
       
			 example :
       Input   2:  { 3 -2.5 { 2.5 5 } }         3     -2.5      (2.5S + 5)
               1:  { 4 4 { 4 8 } }            ----- + ----- + --------------
                                              (S+4)   (S+4)   (S^2 + 4S + 8)

       Output  1:  '2.5*EXP(-2*T)*COS(sqrt(4)*T)*u(T)+(-(2.5*EXP(-4*T)*u(T))
                   +3/(2-1)!*T^(2-1)*EXP(-4*T)*u(T))'

       or after using COLCT in the Algebra directory:

       '3*EXP(-(4*T))*u(T)*T+2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)'

       Notice the routine will handle real repeated roots but so far will not
       convert repeated complex roots.

L-> - Takes the Inverse Laplace Transform of an equation of any of the forms
			listed below.  It is rather picky about signs, parenthesis, the order of
			subterms, and the presence of leading coefficients.  The L2EQ routine
			will automatically take care of these little annoyances.  For example,
			in the 1/(S+a) term, the sign must be a + and not a - sign in your
			equation, or else it will not transform it.  About the parenthesis,
			((5*S)/(S^2+4)) is not the same as 5*S/(S^2+4) and so will not transform.
			The ordering within terms is very important.  S*5/(S^2+4) will not
			transform correctly to 5*COS(2*T) but instead to S*5/2*SIN(2*T).  Also a
			leading coefficient must be present in front of the term or it will
			not transform:  S/(S^2+4) will not transform; instead use 1*S/(S^2+4).
			Time and frequency shifting is supported.  1/(S+a) will transform to
			1*EXP(-a*T)*u(T) and 1/S*EXP(a*S) will convert to 1*u(T-a).  In the use
			of the time shift, the EXP(a*S) term must be at the end of the term and
			the time shift will show up in the u(T-a) term but not in the
			transformed equation.  This means that 1/s^2*EXP(T-2) returns
			1*T*u(T-2) but should be 1*(T-2)*u(T-2).  For the Dirac Delta function,
			d(T) was chosen instead of the delta symbol, since that is already
      used for differentiation.  The following is a list of terms this
			routine recognizes:

      '1/S'
      '1/(S+a)'
      '1/S^2'
      '1/S^n'
      '1/(S+a)^n'
      'S/(S^2+w^2)'
      '1/(S^2+w^2)'
      '(S+a)/((S+a)^2+w^2)'
      '1/((S+a)^2+w^2)'
      '(S^2-w^2)/(S^2+w^2)^2'
      '2wS/(S^2+w^2)^2'
      '(S*COS(h)-w*SIN(h))/(S^2+w^2)'
      '(S*SIN(h)+w*COS(h))/(S^2+w^2)'
      '1/((S+a)*(S+b))'

->L - Takes the Laplace Transform of an equation.  Below is a listing of the
			forms the routine will recognize.  Notice the sign conventions,
			parenthetic ordering, requirement of a leading coefficient, and
			subterm ordering as in the Laplace Transform routine.

      'd(T)'
      'u(T)'
      'EXP(-a*T)*u(T)'
      'r(T)'
      'T^n*u(T)'
      '(T-a)^n*u(T-a)'
      'T^n*EXP(-a*T)*u(T)'
      'COS(w*T)*u(T)'
      'SIN(w*T)*u(T)'
      'EXP(-a*T)*COS(w*T)*u(T)'
      'EXP(-a*T)*SIN(w*T)*u(T)'
      'T*COS(w*T)*u(T)'
      'T*SIN(w*T)*u(T)'
      'COS(w*T+h)*u(T)'
      'SIN(w*T+h)*u(T)'
      '(EXP(-a*T)-EXP(-b*T))*u(T)'

Some tips and suggestions I have are to save the denominator before doing a
partial fraction expansion (PF) to use for the CONV routine.  This way you do
not have to re-enter it later.  The routines that find the Laplace and Inverse
Laplace Transforms take a little while (atleast 15 seconds depending on the
complexity of the equation being transformed).  For this reason, L2EQ is slowed
down since it calls the Inverse Laplace Transform routine.  The reason I did not
combine the partial fractions and Inverse Laplace Transform into one routine is
to allow the user to edit the output from the roots (ex: 2.00000000001 should be
changed to 2.0).  Remember that repeated roots MUST be adjacent in the list for
the routines to work correctly.  Wayne's partial fraction (PF) routine requires
this, as does the L2EQ routine.  As you will find out, it will be useful to use
the COLCT function in the Algebra menu to reduce the equations.  Two examples
follow.

example 1            S + 3
              -------------------
              S^3 + 5S^2 + 8S + 4

    2:  { 1 3 }
    1:  { 1 5 8 4 }
RT
    4:  { 1 3 }
    3:  -.999999999991
    2:  -1.99999799053
    1:  -2.00000200949
round off and put in list observing correct root order ( 3 ->LIST )
    2:  { 1 3 }
    1:  { -1 -2 -2 }
copy denominator ( DUP ROT ROT )
    3:  { -1 -2 -2 }
    2:  { 1 3 }
    1:  { -1 -2 -2 }
PF
    2:  { -1 -2 -2 }
    1:  { 2 -1 -2 }
SWAP
    2:  { 2 -1 -2 }
    1:  { -1 -2 -2 }
CONV
    2:  { 2 -1 -2 }
    1:  { 1 2 2 }
L2EQ
    1:  '-(2*EXP(-2*T)*u(T))+(-1/(2-1)!*T^(2-1)*EXP(-2*T)*u(T)+2*EXP(-1*T)*u(T))'
COLCT
    1:  '-(EXP(-(2*T))*u(T)*T)+2*EXP(-T)*u(T)-2*EXP(-(2*T))*u(T)'



example 2          8(S^2 + 4S + 3)
               ------------------------
               (S + 4)^2 (S^2 + 4S + 8)
multiplies out to
    2:  { 8 32 24 }
    1:  { 1 12 56 128 128 }
RT
    2:  { 8 32 24 }
    1:  { -4 -4 (-2,2) (-2,-2) }
PF
    2:  { 3 -2.5 1.25 1.25 }
    1:  { -4 -4 (-2,2) (-2,-2) }
CONV
    2:  { 3 -2.5 { 2.5 5 } }
    1:  { 4 4 { 4 8 } }
L2EQ
    1:  '2.5*EXP(-2*T)*COS(sqrt(4)*T)*u(T)+(-(2.5*EXP(-4*T)*u(T))
        +3/(2-1)!*T^(2-1)*EXP(-4*T)*u(T))'
COLCT
    1: '3*EXP(-(4*T))*u(T)*T+2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)'

As you can see, these will help will Laplace Transforms but will not do them for
you.  A student learning Laplace Transforms will still need to know them just
to use these routines.  I have tested them for some time and know not of
any/many bugs but I am aware of its limitations, as anyone who uses these.
Please send any questions, comments and bug reports.


Dave
________________________________________________________________________________
David Jansen            |  INTERNET: eldorado@en.ecn.purdue.edu
Electrical Engineering  |  BITNET:   eldorado%ea.ecn.purdue.edu@purccvm
Purdue University       |  UUCP:     {purdue, pur-ee}!en.ecn.purdue.edu!eldorado
END_DOC

BEGIN_RPL laplace.rpl
%%HP: T(3)A(D)F(.);
DIR
  L2EQ
\<<
  0 0 0 0 0 0 0 0 0 0
  \-> Nlist Dlist a b c d e f g h I dups
  \<<
    Dlist SIZE 1 FOR I
      IF I Dlist SIZE \=/ THEN
        IF Dlist I GET Dlist I 1 + GET SAME THEN
          'dups' 1 STO+
        ELSE 1
          'dups' STO
        END
      ELSE
        1 'dups' STO
      END
      Dlist I GET
      IF DUP SIZE 2 == THEN
        OBJ\-> DROP 'd' STO 'c' STO
        Nlist I GET OBJ\-> DROP 'b' STO 'a' STO
        IF c 0 == THEN
          IF dups 2 == THEN
            'S^2' d d * + 2 ^ DUP 'S^2' d d * - SWAP / 2 d * 'S' * ROT / +
          ELSE
            'S^2' d d * + DUP a 'S' * SWAP / b ROT / +
          END
        ELSE
          1 c d 3 \->LIST RT DROP C\->R 'f' STO 'e' STO
          a b 2 \->LIST 1 e NEG 2 \->LIST PDIV
          OBJ\-> DROP 'h' STO OBJ\-> DROP 'g' STO
          'S' e NEG IF DUP TYPE 0 == e 0 < AND THEN 0 R\->C END + DUP
          g SWAP * SWAP 2 ^ f f * + DUP ROT ROT / SWAP h SWAP / +
        END
      ELSE
        IF DUP 0 == THEN
          IF dups 1 > THEN
            DROP Nlist I GET 'S' dups ^ /
          ELSE
            DROP Nlist I GET 'S' /
          END
        ELSE
          IF dups 1 > THEN
            'S' SWAP IF DUP DUP TYPE 0 == SWAP 0 < AND THEN 0 R\->C END +
            dups ^ Nlist I GET SWAP /
          ELSE
            'S' SWAP IF DUP DUP TYPE 0 == SWAP 0 < AND THEN 0 R\->C END +
            Nlist I GET SWAP /
          END
        END
      END
    -1 STEP
    IF Dlist SIZE 1 > THEN
      2 Dlist SIZE START
        +
      NEXT
    END
    L\->
    IF DEPTH 1 > THEN
      IF SWAP DUP TYPE 5 == THEN
        OBJ\-> DROP 'd(T)' * +
      END
    END
  \>>
\>>
  CONV
    \<< 0 0 0 0 0 0 \->
numer denom count
len a b r1 r2
      \<< numer SIZE
'count' STO
        WHILE count
1 >
        REPEAT
denom count GET
'r2' STO denom
count 1 - GET 'r1'
STO
          IF r1 IM
0 \=/ r2 IM 0 \=/ AND
r1 CONJ r2 == AND
          THEN
numer count 1 - GET
'a' STO numer count
GET 'b' STO denom
count 1 - r1 r2 +
NEG r1 r2 * 2 \->LIST
PUT OBJ\-> DUP 'len'
STO count - 1 +
ROLL DROP len 1 -
\->LIST 'denom' STO
numer count 1 - a b
+ a r2 * b r1 * +
NEG 2 \->LIST PUT
OBJ\-> DUP 'len' STO
count - 1 + ROLL
DROP len 1 - \->LIST
'numer' STO 'count'
-2 STO+
          ELSE
denom count DUP2
GET NEG PUT 'denom'
STO 'count' -1 STO+
          END
        END
        IF count 1
==
        THEN denom
1 DUP2 GET NEG PUT
'denom' STO
        END numer
denom
      \>>
    \>>
  \->L
    \<< { '&k*(T-&a)^
&n*u(T-&a)' '&k*&n!
/S^(&n+1)*EXP(-&a*S
)' } \|vMATCH DROP {
'&k*u(T-&a)' '&k*u(
T)*EXP(-&a*S)' }
\|vMATCH DROP { '&k*r
(T-&a)' '&k*r(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T-&a)' '&k*d(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T)' &k } \|vMATCH
DROP { '&k*r(T)' '
&k/S^2' } \|vMATCH
DROP { '&k*T^&n*u(T
)' '&k*&n!/S^(&n+1)
' } \|vMATCH DROP { '
&k*T^&n*EXP(&a*T)*u
(T)' '&k*&n!/(S-&a)
^(&n+1)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*COS(&\Gw*T)*u(T)' '
&k*(S-&a)/((S-&a)^2
+&\Gw^2)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*SIN(&\Gw*T)*u(T)' '
&k*&\Gw/((S-&a)^2+&\Gw^
2)' } \|vMATCH DROP {
'&k*T*COS(&\Gw*T)*u(T
)' '&k*(S^2-&\Gw^2)/(
S^2+&\Gw^2)^2' }
\|vMATCH DROP { '&k*T
*SIN(&\Gw*T)*u(T)' '
&k/(2*&\Gw)*S/(S^2+&\Gw
)^2' } \|vMATCH DROP
{ '&k*COS(&\Gw*T+&\Gh)*
u(T)' '&k*(S*COS(&\Gh
)-&\Gw*SIN(&\Gh))/(S^2+
&\Gw^2)' } \|vMATCH
DROP { '&k*SIN(&\Gw*T
+&\Gh)*u(T)' '&k*(S*
SIN(&\Gh)+&\Gw*COS(&\Gh))
/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
COS(&\Gw*T)*u(T)' '&k
*S/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
SIN(&\Gw*T)*u(T)' '&k
*&\Gw/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*(
EXP(&\Ga*T)-EXP(&\Gg*T)
)*u(T)' '&k/((S-&\Ga)
*(S-&\Gg))' } \|vMATCH
DROP { '&k*EXP(&a*T
)*u(T)' '&k/(S-&a)'
} \|vMATCH DROP { '&k
*u(T)' '&k/S' }
\|vMATCH DROP
    \>>
  L\->
    \<< { '&k/S' '&k*
u(T)' } \|vMATCH DROP
{ '&k/(S+&a)' '&k*
EXP(-&a*T)*u(T)' }
\|vMATCH DROP { '&k/S
^2' '&k*r(T)' }
\|vMATCH DROP { '&k/S
^&n' '&k/(&n-1)!*T^
(&n-1)*u(T)' }
\|vMATCH DROP { '&k/(
S+&a)^&n' '&k/(&n-1
)!*T^(&n-1)*EXP(-&a
*T)*u(T)' } \|vMATCH
DROP { '&k/S^&n*EXP
(&a*S)' '&k/(&n-1)!
*(T-&a)^(&n-1)*u(T-
&a)' } \|vMATCH DROP
{ '&k*(S+&a)/((S+&a
)^2+&\Gw)' '&k*EXP(-
&a*T)*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k/((S+&a)^2+&\Gw)'
'&k/\v/&\Gw*EXP(-&a*T)*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S^2-&\Gw)/(S^2+&\Gw)^2'
'&k*T*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k*S/(S^2+&\Gw)^2' '
&k/(2*\v/&\Gw)*T*SIN(\v/
&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S*COS(&\Gh)-&\Gw*SIN(&\Gh
))/(S^2+&\Gr)' '&k*
COS(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*(S*SIN(&\Gh)+&\Gw*COS(
&\Gh))/(S^2+&\Gr)' '&k*
SIN(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*S/(S^2+&\Gw)' '&k*
COS(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
S^2+&\Gw)' '&k/\v/&\Gw*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
(S+&\Ga)*(S+&\Gg))' '&k
/(&\Gg-&\Ga)*(EXP(-&\Ga*T
)-EXP(-&\Gg*T))*u(T)'
} \|vMATCH DROP { '&k
*&f(T)*EXP(&a*S)' '
&k*&f(T+&a)' }
\|vMATCH DROP { '&k*
EXP(&a*S)' '&k*d(T+
&a)' } \|vMATCH DROP
    \>>
  PASCALTRI
    \<< \-> n
      \<<
        IF n 0 ==
        THEN { 1 }
        ELSE
          IF n 1 ==
          THEN { 1
1 }
          ELSE { 1
1 } 1 n 1 -
            START {
1 1 } PMUL
            NEXT
          END
        END
      \>>
    \>>
END
END_RPL

BEGIN_ASC laplace.asc
%%HP: T(3)A(D)F(.);
"69A20FF75362000000900514353414C445259490D9D20E16321C432D6E2010E6
E16323CE22D6E2010E64B2A2279E1AFE2247A209C2A2B21305BF22D9D203CE22
D6E2010E69C2A2279E1AFE2247A209C2A29C2A2B21305BF22D9D2047A209C2A2
9C2A2B21309C2A2D6E2010E69C2A290DA13013247A209C2A29C2A2B213084E20
4005D455C4C4232B21305DF22B21305DF22EF53293632B21300210020C4D820D
9D20E163247A208BA2084E202062B684E20103550FA1B21308BA2084E202062B
684E2010458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF1
47A208BA2084E202062B684E20103584E2020621676BA150FA1B21308BA2084E
202062B684E20206216599A184E201045EEDA1509B1EEDA184E2010458BA2084
E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E2020
62B684E201035ED2A2D20B150FA1B21308BA2084E202062B684E2010458BA208
4E201027B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202
062B684E20103584E202062E6D20B150FA1B21308BA2084E202062B684E20206
2E69C2A290DA120BB150FA184E20104584E202062E69C2A290DA1D20B1EEDA18
4E2010458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147
A208BA2084E202062B684E20103584E2020621676BA184E202062E6D20B150FA
1B21308BA2084E202062B684E202062E69C2A290DA120BB150FA184E20104584
E202062E69C2A290DA1D20B1EEDA184E20206216599A184E201045EEDA1509B1
EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18
DBF147A208BA2084E202062B684E20103584E202062E6D20B150FA184E202062
1684E201035EEDA1509B1EEDA1B21308BA2084E202062B684E202062E69C2A29
0DA120BB150FA184E20104584E2020621690DA184E202062E69C2A290DA1D20B
1EEDA184E20104584E2020621690DA18BA2084E201057B21309FF30046F1EEDA
1B2130B2130D8AF18DBF147A208BA2084E202062B684E20103584E2020621676
BA1EEDA184E20103584E2020621676BA1ED2A2D20B184E202062A976BA150FA1
B21308BA2084E202062B684E20206216599A184E201045EEDA1509B1EEDA184E
202062A9473B184E201045EEDA1505B1EEDA184E2010458BA2084E201057B213
09FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E2010
3584E2020621676BA1ED2A2D20B184E202062A976BA150FA1B21308BA2084E20
2062B684E202062A9473B150FA184E20206216599A184E201045EEDA1509B1EE
DA184E202062A9473B184E201045EEDA1CA4B1EEDA184E2010458BA2084E2010
57B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B68
4E201035ED2A2D20B184E202062A990DA1EEDA184E201035ED2A2D20B184E202
062A976BA1ED2A2D20B150FA1B21308BA2084E202062B684E201045EEDA184E2
02062A9473B184E201045EEDA1505B1EEDA184E2010458BA2084E201057B2130
9FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E20103
5EEDA184E201035ED2A2D20B184E202062A976BA1ED2A2D20B150FA1B21308BA
2084E202062B6ED2A284E202062A9473B1EEDA150FA184E201045EEDA184E202
062A9473B184E201045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309F
F30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E2010358
4E20206259505B1EEDA184E202062A984E20206259CA4B1EEDA190DA1EEDA184
E201035ED2A2D20B184E2020627976BA150FA1B21308BA2084E202062B684E20
2062A984E201045EEDA184E2020625976BA1505B1EEDA184E2010458BA2084E2
01057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062
B684E20103584E20206259CA4B1EEDA184E202062A984E20206259505B1EEDA1
76BA1EEDA184E201035ED2A2D20B184E2020627976BA150FA1B21308BA2084E2
02062B684E202062A984E201045EEDA184E2020625976BA1CA4B1EEDA184E201
0458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208B
A2084E202062B684E201035EEDA184E201035ED2A2D20B184E202062A976BA15
0FA1B21308BA2084E202062B684E202062A9473B184E201045EEDA1505B1EEDA
184E2010458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF1
47A208BA2084E202062B684E201035ED2A2D20B184E202062A976BA150FA1B21
308BA2084E202062B684E202062A9473B150FA184E202062A9473B184E201045
EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B2130B
2130D8AF18DBF147A208BA2084E202062B684E20103584E202062C876BA184E2
0103584E2020621976BA1EEDA150FA1B21308BA2084E202062B684E202062198
4E202062C890DA150FA184E202062C8599A184E201045EEDA1509B184E202062
19599A184E201045EEDA1509B190DA1EEDA184E2010458BA2084E201057B2130
9FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E20104
58BA2084E20206266B21309FF30046F1EEDA184E2020621684E201035EEDA150
9B1EEDA1B21308BA2084E202062B684E20104584E2020621676BA18BA2084E20
206266B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E20206
2B684E2020621684E201035EEDA1509B1EEDA1B21308BA2084E202062B684E20
104584E2020621676BA18BA2084E201046B21309FF30046F1EEDA1B2130B2130
D8AF18DBF193632B2130DDE0020D8C420D9D20E163247A208BA2084E202062B6
84E20104584E2020621690DA184E202062E6D20B1EEDA184E20104584E202062
1690DA18BA2084E201057B21309FF30046F1EEDA1B21308BA2084E202062B684
E202062E620BB1EEDA184E20103584E202062E69C2A276BA1D20B150FA184E20
206216599A184E201035EEDA1509B1EEDA1B2130B2130D8AF18DBF147A208BA2
084E202062B684E20104584E2020621690DA18BA2084E201057B21309FF30046
F1EEDA1B21308BA2084E202062B684E2010458BA2084E201057B21309FF30046
F1EEDA184E20206216599A184E201035EEDA1509B1EEDA1B2130B2130D8AF18D
BF147A208BA2084E202062B684E20104584E2020621690DA18BA2084E201027B
21309FF30046F1EEDA1B21308BA2084E202062B684E2010458BA2084E201027B
21309FF30046F1EEDA184E20206216599A184E201035EEDA1509B1EEDA1B2130
B2130D8AF18DBF147A208BA2084E202062B684E20104584E2020621690DA18BA
2084E201046B21309FF30046F1EEDA1B21308BA2084E202062B684E2010458BA
2084E201046B21309FF30046F1EEDA184E20206216599A184E201035EEDA1509
B1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E2010458BA2084
E201046B21309FF30046F1EEDA1B213084E202062B6B2130D8AF18DBF147A208
BA2084E202062B684E2010458BA2084E201027B21309FF30046F1EEDA1B21308
BA2084E202062B684E201035ED2A2D20B150FA1B2130B2130D8AF18DBF147A20
8BA2084E202062B684E20104584E202062E6D20B1EEDA184E2010458BA2084E2
01057B21309FF30046F1EEDA1B21308BA2084E202062B684E202062E620BB1EE
DA184E20103584E202062E69C2A276BA1D20B150FA1B2130B2130D8AF18DBF14
7A208BA2084E202062B684E20104584E202062E6D20B1EEDA184E2020621684E
201045EEDA1509B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1
B21308BA2084E202062B684E202062E620BB1EEDA184E20103584E2020621690
DA184E202062E69C2A276BA1D20B150FA1B2130B2130D8AF18DBF147A208BA20
84E202062B684E2020621684E201045EEDA1509B1EEDA184E202062A984E2010
45EEDA1505B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B213
08BA2084E202062B684E20103584E2020621690DA1EEDA184E20103584E20206
21690DA1ED2A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF1
8DBF147A208BA2084E202062B684E2020621684E201045EEDA1509B1EEDA184E
202062A984E201045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF3
0046F1EEDA1B21308BA2084E202062B684E202062A9EEDA184E20103584E2020
621690DA1ED2A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF
18DBF147A208BA2084E202062B684E201045EEDA184E202062A984E201045EED
A1505B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA2
084E202062B684E201035ED2A2D20B184E202062A9ED2A2D20B190DA1EEDA184
E201035ED2A2D20B184E202062A9ED2A2D20B176BA1ED2A2D20B150FA1B2130B
2130D8AF18DBF147A208BA2084E202062B684E201045EEDA184E202062A984E2
01045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B
21308BA2084E202062B6ED2A284E202062A9EEDA150FA184E201035EEDA184E2
01035ED2A2D20B184E202062A976BA1ED2A2D20B150FA1B2130B2130D8AF18DB
F147A208BA2084E202062B684E202062A984E201045EEDA184E2020625976BA1
505B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA208
4E202062B684E20103584E20206259505B1EEDA184E202062A984E20206259CA
4B1EEDA190DA1EEDA184E201035ED2A2D20B184E202062A9ED2A2D20B176BA15
0FA1B2130B2130D8AF18DBF147A208BA2084E202062B684E202062A984E20104
5EEDA184E2020625976BA1CA4B1EEDA184E2010458BA2084E201057B21309FF3
0046F1EEDA1B21308BA2084E202062B684E20103584E20206259CA4B1EEDA184
E202062A984E20206259505B1EEDA176BA1EEDA184E201035ED2A2D20B184E20
2062A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208BA2084E20206
2B684E202062A984E201045EEDA1505B1EEDA184E2010458BA2084E201057B21
309FF30046F1EEDA1B21308BA2084E202062B684E201035EEDA184E201035ED2
A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208
BA2084E202062B684E202062A984E201045EEDA1CA4B1EEDA184E2010458BA20
84E201057B21309FF30046F1EEDA1B21308BA2084E202062B684E202062A9EED
A184E201035ED2A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8
AF18DBF147A208BA2084E202062B684E202062C884E201045EEDA1509B184E20
20621984E201045EEDA1509B190DA1EEDA184E2010458BA2084E201057B21309
FF30046F1EEDA1B21308BA2084E202062B684E20103584E202062C890DA184E2
0103584E2020621990DA1EEDA150FA1B2130B2130D8AF18DBF147A208BA2084E
202062B684E2020621684E201045EEDA1509B1EEDA184E2010458BA2084E2010
57B21309FF30046F1EEDA1B21308BA2084E202062B684E20103584E202062169
0DA150FA1B2130B2130D8AF18DBF147A208BA2084E202062B684E2010458BA20
84E201057B21309FF30046F1EEDA1B21308BA2084E202062B684E20103550FA1
B2130B2130D8AF18DBF193632B2130500104034F4E46540D9D20E16324B2A24B
2A24B2A24B2A24B2A24B2A21C432D6E2050E657D65627D6E20504656E6F6D6D6
E205036F657E647D6E2030C656E6D6E201016D6E201026D6E20202713D6E2020
2723E1632D6E2050E657D656278B9C145632D6E205036F657E64797632DCC023
3032D6E205036F657E6479C2A2D5CE1D5032D9D20D6E20504656E6F6D6D6E205
036F657E6476C7D145632D6E2020272397632DCC02D6E20504656E6F6D6D6E20
5036F657E6479C2A290DA16C7D145632D6E2020271397632DCC023CE22D6E202
02713918C14B2A2D9AE1D6E20202723918C14B2A2D9AE1387E1D6E20202713E6
AA1D6E20202723279E1387E1AFE22D9D20D6E2050E657D65627D6E205036F657
E6479C2A290DA16C7D145632D6E20101697632DCC02D6E2050E657D65627D6E2
05036F657E6476C7D145632D6E20102697632DCC02D6E20504656E6F6D6D6E20
5036F657E6479C2A290DA1D6E20202713D6E2020272376BA1599A1D6E2020271
3D6E20202723EEDA1ED2A2387C1704D1B7FC178BF145632D6E2030C656E69763
2DCC02D6E205036F657E64790DA19C2A276BA15BCF18DBF1D6E2030C656E69C2
A290DA1387C145632D6E20504656E6F6D697632DCC02D6E2050E657D65627D6E
205036F657E6479C2A290DA1D6E201016D6E20102676BA1D6E201016D6E20202
723EEDA1D6E201026D6E20202713EEDA176BA1599A1ED2A2387C1704D1B7FC17
8BF145632D6E2030C656E697632DCC02D6E205036F657E64790DA19C2A276BA1
5BCF18DBF1D6E2030C656E69C2A290DA1387C145632D6E2050E657D656279763
2DCC0245632D6E205036F657E64797632B93A2B4402B21305BF22D9D20D6E205
04656E6F6D6D6E205036F657E6472ABF16C7D1599A1704D145632D6E20504656
E6F6D697632DCC0245632D6E205036F657E64797632683A2B4402B21305DF22B
2130496323CE22D6E205036F657E6479C2A2279E1AFE22D9D20D6E20504656E6
F6D69C2A22ABF16C7D1599A1704D145632D6E20504656E6F6D697632DCC02B21
305DF22D6E2050E657D65627D6E20504656E6F6D6EF53293632B21305160040C
423541540D9D20E16324B2A24B2A24B2A24B2A24B2A24B2A24B2A24B2A24B2A2
4B2A21C432D6E2050E4C6963747D6E205044C6963747D6E201016D6E201026D6
E201036D6E201046D6E201056D6E201066D6E201076D6E201086D6E201094D6E
204046570737E1632D6E205044C69637478B9C19C2A20A132D6E2010943CE22D
6E201094D6E205044C69637478B9C1D9AE1AFE22D9D203CE22D6E205044C6963
747D6E2010946C7D1D6E205044C6963747D6E2010949C2A276BA16C7D1167E1A
FE22D9D2045632D6E204046570737976329C2A2B4402B21305BF22D9D209C2A2
45632D6E20404657073797632DCC02B21305DF22B21305BF22D9D209C2A24563
2D6E20404657073797632DCC02B21305DF22D6E205044C6963747D6E2010946C
7D13CE2278BF18B9C1ED2A2279E1AFE22D9D20B7FC18DBF145632D6E20104697
632DCC0245632D6E20103697632DCC02D6E2050E4C6963747D6E2010946C7D1B
7FC18DBF145632D6E20102697632DCC0245632D6E20101697632DCC023CE22D6
E2010364B2A2279E1AFE22D9D203CE22D6E204046570737ED2A2279E1AFE22D9
D208BA2084E201035ED2A2D20B1B2130D6E201046D6E201046EEDA176BA1ED2A
2D20B178BF18BA2084E201035ED2A2D20B1B2130D6E201046D6E201046EEDA19
0DA1DBBF150FA1ED2A2D6E201046EEDA14563284E20103597632EEDA1E0CF150
FA176BA1B21305BF22D9D208BA2084E201035ED2A2D20B1B2130D6E201046D6E
201046EEDA176BA178BF1D6E2010164563284E20103597632EEDA1DBBF150FA1
D6E201026E0CF150FA176BA1B21305DF22B21305BF22D9D209C2A2D6E201036D
6E2010463F2A2387C184E202025458DBF1E89C145632D6E20106697632DCC024
5632D6E20105697632DCC02D6E201016D6E201026ED2A2387C19C2A2D6E20105
6599A1ED2A2387C184E204005449465B7FC18DBF145632D6E20108697632DCC0
2B7FC18DBF145632D6E20107697632DCC024563284E20103597632D6E2010565
99A13CE2278BF168BC14B2A2279E1D6E2010564B2A2EBBE1387E1AFE22D9D204
B2A2E97C1B21305DF2276BA178BF1D6E201076DBBF1EEDA1DBBF1ED2A2D20B1D
6E201066D6E201066EEDA176BA178BF1E0CF1E0CF150FA1DBBF1D6E201086DBB
F150FA176BA1B21305DF22B21305BF22D9D203CE2278BF14B2A2279E1AFE22D9
D203CE22D6E2040465707379C2A2D5CE1AFE22D9D208DBF1D6E2050E4C696374
7D6E2010946C7D14563284E20103597632D6E204046570737D20B150FA1B2130
5BF22D9D208DBF1D6E2050E4C6963747D6E2010946C7D14563284E2010359763
250FA1B21305DF22B21305BF22D9D203CE22D6E2040465707379C2A2D5CE1AFE
22D9D204563284E20103597632DBBF13CE2278BF178BF168BC14B2A2279E1DBB
F14B2A2EBBE1387E1AFE22D9D204B2A2E97C1B21305DF2276BA1D6E204046570
737D20B1D6E2050E4C6963747D6E2010946C7D1DBBF150FA1B21305BF22D9D20
4563284E20103597632DBBF13CE2278BF178BF168BC14B2A2279E1DBBF14B2A2
EBBE1387E1AFE22D9D204B2A2E97C1B21305DF2276BA1D6E2050E4C6963747D6
E2010946C7D1DBBF150FA1B21305DF22B21305DF22B21305DF22683A2083323C
E22D6E205044C69637478B9C19C2A2D5CE1AFE22D9D20ED2A2D6E205044C6963
7478B9C13013276BA1C4232B21305DF2284E2020C4D83CE2244CF19C2A2D5CE1
AFE22D9D203CE22DBBF178BF168BC1D13A2279E1AFE22D9D20B7FC18DBF18BA2
084E2010458BA20D6E201046B21309FF30046F1B2130EEDA176BA1B21305DF22
B21305DF22EF53293632B2130576D"
END_ASC

BYTES: #D675h 6232

BEGIN_UU laplace.uue
begin 644 laplace
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
3&BLQ4/TB*S%0_2+^-9)C(RLQ`"LQ
`
end
END_UU

From: eldorado@en.ecn.purdue.edu (Dave Jansen)
Newsgroups: comp.sys.hp48
Subject: Laplace & Inverse Laplace Transforms
Date: 16 Feb 92 05:38:04 GMT
Organization: Purdue University Engineering Computer Network

These are some public domain routines to work in conjunction with Wayne Scott's
polynomial routines.  The routines included will find any given level of a
Pascal triangle, convert the output of the PF (partial fraction routine)
complex linear terms to real quadratic terms, take this output and find
Inverse Laplace Transforms, and find Laplace and Inverse Laplace Transforms
of equations.

PASCALTRI - Finds a level of Pascal's triangle

            example :
                    Input       1:  4

                    Output      1:  { 1 4 6 4 1 }

CONV - When using the partial fraction program in Wayne Scott's Poly routines,
       quadratic terms in the denominator must be split into their corresponding
       linear terms (this is done with the RT or Root program).  This is
			 necessary to find the partial fraction, but afterwards it is often
			 important to work with real coefficients.  This routine will convert
			 all the complex terms in a poly list to the original quadratic with
			 real coefficients.

       example :
                   Polynomial Form            Actual Equation

       Input   2:  { 3 -2.5 1.25 1.25 }        3     -2.5      1.25       1.25
               1:  { -4 -4 (-2,2) (-2,-2) }  ----- + ----- + -------- + --------
                                             (S+4)   (S+4)   (S+2-2i)   (S+2+2i)

       Output  2:  { 3 -2.5 { 2.5 5 } }         3     -2.5      (2.5S + 5)
               1:  { 4 4 { 4 8 } }            ----- + ----- + --------------
                                              (S+4)   (S+4)   (S^2 + 4S + 8)

       Notice that the values in the denominator are no longer the roots
       but instead the coefficients of a polynomial.  For this reason, the
       values change sign.  Also, the nested list is a linear term in the
       numerator and a quadratic in the denominator.  The coefficient in front
       of the S^2 term is always one and so is not included in the list.

L2EQ - This routine converts the output list from the CONV routine above and
       returns the Inverse Laplace of the polynomial equation.
       
			 example :
       Input   2:  { 3 -2.5 { 2.5 5 } }         3     -2.5      (2.5S + 5)
               1:  { 4 4 { 4 8 } }            ----- + ----- + --------------
                                              (S+4)   (S+4)   (S^2 + 4S + 8)

       Output  1:  '2.5*EXP(-2*T)*COS(sqrt(4)*T)*u(T)+(-(2.5*EXP(-4*T)*u(T))
                   +3/(2-1)!*T^(2-1)*EXP(-4*T)*u(T))'

       or after using COLCT in the Algebra directory:

       '3*EXP(-(4*T))*u(T)*T+2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)'

       Notice the routine will handle real repeated roots but so far will not
       convert repeated complex roots.

L-> - Takes the Inverse Laplace Transform of an equation of any of the forms
			listed below.  It is rather picky about signs, parenthesis, the order of
			subterms, and the presence of leading coefficients.  The L2EQ routine
			will automatically take care of these little annoyances.  For example,
			in the 1/(S+a) term, the sign must be a + and not a - sign in your
			equation, or else it will not transform it.  About the parenthesis,
			((5*S)/(S^2+4)) is not the same as 5*S/(S^2+4) and so will not transform.
			The ordering within terms is very important.  S*5/(S^2+4) will not
			transform correctly to 5*COS(2*T) but instead to S*5/2*SIN(2*T).  Also a
			leading coefficient must be present in front of the term or it will
			not transform:  S/(S^2+4) will not transform; instead use 1*S/(S^2+4).
			Time and frequency shifting is supported.  1/(S+a) will transform to
			1*EXP(-a*T)*u(T) and 1/S*EXP(a*S) will convert to 1*u(T-a).  In the use
			of the time shift, the EXP(a*S) term must be at the end of the term and
			the time shift will show up in the u(T-a) term but not in the
			transformed equation.  This means that 1/s^2*EXP(T-2) returns
			1*T*u(T-2) but should be 1*(T-2)*u(T-2).  For the Dirac Delta function,
			d(T) was chosen instead of the delta symbol, since that is already
      used for differentiation.  The following is a list of terms this
			routine recognizes:

      '1/S'
      '1/(S+a)'
      '1/S^2'
      '1/S^n'
      '1/(S+a)^n'
      'S/(S^2+w^2)'
      '1/(S^2+w^2)'
      '(S+a)/((S+a)^2+w^2)'
      '1/((S+a)^2+w^2)'
      '(S^2-w^2)/(S^2+w^2)^2'
      '2wS/(S^2+w^2)^2'
      '(S*COS(h)-w*SIN(h))/(S^2+w^2)'
      '(S*SIN(h)+w*COS(h))/(S^2+w^2)'
      '1/((S+a)*(S+b))'

->L - Takes the Laplace Transform of an equation.  Below is a listing of the
			forms the routine will recognize.  Notice the sign conventions,
			parenthetic ordering, requirement of a leading coefficient, and
			subterm ordering as in the Laplace Transform routine.

      'd(T)'
      'u(T)'
      'EXP(-a*T)*u(T)'
      'r(T)'
      'T^n*u(T)'
      '(T-a)^n*u(T-a)'
      'T^n*EXP(-a*T)*u(T)'
      'COS(w*T)*u(T)'
      'SIN(w*T)*u(T)'
      'EXP(-a*T)*COS(w*T)*u(T)'
      'EXP(-a*T)*SIN(w*T)*u(T)'
      'T*COS(w*T)*u(T)'
      'T*SIN(w*T)*u(T)'
      'COS(w*T+h)*u(T)'
      'SIN(w*T+h)*u(T)'
      '(EXP(-a*T)-EXP(-b*T))*u(T)'

Some tips and suggestions I have are to save the denominator before doing a
partial fraction expansion (PF) to use for the CONV routine.  This way you do
not have to re-enter it later.  The routines that find the Laplace and Inverse
Laplace Transforms take a little while (atleast 15 seconds depending on the
complexity of the equation being transformed).  For this reason, L2EQ is slowed
down since it calls the Inverse Laplace Transform routine.  The reason I did not
combine the partial fractions and Inverse Laplace Transform into one routine is
to allow the user to edit the output from the roots (ex: 2.00000000001 should be
changed to 2.0).  Remember that repeated roots MUST be adjacent in the list for
the routines to work correctly.  Wayne's partial fraction (PF) routine requires
this, as does the L2EQ routine.  As you will find out, it will be useful to use
the COLCT function in the Algebra menu to reduce the equations.  Two examples
follow.

example 1            S + 3
              -------------------
              S^3 + 5S^2 + 8S + 4

    2:  { 1 3 }
    1:  { 1 5 8 4 }
RT
    4:  { 1 3 }
    3:  -.999999999991
    2:  -1.99999799053
    1:  -2.00000200949
round off and put in list observing correct root order ( 3 ->LIST )
    2:  { 1 3 }
    1:  { -1 -2 -2 }
copy denominator ( DUP ROT ROT )
    3:  { -1 -2 -2 }
    2:  { 1 3 }
    1:  { -1 -2 -2 }
PF
    2:  { -1 -2 -2 }
    1:  { 2 -1 -2 }
SWAP
    2:  { 2 -1 -2 }
    1:  { -1 -2 -2 }
CONV
    2:  { 2 -1 -2 }
    1:  { 1 2 2 }
L2EQ
    1:  '-(2*EXP(-2*T)*u(T))+(-1/(2-1)!*T^(2-1)*EXP(-2*T)*u(T)+2*EXP(-1*T)*u(T))'
COLCT
    1:  '-(EXP(-(2*T))*u(T)*T)+2*EXP(-T)*u(T)-2*EXP(-(2*T))*u(T)'



example 2          8(S^2 + 4S + 3)
               ------------------------
               (S + 4)^2 (S^2 + 4S + 8)
multiplies out to
    2:  { 8 32 24 }
    1:  { 1 12 56 128 128 }
RT
    2:  { 8 32 24 }
    1:  { -4 -4 (-2,2) (-2,-2) }
PF
    2:  { 3 -2.5 1.25 1.25 }
    1:  { -4 -4 (-2,2) (-2,-2) }
CONV
    2:  { 3 -2.5 { 2.5 5 } }
    1:  { 4 4 { 4 8 } }
L2EQ
    1:  '2.5*EXP(-2*T)*COS(sqrt(4)*T)*u(T)+(-(2.5*EXP(-4*T)*u(T))
        +3/(2-1)!*T^(2-1)*EXP(-4*T)*u(T))'
COLCT
    1: '3*EXP(-(4*T))*u(T)*T+2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)'

As you can see, these will help will Laplace Transforms but will not do them for
you.  A student learning Laplace Transforms will still need to know them just
to use these routines.  I have tested them for some time and know not of
any/many bugs but I am aware of its limitations, as anyone who uses these.
Please send any questions, comments and bug reports.

Cut Here 8<---------------------------------------------------------------------
%%HP: T(3)A(D)F(.);
DIR
  L2EQ
    \<< 0 0 0 0 0 0 0
0 0 0 \-> Nlist Dlist
a b c d e f g h I
dups
      \<< Dlist SIZE
1
        FOR I
          IF I
Dlist SIZE \=/
          THEN
            IF
Dlist I GET Dlist I
1 + GET SAME
            THEN
'dups' 1 STO+
            ELSE 1
'dups' STO
            END
          ELSE 1
'dups' STO
          END Dlist
I GET
          IF DUP
SIZE 2 ==
          THEN OBJ\->
DROP 'd' STO 'c'
STO Nlist I GET
OBJ\-> DROP 'b' STO
'a' STO
            IF c 0
SAME
            THEN
              IF
dups 2 ==
              THEN
'S^2' d d * + 2 ^
DUP 'S^2' d d * -
SWAP / 2 d * 'S' *
ROT / +
              ELSE
'S^2' d d * + DUP a
'S' * SWAP / b ROT
/ +
              END
            ELSE 1
c d 3 \->LIST RT DROP
C\->R 'f' STO 'e' STO
a b 2 \->LIST 1 e NEG
2 \->LIST PDIV OBJ\->
DROP 'h' STO OBJ\->
DROP 'g' STO 'S' e
- DUP g SWAP * SWAP
2 ^ f f * + DUP ROT
ROT / SWAP h SWAP /
+
            END
          ELSE
            IF DUP
0 ==
            THEN
              IF
dups 1 >
              THEN
DROP Nlist I GET
'S' dups ^ /
              ELSE
DROP Nlist I GET
'S' /
              END
            ELSE
              IF
dups 1 >
              THEN
'S' SWAP + dups ^
Nlist I GET SWAP /
              ELSE
'S' SWAP + Nlist I
GET SWAP /
              END
            END
          END -1
        STEP
        IF Dlist
SIZE 1 >
        THEN 2
Dlist SIZE
          START +
          NEXT
        END L\->
        IF DEPTH 1
>
        THEN
          IF SWAP
DUP TYPE 5 SAME
          THEN OBJ\->
DROP 'd(T)' * +
          END
        END
      \>>
    \>>
  CONV
    \<< 0 0 0 0 0 0 \->
numer denom count
len a b r1 r2
      \<< numer SIZE
'count' STO
        WHILE count
1 >
        REPEAT
denom count GET
'r2' STO denom
count 1 - GET 'r1'
STO
          IF r1 IM
0 \=/ r2 IM 0 \=/ AND
r1 CONJ r2 == AND
          THEN
numer count 1 - GET
'a' STO numer count
GET 'b' STO denom
count 1 - r1 r2 +
NEG r1 r2 * 2 \->LIST
PUT OBJ\-> DUP 'len'
STO count - 1 +
ROLL DROP len 1 -
\->LIST 'denom' STO
numer count 1 - a b
+ a r2 * b r1 * +
NEG 2 \->LIST PUT
OBJ\-> DUP 'len' STO
count - 1 + ROLL
DROP len 1 - \->LIST
'numer' STO 'count'
-2 STO+
          ELSE
denom count DUP2
GET NEG PUT 'denom'
STO 'count' -1 STO+
          END
        END
        IF count 1
==
        THEN denom
1 DUP2 GET NEG PUT
'denom' STO
        END numer
denom
      \>>
    \>>
  \->L
    \<< { '&k*(T-&a)^
&n*u(T-&a)' '&k*&n!
/S^(&n+1)*EXP(-&a*S
)' } \|vMATCH DROP {
'&k*u(T-&a)' '&k*u(
T)*EXP(-&a*S)' }
\|vMATCH DROP { '&k*r
(T-&a)' '&k*r(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T-&a)' '&k*d(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T)' &k } \|vMATCH
DROP { '&k*r(T)' '
&k/S^2' } \|vMATCH
DROP { '&k*T^&n*u(T
)' '&k*&n!/S^(&n+1)
' } \|vMATCH DROP { '
&k*T^&n*EXP(&a*T)*u
(T)' '&k*&n!/(S-&a)
^(&n+1)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*COS(&\Gw*T)*u(T)' '
&k*(S-&a)/((S-&a)^2
+&\Gw^2)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*SIN(&\Gw*T)*u(T)' '
&k*&\Gw/((S-&a)^2+&\Gw^
2)' } \|vMATCH DROP {
'&k*T*COS(&\Gw*T)*u(T
)' '&k*(S^2-&\Gw^2)/(
S^2+&\Gw^2)^2' }
\|vMATCH DROP { '&k*T
*SIN(&\Gw*T)*u(T)' '
&k/(2*&\Gw)*S/(S^2+&\Gw
)^2' } \|vMATCH DROP
{ '&k*COS(&\Gw*T+&\Gh)*
u(T)' '&k*(S*COS(&\Gh
)-&\Gw*SIN(&\Gh))/(S^2+
&\Gw^2)' } \|vMATCH
DROP { '&k*SIN(&\Gw*T
+&\Gh)*u(T)' '&k*(S*
SIN(&\Gh)+&\Gw*COS(&\Gh))
/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
COS(&\Gw*T)*u(T)' '&k
*S/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
SIN(&\Gw*T)*u(T)' '&k
*&\Gw/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*(
EXP(&\Ga*T)-EXP(&\Gg*T)
)*u(T)' '&k/((S-&\Ga)
*(S-&\Gg))' } \|vMATCH
DROP { '&k*EXP(&a*T
)*u(T)' '&k/(S-&a)'
} \|vMATCH DROP { '&k
*u(T)' '&k/S' }
\|vMATCH DROP
    \>>
  L\->
    \<< { '&k/S' '&k*
u(T)' } \|vMATCH DROP
{ '&k/(S+&a)' '&k*
EXP(-&a*T)*u(T)' }
\|vMATCH DROP { '&k/S
^2' '&k*r(T)' }
\|vMATCH DROP { '&k/S
^&n' '&k/(&n-1)!*T^
(&n-1)*u(T)' }
\|vMATCH DROP { '&k/(
S+&a)^&n' '&k/(&n-1
)!*T^(&n-1)*EXP(-&a
*T)*u(T)' } \|vMATCH
DROP { '&k/S^&n*EXP
(&a*S)' '&k/(&n-1)!
*(T-&a)^(&n-1)*u(T-
&a)' } \|vMATCH DROP
{ '&k*(S+&a)/((S+&a
)^2+&\Gw)' '&k*EXP(-
&a*T)*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k/((S+&a)^2+&\Gw)'
'&k/\v/&\Gw*EXP(-&a*T)*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S^2-&\Gw)/(S^2+&\Gw)^2'
'&k*T*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k*S/(S^2+&\Gw)^2' '
&k/(2*\v/&\Gw)*T*SIN(\v/
&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S*COS(&\Gh)-&\Gw*SIN(&\Gh
))/(S^2+&\Gr)' '&k*
COS(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*(S*SIN(&\Gh)+&\Gw*COS(
&\Gh))/(S^2+&\Gr)' '&k*
SIN(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*S/(S^2+&\Gw)' '&k*
COS(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
S^2+&\Gw)' '&k/\v/&\Gw*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
(S+&\Ga)*(S+&\Gg))' '&k
/(&\Gg-&\Ga)*(EXP(-&\Ga*T
)-EXP(-&\Gg*T))*u(T)'
} \|vMATCH DROP { '&k
*&f(T)*EXP(&a*S)' '
&k*&f(T+&a)' }
\|vMATCH DROP { '&k*
EXP(&a*S)' '&k*d(T+
&a)' } \|vMATCH DROP
    \>>
  PASCALTRI
    \<< \-> n
      \<<
        IF n 0 ==
        THEN { 1 }
        ELSE
          IF n 1 ==
          THEN { 1
1 }
          ELSE { 1
1 } 1 n 1 -
            START {
1 1 } PMUL
            NEXT
          END
        END
      \>>
    \>>
END

-- 

The weather is here, wish you were beautiful!
________________________________________________________________________________
David Jansen            |  INTERNET: eldorado@en.ecn.purdue.edu

From: eldorado@ecn.purdue.edu (Dave Jansen)
Newsgroups: comp.sources.hp48
Subject: v04i039:  laplace_dj - Laplace & Inverse Laplace Transforms v2.0, Part01/01
Date: 29 Mar 92 19:05:29 GMT
Followup-To: comp.sys.hp48
Organization: Univ. of North Carolina @ Wilmington

Checksum: 3257894907 (verify with brik -cv)
Submitted-by: Dave Jansen <eldorado@ecn.purdue.edu>
Posting-number: Volume 4, Issue 39
Archive-name: laplace_dj/part01
Supersedes: laplace_dj: Volume 4, Issue 8



BEGIN_DOC laplace.doc
These are some public domain routines to work in conjunction with Wayne Scott's
polynomial routines which are included in this posting.  The routines included
will convert the output of the PF (partial fraction routine) complex linear
terms to real quadratic terms, take this output and find Inverse Laplace
Transforms, and find Laplace and Inverse Laplace Transforms of equations
of one sided transforms.

->QUAD - When using the partial fraction program in Wayne Scott's Poly routines,
         quadratic terms in the denominator must be split into their
	 corresponding linear terms (this is done with the RT or Root
	 program).  This is necessary to find the partial fraction, but
	 afterwards it is often important to work with real coefficients.
	 This routine will convert all the complex terms in a poly list to
	 the original quadratic with real coefficients.

         example :
                   Polynomial Form           Actual Equation

         Input 2:  { 3 -2.5 1.25 1.25 }        3     -2.5      1.25       1.25
               1:  { -4 -4 (-2,2) (-2,-2) }  ----- + ----- + -------- + --------
                                             (s+4)   (s+4)   (s+2-2i)   (s+2+2i)

         Output 2:  { 3 -2.5 { 2.5 5 } }         3     -2.5      (2.5s + 5)
                1:  { 4 4 { 4 8 } }            ----- + ----- + --------------
                                               (s+4)   (s+4)   (s^2 + 4s + 8)

         Notice that the values in the denominator are no longer the roots
         but instead the coefficients of a polynomial.  For this reason, the
         values of the denominator change sign.  Also, the nested list is a
	 linear term in the numerator and a quadratic in the denominator.
	 The coefficient in front of the s^2 term is always 1 and so is not
	 included in the list.

L2EQ - This routine will find the partial fraction expansion, convert the
       output list using the ->QUAD routine above and finally returns the
       Inverse Laplace of the polynomial equation.
       
       example :
                   Polynomial Form

       Input   2:  { 8 32 24 }                numerator
               1:  { -4 -4 (-2,2) (-2,-2) }   roots of denominator

       Output  1:  '2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)
                   +3*T*EXP(-(4*T))*u(T))'

       Notice the routine will handle real repeated roots but I am not sure
       if the repeated complex root case is correct.

L-> - Takes the Inverse Laplace Transform of an equation of any of the forms
      listed below.  It is rather picky about signs, parenthesis, the order of
      subterms, and the presence of leading coefficients.  The L2EQ routine
      will automatically take care of these little annoyances.  For example,
      in the 1/(S+a) term, the sign must be a + and not a - sign in your
      equation, or else it will not transform it.  About the parenthesis,
      ((5*S)/(S^2+4)) is not the same as 5*S/(S^2+4) and so will not transform.
      The ordering within terms is very important.  S*5/(S^2+4) will not
      transform correctly to 5*COS(2*T) but instead to S*5/2*SIN(2*T).  Also a
      leading coefficient must be present in front of the term or it will
      not transform:  S/(S^2+4) will not transform; instead use 1*S/(S^2+4).
      Time and frequency shifting is supported.  1/(S+a) will transform to
      1*EXP(-a*T)*u(T) and 1/S*EXP(a*S) will convert to 1*u(T-a).  In the use
      of the time shift, the EXP(a*S) term must be at the end of the term and
      the time shift will show up in the u(T-a) term but not in the
      transformed equation.  This means that 1/s^2*EXP(T-2) returns
      1*T*u(T-2) but should be 1*(T-2)*u(T-2).  For the Dirac Delta function,
      d(T) was chosen instead of the delta symbol, since that is already
      used for differentiation.  The following is a list of terms this
      routine recognizes:

      '1/S'
      '1/(S+a)'
      '1/S^2'
      '1/S^n'
      '1/(S+a)^n'
      'S/(S^2+w^2)'
      '1/(S^2+w^2)'
      '(S+a)/((S+a)^2+w^2)'
      '1/((S+a)^2+w^2)'
      '(S^2-w^2)/(S^2+w^2)^2'
      '2wS/(S^2+w^2)^2'
      '(S*COS(h)-w*SIN(h))/(S^2+w^2)'
      '(S*SIN(h)+w*COS(h))/(S^2+w^2)'
      '1/((S+a)*(S+b))'

->L - Takes the Laplace Transform of an equation.  Below is a listing of the
      forms the routine will recognize.  Notice the sign conventions,
      parenthetic ordering, requirement of a leading coefficient, and
      subterm ordering as in the Laplace Transform routine.

      'd(T)'
      'u(T)'
      'EXP(-a*T)*u(T)'
      'r(T)'
      'T^n*u(T)'
      '(T-a)^n*u(T-a)'
      'T^n*EXP(-a*T)*u(T)'
      'COS(w*T)*u(T)'
      'SIN(w*T)*u(T)'
      'EXP(-a*T)*COS(w*T)*u(T)'
      'EXP(-a*T)*SIN(w*T)*u(T)'
      'T*COS(w*T)*u(T)'
      'T*SIN(w*T)*u(T)'
      'COS(w*T+h)*u(T)'
      'SIN(w*T+h)*u(T)'
      '(EXP(-a*T)-EXP(-b*T))*u(T)'

The routines that find the Laplace and Inverse Laplace Transforms take a
little while (atleast 15 seconds depending on the complexity of the equation
being transformed).  It is strongly adviseable to round the roots produced by
the RT routine (ex: 2.00000000011 should be changed to 2.0).  Remember that
repeated roots MUST be adjacent in the list for the routines to work correctly.
However since Wayne's partial fraction (PF) routine requires this also, this
is not usually a problem.  It may be necessary to use the COLCT function in the
Algebra menu to reduce the equations.  Two examples follow.

example 1            s + 3
              -------------------
              s^3 + 5s^2 + 8s + 4

    2:  { 1 3 }
    1:  { 1 5 8 4 }
RT
    4:  { 1 3 }
    3:  -.999999999991
    2:  -1.99999799053
    1:  -2.00000200949
3 ->LIST
    2:  { 1 3 }
    1:  { -1.999999999991
	-1.99999799053
	-2.00000200949 }
edit
    2:  { 1 3 }
    1:  { -1 -2 -2 }

L2EQ
    1:  '-(2*EXP(-(2*T))*u(T))-T*EXP(-(2*T))*u(T)+2*EXP(-T)*u(T))'



example 2          8(s^2 + 4s + 3)
               ------------------------
               (s + 4)^2 (s^2 + 4s + 8)
multiplies out to
    2:  { 8 32 24 }
    1:  { 1 12 56 128 128 }
RT
    2:  { 8 32 24 }
    1:  { -4 -4 (-2,2) (-2,-2) }
L2EQ
    1:  '2.5*EXP(-(2*T))*COS(2*T)*u(T)-2.5*EXP(-(4*T))*u(T)
	 +3*T*EXP(-(4*T))*u(T))'

I have tested these for some time and know not of any/many bugs but I am
aware of its limitations, as anyone who uses these should also be.
Please send any questions, comments and bug reports.
END_DOC

BEGIN_SRC laplace.rpl
%%HP: T(3)A(D)F(.);
DIR
  L2EQ
    \<< DUP ROT ROT
PF SWAP \->QUAD 0 0 0
0 0 0 \-> numer denom
count a b r1 r2
dups
      \<< denom SIZE
1
        FOR count
          IF count
denom SIZE <
          THEN
            IF
denom count GETI
ROT ROT GET ==
            THEN
'dups' 1 STO+
            ELSE 1
'dups' STO
            END
          ELSE 1
'dups' STO
          END denom
count GET
          IF DUP
TYPE 5 ==
          THEN OBJ\->
DROP 'r2' STO 'r1'
STO
            IF r1
            THEN
denom count GET { 1
0 0 } PADD RT DROP
C\->R 'r2' STO NEG
'r1' STO numer
count GET 1 r1 2
\->LIST PDIV OBJ\->
DROP 'b' STO OBJ\->
DROP 'a' STO 'a*EXP
(-r1*T)*COS(r2*T)*u
(T)+b/r2*EXP(-r1*T)
*SIN(r2*T)*u(T)'
EVAL
            ELSE
numer count GET
OBJ\-> DROP 'b' STO
'a' STO r2 \v/ 'r2'
STO
              IF
dups 1 >
              THEN
'a*T*COS(r2*T)*u(T)
+b/(2*r2)*T*SIN(r2*
T)*u(T)' EVAL
              ELSE
'a*COS(r2*T)*u(T)+b
/r2*SIN(r2*T)*u(T)'
EVAL
              END
            END
          ELSE 'r1'
STO numer count GET
'a' STO
            IF r1
            THEN
              IF
dups 1 >
              THEN
'a/(dups-1)!*T^(
dups-1)*EXP(-r1*T)*
u(T)' EVAL
              ELSE
'a*EXP(-r1*T)*u(T)'
EVAL
              END
            ELSE
              IF
dups 1 >
              THEN
'a/(dups-1)!*T^(
dups-1)*u(T)' EVAL
              ELSE
'a*u(T)' EVAL
              END
            END
          END
          IF count
denom SIZE <
          THEN +
          END -1
        STEP
      \>>
    \>>
  \->QUAD
    \<< DUP SIZE 0 0
0 0
      \<<
        IF DUP IM
NOT
        THEN RE
        END
      \>> \-> numer
denom count a b r1
r2 reduce
      \<<
        WHILE count
1 >
        REPEAT
denom count 1 -
GETI 'r1' STO GET
'r2' STO
          IF r1 IM
0 \=/ r1 CONJ r2 ==
AND
          THEN
numer count 1 -
GETI 'a' STO GET
'b' STO denom count
1 - r1 r2 + NEG
reduce EVAL r1 r2 *
reduce EVAL 2 \->LIST
PUT OBJ\-> DUP count
- 2 + ROLL DROP 1 -
\->LIST 'denom' STO
numer count 1 - a b
+ reduce EVAL a r2
* b r1 * + NEG
reduce EVAL 2 \->LIST
PUT OBJ\-> DUP count
- 2 + ROLL DROP 1 -
\->LIST 'numer' STO
'count' -2 STO+
          ELSE
denom count DUP2
GET NEG PUT 'denom'
STO numer count
DUP2 GET reduce
EVAL PUT 'numer'
STO 'count' -1 STO+
          END
        END numer
denom
        IF count
        THEN SWAP 1
DUP2 GET reduce
EVAL PUT SWAP 1
DUP2 GET NEG PUT
        END
      \>>
    \>>
  \->L
    \<< { '&k*(T-&a)^
&n*u(T-&a)' '&k*&n!
/S^(&n+1)*EXP(-&a*S
)' } \|vMATCH DROP {
'&k*u(T-&a)' '&k*u(
T)*EXP(-&a*S)' }
\|vMATCH DROP { '&k*r
(T-&a)' '&k*r(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T-&a)' '&k*d(T)*
EXP(-&a*S)' }
\|vMATCH DROP { '&k*d
(T)' &k } \|vMATCH
DROP { '&k*r(T)' '
&k/S^2' } \|vMATCH
DROP { '&k*T^&n*u(T
)' '&k*&n!/S^(&n+1)
' } \|vMATCH DROP { '
&k*T^&n*EXP(&a*T)*u
(T)' '&k*&n!/(S-&a)
^(&n+1)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*COS(&\Gw*T)*u(T)' '
&k*(S-&a)/((S-&a)^2
+&\Gw^2)' } \|vMATCH
DROP { '&k*EXP(&a*T
)*SIN(&\Gw*T)*u(T)' '
&k*&\Gw/((S-&a)^2+&\Gw^
2)' } \|vMATCH DROP {
'&k*T*COS(&\Gw*T)*u(T
)' '&k*(S^2-&\Gw^2)/(
S^2+&\Gw^2)^2' }
\|vMATCH DROP { '&k*T
*SIN(&\Gw*T)*u(T)' '
&k/(2*&\Gw)*S/(S^2+&\Gw
)^2' } \|vMATCH DROP
{ '&k*COS(&\Gw*T+&\Gh)*
u(T)' '&k*(S*COS(&\Gh
)-&\Gw*SIN(&\Gh))/(S^2+
&\Gw^2)' } \|vMATCH
DROP { '&k*SIN(&\Gw*T
+&\Gh)*u(T)' '&k*(S*
SIN(&\Gh)+&\Gw*COS(&\Gh))
/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
COS(&\Gw*T)*u(T)' '&k
*S/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*
SIN(&\Gw*T)*u(T)' '&k
*&\Gw/(S^2+&\Gw^2)' }
\|vMATCH DROP { '&k*(
EXP(&\Ga*T)-EXP(&\Gg*T)
)*u(T)' '&k/((S-&\Ga)
*(S-&\Gg))' } \|vMATCH
DROP { '&k*EXP(&a*T
)*u(T)' '&k/(S-&a)'
} \|vMATCH DROP { '&k
*u(T)' '&k/S' }
\|vMATCH DROP
    \>>
  L\->
    \<< { '&k/S' '&k*
u(T)' } \|vMATCH DROP
{ '&k/(S+&a)' '&k*
EXP(-&a*T)*u(T)' }
\|vMATCH DROP { '&k/S
^2' '&k*r(T)' }
\|vMATCH DROP { '&k/S
^&n' '&k/(&n-1)!*T^
(&n-1)*u(T)' }
\|vMATCH DROP { '&k/(
S+&a)^&n' '&k/(&n-1
)!*T^(&n-1)*EXP(-&a
*T)*u(T)' } \|vMATCH
DROP { '&k/S^&n*EXP
(&a*S)' '&k/(&n-1)!
*(T-&a)^(&n-1)*u(T-
&a)' } \|vMATCH DROP
{ '&k*(S+&a)/((S+&a
)^2+&\Gw)' '&k*EXP(-
&a*T)*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k/((S+&a)^2+&\Gw)'
'&k/\v/&\Gw*EXP(-&a*T)*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S^2-&\Gw)/(S^2+&\Gw)^2'
'&k*T*COS(\v/&\Gw*T)*u(
T)' } \|vMATCH DROP {
'&k*S/(S^2+&\Gw)^2' '
&k/(2*\v/&\Gw)*T*SIN(\v/
&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k*(
S*COS(&\Gh)-&\Gw*SIN(&\Gh
))/(S^2+&\Gr)' '&k*
COS(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*(S*SIN(&\Gh)+&\Gw*COS(
&\Gh))/(S^2+&\Gr)' '&k*
SIN(&\Gw*T+&\Gh)*u(T)'
} \|vMATCH DROP { '&k
*S/(S^2+&\Gw)' '&k*
COS(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
S^2+&\Gw)' '&k/\v/&\Gw*
SIN(\v/&\Gw*T)*u(T)' }
\|vMATCH DROP { '&k/(
(S+&\Ga)*(S+&\Gg))' '&k
/(&\Gg-&\Ga)*(EXP(-&\Ga*T
)-EXP(-&\Gg*T))*u(T)'
} \|vMATCH DROP { '&k
*&f(T)*EXP(&a*S)' '
&k*&f(T+&a)' }
\|vMATCH DROP { '&k*
EXP(&a*S)' '&k*d(T+
&a)' } \|vMATCH DROP
    \>>
  PF
    \<< MAXR { } \-> Z
P OLD LAST
      \<< 1 P SIZE
        FOR I P I
GET \-> p1
          \<<
            IF p1
OLD \=/
            THEN Z
p1 EVPLY 1 P SIZE
              FOR J
IF P J GET P I GET
\=/
THEN p1 P J GET - /
END
              NEXT
p1 'OLD' STO { }
'LAST' STO
            ELSE
              IF {
} LAST SAME
              THEN
1 { } 1 P SIZE
FOR K P K GET
  IF DUP p1 ==
  THEN DROP
  ELSE +
  END
NEXT IRT Z SWAP
              ELSE
LAST OBJ\-> DROP
              END
RDER DUP2 5 PICK 1
+ 3 ROLLD 3 \->LIST
'LAST' STO p1 EVPLY
SWAP p1 EVPLY SWAP
/ SWAP ! /
            END
          \>>
        NEXT P SIZE
\->LIST
      \>>
    \>>
  RT
    \<< TRIM DUP SIZE
\-> n
      \<<
        IF n 3 >
        THEN DUP
BAIRS SWAP OVER
PDIV DROP \-> A B
          \<< A RT B
RT
          \>>
        ELSE
          IF n 2 >
          THEN QUD
          ELSE
LIST\-> DROP NEG SWAP
/
          END
        END
      \>>
    \>>
  IRT
    \<< OBJ\-> \-> n
      \<<
        IF n 0 >
        THEN 1 n
          START n
ROLL { 1 } SWAP NEG
+
          NEXT
        ELSE { 1 }
        END
        IF n 1 >
        THEN 2 n
          START
PMUL
          NEXT
        END
      \>>
    \>>
  FCTP
    \<<
      IF DUP SIZE 3
>
      THEN DUP
BAIRS SWAP OVER
PDIV DROP FCTP
      END
    \>>
  LST
    \<< \->LIST
    \>>
  PMUL
    \<< DUP2 SIZE
SWAP SIZE \-> X Y ny
nx
      \<< 1 nx ny + 1
-
        FOR I 0
        NEXT 1 nx
        FOR I 1 ny
          FOR J I J
+ 1 - ROLL X I GET
Y J GET * + I J + 1
- ROLLD
          NEXT
        NEXT { } 1
nx ny + 1 -
        START SWAP
+
        NEXT
      \>>
    \>>
  PDIV
    \<< DUP SIZE 3
ROLLD OBJ\-> \->ARRY
SWAP OBJ\-> \->ARRY \-> c
b a
      \<< a b
        IF c 1 SAME
        THEN OBJ\->
DROP / OBJ\-> 1 GET
\->LIST { 0 }
        ELSE
          WHILE
OVER SIZE 1 GET c \>=
          REPEAT
DIVV
          END DROP
\-> d
          \<< a SIZE
1 GET c 1 - -
            IF DUP
NOT
            THEN 1
            END
\->LIST d OBJ\-> OBJ\->
DROP \->LIST
          \>>
        END
      \>>
    \>>
  PADD
    \<< DUP2 SIZE
SWAP SIZE \-> A B nB
nA
      \<< A L\178A B L\178A
        IF nA nB <
        THEN SWAP
        END
        IF nA nB \=/
        THEN 1 nA
nB - ABS
          START 0
          NEXT
        END nA nB -
ABS 1 + ROLL OBJ\-> 1
GET nA nB - ABS +
\->ARRY + L\178A
      \>>
    \>>
  TRIM
    \<< OBJ\-> \-> n
      \<< n
        WHILE ROLL
DUP ABS NOT n 1 -
AND
        REPEAT DROP
'n' DECR
        END n ROLLD
n \->LIST
      \>>
    \>>
  PASCALTRI
    \<< \-> n
      \<<
        IF n 0 ==
        THEN { 1 }
        ELSE
          IF n 1 ==
          THEN { 1
1 }
          ELSE { 1
1 } 1 n 1 -
            START {
1 1 } PMUL
            NEXT
          END
        END
      \>>
    \>>
  RDER
    \<< \-> F G
      \<< G F PDER
PMUL G PDER { -1 }
PMUL F PMUL PADD G
G PMUL
      \>>
    \>>
  PDER
    \<< OBJ\-> \-> n
      \<< 1 n
        FOR i n
ROLL n i - *
        NEXT DROP
        IF n 1 ==
        THEN { 0 }
        ELSE n 1 -
\->LIST
        END
      \>>
    \>>
  L\178A
    \<<
      IF DUP TYPE 5
==
      THEN OBJ\->
\->ARRY
      ELSE OBJ\-> 1
GET \->LIST
      END
    \>>
  EVPLY
    \<< OVER
      IF DUP TYPE 5
==
      THEN SIZE
      ELSE SIZE 1
GET
      END \-> a r n
      \<< a 1 GET
        IF n 1 >
        THEN 2 n
          FOR i r *
a i GET +
          NEXT
        END
      \>>
    \>>
  COEF
    \<< \-> E n
      \<< 0 n
        FOR I 0 'X'
STO E EVAL 'X'
PURGE E 'X' \.d 'E'
STO I ! /
        NEXT 2 n 1
+
        FOR I I
ROLL
        NEXT n 1 +
\->LIST
      \>>
    \>>
  DIVV
    \<< DUP 1 GET \-> a
b c
      \<< a 1 GET c /
DUP b * a SIZE RDM
a SWAP - OBJ\-> 1
GETI 1 - PUT \->ARRY
SWAP DROP b
      \>>
    \>>
  QUD
    \<< LIST\-> \->ARRY
DUP 1 GET / ARRY\->
DROP ROT DROP SWAP
2 / NEG DUP SQ ROT
- \v/ DUP2 + 3 ROLLD
-
    \>>
  BAIRS
    \<< OBJ\-> 1 1 \-> n
R S
      \<<
        DO 0 n 1 +
PICK 0 0 0 4 PICK 5
n + 7
          FOR J J
PICK R 7 PICK * + S
8 PICK * + 7 ROLL
DROP DUP 6 ROLLD R
3 PICK * + S 4 PICK
* + 5 ROLL DROP -1
          STEP 3
PICK SQ 3 PICK 6
PICK * -
          IF DUP 0
==
          THEN DROP
1 1
          ELSE 6
PICK 6 PICK * 5
PICK 9 PICK * -
OVER / 4 PICK 9
PICK * 8 PICK 7
PICK * - ROT /
          END DUP
'S' STO+ SWAP DUP
'R' STO+
        UNTIL (0,1)
* + ABS .000000001
< 7 ROLLD 6 DROPN
        END n DROPN
1 R NEG S NEG 3
\->LIST
      \>>
    \>>
END
END_RPL

BEGIN_ASC laplace.asc
%%HP: ;
"69A20FF740D300000050241494253550D9D20E1632B7FC19C2A29C2A21C432D6
E2010E6D6E201025D6E201035E16323C0324B2A2D6E2010E69C2A276BA1A9CF1
4B2A24B2A24B2A2803A2A9CF1D13A2D6E2010E676BA1743A20A132D6E2010A4D
6E2010A4A9CF1D6E201025743A2A9CF1EEDA176BA1D6E201035C53A2A9CF1EED
A176BA1743A25BCF18DBF178BF1233A20DCF1D6E2010253F2A2A9CF1EEDA176B
A1D6E201035803A2A9CF1EEDA176BA1D13A25BCF18DBF1683A2083323F2A2A9C
F1624B13F2A2A9CF1233A2A9CF1EEDA190DA13CE2278BF14B2A2279E1AFE22D9
D208DBF19C2A29C2A2B21305BF22D9D20233A2A9CF1233A2A9CF1EEDA1D13A2A
9CF1173A2A9CF1EEDA190DA192CF150FA1803A2A9CF1173A2A9CF1EEDA1C53A2
A9CF1743A2A9CF1EEDA190DA1E0CF150FA1B21305DF2278BF145632D6E201035
97632B4402DBBF178BF145632D6E20102597632B4402DE032779200000000000
0000000000000000000010EEDA176BA1F1AA1339201990000000000010EBBE17
43A20DCF1233A246CF19B632D6E2010E646CF19C2A2D6E201025599A1D6E2010
35599A13F2A2387C1EF53293632B2130E43003015554430D9D20E1632A59C190
0D178BF19C2A26C7D150FA1290D18DBF1E0CF18DBF1DBBF1ED2A250FA1599A17
8BF1624B1E0CF190DA1473B12ABF176BA13F2A20DCF190DA193632B213069000
404494656540D9D20E163278BF19C2A26C7D11C432D6E201016D6E201026D6E2
01036E1632D6E2010169C2A26C7D1D6E20103650FA178BF1D6E201026EEDA1D6
E2010168B9C1FD0D1D6E201016DBBF190DA1B7FC19C2A27C8D19C2A290DA1704
D1900D1DBBF18DBF1D6E201026EF53293632B21309E0004034F4546440D9D20E
16321C432D6E201054D6E2010E6E16324B2A2D6E2010E60A132D6E2010944B2A
24563284E20108597632DCC02D6E201054EB3A14563284E20108597632EFE02D
6E2010544563284E20108597632E7FE145632D6E20105497632DCC02D6E20109
420BB150FA1C4232ED2A2D6E2010E69C2A276BA10A132D6E201094D6E2010945
BCF1C4232D6E2010E69C2A276BA1387C1EF53293632B21302410050546505C49
550D9D20E163292CF13CE2278BF168BC1D13A2279E1AFE228B9C15BF22D9D208
B9C19C2A26C7D1B21305DF221C432D6E201016D6E201027D6E2010E6E1632D6E
2010169C2A26C7D13CE22D6E2010E69C2A2D5CE1AFE22D9D20ED2A2D6E2010E6
0A132D6E201096D6E201027EEDA1D6E201016D6E2010966C7D176BA1C4232B21
305DF22EF53293632B21301210030C42B1430D9D20E16323CE2278BF168BC1D1
3A2279E1AFE22D9D20B7FC1900D1B21305BF22D9D20B7FC19C2A26C7D1387C1B
21305DF2293632B213087000400544542540D9D20E1632B7FC11C432D6E2010E
6E16329C2A2D6E2010E60A132D6E201096D6E2010E65BCF1D6E2010E6D6E2010
9690DA1EEDA1C42328DBF13CE22D6E2010E69C2A2279E1AFE2247A204B2A2B21
305BF22D9D20D6E2010E69C2A290DA1387C1B21305DF22EF53293632B21305E0
00402544542540D9D20E16321C432D6E201064D6E201074E1632D6E201074D6E
20106484E20400544542584E204005D455C4D6E20107484E20400544542547A2
0683A2B213084E204005D455C4D6E20106484E204005D455C484E20400514444
4D6E201074D6E20107484E204005D455C4EF53293632B2130FE0009005143534
14C445259490D9D20E16321C432D6E2010E6E16323CE22D6E2010E64B2A2279E
1AFE2247A209C2A2B21305BF22D9D203CE22D6E2010E69C2A2279E1AFE2247A2
09C2A29C2A2B21305BF22D9D2047A209C2A29C2A2B21309C2A2D6E2010E69C2A
290DA13013247A209C2A29C2A2B213084E204005D455C4C4232B21305DF22B21
305DF22EF53293632B21300210040452594D440D9D20E1632B7FC11C432D6E20
10E6E1632D6E2010E6330325BCF178BF1F1AA1F88E1D6E2010E69C2A290DA138
7E1D5032D9D208DBF145632D6E2010E697632AA902B213049632D6E2010E60DC
F1D6E2010E6387C1EF53293632B21304C000400514444440D9D20E16322ABF18
B9C1DBBF18B9C11C432D6E201014D6E201024D6E2020E624D6E2020E614E1632
D6E20101484E2030C42B14D6E20102484E2030C42B143CE22D6E2020E614D6E2
020E624EBBE1AFE22DBBF15DF223CE22D6E2020E614D6E2020E624D9AE1AFE22
D9D209C2A2D6E2020E614D6E2020E62490DA1F1AA1301324B2A2C4232B21305D
F22D6E2020E614D6E2020E62490DA1F1AA19C2A276BA15BCF1B7FC19C2A26C7D
1D6E2020E614D6E2020E62490DA1F1AA176BA1900D176BA184E2030C42B14EF5
3293632B21308A100400544946540D9D20E163278BF18B9C13F2A20DCF1B7FC1
900D1DBBF1B7FC1900D11C432D6E201036D6E201026D6E201016E1632D6E2010
16D6E2010263CE22D6E2010369C2A2167E1AFE22D9D20B7FC18DBF150FA1B7FC
19C2A26C7D1387C147A204B2A2B2130B21305BF22D9D203303292CF18B9C19C2
A26C7D1D6E201036B9DE1D503284E204044946565496328DBF11C432D6E20104
6E1632D6E2010168B9C19C2A26C7D1D6E2010369C2A290DA190DA13CE2278BF1
F88E1AFE229C2A25DF22387C1D6E201046B7FC1B7FC18DBF1387C1EF532B2130
5DF22EF53293632B21303C1004005D455C440D9D20E16322ABF18B9C1DBBF18B
9C11C432D6E201085D6E201095D6E2020E697D6E2020E687E16329C2A2D6E202
0E687D6E2020E69776BA19C2A290DA10A132D6E2010944B2A2C42329C2A2D6E2
020E6870A132D6E2010949C2A2D6E2020E6970A132D6E2010A4D6E201094D6E2
010A476BA19C2A290DA15BCF1D6E201085D6E2010946C7D1D6E201095D6E2010
A46C7D1EEDA176BA1D6E201094D6E2010A476BA19C2A290DA10DCF1C4232C423
247A20B21309C2A2D6E2020E687D6E2020E69776BA19C2A290DA130132DBBF17
6BA1C4232EF53293632B2130FB10030C4354530D9D20E1632387C193632B2130
32000406434450540D9D20E16323CE2278BF18B9C13F2A2D5CE1AFE22D9D2078
BF184E20502414942535DBBF192CF184E2040054494658DBF184E20406434450
5B21305DF2293632B2130090003094254530D9D20E1632B7FC11C432D6E2010E
6E16323CE22D6E2010E64B2A2D5CE1AFE22D9D209C2A2D6E2010E630132D6E20
10E65BCF147A209C2A2B2130DBBF1599A176BA1C4232B21305BF2247A209C2A2
B21305DF223CE22D6E2010E69C2A2D5CE1AFE22D9D20ED2A2D6E2010E6301328
4E204005D455C4C4232B21305DF22EF53293632B21302110020254520D9D20E1
63284E2040452594D478BF18B9C11C432D6E2010E6E16323CE22D6E2010E63F2
A2D5CE1AFE22D9D2078BF184E20502414942535DBBF192CF184E204005449465
8DBF11C432D6E201014D6E201024E1632D6E20101484E20202545D6E20102484
E20202545EF532B21305BF22D9D203CE22D6E2010E6ED2A2D5CE1AFE2284E203
01555445BF22D9D20A59C18DBF1599A1DBBF150FA1B21305DF22B21305DF22EF
53293632B2130C510020056420D9D20E1632FDAA147A20B21301C432D6E2010A
5D6E201005D6E2030F4C444D6E2040C4143545E16329C2A2D6E2010058B9C10A
132D6E201094D6E201005D6E2010946C7D11C432D6E20200713E16323CE22D6E
20200713D6E2030F4C444D9AE1AFE22D9D20D6E2010A5D6E2020071384E20505
46505C4959C2A2D6E2010058B9C10A132D6E2010A43CE22D6E201005D6E2010A
46C7D1D6E201005D6E2010946C7D1D9AE1AFE22D9D20D6E20200713D6E201005
D6E2010A46C7D190DA150FA1B21305DF22C4232D6E2020071345632D6E2030F4
C44497632DCC0247A20B213045632D6E2040C414354597632DCC02B21305BF22
D9D203CE2247A20B2130D6E2040C4143545167E1AFE22D9D209C2A247A20B213
09C2A2D6E2010058B9C10A132D6E2010B4D6E201005D6E2010B46C7D13CE2278
BF1D6E20200713279E1AFE228DBF15BF2276BA15DF22C423284E2030942545D6
E2010A5DBBF1B21305BF22D9D20D6E2040C4143545B7FC18DBF1B21305DF2284
E2040254454252ABF1D13A2A9CF19C2A276BA13F2A20DCF13F2A2387C145632D
6E2040C414354597632DCC02D6E2020071384E2050546505C495DBBF1D6E2020
071384E2050546505C495DBBF150FA1DBBF120BB150FA1B21305DF22EF532C42
32D6E2010058B9C1387C1EF53293632B21302D30020C4D820D9D20E163247A20
8BA2084E202062B684E20103550FA1B21308BA2084E202062B684E2010458BA2
084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E2
02062B684E20103584E2020621676BA150FA1B21308BA2084E202062B684E202
06216599A184E201045EEDA1509B1EEDA184E2010458BA2084E201057B21309F
F30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E201035E
D2A2D20B150FA1B21308BA2084E202062B684E2010458BA2084E201027B21309
FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E201035
84E202062E6D20B150FA1B21308BA2084E202062B684E202062E69C2A290DA12
0BB150FA184E20104584E202062E69C2A290DA1D20B1EEDA184E2010458BA208
4E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202
062B684E20103584E2020621676BA184E202062E6D20B150FA1B21308BA2084E
202062B684E202062E69C2A290DA120BB150FA184E20104584E202062E69C2A2
90DA1D20B1EEDA184E20206216599A184E201045EEDA1509B1EEDA184E201045
8BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA20
84E202062B684E20103584E202062E6D20B150FA184E2020621684E201035EED
A1509B1EEDA1B21308BA2084E202062B684E202062E69C2A290DA120BB150FA1
84E20104584E2020621690DA184E202062E69C2A290DA1D20B1EEDA184E20104
584E2020621690DA18BA2084E201057B21309FF30046F1EEDA1B2130B2130D8A
F18DBF147A208BA2084E202062B684E20103584E2020621676BA1EEDA184E201
03584E2020621676BA1ED2A2D20B184E202062A976BA150FA1B21308BA2084E2
02062B684E20206216599A184E201045EEDA1509B1EEDA184E202062A9473B18
4E201045EEDA1505B1EEDA184E2010458BA2084E201057B21309FF30046F1EED
A1B2130B2130D8AF18DBF147A208BA2084E202062B684E20103584E202062167
6BA1ED2A2D20B184E202062A976BA150FA1B21308BA2084E202062B684E20206
2A9473B150FA184E20206216599A184E201045EEDA1509B1EEDA184E202062A9
473B184E201045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF3004
6F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E201035ED2A2D
20B184E202062A990DA1EEDA184E201035ED2A2D20B184E202062A976BA1ED2A
2D20B150FA1B21308BA2084E202062B684E201045EEDA184E202062A9473B184
E201045EEDA1505B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA
1B2130B2130D8AF18DBF147A208BA2084E202062B684E201035EEDA184E20103
5ED2A2D20B184E202062A976BA1ED2A2D20B150FA1B21308BA2084E202062B6E
D2A284E202062A9473B1EEDA150FA184E201045EEDA184E202062A9473B184E2
01045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B
2130B2130D8AF18DBF147A208BA2084E202062B684E20103584E20206259505B
1EEDA184E202062A984E20206259CA4B1EEDA190DA1EEDA184E201035ED2A2D2
0B184E2020627976BA150FA1B21308BA2084E202062B684E202062A984E20104
5EEDA184E2020625976BA1505B1EEDA184E2010458BA2084E201057B21309FF3
0046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E20103584E
20206259CA4B1EEDA184E202062A984E20206259505B1EEDA176BA1EEDA184E2
01035ED2A2D20B184E2020627976BA150FA1B21308BA2084E202062B684E2020
62A984E201045EEDA184E2020625976BA1CA4B1EEDA184E2010458BA2084E201
057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B6
84E201035EEDA184E201035ED2A2D20B184E202062A976BA150FA1B21308BA20
84E202062B684E202062A9473B184E201045EEDA1505B1EEDA184E2010458BA2
084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E2
02062B684E201035ED2A2D20B184E202062A976BA150FA1B21308BA2084E2020
62B684E202062A9473B150FA184E202062A9473B184E201045EEDA1CA4B1EEDA
184E2010458BA2084E201057B21309FF30046F1EEDA1B2130B2130D8AF18DBF1
47A208BA2084E202062B684E20103584E202062C876BA184E20103584E202062
1976BA1EEDA150FA1B21308BA2084E202062B684E2020621984E202062C890DA
150FA184E202062C8599A184E201045EEDA1509B184E20206219599A184E2010
45EEDA1509B190DA1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA
1B2130B2130D8AF18DBF147A208BA2084E202062B684E2010458BA2084E20206
266B21309FF30046F1EEDA184E2020621684E201035EEDA1509B1EEDA1B21308
BA2084E202062B684E20104584E2020621676BA18BA2084E20206266B21309FF
30046F1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684E20206216
84E201035EEDA1509B1EEDA1B21308BA2084E202062B684E20104584E2020621
676BA18BA2084E201046B21309FF30046F1EEDA1B2130B2130D8AF18DBF19363
2B2130DDE0020D8C420D9D20E163247A208BA2084E202062B684E20104584E20
20621690DA184E202062E6D20B1EEDA184E20104584E2020621690DA18BA2084
E201057B21309FF30046F1EEDA1B21308BA2084E202062B684E202062E620BB1
EEDA184E20103584E202062E69C2A276BA1D20B150FA184E20206216599A184E
201035EEDA1509B1EEDA1B2130B2130D8AF18DBF147A208BA2084E202062B684
E20104584E2020621690DA18BA2084E201057B21309FF30046F1EEDA1B21308B
A2084E202062B684E2010458BA2084E201057B21309FF30046F1EEDA184E2020
6216599A184E201035EEDA1509B1EEDA1B2130B2130D8AF18DBF147A208BA208
4E202062B684E20104584E2020621690DA18BA2084E201027B21309FF30046F1
EEDA1B21308BA2084E202062B684E2010458BA2084E201027B21309FF30046F1
EEDA184E20206216599A184E201035EEDA1509B1EEDA1B2130B2130D8AF18DBF
147A208BA2084E202062B684E20104584E2020621690DA18BA2084E201046B21
309FF30046F1EEDA1B21308BA2084E202062B684E2010458BA2084E201046B21
309FF30046F1EEDA184E20206216599A184E201035EEDA1509B1EEDA1B2130B2
130D8AF18DBF147A208BA2084E202062B684E2010458BA2084E201046B21309F
F30046F1EEDA1B213084E202062B6B2130D8AF18DBF147A208BA2084E202062B
684E2010458BA2084E201027B21309FF30046F1EEDA1B21308BA2084E202062B
684E201035ED2A2D20B150FA1B2130B2130D8AF18DBF147A208BA2084E202062
B684E20104584E202062E6D20B1EEDA184E2010458BA2084E201057B21309FF3
0046F1EEDA1B21308BA2084E202062B684E202062E620BB1EEDA184E20103584
E202062E69C2A276BA1D20B150FA1B2130B2130D8AF18DBF147A208BA2084E20
2062B684E20104584E202062E6D20B1EEDA184E2020621684E201045EEDA1509
B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA2084E2
02062B684E202062E620BB1EEDA184E20103584E2020621690DA184E202062E6
9C2A276BA1D20B150FA1B2130B2130D8AF18DBF147A208BA2084E202062B684E
2020621684E201045EEDA1509B1EEDA184E202062A984E201045EEDA1505B1EE
DA184E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA2084E20206
2B684E20103584E2020621690DA1EEDA184E20103584E2020621690DA1ED2A2D
20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208BA2
084E202062B684E2020621684E201045EEDA1509B1EEDA184E202062A984E201
045EEDA1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21
308BA2084E202062B684E202062A9EEDA184E20103584E2020621690DA1ED2A2
D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208BA
2084E202062B684E201045EEDA184E202062A984E201045EEDA1505B1EEDA184
E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA2084E202062B684
E201035ED2A2D20B184E202062A9ED2A2D20B190DA1EEDA184E201035ED2A2D2
0B184E202062A9ED2A2D20B176BA1ED2A2D20B150FA1B2130B2130D8AF18DBF1
47A208BA2084E202062B684E201045EEDA184E202062A984E201045EEDA1CA4B
1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21308BA2084E20
2062B6ED2A284E202062A9EEDA150FA184E201035EEDA184E201035ED2A2D20B
184E202062A976BA1ED2A2D20B150FA1B2130B2130D8AF18DBF147A208BA2084
E202062B684E202062A984E201045EEDA184E2020625976BA1505B1EEDA184E2
010458BA2084E201057B21309FF30046F1EEDA1B21308BA2084E202062B684E2
0103584E20206259505B1EEDA184E202062A984E20206259CA4B1EEDA190DA1E
EDA184E201035ED2A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130
D8AF18DBF147A208BA2084E202062B684E202062A984E201045EEDA184E20206
25976BA1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B21
308BA2084E202062B684E20103584E20206259CA4B1EEDA184E202062A984E20
206259505B1EEDA176BA1EEDA184E201035ED2A2D20B184E202062A9ED2A2D20
B176BA150FA1B2130B2130D8AF18DBF147A208BA2084E202062B684E202062A9
84E201045EEDA1505B1EEDA184E2010458BA2084E201057B21309FF30046F1EE
DA1B21308BA2084E202062B684E201035EEDA184E201035ED2A2D20B184E2020
62A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208BA2084E202062B
684E202062A984E201045EEDA1CA4B1EEDA184E2010458BA2084E201057B2130
9FF30046F1EEDA1B21308BA2084E202062B684E202062A9EEDA184E201035ED2
A2D20B184E202062A9ED2A2D20B176BA150FA1B2130B2130D8AF18DBF147A208
BA2084E202062B684E202062C884E201045EEDA1509B184E2020621984E20104
5EEDA1509B190DA1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1
B21308BA2084E202062B684E20103584E202062C890DA184E20103584E202062
1990DA1EEDA150FA1B2130B2130D8AF18DBF147A208BA2084E202062B684E202
0621684E201045EEDA1509B1EEDA184E2010458BA2084E201057B21309FF3004
6F1EEDA1B21308BA2084E202062B684E20103584E2020621690DA150FA1B2130
B2130D8AF18DBF147A208BA2084E202062B684E2010458BA2084E201057B2130
9FF30046F1EEDA1B21308BA2084E202062B684E20103550FA1B2130B2130D8AF
18DBF193632B21305001050D81555144450D9D20E163278BF18B9C14B2A24B2A
24B2A24B2A2C9432D9D20E16323CE2278BF1918C1F88E1AFE22AC7C15DF22936
32B21301C432D6E2050E657D65627D6E20504656E6F6D6D6E205036F657E647D
6E201016D6E201026D6E20202713D6E20202723D6E2060275646573656E16323
3032D6E205036F657E6479C2A2D5CE1D5032D9D20D6E20504656E6F6D6D6E205
036F657E6479C2A290DA17C8D145632D6E2020271397632DCC026C7D145632D6
E2020272397632DCC023CE22D6E20202713918C14B2A2D9AE1D6E20202713E6A
A1D6E20202723279E1387E1AFE22D9D20D6E2050E657D65627D6E205036F657E
6479C2A290DA17C8D145632D6E20101697632DCC026C7D145632D6E201026976
32DCC02D6E20504656E6F6D6D6E205036F657E6479C2A290DA1D6E20202713D6
E2020272376BA1599A1D6E2060275646573656EB3A1D6E20202713D6E2020272
3EEDA1D6E2060275646573656EB3A1ED2A2387C1704D1B7FC178BF1D6E205036
F657E64790DA1ED2A276BA15BCF18DBF19C2A290DA1387C145632D6E20504656
E6F6D697632DCC02D6E2050E657D65627D6E205036F657E6479C2A290DA1D6E2
01016D6E20102676BA1D6E2060275646573656EB3A1D6E201016D6E20202723E
EDA1D6E201026D6E20202713EEDA176BA1599A1D6E2060275646573656EB3A1E
D2A2387C1704D1B7FC178BF1D6E205036F657E64790DA1ED2A276BA15BCF18DB
F19C2A290DA1387C145632D6E2050E657D6562797632DCC0245632D6E205036F
657E64797632B93A2B4402B21305BF22D9D20D6E20504656E6F6D6D6E205036F
657E6472ABF16C7D1599A1704D145632D6E20504656E6F6D697632DCC02D6E20
50E657D65627D6E205036F657E6472ABF16C7D1D6E2060275646573656EB3A17
04D145632D6E2050E657D6562797632DCC0245632D6E205036F657E647976326
83A2B4402B21305DF22B213049632D6E2050E657D65627D6E20504656E6F6D63
CE22D6E205036F657E647AFE22D9D20DBBF19C2A22ABF16C7D1D6E2060275646
573656EB3A1704D1DBBF19C2A22ABF16C7D1599A1704D1B21305DF22EF532936
32B21302360040C423541540D9D20E163278BF1E0CF1E0CF184E20200564DBBF
184E2050D8155514444B2A24B2A24B2A24B2A24B2A24B2A21C432D6E2050E657
D65627D6E20504656E6F6D6D6E205036F657E647D6E201016D6E201026D6E202
02713D6E20202723D6E204046570737E1632D6E20504656E6F6D68B9C19C2A20
A132D6E205036F657E6473CE22D6E205036F657E647D6E20504656E6F6D68B9C
1EBBE1AFE22D9D203CE22D6E20504656E6F6D6D6E205036F657E6477C8D1E0CF
1E0CF16C7D1279E1AFE22D9D2045632D6E204046570737976329C2A2B4402B21
305BF22D9D209C2A245632D6E20404657073797632DCC02B21305DF22B21305B
F22D9D209C2A245632D6E20404657073797632DCC02B21305DF22D6E20504656
E6F6D6D6E205036F657E6476C7D13CE2278BF168BC1D13A2279E1AFE22D9D20B
7FC18DBF145632D6E2020272397632DCC0245632D6E2020271397632DCC023CE
22D6E20202713AFE22D9D20D6E20504656E6F6D6D6E205036F657E6476C7D147
A209C2A24B2A24B2A2B213084E20400514444484E202025458DBF1E89C145632
D6E2020272397632DCC02599A145632D6E2020271397632DCC02D6E2050E657D
65627D6E205036F657E6476C7D19C2A2D6E20202713ED2A2387C184E20400544
9465B7FC18DBF145632D6E20102697632DCC02B7FC18DBF145632D6E20101697
632DCC028BA20D6E201016D6E20202713599A184E201045EEDA1509B1EEDA1D6
E2020272384E201045EEDA1505B1EEDA184E2010458BA2084E201057B21309FF
30046F1EEDA1D6E201026D6E2020272350FA1D6E20202713599A184E201045EE
DA1509B1EEDA1D6E2020272384E201045EEDA1CA4B1EEDA184E2010458BA2084
E201057B21309FF30046F1EEDA176BA1B2130EB3A1B21305BF22D9D20D6E2050
E657D65627D6E205036F657E6476C7D1B7FC18DBF145632D6E20102697632DCC
0245632D6E20101697632DCC02D6E20202723473B145632D6E2020272397632D
CC023CE22D6E2040465707379C2A2D5CE1AFE22D9D208BA20D6E20101684E201
045EEDA1D6E2020272384E201045EEDA1505B1EEDA184E2010458BA2084E2010
57B21309FF30046F1EEDA1D6E201026ED2A2D6E20202723EEDA150FA184E2010
45EEDA1D6E2020272384E201045EEDA1CA4B1EEDA184E2010458BA2084E20105
7B21309FF30046F1EEDA176BA1B2130EB3A1B21305BF22D9D208BA20D6E20101
6D6E2020272384E201045EEDA1505B1EEDA184E2010458BA2084E201057B2130
9FF30046F1EEDA1D6E201026D6E2020272350FA1D6E2020272384E201045EEDA
1CA4B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA176BA1B2130
EB3A1B21305DF22B21305DF22B21305BF22D9D2045632D6E2020271397632DCC
02D6E2050E657D65627D6E205036F657E6476C7D145632D6E20101697632DCC0
23CE22D6E20202713AFE22D9D203CE22D6E2040465707379C2A2D5CE1AFE22D9
D208BA20D6E201016D6E2040465707379C2A290DA120BB150FA184E201045D6E
2040465707379C2A290DA1D20B1EEDA1D6E20202713599A184E201045EEDA150
9B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1B2130EB3A1B21
305BF22D9D208BA20D6E201016D6E20202713599A184E201045EEDA1509B1EED
A184E2010458BA2084E201057B21309FF30046F1EEDA1B2130EB3A1B21305DF2
2B21305BF22D9D203CE22D6E2040465707379C2A2D5CE1AFE22D9D208BA20D6E
201016D6E2040465707379C2A290DA120BB150FA184E201045D6E20404657073
79C2A290DA1D20B1EEDA184E2010458BA2084E201057B21309FF30046F1EEDA1
B2130EB3A1B21305BF22D9D208BA20D6E20101684E2010458BA2084E201057B2
1309FF30046F1EEDA1B2130EB3A1B21305DF22B21305DF22B21305DF223CE22D
6E205036F657E647D6E20504656E6F6D68B9C1EBBE1AFE2276BA15DF22683A20
8332EF53293632B2130A1A0"
END_ASC


BYTES: #A1Ah 9269

BEGIN_UU laplace.uue
begin 644 laplace
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
I`@5C;W5N=&TN4$!6YO;6AIL<ONNA[R)GJU'](H:C`C@C_C628R,K,0`K
`
end
END_UU
-- 
________________________________________________________________________________
David Jansen            |  INTERNET: eldorado@en.ecn.purdue.edu
Electrical Engineering  |  BITNET:   eldorado%ea.ecn.purdue.edu@purccvm
Purdue University       |  UUCP:     {purdue, pur-ee}!en.ecn.purdue.edu!eldorado

