diff options
author | Guido van Rossum <guido@python.org> | 1998-11-02 15:38:51 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-11-02 15:38:51 (GMT) |
commit | e0fbe1c26de5fde580912b80d3667ade05bbba5f (patch) | |
tree | ca9ffde552d9241b12f1c6ea21862abc12a6925d /Lib/lib-old/poly.py | |
parent | b736a87703894c4f56cbf09ab82bae6e63e6862e (diff) | |
download | cpython-e0fbe1c26de5fde580912b80d3667ade05bbba5f.zip cpython-e0fbe1c26de5fde580912b80d3667ade05bbba5f.tar.gz cpython-e0fbe1c26de5fde580912b80d3667ade05bbba5f.tar.bz2 |
Declaring zmod and poly obsolete. They have problems.
Diffstat (limited to 'Lib/lib-old/poly.py')
-rw-r--r-- | Lib/lib-old/poly.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Lib/lib-old/poly.py b/Lib/lib-old/poly.py new file mode 100644 index 0000000..57bd203 --- /dev/null +++ b/Lib/lib-old/poly.py @@ -0,0 +1,52 @@ +# module 'poly' -- Polynomials + +# A polynomial is represented by a list of coefficients, e.g., +# [1, 10, 5] represents 1*x**0 + 10*x**1 + 5*x**2 (or 1 + 10x + 5x**2). +# There is no way to suppress internal zeros; trailing zeros are +# taken out by normalize(). + +def normalize(p): # Strip unnecessary zero coefficients + n = len(p) + while p: + if p[n-1]: return p[:n] + n = n-1 + return [] + +def plus(a, b): + if len(a) < len(b): a, b = b, a # make sure a is the longest + res = a[:] # make a copy + for i in range(len(b)): + res[i] = res[i] + b[i] + return normalize(res) + +def minus(a, b): + neg_b = map(lambda x: -x, b[:]) + return plus(a, neg_b) + +def one(power, coeff): # Representation of coeff * x**power + res = [] + for i in range(power): res.append(0) + return res + [coeff] + +def times(a, b): + res = [] + for i in range(len(a)): + for j in range(len(b)): + res = plus(res, one(i+j, a[i]*b[j])) + return res + +def power(a, n): # Raise polynomial a to the positive integral power n + if n == 0: return [1] + if n == 1: return a + if n/2*2 == n: + b = power(a, n/2) + return times(b, b) + return times(power(a, n-1), a) + +def der(a): # First derivative + res = a[1:] + for i in range(len(res)): + res[i] = res[i] * (i+1) + return res + +# Computing a primitive function would require rational arithmetic... |