#ifndef HPC_ULMBLAS_H #define HPC_ULMBLAS_H 1 namespace ulmBLAS { //------------------------------------------------------------------------------ // A <- B //------------------------------------------------------------------------------ template <typename T, typename Index> void gecopy(Index m, Index n, const T *A, Index incRowA, Index incColA, T *B, Index incRowB, Index incColB) { for (Index j=0; j<n; ++j) { for (Index i=0; i<m; ++i) { B[i*incRowB+j*incColB] = A[i*incRowA+j*incColA]; } } } //------------------------------------------------------------------------------ // Y <- Y + alpha*X //------------------------------------------------------------------------------ template <typename T, typename Index> void geaxpy(Index m, Index n, T alpha, const T *X, Index incRowX, Index incColX, T *Y, Index incRowY, Index incColY) { for (Index i=0; i<m; ++i) { for (Index j=0; j<n; ++j) { Y[i*incRowY+j*incColY] += alpha*X[i*incRowX+j*incColX]; } } } //------------------------------------------------------------------------------ // A <- alpha * A //------------------------------------------------------------------------------ template <typename T, typename Index> void gescal(Index m, Index n, T alpha, T *X, Index incRowX, Index incColX) { if (alpha!=T(1)) { for (Index i=0; i<m; ++i) { for (Index j=0; j<n; ++j) { X[i*incRowX+j*incColX] *= alpha; } } } } } // namespace ulmBLAS #endif // HPC_ULMBLAS_h |