6 print " Testing 2-argument pow() function..."
7 for i
in range(-1000, 1000):
8 if pow(type(i
), 0) != 1:
9 raise ValueError, 'pow('+str(i
)+',0) != 1'
10 if pow(type(i
), 1) != type(i
):
11 raise ValueError, 'pow('+str(i
)+',1) != '+str(i
)
12 if pow(type(0), 1) != type(0):
13 raise ValueError, 'pow(0,'+str(i
)+') != 0'
14 if pow(type(1), 1) != type(1):
15 raise ValueError, 'pow(1,'+str(i
)+') != 1'
17 for i
in range(-100, 100):
18 if pow(type(i
), 3) != i
*i
*i
:
19 raise ValueError, 'pow('+str(i
)+',3) != '+str(i
*i
*i
)
24 raise ValueError, 'pow(2,'+str(i
)+') != '+str(pow2
)
25 if i
!= 30 : pow2
= pow2
*2
27 for othertype
in int, long:
28 for i
in range(-10, 0) + range(1, 10):
30 for j
in range(1, 11):
35 pass # taking an int to a neg int power should fail
37 raise ValueError, "pow(%s, %s) did not fail" % (ii
, jj
)
39 for othertype
in int, long, float:
40 for i
in range(1, 100):
42 exp
= -othertype(i
/10.0)
47 except ZeroDivisionError:
48 pass # taking zero to any negative exponent should fail
50 raise ValueError, "pow(%s, %s) did not fail" % (zero
, exp
)
52 print " Testing 3-argument pow() function..."
59 compare
= test_support
.fcmp
64 for i
in range(il
, ih
+1):
65 for j
in range(jl
, jh
+1):
66 for k
in range(kl
, kh
+1):
68 if compare(pow(type(i
),j
,k
), pow(type(i
),j
)% type(k
)):
69 raise ValueError, "pow(" +str(i
)+ "," +str(j
)+ \
70 "," +str(k
)+ ") != pow(" +str(i
)+ "," + \
71 str(j
)+ ") % " +str(k
)
74 print 'Testing integer mode...'
76 print 'Testing long integer mode...'
78 print 'Testing floating point mode...'
81 # Other tests-- not very systematic
83 print 'The number in both columns should match.'
84 print `
pow(3,3) % 8`
, `
pow(3,3,8)`
85 print `
pow(3,3) % -8`
, `
pow(3,3,-8)`
86 print `
pow(3,2) % -2`
, `
pow(3,2,-2)`
87 print `
pow(-3,3) % 8`
, `
pow(-3,3,8)`
88 print `
pow(-3,3) % -8`
, `
pow(-3,3,-8)`
89 print `
pow(5,2) % -8`
, `
pow(5,2,-8)`
92 print `
pow(3L,3L) % 8`
, `
pow(3L,3L,8)`
93 print `
pow(3L,3L) % -8`
, `
pow(3L,3L,-8)`
94 print `
pow(3L,2) % -2`
, `
pow(3L,2,-2)`
95 print `
pow(-3L,3L) % 8`
, `
pow(-3L,3L,8)`
96 print `
pow(-3L,3L) % -8`
, `
pow(-3L,3L,-8)`
97 print `
pow(5L,2) % -8`
, `
pow(5L,2,-8)`
100 print pow(3.0,3.0) % 8, pow(3.0,3.0,8)
101 print pow(3.0,3.0) % -8, pow(3.0,3.0,-8)
102 print pow(3.0,2) % -2, pow(3.0,2,-2)
103 print pow(5.0,2) % -8, pow(5.0,2,-8)
106 for i
in range(-10, 11):
107 for j
in range(0, 6):
108 for k
in range(-7, 11):
109 if j
>= 0 and k
!= 0:
112 if o
!= n
: print 'Integer mismatch:', i
,j
,k
113 if j
>= 0 and k
!= 0:
114 o
= pow(long(i
),j
) % k
116 if o
!= n
: print 'Long mismatch:', i
,j
,k
117 if i
>= 0 and k
!= 0:
118 o
= pow(float(i
),j
) % k
119 n
= pow(float(i
),j
,k
)
120 if o
!= n
: print 'Float mismatch:', i
,j
,k