Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 694ce0e

Browse files
committed
BUG: linalg: use correct BLAS incx convention in xCOPY
1 parent f2ce635 commit 694ce0e

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

numpy/linalg/umath_linalg.c.src

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -819,9 +819,17 @@ linearize_@TYPE@_matrix(void *dst_in,
819819
(fortran_int)(data->column_strides/sizeof(@typ@));
820820
fortran_int one = 1;
821821
for (i=0; i< data->rows; i++) {
822-
FNAME(@copy@)(&columns,
823-
(void*)src, &column_strides,
824-
(void*)dst, &one);
822+
if (column_strides >= 0) {
823+
FNAME(@copy@)(&columns,
824+
(void*)src, &column_strides,
825+
(void*)dst, &one);
826+
}
827+
else {
828+
FNAME(@copy@)(&columns,
829+
(void*)((@typ@*)src + (columns-1)*column_strides),
830+
&column_strides,
831+
(void*)dst, &one);
832+
}
825833
src += data->row_strides/sizeof(@typ@);
826834
dst += data->columns;
827835
}
@@ -847,9 +855,17 @@ delinearize_@TYPE@_matrix(void *dst_in,
847855
(fortran_int)(data->column_strides/sizeof(@typ@));
848856
fortran_int one = 1;
849857
for (i=0; i < data->rows; i++) {
850-
FNAME(@copy@)(&columns,
851-
(void*)src, &one,
852-
(void*)dst, &column_strides);
858+
if (column_strides >= 0) {
859+
FNAME(@copy@)(&columns,
860+
(void*)src, &one,
861+
(void*)dst, &column_strides);
862+
}
863+
else {
864+
FNAME(@copy@)(&columns,
865+
(void*)src, &one,
866+
(void*)((@typ@*)dst + (columns-1)*column_strides),
867+
&column_strides);
868+
}
853869
src += data->columns;
854870
dst += data->row_strides/sizeof(@typ@);
855871
}

0 commit comments

Comments
 (0)