10#include <uni20/config.hpp>
13#if UNI20_HAS_MPLAPACK_FLOAT128
14#include <mplapack_config.h>
17#if UNI20_HAS_MPLAPACK_FLOAT128 && defined(MPLAPACK_BINARY128_MODE) && \
18 (MPLAPACK_BINARY128_MODE != MPLAPACK_BINARY128_MODE_LDBL)
19#include <mpblas_binary128.h>
24namespace mplapack_binary128_detail
27inline char const* char_string(
char value,
char (&buffer)[2])
36inline void gemm(
char transa,
char transb, blas_int m, blas_int n, blas_int k, uni20::float128 alpha,
37 uni20::float128
const* A, blas_int lda, uni20::float128
const* B, blas_int ldb, uni20::float128
beta,
38 uni20::float128* C, blas_int ldc)
40 UNI20_EXTERNAL_API_CALL(BLAS, Rgemm, transa, transb, m, n, k, alpha, A, lda, B, ldb,
beta, C, ldc);
41 char transa_string[2]{};
42 char transb_string[2]{};
43 Rgemm(mplapack_binary128_detail::char_string(transa, transa_string),
44 mplapack_binary128_detail::char_string(transb, transb_string),
static_cast<mplapackint
>(m),
45 static_cast<mplapackint
>(n),
static_cast<mplapackint
>(k), alpha,
const_cast<uni20::float128*
>(A),
46 static_cast<mplapackint
>(lda),
const_cast<uni20::float128*
>(B),
static_cast<mplapackint
>(ldb),
beta, C,
47 static_cast<mplapackint
>(ldc));
50inline void gemv(
char trans, blas_int m, blas_int n, uni20::float128 alpha, uni20::float128
const* A, blas_int lda,
51 uni20::float128
const* x, blas_int incx, uni20::float128
beta, uni20::float128* y, blas_int incy)
53 UNI20_EXTERNAL_API_CALL(BLAS, Rgemv, trans, m, n, alpha, A, lda, x, incx,
beta, y, incy);
54 char trans_string[2]{};
55 Rgemv(mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(m),
56 static_cast<mplapackint
>(n), alpha,
const_cast<uni20::float128*
>(A),
static_cast<mplapackint
>(lda),
57 const_cast<uni20::float128*
>(x),
static_cast<mplapackint
>(incx),
beta, y,
static_cast<mplapackint
>(incy));
60inline void ger(blas_int m, blas_int n, uni20::float128 alpha, uni20::float128
const* x, blas_int incx,
61 uni20::float128
const* y, blas_int incy, uni20::float128* A, blas_int lda)
63 UNI20_EXTERNAL_API_CALL(BLAS, Rger, m, n, alpha, x, incx, y, incy, A, lda);
64 Rger(
static_cast<mplapackint
>(m),
static_cast<mplapackint
>(n), alpha,
const_cast<uni20::float128*
>(x),
65 static_cast<mplapackint
>(incx),
const_cast<uni20::float128*
>(y),
static_cast<mplapackint
>(incy), A,
66 static_cast<mplapackint
>(lda));
69inline void syrk(
char uplo,
char trans, blas_int n, blas_int k, uni20::float128 alpha, uni20::float128
const* A,
70 blas_int lda, uni20::float128
beta, uni20::float128* C, blas_int ldc)
72 UNI20_EXTERNAL_API_CALL(BLAS, Rsyrk, uplo, trans, n, k, alpha, A, lda,
beta, C, ldc);
73 char uplo_string[2]{};
74 char trans_string[2]{};
75 Rsyrk(mplapack_binary128_detail::char_string(uplo, uplo_string),
76 mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(n),
77 static_cast<mplapackint
>(k), alpha,
const_cast<uni20::float128*
>(A),
static_cast<mplapackint
>(lda),
beta, C,
78 static_cast<mplapackint
>(ldc));
81inline void syr2k(
char uplo,
char trans, blas_int n, blas_int k, uni20::float128 alpha, uni20::float128
const* A,
82 blas_int lda, uni20::float128
const* B, blas_int ldb, uni20::float128
beta, uni20::float128* C,
85 UNI20_EXTERNAL_API_CALL(BLAS, Rsyr2k, uplo, trans, n, k, alpha, A, lda, B, ldb,
beta, C, ldc);
86 char uplo_string[2]{};
87 char trans_string[2]{};
88 Rsyr2k(mplapack_binary128_detail::char_string(uplo, uplo_string),
89 mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(n),
90 static_cast<mplapackint
>(k), alpha,
const_cast<uni20::float128*
>(A),
static_cast<mplapackint
>(lda),
91 const_cast<uni20::float128*
>(B),
static_cast<mplapackint
>(ldb),
beta, C,
static_cast<mplapackint
>(ldc));
98 UNI20_EXTERNAL_API_CALL(BLAS, Cgemm, transa, transb, m, n, k, alpha, A, lda, B, ldb,
beta, C, ldc);
99 char transa_string[2]{};
100 char transb_string[2]{};
101 Cgemm(mplapack_binary128_detail::char_string(transa, transa_string),
102 mplapack_binary128_detail::char_string(transb, transb_string),
static_cast<mplapackint
>(m),
103 static_cast<mplapackint
>(n),
static_cast<mplapackint
>(k), alpha,
106 static_cast<mplapackint
>(ldc));
113 UNI20_EXTERNAL_API_CALL(BLAS, Cgemv, trans, m, n, alpha, A, lda, x, incx,
beta, y, incy);
114 char trans_string[2]{};
115 Cgemv(mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(m),
118 beta, y,
static_cast<mplapackint
>(incy));
125 UNI20_EXTERNAL_API_CALL(BLAS, Cgeru, m, n, alpha, x, incx, y, incy, A, lda);
126 Cgeru(
static_cast<mplapackint
>(m),
static_cast<mplapackint
>(n), alpha,
129 static_cast<mplapackint
>(lda));
136 UNI20_EXTERNAL_API_CALL(BLAS, Cgerc, m, n, alpha, x, incx, y, incy, A, lda);
137 Cgerc(
static_cast<mplapackint
>(m),
static_cast<mplapackint
>(n), alpha,
140 static_cast<mplapackint
>(lda));
143inline void herk(
char uplo,
char trans, blas_int n, blas_int k, uni20::float128 alpha,
147 UNI20_EXTERNAL_API_CALL(BLAS, Cherk, uplo, trans, n, k, alpha, A, lda,
beta, C, ldc);
148 char uplo_string[2]{};
149 char trans_string[2]{};
150 Cherk(mplapack_binary128_detail::char_string(uplo, uplo_string),
151 mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(n),
153 static_cast<mplapackint
>(lda),
beta, C,
static_cast<mplapackint
>(ldc));
160 UNI20_EXTERNAL_API_CALL(BLAS, Cher2k, uplo, trans, n, k, alpha, A, lda, B, ldb,
beta, C, ldc);
161 char uplo_string[2]{};
162 char trans_string[2]{};
163 Cher2k(mplapack_binary128_detail::char_string(uplo, uplo_string),
164 mplapack_binary128_detail::char_string(trans, trans_string),
static_cast<mplapackint
>(n),
167 beta, C,
static_cast<mplapackint
>(ldc));
locale_t value
Definition data_table.cpp:49
#define UNI20_EXTERNAL_API_CALL(module, func,...)
Emits a trace log entry for an outgoing backend API call.
Definition backend.hpp:90
typename detail::complex_type< Real >::type complex
Project-level complex scalar spelling.
Definition types.hpp:66
Definition blas_int.hpp:18
void gemv(char trans, blas_int m, blas_int n, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *x, blas_int incx, BLASTYPE beta, BLASTYPE *y, blas_int incy)
Definition blasproto.hpp:129
void syr2k(char uplo, char trans, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *B, blas_int ldb, BLASTYPE beta, BLASTYPE *C, blas_int ldc)
Definition blasproto.hpp:182
void ger(blas_int m, blas_int n, BLASTYPE alpha, BLASTYPE const *x, blas_int incx, BLASTYPE const *y, blas_int incy, BLASTYPE *A, blas_int lda)
Definition blasproto.hpp:168
void gemm(char transa, char transb, blas_int m, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *B, blas_int ldb, BLASTYPE beta, BLASTYPE *C, blas_int ldc)
Definition blasproto.hpp:121
void syrk(char uplo, char trans, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE beta, BLASTYPE *C, blas_int ldc)
Definition blasproto.hpp:175
void gerc(uni20::DenseMatrix< Scalar > &matrix, Scalar const &alpha, std::span< Scalar const > x, std::span< Scalar const > y)
Apply a conjugated dense rank-one update.
Definition dense_linalg.hpp:388
void geru(uni20::DenseMatrix< Scalar > &matrix, Scalar const &alpha, std::span< Scalar const > x, std::span< Scalar const > y)
Apply a dense rank-one update.
Definition dense_linalg.hpp:364
mpreal beta(mpreal const &a, mpreal const &x)
Real Beta function; positive rational/integer pairs retain exact values.
Definition mpreal_special.hpp:164