ampsci
High-precision calculations for one- and two-valence atomic systems
qip::overloads Namespace Reference

Detailed Description

Operator overloads for std::vector.

Provides element-wise +, -, *, / between two vectors, and between a vector and a scalar. Use using namespace qip::overloads; to enable.

Functions

template<typename T >
std::vector< T > & operator+= (std::vector< T > &a, const std::vector< T > &b)
 Element-wise addition: a += b, a + b.
 
template<typename T >
std::vector< T > operator+ (std::vector< T > a, const std::vector< T > &b)
 
template<typename T >
std::vector< T > & operator-= (std::vector< T > &a, const std::vector< T > &b)
 Element-wise subtraction: a -= b, a - b.
 
template<typename T >
std::vector< T > operator- (std::vector< T > a, const std::vector< T > &b)
 
template<typename T , typename U >
std::vector< T > & operator*= (std::vector< T > &v, U x)
 
template<typename T , typename U >
std::vector< T > operator* (std::vector< T > v, U x)
 
template<typename T , typename U >
std::vector< T > operator* (U x, std::vector< T > v)
 
template<typename T , typename U >
std::vector< T > & operator/= (std::vector< T > &v, U x)
 
template<typename T , typename U >
std::vector< T > operator/ (std::vector< T > v, U x)
 
template<typename T , typename U >
std::vector< T > & operator+= (std::vector< T > &v, U x)
 
template<typename T , typename U >
std::vector< T > operator+ (std::vector< T > v, U x)
 
template<typename T , typename U >
std::vector< T > operator+ (U x, std::vector< T > v)
 
template<typename T , typename U >
std::vector< T > & operator-= (std::vector< T > &v, U x)
 
template<typename T , typename U >
std::vector< T > operator- (std::vector< T > v, U x)
 
template<typename T , typename U >
std::vector< T > operator- (U x, std::vector< T > v)
 
template<typename T , typename U >
std::vector< T > operator/ (U x, std::vector< T > v)
 
template<typename T >
std::vector< T > & operator*= (std::vector< T > &a, const std::vector< T > &b)
 In-place element-wise multiplication: a*=b => a_i := a_i * b_i.
 
template<typename T >
std::vector< T > operator* (std::vector< T > a, const std::vector< T > &b)
 Element-wise multiplication: c=a*b => c_i = a_i * b_i.
 
template<typename T >
std::vector< T > & operator/= (std::vector< T > &a, const std::vector< T > &b)
 In-place element-wise division: a/=b => a_i := a_i / b_i.
 
template<typename T >
std::vector< T > operator/ (std::vector< T > a, const std::vector< T > &b)
 Element-wise division: c=a/b => c_i = a_i / b_i.
 

Function Documentation

◆ operator+=()

template<typename T >
std::vector< T > & qip::overloads::operator+= ( std::vector< T > &  a,
const std::vector< T > &  b 
)

Element-wise addition: a += b, a + b.

◆ operator-=()

template<typename T >
std::vector< T > & qip::overloads::operator-= ( std::vector< T > &  a,
const std::vector< T > &  b 
)

Element-wise subtraction: a -= b, a - b.

◆ operator*=()

template<typename T >
std::vector< T > & qip::overloads::operator*= ( std::vector< T > &  a,
const std::vector< T > &  b 
)

In-place element-wise multiplication: a*=b => a_i := a_i * b_i.

◆ operator*()

template<typename T >
std::vector< T > qip::overloads::operator* ( std::vector< T >  a,
const std::vector< T > &  b 
)

Element-wise multiplication: c=a*b => c_i = a_i * b_i.

◆ operator/=()

template<typename T >
std::vector< T > & qip::overloads::operator/= ( std::vector< T > &  a,
const std::vector< T > &  b 
)

In-place element-wise division: a/=b => a_i := a_i / b_i.

◆ operator/()

template<typename T >
std::vector< T > qip::overloads::operator/ ( std::vector< T >  a,
const std::vector< T > &  b 
)

Element-wise division: c=a/b => c_i = a_i / b_i.