1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#!/usr/bin/python
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "py2geom"))
from py2geom import *
import py2geom
P = Point(1,2)
Q = Point(3,5)
print P, Q, P+Q
print L2(P)
print cross(P,Q)
#print dir(py2geom)
import numpy
ply = numpy.poly1d([1,0,2])
print ply(0.5)
t = numpy.poly1d([1,0])
q,r = ply / t
print q,r
print ply
print q*t + r
print ply
def poly_to_sbasis(p):
sb = SBasis()
s = numpy.poly1d([-1, 1, 0])
while True:
q,r = p / s
#print "r:", r
print "r:", repr(r)
x = Linear(r[0],r[1]+r[0])
sb.append(x)
p = q
print "q:", repr(p), len(list(p))
if len(list(p)) <= 1 and p[0] == 0:
return sb
def sbasis_to_poly(sb):
p = numpy.poly1d([0])
s = numpy.poly1d([-1, 1, 0])
sp = numpy.poly1d([1])
for sbt in sb:
p += sp*(sbt[0]*(numpy.poly1d([-1,1])) + sbt[1]*(numpy.poly1d([1,0])))
sp *= s
return p
trial = numpy.poly1d([1,0,2])
sb = poly_to_sbasis(trial)
print repr(trial),"p2sb:", sb
print "and back again:", repr(sbasis_to_poly(sb))
print repr(sbasis_to_poly(derivative(sb))), repr(trial.deriv())
print "unit tests:"
x = Linear(0,1)
sb = SBasis()
sb.append(x)
print sb
sb = sb*sb
print sb
print sb[0]
print "terms"
for i in range(6):
sb = SBasis()
for j in range(3):
sb.append(Linear(i==2*j,i==2*j+1))
print sb
print sbasis_to_poly(sb)
|