update#

Header: <pressio/ops.hpp>

API#

namespace pressio { namespace ops{

// V = a * V + b * V1
template<class T, class T1, class a_Type, class b_Type>
void update(T & v,  const a_Type & a,
     const T1 & v1, const b_Type & b);

// V = a * V + b * V1 + c * V2
template<
  class T, class T1, class T2,
  class a_Type, class b_Type, class c_Type
>
void update(T & v,  const a_Type &a,
     const T1 & v1, const b_Type &b,
     const T2 & v2, const c_Type &c);

// V = a * V + b * V1 + c * V2 + d * V3
template<
  class T, class T1, class T2, class T3,
  class a_Type, class b_Type, class c_Type, class d_Type
>
void update(T & v,  const a_Type &a,
     const T1 & v1, const b_Type &b,
     const T2 & v2, const c_Type &c,
     const T3 & v3, const d_Type &d);

// V = a * V + b * V1 + c * V2 + d * V3 + e * V4
template<
  class T, class T1, class T2, class T3, class T4,
  class a_Type, class b_Type, class c_Type, class d_Type, class e_Type
>
void update(T & v,  const a_Type &a,
     const T1 & v1, const b_Type &b,
     const T2 & v2, const c_Type &c,
     const T3 & v3, const d_Type &d,
     const T4 & v4, const e_Type &e);

// Rank-2 overload (Eigen and Kokkos only)
// MV = a * MV + b * MV1
template<typename T, typename T1, typename alpha_t, typename beta_t>
void update(T & mv,  const alpha_t &a,
     const T1 & mv1, const beta_t &b)

}} // end namespace pressio::ops

Description#

  • Performs a combined scaling and addition on vector v using the given scalars (a, b, … , e) and auxiliary vectors (v1, … , v4)

  • Stores the result in v

  • All vectors should have the same size and the same type. They may be:

    • Rank-1 or Rank-2 (see specific overload) Eigen containers or Pressio expressions of Eigen containers

    • Rank-1 or Rank-2 (see specific overload) Kokkos containers or Pressio expressions of Kokkos containers

    • Rank-1 Tpetra containers or Pressio column expressions acting on Tpetra

    • Rank-1 Tpetra Block containers or Pressio column expressions acting on Tpetra Block

Notes#

  • See the ops homepage for a table of booleans to use when checking for the correct types.