7 print " Testing 2-argument pow() function..."
8 for i
in range(-1000, 1000):
9 if pow(type(i
), 0) != 1:
10 raise ValueError, 'pow('+str(i
)+',0) != 1'
11 if pow(type(i
), 1) != type(i
):
12 raise ValueError, 'pow('+str(i
)+',1) != '+str(i
)
13 if pow(type(0), 1) != type(0):
14 raise ValueError, 'pow(0,'+str(i
)+') != 0'
15 if pow(type(1), 1) != type(1):
16 raise ValueError, 'pow(1,'+str(i
)+') != 1'
18 for i
in range(-100, 100):
19 if pow(type(i
), 3) != i
*i
*i
:
20 raise ValueError, 'pow('+str(i
)+',3) != '+str(i
*i
*i
)
25 raise ValueError, 'pow(2,'+str(i
)+') != '+str(pow2
)
26 if i
!= 30 : pow2
= pow2
*2
28 for othertype
in int, long:
29 for i
in range(-10, 0) + range(1, 10):
31 for j
in range(1, 11):
36 raise ValueError, "pow(%s, %s) failed" % (ii
, jj
)
38 for othertype
in int, long, float:
39 for i
in range(1, 100):
41 exp
= -othertype(i
/10.0)
46 except ZeroDivisionError:
47 pass # taking zero to any negative exponent should fail
49 raise ValueError, "pow(%s, %s) did not fail" % (zero
, exp
)
51 print " Testing 3-argument pow() function..."
58 compare
= test_support
.fcmp
63 for i
in range(il
, ih
+1):
64 for j
in range(jl
, jh
+1):
65 for k
in range(kl
, kh
+1):
67 if type == float or j
< 0:
73 raise TestFailed("expected TypeError from "
74 "pow%r" % ((type(i
), j
, k
)))
76 if compare(pow(type(i
),j
,k
), pow(type(i
),j
)% type(k
)):
77 raise ValueError, "pow(" +str(i
)+ "," +str(j
)+ \
78 "," +str(k
)+ ") != pow(" +str(i
)+ "," + \
79 str(j
)+ ") % " +str(k
)
82 print 'Testing integer mode...'
84 print 'Testing long integer mode...'
86 print 'Testing floating point mode...'
89 # Other tests-- not very systematic
91 print 'The number in both columns should match.'
92 print `
pow(3,3) % 8`
, `
pow(3,3,8)`
93 print `
pow(3,3) % -8`
, `
pow(3,3,-8)`
94 print `
pow(3,2) % -2`
, `
pow(3,2,-2)`
95 print `
pow(-3,3) % 8`
, `
pow(-3,3,8)`
96 print `
pow(-3,3) % -8`
, `
pow(-3,3,-8)`
97 print `
pow(5,2) % -8`
, `
pow(5,2,-8)`
100 print `
pow(3L,3L) % 8`
, `
pow(3L,3L,8)`
101 print `
pow(3L,3L) % -8`
, `
pow(3L,3L,-8)`
102 print `
pow(3L,2) % -2`
, `
pow(3L,2,-2)`
103 print `
pow(-3L,3L) % 8`
, `
pow(-3L,3L,8)`
104 print `
pow(-3L,3L) % -8`
, `
pow(-3L,3L,-8)`
105 print `
pow(5L,2) % -8`
, `
pow(5L,2,-8)`
110 for i
in range(-10, 11):
111 for j
in range(0, 6):
112 for k
in range(-7, 11):
113 if j
>= 0 and k
!= 0:
116 if o
!= n
: print 'Integer mismatch:', i
,j
,k
117 if j
>= 0 and k
!= 0:
118 o
= pow(long(i
),j
) % k
120 if o
!= n
: print 'Integer mismatch:', i
,j
,k