Contents of /trunk/numeric/patches/numeric-24.2-dotblas.patch
Parent Directory | Revision Log
Revision 361 -
(show annotations)
(download)
Tue Sep 25 20:32:31 2007 UTC (17 years ago) by niro
File size: 3940 byte(s)
Tue Sep 25 20:32:31 2007 UTC (17 years ago) by niro
File size: 3940 byte(s)
-ver bump to 24.2-r1
1 | --- Numeric-24.2/Packages/dotblas/dotblas/_dotblas.c.orig 2005-04-07 06:15:47.000000000 +0100 |
2 | +++ Numeric-24.2/Packages/dotblas/dotblas/_dotblas.c 2007-05-25 17:39:30.382025500 +0100 |
3 | @@ -52,7 +52,7 @@ |
4 | static PyObject *dotblas_matrixproduct(PyObject *dummy, PyObject *args) { |
5 | PyObject *op1, *op2; |
6 | PyArrayObject *ap1, *ap2, *ret; |
7 | - int i, j, l, lda, ldb, matchDim = -1, otherDim = -1; |
8 | + int i, j, l, lda, ldb, ldc, matchDim = -1, otherDim = -1; |
9 | int typenum; |
10 | int dimensions[MAX_DIMS], nd; |
11 | static const float oneF[2] = {1.0, 0.0}; |
12 | @@ -248,33 +248,34 @@ |
13 | /* Matrix matrix multiplication -- Level 3 BLAS */ |
14 | lda = (ap1->dimensions[1] > 1 ? ap1->dimensions[1] : 1); |
15 | ldb = (ap2->dimensions[1] > 1 ? ap2->dimensions[1] : 1); |
16 | + ldc = (ret->dimensions[1] > 1 ? ret->dimensions[1] : 1); |
17 | if (typenum == PyArray_DOUBLE) { |
18 | cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, |
19 | ap1->dimensions[0], ap2->dimensions[1], ap2->dimensions[0], |
20 | 1.0, (double *)ap1->data, lda, |
21 | (double *)ap2->data, ldb, |
22 | - 0.0, (double *)ret->data, ldb); |
23 | + 0.0, (double *)ret->data, ldc); |
24 | } |
25 | else if (typenum == PyArray_FLOAT) { |
26 | cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, |
27 | ap1->dimensions[0], ap2->dimensions[1], ap2->dimensions[0], |
28 | 1.0, (float *)ap1->data, lda, |
29 | (float *)ap2->data, ldb, |
30 | - 0.0, (float *)ret->data, ldb); |
31 | + 0.0, (float *)ret->data, ldc); |
32 | } |
33 | else if (typenum == PyArray_CDOUBLE) { |
34 | cblas_zgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, |
35 | ap1->dimensions[0], ap2->dimensions[1], ap2->dimensions[0], |
36 | oneD, (double *)ap1->data, lda, |
37 | (double *)ap2->data, ldb, |
38 | - zeroD, (double *)ret->data, ldb); |
39 | + zeroD, (double *)ret->data, ldc); |
40 | } |
41 | else if (typenum == PyArray_CFLOAT) { |
42 | cblas_cgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, |
43 | ap1->dimensions[0], ap2->dimensions[1], ap2->dimensions[0], |
44 | oneF, (float *)ap1->data, lda, |
45 | (float *)ap2->data, ldb, |
46 | - zeroF, (float *)ret->data, ldb); |
47 | + zeroF, (float *)ret->data, ldc); |
48 | } |
49 | } |
50 | else { |
51 | @@ -334,7 +335,7 @@ |
52 | static PyObject *dotblas_innerproduct(PyObject *dummy, PyObject *args) { |
53 | PyObject *op1, *op2; |
54 | PyArrayObject *ap1, *ap2, *ret; |
55 | - int i, j, l, lda, ldb; |
56 | + int i, j, l, lda, ldb, ldc; |
57 | int typenum; |
58 | int dimensions[MAX_DIMS], nd; |
59 | static const float oneF[2] = {1.0, 0.0}; |
60 | @@ -525,33 +526,34 @@ |
61 | /* Matrix matrix multiplication -- Level 3 BLAS */ |
62 | lda = (ap1->dimensions[1] > 1 ? ap1->dimensions[1] : 1); |
63 | ldb = (ap2->dimensions[1] > 1 ? ap2->dimensions[1] : 1); |
64 | + ldc = (ret->dimensions[1] > 1 ? ret->dimensions[1] : 1); |
65 | if (typenum == PyArray_DOUBLE) { |
66 | cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasTrans, |
67 | ap1->dimensions[0], ap2->dimensions[0], ap1->dimensions[1], |
68 | 1.0, (double *)ap1->data, lda, |
69 | (double *)ap2->data, ldb, |
70 | - 0.0, (double *)ret->data, ldb); |
71 | + 0.0, (double *)ret->data, ldc); |
72 | } |
73 | else if (typenum == PyArray_FLOAT) { |
74 | cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasTrans, |
75 | ap1->dimensions[0], ap2->dimensions[0], ap1->dimensions[1], |
76 | 1.0, (float *)ap1->data, lda, |
77 | (float *)ap2->data, ldb, |
78 | - 0.0, (float *)ret->data, ldb); |
79 | + 0.0, (float *)ret->data, ldc); |
80 | } |
81 | else if (typenum == PyArray_CDOUBLE) { |
82 | cblas_zgemm(CblasRowMajor, CblasNoTrans, CblasTrans, |
83 | ap1->dimensions[0], ap2->dimensions[0], ap1->dimensions[1], |
84 | oneD, (double *)ap1->data, lda, |
85 | (double *)ap2->data, ldb, |
86 | - zeroD, (double *)ret->data, ldb); |
87 | + zeroD, (double *)ret->data, ldc); |
88 | } |
89 | else if (typenum == PyArray_CFLOAT) { |
90 | cblas_cgemm(CblasRowMajor, CblasNoTrans, CblasTrans, |
91 | ap1->dimensions[0], ap2->dimensions[0], ap1->dimensions[1], |
92 | oneF, (float *)ap1->data, lda, |
93 | (float *)ap2->data, ldb, |
94 | - zeroF, (float *)ret->data, ldb); |
95 | + zeroF, (float *)ret->data, ldc); |
96 | } |
97 | } |
98 | else { |