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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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