10#ifndef TLAPACK_MULT_UHU
11#define TLAPACK_MULT_UHU
40template <TLAPACK_SMATRIX matrix_t>
48 const idx_t n = nrows(
U);
56 for (idx_t j = n; j-- > 0;) {
60 for (idx_t
k = 0;
k < j; ++
k) {
65 for (idx_t i = j; i-- > 0;) {
66 U(i, j) =
conj(
U(i, i)) *
U(i, j);
67 for (idx_t
k = i;
k-- > 0;) {
75 const idx_t
n0 = n / 2;
void mult_uhu(matrix_t &U, const mult_uhu_Opts &opts={})
in-place multiplication of upper triangular matrix U and lower triangular matrix U^H.
Definition mult_uhu.hpp:41
void herk(Uplo uplo, Op trans, const alpha_t &alpha, const matrixA_t &A, const beta_t &beta, matrixC_t &C)
Hermitian rank-k update:
Definition herk.hpp:68
void trmm(Side side, Uplo uplo, Op trans, Diag diag, const alpha_t &alpha, const matrixA_t &A, matrixB_t &B)
Triangular matrix-matrix multiply:
Definition trmm.hpp:72
#define tlapack_check(cond)
Throw an error if cond is false.
Definition exceptionHandling.hpp:98
Sort the numbers in D in increasing order (if ID = 'I') or in decreasing order (if ID = 'D' ).
Definition arrayTraits.hpp:15
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
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
@ NonUnit
The main diagonal is not assumed to consist of 1's.
@ ConjTrans
conjugate transpose
constexpr real_type< T > imag(const T &x) noexcept
Extends std::imag() to real datatypes.
Definition utils.hpp:86
@ Upper
0 <= i <= j, 0 <= j <= n.
Options struct for mult_uhu()
Definition mult_uhu.hpp:20
size_t nx
Optimization parameter.
Definition mult_uhu.hpp:23