def polyNormalize (P): Q = [0] * max(len(P),1) for I in range(len(P)): if abs(P[I] - float(int(P[I]))) < 1.0E-14: Q[I] = int(P[I]) else: Q[I] = P[I] while (len(Q) > 1) and (Q[-1] == 0): del Q[-1] return Q def polyAdd (P0,P1): # P0 and P1 are polynomial lists [_,_,_,_] Q = [0] * max(len(P0),len(P1)) for I in range(len(P0)): Q[I] = Q[I] + P0[I] for I in range(len(P1)): Q[I] = Q[I] + P1[I] return polyNormalize(Q) def polySubtract (P0,P1): # P0 and P1 are polynomial lists [_,_,_,_] Q = [0] * max(len(P0),len(P1)) for I in range(len(P0)): Q[I] = Q[I] + P0[I] for I in range(len(P1)): Q[I] = Q[I] - P1[I] return polyNormalize(Q)