76 const idx_t n = (
transB == Op::NoTrans) ? ncols(
B) : nrows(
B);
77 const idx_t
k = (
transA == Op::NoTrans) ? ncols(
A) : nrows(
A);
87 (idx_t)((
transA == Op::NoTrans) ? ncols(
A) : nrows(
A)) !=
k);
89 (idx_t)((
transB == Op::NoTrans) ? nrows(
B) : ncols(
B)) !=
k);
91 (idx_t)((
transA == Op::NoTrans) ? nrows(
A) : ncols(
A)) != n);
93 (idx_t)((
transB == Op::NoTrans) ? ncols(
B) : nrows(
B)) != n);
97 if (
transA == Op::NoTrans) {
99 if (
transB == Op::NoTrans) {
100 for (idx_t j = 0; j < n; ++j) {
101 for (idx_t i = 0; i <= j; ++i)
103 for (idx_t
l = 0;
l <
k; ++
l) {
105 for (idx_t i = 0; i <= j; ++i)
110 else if (
transB == Op::Trans) {
111 for (idx_t j = 0; j < n; ++j) {
112 for (idx_t i = 0; i <= j; ++i)
114 for (idx_t
l = 0;
l <
k; ++
l) {
116 for (idx_t i = 0; i <= j; ++i)
122 for (idx_t j = 0; j < n; ++j) {
123 for (idx_t i = 0; i <= j; ++i)
125 for (idx_t
l = 0;
l <
k; ++
l) {
127 for (idx_t i = 0; i <= j; ++i)
133 else if (
transA == Op::Trans) {
136 if (
transB == Op::NoTrans) {
137 for (idx_t j = 0; j < n; ++j) {
138 for (idx_t i = 0; i <= j; ++i) {
140 for (idx_t
l = 0;
l <
k; ++
l)
146 else if (
transB == Op::Trans) {
147 for (idx_t j = 0; j < n; ++j) {
148 for (idx_t i = 0; i <= j; ++i) {
150 for (idx_t
l = 0;
l <
k; ++
l)
157 for (idx_t j = 0; j < n; ++j) {
158 for (idx_t i = 0; i <= j; ++i) {
160 for (idx_t
l = 0;
l <
k; ++
l)
171 if (
transB == Op::NoTrans) {
172 for (idx_t j = 0; j < n; ++j) {
173 for (idx_t i = 0; i <= j; ++i) {
175 for (idx_t
l = 0;
l <
k; ++
l)
181 else if (
transB == Op::Trans) {
182 for (idx_t j = 0; j < n; ++j) {
183 for (idx_t i = 0; i <= j; ++i) {
185 for (idx_t
l = 0;
l <
k; ++
l)
192 for (idx_t j = 0; j < n; ++j) {
193 for (idx_t i = 0; i <= j; ++i) {
195 for (idx_t
l = 0;
l <
k; ++
l)
204 if (
transA == Op::NoTrans) {
206 if (
transB == Op::NoTrans) {
207 for (idx_t j = 0; j < n; ++j) {
208 for (idx_t i = j; i < n; ++i)
210 for (idx_t
l = 0;
l <
k; ++
l) {
212 for (idx_t i = j; i < n; ++i)
217 else if (
transB == Op::Trans) {
218 for (idx_t j = 0; j < n; ++j) {
219 for (idx_t i = j; i < n; ++i)
221 for (idx_t
l = 0;
l <
k; ++
l) {
223 for (idx_t i = j; i < n; ++i)
229 for (idx_t j = 0; j < n; ++j) {
230 for (idx_t i = j; i < n; ++i)
232 for (idx_t
l = 0;
l <
k; ++
l) {
234 for (idx_t i = j; i < n; ++i)
240 else if (
transA == Op::Trans) {
243 if (
transB == Op::NoTrans) {
244 for (idx_t j = 0; j < n; ++j) {
245 for (idx_t i = j; i < n; ++i) {
247 for (idx_t
l = 0;
l <
k; ++
l)
253 else if (
transB == Op::Trans) {
254 for (idx_t j = 0; j < n; ++j) {
255 for (idx_t i = j; i < n; ++i) {
257 for (idx_t
l = 0;
l <
k; ++
l)
264 for (idx_t j = 0; j < n; ++j) {
265 for (idx_t i = j; i < n; ++i) {
267 for (idx_t
l = 0;
l <
k; ++
l)
278 if (
transB == Op::NoTrans) {
279 for (idx_t j = 0; j < n; ++j) {
280 for (idx_t i = j; i < n; ++i) {
282 for (idx_t
l = 0;
l <
k; ++
l)
288 else if (
transB == Op::Trans) {
289 for (idx_t j = 0; j < n; ++j) {
290 for (idx_t i = j; i < n; ++i) {
292 for (idx_t
l = 0;
l <
k; ++
l)
299 for (idx_t j = 0; j < n; ++j) {
300 for (idx_t i = j; i < n; ++i) {
302 for (idx_t
l = 0;
l <
k; ++
l)
void gemmtr(Uplo uplo, Op transA, Op transB, const alpha_t &alpha, const matrixA_t &A, const matrixB_t &B, const beta_t &beta, matrixC_t &C)
General triangular matrix-matrix multiply:
Definition gemmtr.hpp:61
#define tlapack_check_false(cond)
Throw an error if cond is true.
Definition exceptionHandling.hpp:113
typename traits::real_type_traits< Types..., int >::type real_type
The common real type of the list of types.
Definition scalar_type_traits.hpp:113