[pypy-commit] pypy matrixmath-dot: copy/paste test and doc string from numpy

mattip noreply at buildbot.pypy.org
Thu Dec 1 22:18:33 CET 2011


Author: mattip
Branch: matrixmath-dot
Changeset: r50044:1780af5403c8
Date: 2011-11-30 23:08 +0200
http://bitbucket.org/pypy/pypy/changeset/1780af5403c8/

Log:	copy/paste test and doc string from numpy

diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -501,6 +501,15 @@
     descr_argmin = _reduce_argmax_argmin_impl("min")
 
     def descr_dot(self, space, w_other):
+        '''Dot product of two arrays.
+    
+    For 2-D arrays it is equivalent to matrix multiplication, and for 1-D
+    arrays to inner product of vectors (without complex conjugation). For
+    N dimensions it is a sum product over the last axis of `a` and
+    the second-to-last of `b`::
+    
+        dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])'''
+        #numpy's doc string :) 
         w_other = convert_to_array(space, w_other)
         if isinstance(w_other, Scalar):
             return self.descr_mul(space, w_other)
diff --git a/pypy/module/micronumpy/test/test_numarray.py b/pypy/module/micronumpy/test/test_numarray.py
--- a/pypy/module/micronumpy/test/test_numarray.py
+++ b/pypy/module/micronumpy/test/test_numarray.py
@@ -700,6 +700,15 @@
         assert a.dot(range(5)) == 30
         assert dot(range(5), range(5)) == 30
         assert (dot(5, [1, 2, 3]) == [5, 10, 15]).all()
+        a = array([[range(4), range(4, 8), range(8, 12)],
+                   [range(12, 16),range(16, 20),range(20, 24)]])
+        raises(ValueError,"a.dot(a)")
+        b = a[0, :, :].T
+        #Superfluous shape test makes the intention of the test clearer
+        assert a.shape == (2, 3, 4) 
+        assert b.shape == (4, 3)
+        c = a.dot(b)
+        assert (c == [[[14, 38,62], [38, 126, 214], [62, 214, 366]], 
 
     def test_dot_constant(self):
         from numpypy import array


More information about the pypy-commit mailing list