diff options
-rw-r--r-- | numpy/core/blasdot/_dotblas.c | 1 | ||||
-rw-r--r-- | numpy/core/src/multiarraymodule.c | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/numpy/core/blasdot/_dotblas.c b/numpy/core/blasdot/_dotblas.c index 89ff6a353..a6dcd98c9 100644 --- a/numpy/core/blasdot/_dotblas.c +++ b/numpy/core/blasdot/_dotblas.c @@ -343,7 +343,6 @@ dotblas_matrixproduct(PyObject *dummy, PyObject *args) subtype = ap1->ob_type; } - if (l==0) nd = 0; ret = (PyArrayObject *)PyArray_New(subtype, nd, dimensions, typenum, NULL, NULL, 0, 0, (PyObject *) diff --git a/numpy/core/src/multiarraymodule.c b/numpy/core/src/multiarraymodule.c index bd2c1f2b2..42b699ed9 100644 --- a/numpy/core/src/multiarraymodule.c +++ b/numpy/core/src/multiarraymodule.c @@ -2712,8 +2712,14 @@ PyArray_MatrixProduct(PyObject *op1, PyObject *op2) ret = new_array_for_sum(ap1, ap2, nd, dimensions, typenum); if (ret == NULL) goto fail; - /* Ensure that multiarray.dot([],[]) -> 0 */ - memset(PyArray_DATA(ret), 0, PyArray_ITEMSIZE(ret)); + /* Ensure that multiarray.dot(<Nx0>,<0xM>) -> zeros((N,M)) */ + if (PyArray_SIZE(ap1) == 0 && PyArray_SIZE(ap2) == 0) { + memset(PyArray_DATA(ret), 0, PyArray_NBYTES(ret)); + } + else { /* Ensure that multiarray.dot([],[]) -> 0 */ + memset(PyArray_DATA(ret), 0, PyArray_ITEMSIZE(ret)); + } + dot = ret->descr->f->dotfunc; if (dot == NULL) { |