1
      2
      3
      4
      5
      6
      7
      8
<doc  9
     10
     11
     12
     13
     14
     15
     16

     17
     18
     19
     20
<doc 21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32

     33
     34
     35
     36
     37
     38
#ifndef ULMBLAS_IMPL_LEVEL1EXTENSIONS_HVP_H
#define ULMBLAS_IMPL_LEVEL1EXTENSIONS_HVP_H 1

namespace ulmBLAS {

//
//  In-place Hadamard vector product y = alpha * x .* y (component wise product)
//
template <typename IndexType, typename Alpha, typename VX, typename VY>
    void
    ihvp(IndexType      n,
         const Alpha    &alpha,
         const VX       *x,
         IndexType      incX,
         VY             *y,
         IndexType      incY);

//
//  Hadamard vector product z = beta*z + alpha * x .* y (component wise product)
//
template <typename IndexType, typename Alpha, typename VX, typename VY,
          typename Beta, typename VZ>
    void
    hvp(IndexType      n,
        const Alpha    &alpha,
        const VX       *x,
        IndexType      incX,
        const VY       *y,
        IndexType      incY,
        const Beta     &beta,
        VZ             *z,
        IndexType      incZ);

// namespace ulmBLAS

#include <ulmblas/impl/level1extensions/hvp.tcc>

#endif // ULMBLAS_IMPL_LEVEL1EXTENSIONS_HVP_H 1