LISPPA: Polynomials (paxBasic).


Sub Add(InitP, InitQ)
  Dim P, Q
  P = AddressOf InitP
  Q = AddressOf InitQ
  Do
    While P(0)(1) < Q(0)(1)
      Q = AddressOf Q(1)
    End While

    If P(0)(1) > Q(0)(1) Then
      Q = [ + P[0], Q]
    Else
      Q(0)(0) = Q(0)(0) + P(0)(0)
      If Q(0)(0) = 0 Then
        Reduced Q = Q(1)
      Else
        Q = AddressOf Q(1)
      End If
    End If
    P = AddressOf P(1)
  Loop Until P(0)(1) < 0
End Sub

Sub Show(P)
  Println ""
  Do
    Print P(0)(0), "X^", P(0)(1)

    P = AddressOf P(1)

    If P(0)(1) < 0 Then
      Exit Do
    End If

    If P(0)(0) >= 0 Then
      Print "+"
    End If
  Loop Until false
End Sub

Dim P, Q
P = [[0, -1], NULL]
P(1) = AddressOf P
P = [[600, 1], P]
P = [[10, 2], P]
P = [[70, 5], P]
P = [[150, 6], P]
P = [[80, 7], P]

Q = [[0, -1], NULL]
Q(1) = AddressOf Q
Q = [[600, 1], Q]
Q = [[170, 3], Q]
Q = [[ 60, 5], Q]
Q = [[-150, 6], Q]

Println "Source polynomials:"
Show(P)
Show(Q)
Add(P, AddressOf Q)
println "Sum:"
Show(Q)


Copyright © 1999-2006 VIRT Laboratory. All rights reserved.