31#ifndef REMORA_KERNELS_SYRK_HPP
32#define REMORA_KERNELS_SYRK_HPP
36#ifdef REMORA_USE_CBLAS
40namespace remora{
namespace bindings{
41template<
class M1,
class M2>
42struct has_optimized_syrk
43:
public std::false_type{};
47namespace remora{
namespace kernels{
55template<
bool Upper,
class M,
class E>
57 matrix_expression<E, cpu_tag>
const& e,
58 matrix_expression<M, cpu_tag>& m,
59 typename M::value_type alpha
61 REMORA_SIZE_CHECK(m().size1() == m().size2());
62 REMORA_SIZE_CHECK(m().size1() == e().size1());
64 bindings::syrk<Upper>(e, m, alpha,
65 typename bindings::has_optimized_syrk<M,E>::type()
71#ifdef REMORA_USE_CLBLAST
73#elif defined REMORA_USE_GPU