clever expansion implemented
[sympyx.git] / t.py
blob6e37affbd3c518df50bd500e5efa6ca8803da2e2
1 #!/usr/bin/env python
2 from timeit import default_timer as clock
3 from sympy import Symbol, Add, Mul, Integer, ADD, MUL, POW, INTEGER, SYMBOL, \
4 multinomial_coefficients
6 N = 4
8 x = Symbol("x")
9 y = Symbol("y")
10 z = Symbol("z")
12 def doit1(e):
13 f = e*(e+1)
14 f = f.expand()
15 return f
17 def doit2(e):
18 e1 = e**2
19 e = e.expand()
20 print e
21 e1 = e1.expand()
22 print e1
23 t = clock()
24 f = e + e1
25 t = clock() - t
26 return f, t
28 e = (x+y+z+1)**N
30 print "1:"
31 t_tot1 = clock()
32 a1 = doit1(e)
33 t_tot1 = clock()-t_tot1
34 print "2:"
35 t_tot = clock()
36 a2, t = doit2(e)
37 t_tot = clock()-t_tot
39 #e = e*(e+1)
40 #f = e.expand()
42 print "done"
44 t_mul = clock()
45 a= multinomial_coefficients(4, N)
46 b= multinomial_coefficients(4, 2*N)
47 t_mul = clock() - t_mul
48 print "a1: ", a1
49 print "a2: ", a2
50 print "a1 == a2: ", a1 == a2
51 print "hash(a1) == hash(a2)", hash(a1) == hash(a2)
52 print e
53 print "# of terms:", len(a2.args)
54 print "time spent doing e+e2:", t
55 print "time doing multinomial_coefficients:", t_mul
56 print "total time1:", t_tot1
57 print "total time2:", t_tot
60 def csympy2sympy(a):
61 import sympy
62 if a.type == ADD:
63 return sympy.Add(*[csympy2sympy(x) for x in a.args])
64 elif a.type == MUL:
65 return sympy.Mul(*[csympy2sympy(x) for x in a.args])
66 elif a.type == POW:
67 return sympy.Pow(*[csympy2sympy(x) for x in a.args])
68 elif a.type == INTEGER:
69 return sympy.sympify(str(a))
70 elif a.type == SYMBOL:
71 return sympy.sympify(str(a))
72 print a
73 raise NotImplementedError("sorry")
75 #e_sympy = csympy2sympy(e)
76 #a2_sympy = doit2(e_sympy)[0]
77 #a2_csympy = csympy2sympy(a2)
78 #print "comparison with sympy:"
79 #print a2_sympy == a2_csympy