Lines 8-41
Link Here
|
8 |
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 |
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. |
9 |
#include <iostream> |
9 |
#include <iostream> |
10 |
#include "common.h" |
10 |
#include "common.h" |
11 |
|
11 |
|
12 |
int EIGEN_BLAS_FUNC(gemm)(char *opa, char *opb, int *m, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb, RealScalar *pbeta, RealScalar *pc, int *ldc) |
12 |
int EIGEN_BLAS_FUNC(gemm)(char *opa, char *opb, int *m, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb, RealScalar *pbeta, RealScalar *pc, int *ldc) |
13 |
{ |
13 |
{ |
14 |
// std::cerr << "in gemm " << *opa << " " << *opb << " " << *m << " " << *n << " " << *k << " " << *lda << " " << *ldb << " " << *ldc << " " << *palpha << " " << *pbeta << "\n"; |
14 |
// std::cerr << "in gemm " << *opa << " " << *opb << " " << *m << " " << *n << " " << *k << " " << *lda << " " << *ldb << " " << *ldc << " " << *palpha << " " << *pbeta << "\n"; |
15 |
typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, Scalar, internal::level3_blocking<Scalar,Scalar>&, Eigen::internal::GemmParallelInfo<DenseIndex>*); |
15 |
typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, Scalar, internal::level3_blocking<Scalar,Scalar>&, Eigen::internal::GemmParallelInfo<DenseIndex>*); |
16 |
static functype func[12]; |
16 |
static const functype func[12] = { |
17 |
|
17 |
// array index: NOTR | (NOTR << 2) |
18 |
static bool init = false; |
18 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,ColMajor,false,ColMajor>::run), |
19 |
if(!init) |
19 |
// array index: TR | (NOTR << 2) |
20 |
{ |
20 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,false,ColMajor>::run), |
21 |
for(int i=0; i<12; ++i) |
21 |
// array index: ADJ | (NOTR << 2) |
22 |
func[i] = 0; |
22 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor>::run), |
23 |
func[NOTR | (NOTR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,ColMajor,false,ColMajor>::run); |
23 |
0, |
24 |
func[TR | (NOTR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,false,ColMajor>::run); |
24 |
// array index: NOTR | (TR << 2) |
25 |
func[ADJ | (NOTR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor>::run); |
25 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,false,ColMajor>::run), |
26 |
func[NOTR | (TR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,false,ColMajor>::run); |
26 |
// array index: TR | (TR << 2) |
27 |
func[TR | (TR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,RowMajor,false,ColMajor>::run); |
27 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,RowMajor,false,ColMajor>::run), |
28 |
func[ADJ | (TR << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,RowMajor,false,ColMajor>::run); |
28 |
// array index: ADJ | (TR << 2) |
29 |
func[NOTR | (ADJ << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor>::run); |
29 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,RowMajor,false,ColMajor>::run), |
30 |
func[TR | (ADJ << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,RowMajor,Conj, ColMajor>::run); |
30 |
0, |
31 |
func[ADJ | (ADJ << 2)] = (internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,RowMajor,Conj, ColMajor>::run); |
31 |
// array index: NOTR | (ADJ << 2) |
32 |
init = true; |
32 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor>::run), |
33 |
} |
33 |
// array index: TR | (ADJ << 2) |
|
|
34 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,false,Scalar,RowMajor,Conj, ColMajor>::run), |
35 |
// array index: ADJ | (ADJ << 2) |
36 |
(internal::general_matrix_matrix_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,RowMajor,Conj, ColMajor>::run), |
37 |
0 |
38 |
}; |
34 |
|
39 |
|
35 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
40 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
36 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
41 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
37 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
42 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
38 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
43 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
39 |
Scalar beta = *reinterpret_cast<Scalar*>(pbeta); |
44 |
Scalar beta = *reinterpret_cast<Scalar*>(pbeta); |
40 |
|
45 |
|
41 |
int info = 0; |
46 |
int info = 0; |
Lines 68-126
int EIGEN_BLAS_FUNC(gemm)(char *opa, cha
Link Here
|
68 |
func[code](*m, *n, *k, a, *lda, b, *ldb, c, *ldc, alpha, blocking, 0); |
73 |
func[code](*m, *n, *k, a, *lda, b, *ldb, c, *ldc, alpha, blocking, 0); |
69 |
return 0; |
74 |
return 0; |
70 |
} |
75 |
} |
71 |
|
76 |
|
72 |
int EIGEN_BLAS_FUNC(trsm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb) |
77 |
int EIGEN_BLAS_FUNC(trsm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb) |
73 |
{ |
78 |
{ |
74 |
// std::cerr << "in trsm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << "," << *n << " " << *palpha << " " << *lda << " " << *ldb<< "\n"; |
79 |
// std::cerr << "in trsm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << "," << *n << " " << *palpha << " " << *lda << " " << *ldb<< "\n"; |
75 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, internal::level3_blocking<Scalar,Scalar>&); |
80 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, internal::level3_blocking<Scalar,Scalar>&); |
76 |
static functype func[32]; |
81 |
static const functype func[32] = { |
77 |
|
82 |
// array index: NOTR | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
78 |
static bool init = false; |
83 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, false,ColMajor,ColMajor>::run), |
79 |
if(!init) |
84 |
// array index: TR | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
80 |
{ |
85 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, false,RowMajor,ColMajor>::run), |
81 |
for(int i=0; i<32; ++i) |
86 |
// array index: ADJ | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
82 |
func[i] = 0; |
87 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, Conj, RowMajor,ColMajor>::run),\ |
83 |
|
88 |
0, |
84 |
func[NOTR | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, false,ColMajor,ColMajor>::run); |
89 |
// array index: NOTR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
85 |
func[TR | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, false,RowMajor,ColMajor>::run); |
90 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, false,ColMajor,ColMajor>::run), |
86 |
func[ADJ | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, Conj, RowMajor,ColMajor>::run); |
91 |
// array index: TR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
87 |
|
92 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, false,RowMajor,ColMajor>::run), |
88 |
func[NOTR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, false,ColMajor,ColMajor>::run); |
93 |
// array index: ADJ | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
89 |
func[TR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, false,RowMajor,ColMajor>::run); |
94 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, Conj, RowMajor,ColMajor>::run), |
90 |
func[ADJ | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, Conj, RowMajor,ColMajor>::run); |
95 |
0, |
91 |
|
96 |
// array index: NOTR | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
92 |
func[NOTR | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, false,ColMajor,ColMajor>::run); |
97 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|0, false,ColMajor,ColMajor>::run), |
93 |
func[TR | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, false,RowMajor,ColMajor>::run); |
98 |
// array index: TR | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
94 |
func[ADJ | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, Conj, RowMajor,ColMajor>::run); |
99 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, false,RowMajor,ColMajor>::run), |
95 |
|
100 |
// array index: ADJ | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
96 |
func[NOTR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, false,ColMajor,ColMajor>::run); |
101 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|0, Conj, RowMajor,ColMajor>::run), |
97 |
func[TR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, false,RowMajor,ColMajor>::run); |
102 |
0, |
98 |
func[ADJ | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, Conj, RowMajor,ColMajor>::run); |
103 |
// array index: NOTR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
99 |
|
104 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|0, false,ColMajor,ColMajor>::run), |
100 |
|
105 |
// array index: TR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
101 |
func[NOTR | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,false,ColMajor,ColMajor>::run); |
106 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, false,RowMajor,ColMajor>::run), |
102 |
func[TR | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,false,RowMajor,ColMajor>::run); |
107 |
// array index: ADJ | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
103 |
func[ADJ | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,Conj, RowMajor,ColMajor>::run); |
108 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|0, Conj, RowMajor,ColMajor>::run), |
104 |
|
109 |
0, |
105 |
func[NOTR | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,false,ColMajor,ColMajor>::run); |
110 |
// array index: NOTR | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
106 |
func[TR | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,false,RowMajor,ColMajor>::run); |
111 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,false,ColMajor,ColMajor>::run), |
107 |
func[ADJ | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,Conj, RowMajor,ColMajor>::run); |
112 |
// array index: TR | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
108 |
|
113 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,false,RowMajor,ColMajor>::run), |
109 |
func[NOTR | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,false,ColMajor,ColMajor>::run); |
114 |
// array index: ADJ | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
110 |
func[TR | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,false,RowMajor,ColMajor>::run); |
115 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,Conj, RowMajor,ColMajor>::run), |
111 |
func[ADJ | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,Conj, RowMajor,ColMajor>::run); |
116 |
0, |
112 |
|
117 |
// array index: NOTR | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
113 |
func[NOTR | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,false,ColMajor,ColMajor>::run); |
118 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,false,ColMajor,ColMajor>::run), |
114 |
func[TR | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,false,RowMajor,ColMajor>::run); |
119 |
// array index: TR | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
115 |
func[ADJ | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,Conj, RowMajor,ColMajor>::run); |
120 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,false,RowMajor,ColMajor>::run), |
116 |
|
121 |
// array index: ADJ | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
117 |
init = true; |
122 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,Conj, RowMajor,ColMajor>::run), |
118 |
} |
123 |
0, |
|
|
124 |
// array index: NOTR | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
125 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Lower|UnitDiag,false,ColMajor,ColMajor>::run), |
126 |
// array index: TR | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
127 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,false,RowMajor,ColMajor>::run), |
128 |
// array index: ADJ | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
129 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheLeft, Upper|UnitDiag,Conj, RowMajor,ColMajor>::run), |
130 |
0, |
131 |
// array index: NOTR | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
132 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Lower|UnitDiag,false,ColMajor,ColMajor>::run), |
133 |
// array index: TR | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
134 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,false,RowMajor,ColMajor>::run), |
135 |
// array index: ADJ | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
136 |
(internal::triangular_solve_matrix<Scalar,DenseIndex,OnTheRight,Upper|UnitDiag,Conj, RowMajor,ColMajor>::run), |
137 |
0 |
138 |
}; |
119 |
|
139 |
|
120 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
140 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
121 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
141 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
122 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
142 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
123 |
|
143 |
|
124 |
int info = 0; |
144 |
int info = 0; |
125 |
if(SIDE(*side)==INVALID) info = 1; |
145 |
if(SIDE(*side)==INVALID) info = 1; |
126 |
else if(UPLO(*uplo)==INVALID) info = 2; |
146 |
else if(UPLO(*uplo)==INVALID) info = 2; |
Lines 157-213
int EIGEN_BLAS_FUNC(trsm)(char *side, ch
Link Here
|
157 |
|
177 |
|
158 |
|
178 |
|
159 |
// b = alpha*op(a)*b for side = 'L'or'l' |
179 |
// b = alpha*op(a)*b for side = 'L'or'l' |
160 |
// b = alpha*b*op(a) for side = 'R'or'r' |
180 |
// b = alpha*b*op(a) for side = 'R'or'r' |
161 |
int EIGEN_BLAS_FUNC(trmm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb) |
181 |
int EIGEN_BLAS_FUNC(trmm)(char *side, char *uplo, char *opa, char *diag, int *m, int *n, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pb, int *ldb) |
162 |
{ |
182 |
{ |
163 |
// std::cerr << "in trmm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << " " << *n << " " << *lda << " " << *ldb << " " << *palpha << "\n"; |
183 |
// std::cerr << "in trmm " << *side << " " << *uplo << " " << *opa << " " << *diag << " " << *m << " " << *n << " " << *lda << " " << *ldb << " " << *palpha << "\n"; |
164 |
typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
184 |
typedef void (*functype)(DenseIndex, DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
165 |
static functype func[32]; |
185 |
static const functype func[32] = { |
166 |
static bool init = false; |
186 |
// array index: NOTR | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
167 |
if(!init) |
187 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, ColMajor,false,ColMajor,false,ColMajor>::run), |
168 |
{ |
188 |
// array index: TR | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
169 |
for(int k=0; k<32; ++k) |
189 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, RowMajor,false,ColMajor,false,ColMajor>::run), |
170 |
func[k] = 0; |
190 |
// array index: ADJ | (LEFT << 2) | (UP << 3) | (NUNIT << 4) |
171 |
|
191 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, RowMajor,Conj, ColMajor,false,ColMajor>::run), |
172 |
func[NOTR | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, ColMajor,false,ColMajor,false,ColMajor>::run); |
192 |
0, |
173 |
func[TR | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, RowMajor,false,ColMajor,false,ColMajor>::run); |
193 |
// array index: NOTR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
174 |
func[ADJ | (LEFT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, RowMajor,Conj, ColMajor,false,ColMajor>::run); |
194 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,ColMajor,false,ColMajor>::run), |
175 |
|
195 |
// array index: TR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
176 |
func[NOTR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,ColMajor,false,ColMajor>::run); |
196 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,RowMajor,false,ColMajor>::run), |
177 |
func[TR | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,RowMajor,false,ColMajor>::run); |
197 |
// array index: ADJ | (RIGHT << 2) | (UP << 3) | (NUNIT << 4) |
178 |
func[ADJ | (RIGHT << 2) | (UP << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,RowMajor,Conj, ColMajor>::run); |
198 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,RowMajor,Conj, ColMajor>::run), |
179 |
|
199 |
0, |
180 |
func[NOTR | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, ColMajor,false,ColMajor,false,ColMajor>::run); |
200 |
// array index: NOTR | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
181 |
func[TR | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, RowMajor,false,ColMajor,false,ColMajor>::run); |
201 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, true, ColMajor,false,ColMajor,false,ColMajor>::run), |
182 |
func[ADJ | (LEFT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, RowMajor,Conj, ColMajor,false,ColMajor>::run); |
202 |
// array index: TR | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
183 |
|
203 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, RowMajor,false,ColMajor,false,ColMajor>::run), |
184 |
func[NOTR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,ColMajor,false,ColMajor>::run); |
204 |
// array index: ADJ | (LEFT << 2) | (LO << 3) | (NUNIT << 4) |
185 |
func[TR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,RowMajor,false,ColMajor>::run); |
205 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, true, RowMajor,Conj, ColMajor,false,ColMajor>::run), |
186 |
func[ADJ | (RIGHT << 2) | (LO << 3) | (NUNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,RowMajor,Conj, ColMajor>::run); |
206 |
0, |
187 |
|
207 |
// array index: NOTR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
188 |
func[NOTR | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, ColMajor,false,ColMajor,false,ColMajor>::run); |
208 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|0, false,ColMajor,false,ColMajor,false,ColMajor>::run), |
189 |
func[TR | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, RowMajor,false,ColMajor,false,ColMajor>::run); |
209 |
// array index: TR | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
190 |
func[ADJ | (LEFT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, RowMajor,Conj, ColMajor,false,ColMajor>::run); |
210 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,RowMajor,false,ColMajor>::run), |
191 |
|
211 |
// array index: ADJ | (RIGHT << 2) | (LO << 3) | (NUNIT << 4) |
192 |
func[NOTR | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,ColMajor,false,ColMajor>::run); |
212 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|0, false,ColMajor,false,RowMajor,Conj, ColMajor>::run), |
193 |
func[TR | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,RowMajor,false,ColMajor>::run); |
213 |
0, |
194 |
func[ADJ | (RIGHT << 2) | (UP << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,RowMajor,Conj, ColMajor>::run); |
214 |
// array index: NOTR | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
195 |
|
215 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, ColMajor,false,ColMajor,false,ColMajor>::run), |
196 |
func[NOTR | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, ColMajor,false,ColMajor,false,ColMajor>::run); |
216 |
// array index: TR | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
197 |
func[TR | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, RowMajor,false,ColMajor,false,ColMajor>::run); |
217 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, RowMajor,false,ColMajor,false,ColMajor>::run), |
198 |
func[ADJ | (LEFT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, RowMajor,Conj, ColMajor,false,ColMajor>::run); |
218 |
// array index: ADJ | (LEFT << 2) | (UP << 3) | (UNIT << 4) |
199 |
|
219 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, RowMajor,Conj, ColMajor,false,ColMajor>::run), |
200 |
func[NOTR | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,ColMajor,false,ColMajor>::run); |
220 |
0, |
201 |
func[TR | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,RowMajor,false,ColMajor>::run); |
221 |
// array index: NOTR | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
202 |
func[ADJ | (RIGHT << 2) | (LO << 3) | (UNIT << 4)] = (internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,RowMajor,Conj, ColMajor>::run); |
222 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,ColMajor,false,ColMajor>::run), |
203 |
|
223 |
// array index: TR | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
204 |
init = true; |
224 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,RowMajor,false,ColMajor>::run), |
205 |
} |
225 |
// array index: ADJ | (RIGHT << 2) | (UP << 3) | (UNIT << 4) |
|
|
226 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,RowMajor,Conj, ColMajor>::run), |
227 |
0, |
228 |
// array index: NOTR | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
229 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,true, ColMajor,false,ColMajor,false,ColMajor>::run), |
230 |
// array index: TR | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
231 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, RowMajor,false,ColMajor,false,ColMajor>::run), |
232 |
// array index: ADJ | (LEFT << 2) | (LO << 3) | (UNIT << 4) |
233 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,true, RowMajor,Conj, ColMajor,false,ColMajor>::run), |
234 |
0, |
235 |
// array index: NOTR | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
236 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Lower|UnitDiag,false,ColMajor,false,ColMajor,false,ColMajor>::run), |
237 |
// array index: TR | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
238 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,RowMajor,false,ColMajor>::run), |
239 |
// array index: ADJ | (RIGHT << 2) | (LO << 3) | (UNIT << 4) |
240 |
(internal::product_triangular_matrix_matrix<Scalar,DenseIndex,Upper|UnitDiag,false,ColMajor,false,RowMajor,Conj, ColMajor>::run), |
241 |
0 |
242 |
}; |
206 |
|
243 |
|
207 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
244 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
208 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
245 |
Scalar* b = reinterpret_cast<Scalar*>(pb); |
209 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
246 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
210 |
|
247 |
|
211 |
int info = 0; |
248 |
int info = 0; |
212 |
if(SIDE(*side)==INVALID) info = 1; |
249 |
if(SIDE(*side)==INVALID) info = 1; |
213 |
else if(UPLO(*uplo)==INVALID) info = 2; |
250 |
else if(UPLO(*uplo)==INVALID) info = 2; |
Lines 312-327
int EIGEN_BLAS_FUNC(symm)(char *side, ch
Link Here
|
312 |
} |
349 |
} |
313 |
|
350 |
|
314 |
// c = alpha*a*a' + beta*c for op = 'N'or'n' |
351 |
// c = alpha*a*a' + beta*c for op = 'N'or'n' |
315 |
// c = alpha*a'*a + beta*c for op = 'T'or't','C'or'c' |
352 |
// c = alpha*a'*a + beta*c for op = 'T'or't','C'or'c' |
316 |
int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc) |
353 |
int EIGEN_BLAS_FUNC(syrk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc) |
317 |
{ |
354 |
{ |
318 |
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n"; |
355 |
// std::cerr << "in syrk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n"; |
319 |
#if !ISCOMPLEX |
356 |
#if !ISCOMPLEX |
|
|
357 |
<<<<<<< local |
358 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&); |
359 |
static const functype func[8] = { |
360 |
// array index: NOTR | (UP << 2) |
361 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Upper>::run), |
362 |
// array index: TR | (UP << 2) |
363 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Upper>::run), |
364 |
// array index: ADJ | (UP << 2) |
365 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Upper>::run), |
366 |
0, |
367 |
// array index: NOTR | (LO << 2) |
368 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Lower>::run), |
369 |
// array index: TR | (LO << 2) |
370 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Lower>::run), |
371 |
// array index: ADJ | (LO << 2) |
372 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Lower>::run), |
373 |
0 |
374 |
}; |
375 |
======= |
320 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
376 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
321 |
static functype func[8]; |
377 |
static functype func[8]; |
322 |
|
378 |
|
323 |
static bool init = false; |
379 |
static bool init = false; |
324 |
if(!init) |
380 |
if(!init) |
325 |
{ |
381 |
{ |
326 |
for(int i=0; i<8; ++i) |
382 |
for(int i=0; i<8; ++i) |
327 |
func[i] = 0; |
383 |
func[i] = 0; |
Lines 331-346
int EIGEN_BLAS_FUNC(syrk)(char *uplo, ch
Link Here
|
331 |
func[ADJ | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Upper>::run); |
387 |
func[ADJ | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Upper>::run); |
332 |
|
388 |
|
333 |
func[NOTR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Lower>::run); |
389 |
func[NOTR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,ColMajor,Conj, Lower>::run); |
334 |
func[TR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Lower>::run); |
390 |
func[TR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,false,Scalar,ColMajor,ColMajor,Conj, Lower>::run); |
335 |
func[ADJ | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Lower>::run); |
391 |
func[ADJ | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,ColMajor,false,Lower>::run); |
336 |
|
392 |
|
337 |
init = true; |
393 |
init = true; |
338 |
} |
394 |
} |
|
|
395 |
>>>>>>> other |
339 |
#endif |
396 |
#endif |
340 |
|
397 |
|
341 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
398 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
342 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
399 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
343 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
400 |
Scalar alpha = *reinterpret_cast<Scalar*>(palpha); |
344 |
Scalar beta = *reinterpret_cast<Scalar*>(pbeta); |
401 |
Scalar beta = *reinterpret_cast<Scalar*>(pbeta); |
345 |
|
402 |
|
346 |
int info = 0; |
403 |
int info = 0; |
Lines 518-533
int EIGEN_BLAS_FUNC(hemm)(char *side, ch
Link Here
|
518 |
} |
575 |
} |
519 |
|
576 |
|
520 |
// c = alpha*a*conj(a') + beta*c for op = 'N'or'n' |
577 |
// c = alpha*a*conj(a') + beta*c for op = 'N'or'n' |
521 |
// c = alpha*conj(a')*a + beta*c for op = 'C'or'c' |
578 |
// c = alpha*conj(a')*a + beta*c for op = 'C'or'c' |
522 |
int EIGEN_BLAS_FUNC(herk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc) |
579 |
int EIGEN_BLAS_FUNC(herk)(char *uplo, char *op, int *n, int *k, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *pbeta, RealScalar *pc, int *ldc) |
523 |
{ |
580 |
{ |
524 |
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n"; |
581 |
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << *palpha << " " << *lda << " " << *pbeta << " " << *ldc << "\n"; |
525 |
|
582 |
|
|
|
583 |
<<<<<<< local |
584 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&); |
585 |
static const functype func[8] = { |
586 |
// array index: NOTR | (UP << 2) |
587 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Upper>::run), |
588 |
0, |
589 |
// array index: ADJ | (UP << 2) |
590 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Upper>::run), |
591 |
0, |
592 |
// array index: NOTR | (LO << 2) |
593 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Lower>::run), |
594 |
0, |
595 |
// array index: ADJ | (LO << 2) |
596 |
(internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Lower>::run), |
597 |
0 |
598 |
}; |
599 |
======= |
526 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
600 |
typedef void (*functype)(DenseIndex, DenseIndex, const Scalar *, DenseIndex, const Scalar *, DenseIndex, Scalar *, DenseIndex, const Scalar&, internal::level3_blocking<Scalar,Scalar>&); |
527 |
static functype func[8]; |
601 |
static functype func[8]; |
528 |
|
602 |
|
529 |
static bool init = false; |
603 |
static bool init = false; |
530 |
if(!init) |
604 |
if(!init) |
531 |
{ |
605 |
{ |
532 |
for(int i=0; i<8; ++i) |
606 |
for(int i=0; i<8; ++i) |
533 |
func[i] = 0; |
607 |
func[i] = 0; |
Lines 535-550
int EIGEN_BLAS_FUNC(herk)(char *uplo, ch
Link Here
|
535 |
func[NOTR | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Upper>::run); |
609 |
func[NOTR | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Upper>::run); |
536 |
func[ADJ | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Upper>::run); |
610 |
func[ADJ | (UP << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Upper>::run); |
537 |
|
611 |
|
538 |
func[NOTR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Lower>::run); |
612 |
func[NOTR | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,ColMajor,false,Scalar,RowMajor,Conj, ColMajor,Lower>::run); |
539 |
func[ADJ | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Lower>::run); |
613 |
func[ADJ | (LO << 2)] = (internal::general_matrix_matrix_triangular_product<DenseIndex,Scalar,RowMajor,Conj, Scalar,ColMajor,false,ColMajor,Lower>::run); |
540 |
|
614 |
|
541 |
init = true; |
615 |
init = true; |
542 |
} |
616 |
} |
|
|
617 |
>>>>>>> other |
543 |
|
618 |
|
544 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
619 |
Scalar* a = reinterpret_cast<Scalar*>(pa); |
545 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
620 |
Scalar* c = reinterpret_cast<Scalar*>(pc); |
546 |
RealScalar alpha = *palpha; |
621 |
RealScalar alpha = *palpha; |
547 |
RealScalar beta = *pbeta; |
622 |
RealScalar beta = *pbeta; |
548 |
|
623 |
|
549 |
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << alpha << " " << *lda << " " << beta << " " << *ldc << "\n"; |
624 |
// std::cerr << "in herk " << *uplo << " " << *op << " " << *n << " " << *k << " " << alpha << " " << *lda << " " << beta << " " << *ldc << "\n"; |
550 |
|
625 |
|