1
from numpy.core import *
2
from numpy.random import rand, randint
3
from numpy.testing import *
4
from numpy.core.multiarray import dot as dot_
7
def __init__(self,sequence=None):
10
self.array=array(sequence)
11
def __add__(self,other):
13
out.array=self.array+other.array
15
def __sub__(self,other):
17
out.array=self.array-other.array
19
def __mul__(self,other): # with scalar
20
out=Vec(self.array.copy())
23
def __rmul__(self,other):
27
out.array=abs(self.array)
30
return "Vec("+repr(self.array.tolist())+")"
33
class test_dot(NumpyTestCase):
42
def check_matmat(self):
44
c1 = dot(A.transpose(), A)
45
c2 = dot_(A.transpose(), A)
46
assert_almost_equal(c1, c2, decimal=self.N)
48
def check_matvec(self):
49
A, b1 = self.A, self.b1
52
assert_almost_equal(c1, c2, decimal=self.N)
54
def check_matvec2(self):
55
A, b2 = self.A, self.b2
58
assert_almost_equal(c1, c2, decimal=self.N)
60
def check_vecmat(self):
61
A, b4 = self.A, self.b4
64
assert_almost_equal(c1, c2, decimal=self.N)
66
def check_vecmat2(self):
67
b3, A = self.b3, self.A
68
c1 = dot(b3, A.transpose())
69
c2 = dot_(b3, A.transpose())
70
assert_almost_equal(c1, c2, decimal=self.N)
72
def check_vecmat3(self):
73
A, b4 = self.A, self.b4
74
c1 = dot(A.transpose(),b4)
75
c2 = dot_(A.transpose(),b4)
76
assert_almost_equal(c1, c2, decimal=self.N)
78
def check_vecvecouter(self):
79
b1, b3 = self.b1, self.b3
82
assert_almost_equal(c1, c2, decimal=self.N)
84
def check_vecvecinner(self):
85
b1, b3 = self.b1, self.b3
88
assert_almost_equal(c1, c2, decimal=self.N)
90
def check_matscalar(self):
91
b1 = matrix(ones((3,3),dtype=complex))
92
assert_equal(b1*1.0, b1)
94
def check_columnvect(self):
99
assert_almost_equal(c1, c2, decimal=self.N)
101
def check_columnvect(self):
102
b1 = ones((3,1)).transpose()
106
assert_almost_equal(c1, c2, decimal=self.N)
108
def check_vecscalar(self):
113
assert_almost_equal(c1, c2, decimal=self.N)
115
def check_vecscalar2(self):
120
assert_almost_equal(c1, c2, decimal=self.N)
123
dims = [(),(1,),(1,1)]
129
c2 = dot_(arg1, arg2)
130
assert (c1.shape == c2.shape)
131
assert_almost_equal(c1, c2, decimal=self.N)
133
def check_vecobject(self):
134
U_non_cont = transpose([[1.,1.],[1.,2.]])
135
U_cont = ascontiguousarray(U_non_cont)
136
x = array([Vec([1.,0.]),Vec([0.,1.])])
137
zeros = array([Vec([0.,0.]),Vec([0.,0.])])
138
zeros_test = dot(U_cont,x) - dot(U_non_cont,x)
139
assert_equal(zeros[0].array, zeros_test[0].array)
140
assert_equal(zeros[1].array, zeros_test[1].array)
143
class test_bool_scalar(NumpyTestCase):
144
def test_logical(self):
148
self.failUnless((t and s) is s)
149
self.failUnless((f and s) is f)
151
def test_bitwise_or(self):
154
self.failUnless((t | t) is t)
155
self.failUnless((f | t) is t)
156
self.failUnless((t | f) is t)
157
self.failUnless((f | f) is f)
159
def test_bitwise_and(self):
162
self.failUnless((t & t) is t)
163
self.failUnless((f & t) is f)
164
self.failUnless((t & f) is f)
165
self.failUnless((f & f) is f)
167
def test_bitwise_xor(self):
170
self.failUnless((t ^ t) is f)
171
self.failUnless((f ^ t) is t)
172
self.failUnless((t ^ f) is t)
173
self.failUnless((f ^ f) is f)
176
class test_seterr(NumpyTestCase):
179
old = seterr(divide='warn')
180
self.failUnless(err == old)
182
self.failUnless(new['divide'] == 'warn')
184
self.failUnless(geterr()['over'] == 'raise')
185
self.failUnless(new['divide'] == 'warn')
187
self.failUnless(geterr() == old)
188
def test_divideerr(self):
189
seterr(divide='raise')
191
array([1.]) / array([0.])
192
except FloatingPointError:
196
seterr(divide='ignore')
197
array([1.]) / array([0.])
200
class test_fromiter(NumpyTestCase):
206
def test_types(self):
207
ai32 = fromiter(self.makegen(), int32)
208
ai64 = fromiter(self.makegen(), int64)
209
af = fromiter(self.makegen(), float)
210
self.failUnless(ai32.dtype == dtype(int32))
211
self.failUnless(ai64.dtype == dtype(int64))
212
self.failUnless(af.dtype == dtype(float))
214
def test_lengths(self):
215
expected = array(list(self.makegen()))
216
a = fromiter(self.makegen(), int)
217
a20 = fromiter(self.makegen(), int, 20)
218
self.failUnless(len(a) == len(expected))
219
self.failUnless(len(a20) == 20)
221
fromiter(self.makegen(), int, len(expected) + 10)
227
def test_values(self):
228
expected = array(list(self.makegen()))
229
a = fromiter(self.makegen(), int)
230
a20 = fromiter(self.makegen(), int, 20)
231
self.failUnless(alltrue(a == expected))
232
self.failUnless(alltrue(a20 == expected[:20]))
234
class test_index(NumpyTestCase):
235
def test_boolean(self):
238
g1 = randint(0,5,size=15)
239
g2 = randint(0,8,size=15)
241
assert (array([a[0][V>0],a[1][V>0],a[2][V>0]]) == a[:,V>0]).all()
243
class test_binary_repr(NumpyTestCase):
245
assert_equal(binary_repr(0),'0')
247
def test_large(self):
248
assert_equal(binary_repr(10736848),'101000111101010011010000')
250
if __name__ == '__main__':