Discontinuous Galerkin Library
#include "dg/algorithm.h"

BLAS Level 1 routines. More...

Functions

template<class ContainerType1 , class ContainerType2 >
get_value_type< ContainerType1 > dot (const ContainerType1 &x, const ContainerType2 &y)
 \( x^T y\) Binary reproducible Euclidean dot product between two vectors More...
 
template<class ContainerType , class OutputType , class BinaryOp , class UnaryOp = IDENTITY>
OutputType reduce (const ContainerType &x, OutputType zero, BinaryOp binary_op, UnaryOp unary_op=UnaryOp())
 \( f(x_0) \otimes f(x_1) \otimes \dots \otimes f(x_{N-1}) \) Custom (transform) reduction More...
 
template<class ContainerTypeIn , class ContainerTypeOut >
void copy (const ContainerTypeIn &source, ContainerTypeOut &target)
 \( y=x \) More...
 
template<class ContainerType >
void scal (ContainerType &x, get_value_type< ContainerType > alpha)
 \( x = \alpha x\) More...
 
template<class ContainerType >
void plus (ContainerType &x, get_value_type< ContainerType > alpha)
 \( x = x + \alpha \) More...
 
template<class ContainerType , class ContainerType1 >
void axpby (get_value_type< ContainerType > alpha, const ContainerType1 &x, get_value_type< ContainerType > beta, ContainerType &y)
 \( y = \alpha x + \beta y\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void axpbypgz (get_value_type< ContainerType > alpha, const ContainerType1 &x, get_value_type< ContainerType > beta, const ContainerType2 &y, get_value_type< ContainerType > gamma, ContainerType &z)
 \( z = \alpha x + \beta y + \gamma z\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void axpby (get_value_type< ContainerType > alpha, const ContainerType1 &x, get_value_type< ContainerType > beta, const ContainerType2 &y, ContainerType &z)
 \( z = \alpha x + \beta y\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void pointwiseDot (get_value_type< ContainerType > alpha, const ContainerType1 &x1, const ContainerType2 &x2, get_value_type< ContainerType > beta, ContainerType &y)
 \( y = \alpha x_1 x_2 + \beta y\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void pointwiseDot (const ContainerType1 &x1, const ContainerType2 &x2, ContainerType &y)
 \( y = x_1 x_2 \) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 , class ContainerType3 >
void pointwiseDot (get_value_type< ContainerType > alpha, const ContainerType1 &x1, const ContainerType2 &x2, const ContainerType3 &x3, get_value_type< ContainerType > beta, ContainerType &y)
 \( y = \alpha x_1 x_2 x_3 + \beta y\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void pointwiseDivide (get_value_type< ContainerType > alpha, const ContainerType1 &x1, const ContainerType2 &x2, get_value_type< ContainerType > beta, ContainerType &y)
 \( y = \alpha x_1/ x_2 + \beta y \) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 >
void pointwiseDivide (const ContainerType1 &x1, const ContainerType2 &x2, ContainerType &y)
 \( y = x_1/ x_2\) More...
 
template<class ContainerType , class ContainerType1 , class ContainerType2 , class ContainerType3 , class ContainerType4 >
void pointwiseDot (get_value_type< ContainerType > alpha, const ContainerType1 &x1, const ContainerType2 &y1, get_value_type< ContainerType > beta, const ContainerType3 &x2, const ContainerType4 &y2, get_value_type< ContainerType > gamma, ContainerType &z)
 \( z = \alpha x_1y_1 + \beta x_2y_2 + \gamma z\) More...
 
template<class ContainerType , class ContainerType1 , class UnaryOp >
void transform (const ContainerType1 &x, ContainerType &y, UnaryOp op)
 \( y = op(x)\) More...
 
template<class ContainerType , class BinarySubroutine , class Functor , class ContainerType0 , class ... ContainerTypes>
void evaluate (ContainerType &y, BinarySubroutine f, Functor g, const ContainerType0 &x0, const ContainerTypes &...xs)
 \( f(g(x_0,x_1,...), y)\) More...
 
template<class Subroutine , class ContainerType , class ... ContainerTypes>
void subroutine (Subroutine f, ContainerType &&x, ContainerTypes &&... xs)
 \( f(x_0, x_1, ...)\); Customizable and generic blas1 function More...
 

Detailed Description

BLAS Level 1 routines.

Note
successive calls to blas routines are executed sequentially
A manual synchronization of threads or devices is never needed in an application using these functions. All functions returning a value block until the value is ready.