11#ifndef TLAPACK_BLAS_HEMM_2_HH
12#define TLAPACK_BLAS_HEMM_2_HH
73 class T = type_t<matrixC_t>>
90 const idx_t m = nrows(
B);
91 const idx_t n = ncols(
B);
118 for (idx_t j = 0; j < n; ++j) {
119 for (idx_t i = 0; i < m; ++i) {
124 for (idx_t
k = 0;
k < i; ++
k) {
128 C(i, j) =
beta *
C(i, j) +
135 for (idx_t j = 0; j < n; ++j) {
136 for (idx_t i = m - 1; i != idx_t(-1); --i) {
141 for (idx_t
k = i + 1;
k < m; ++
k) {
145 C(i, j) =
beta *
C(i, j) +
155 for (idx_t j = 0; j < n; j++) {
156 for (idx_t
k = 0;
k < m;
k++) {
158 for (idx_t i = 0; i < j; i++) {
162 for (idx_t i = j + 1; i < n; i++) {
171 for (idx_t j = 0; j < n; j++) {
172 for (idx_t
k = 0;
k < m;
k++) {
174 for (idx_t i = 0; i < j; i++) {
178 for (idx_t i = j + 1; i < n; i++) {
190 for (idx_t j = 0; j < n; j++) {
191 for (idx_t
k = 0;
k < m;
k++) {
193 for (idx_t i = 0; i < j; i++) {
197 for (idx_t i = j + 1; i < n; i++) {
206 for (idx_t j = 0; j < n; j++) {
207 for (idx_t
k = 0;
k < m;
k++) {
209 for (idx_t i = 0; i < j; i++) {
213 for (idx_t i = j + 1; i < n; i++) {
228 for (idx_t j = 0; j < n; ++j) {
231 for (idx_t i = 0; i < m; ++i)
235 for (idx_t
k = 0;
k < j; ++
k) {
237 for (idx_t i = 0; i < m; ++i)
241 for (idx_t
k = j + 1;
k < n; ++
k) {
243 for (idx_t i = 0; i < m; ++i)
250 for (idx_t j = 0; j < n; ++j) {
253 for (idx_t i = 0; i < m; ++i)
257 for (idx_t
k = 0;
k < j; ++
k) {
259 for (idx_t i = 0; i < m; ++i)
263 for (idx_t
k = j + 1;
k < n; ++
k) {
265 for (idx_t i = 0; i < m; ++i)
275 for (idx_t j = 0; j < n; j++) {
276 for (idx_t
k = 0;
k < m;
k++) {
278 for (idx_t i = 0; i <
k; i++) {
282 for (idx_t i =
k + 1; i < m; i++) {
291 for (idx_t j = 0; j < n; j++) {
292 for (idx_t
k = 0;
k < m;
k++) {
294 for (idx_t i = 0; i <
k; i++) {
298 for (idx_t i =
k + 1; i < m; i++) {
310 for (idx_t j = 0; j < n; j++) {
311 for (idx_t
k = 0;
k < m;
k++) {
313 for (idx_t i = 0; i <
k; i++) {
317 for (idx_t i =
k + 1; i < m; i++) {
326 for (idx_t j = 0; j < n; j++) {
327 for (idx_t
k = 0;
k < m;
k++) {
329 for (idx_t i = 0; i <
k; i++) {
333 for (idx_t i =
k + 1; i < m; i++) {
398 class T = type_t<matrixC_t>,
399 disable_if_allow_optblas_t<pair<matrixA_t, T>,
constexpr internal::LowerTriangle LOWER_TRIANGLE
Lower Triangle access.
Definition types.hpp:188
constexpr internal::UpperTriangle UPPER_TRIANGLE
Upper Triangle access.
Definition types.hpp:186
Side
Definition types.hpp:271
constexpr internal::RightSide RIGHT_SIDE
right side
Definition types.hpp:296
constexpr internal::Transpose TRANSPOSE
transpose
Definition types.hpp:262
constexpr internal::GeneralAccess GENERAL
General access.
Definition types.hpp:180
Op
Definition types.hpp:227
constexpr internal::ConjTranspose CONJ_TRANS
conjugate transpose
Definition types.hpp:264
Uplo
Definition types.hpp:50
constexpr internal::NoTranspose NO_TRANS
no transpose
Definition types.hpp:260
constexpr internal::LeftSide LEFT_SIDE
left side
Definition types.hpp:294
constexpr real_type< T > real(const T &x) noexcept
Extends std::real() to real datatypes.
Definition utils.hpp:71
constexpr T conj(const T &x) noexcept
Extends std::conj() to real datatypes.
Definition utils.hpp:100
#define TLAPACK_SCALAR
Macro for tlapack::concepts::Scalar compatible with C++17.
Definition concepts.hpp:915
#define TLAPACK_MATRIX
Macro for tlapack::concepts::Matrix compatible with C++17.
Definition concepts.hpp:896
void hemm2(Side side, Uplo uplo, Op transB, const alpha_t &alpha, const matrixA_t &A, const matrixB_t &B, const beta_t &beta, matrixC_t &C)
Hermitian matrix-Hermitian matrix multiply:
Definition hemm2.hpp:75
#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
Strong zero type.
Definition StrongZero.hpp:43