Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_pow.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 7e001c4810bb |
| children | ac4b44473869 |
| rev | line source |
|---|---|
|
1777
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 import sys |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 def powtest(type): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 if (type!=float): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 print " Testing 2-argument pow() function..." |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 for i in range(-1000, 1000): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 if (pow(type(i),0)!=1): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 raise ValueError, 'pow('+str(i)+',0) != 1' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 if (pow(type(i),1)!=type(i)): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 raise ValueError, 'pow('+str(i)+',1) != '+str(i) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 if (pow(type(0),1)!=type(0)): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 raise ValueError, 'pow(0,'+str(i)+') != 0' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 if (pow(type(1),1)!=type(1)): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 raise ValueError, 'pow(1,'+str(i)+') != 1' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 for i in range(-100, 100): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 if (pow(type(i),3)!=i*i*i): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 raise ValueError, 'pow('+str(i)+',3) != '+str(i*i*i) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 pow2=1 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 for i in range(0,31): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 if (pow(2,i)!=pow2): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 raise ValueError, 'pow(2,'+str(i)+') != '+str(pow2) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 if (i!=30): pow2=pow2*2 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 print " Testing 3-argument pow() function..." |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 il, ih = -20, 20 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 jl, jh = -5, 5 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 kl, kh = -10, 10 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 if (type==float): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 il=1 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 elif (type==int): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 jl=0 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 elif (type==long): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 jl,jh = 0, 15 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 for i in range(il, ih+1): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 for j in range(jl,jh+1): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 for k in range(kl, kh+1): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 if (k!=0): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 if (pow(type(i),j,k)!=pow(type(i),j)% type(k) ): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 raise ValueError, "pow(" +str(i)+ "," +str(j)+ \ |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 "," +str(k)+ ") != pow(" +str(i)+ "," + \ |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 str(j)+ ") % " +str(k) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 print 'Testing integer mode...' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 powtest(int) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 print 'Testing long integer mode...' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 powtest(long) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 print 'Testing floating point mode...' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 powtest(float) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 # Other tests-- not very systematic |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 print 'The number in both columns should match.' |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 print pow(3,3) % 8, pow(3,3,8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 print pow(3,3) % -8, pow(3,3,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 print pow(3,2) % -2, pow(3,2,-2) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 print pow(-3,3) % 8, pow(-3,3,8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 print pow(-3,3) % -8, pow(-3,3,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 print pow(5,2) % -8, pow(5,2,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 print |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 print pow(3L,3L) % 8, pow(3L,3L,8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 print pow(3L,3L) % -8, pow(3L,3L,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 print pow(3L,2) % -2, pow(3L,2,-2) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 print pow(-3L,3L) % 8, pow(-3L,3L,8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 print pow(-3L,3L) % -8, pow(-3L,3L,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 print pow(5L,2) % -8, pow(5L,2,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 print |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 print pow(3.0,3.0) % 8, pow(3.0,3.0,8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 print pow(3.0,3.0) % -8, pow(3.0,3.0,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 print pow(3.0,2) % -2, pow(3.0,2,-2) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 print pow(5.0,2) % -8, pow(5.0,2,-8) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 print |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 for i in range(-10, 11): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 for j in range(0, 6): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 for k in range(-7, 11): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 if (j>=0 and k!=0): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 o=pow(i,j) % k |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 n=pow(i,j,k) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 if (o!=n): print 'Integer mismatch:', i,j,k |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 if (j>=0 and k<>0): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 o=pow(long(i),j) % k |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 n=pow(long(i),j,k) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 if (o!=n): print 'Long mismatch:', i,j,k |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 if (i>=0 and k<>0): |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 o=pow(float(i),j) % k |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 n=pow(float(i),j,k) |
|
7e001c4810bb
Test set for new pow() function
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 if (o!=n): print 'Float mismatch:', i,j,k |
