Binary operators are defined component-wise for linalg types, EXCEPT for operator *
, which does standard matrix multiplication, scalar multiplication, and component-wise multiplication for same-size vectors. Use cmul
for the matrix Hadamard product.
More...
Functions | |
template<class A , class B > | |
constexpr apply_t< detail::op_add, A, B > | operator+ (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_sub, A, B > | operator- (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_mul, A, B > | cmul (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_div, A, B > | operator/ (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_mod, A, B > | operator% (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_un, A, B > | operator| (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_xor, A, B > | operator^ (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_int, A, B > | operator& (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_lsh, A, B > | operator<< (const A &a, const B &b) |
template<class A , class B > | |
constexpr apply_t< detail::op_rsh, A, B > | operator>> (const A &a, const B &b) |
template<class A , class B > | |
constexpr auto | operator* (const A &a, const B &b) |
template<class A , class B > | |
constexpr auto | operator+= (A &a, const B &b) -> decltype(a=a+b) |
template<class A , class B > | |
constexpr auto | operator-= (A &a, const B &b) -> decltype(a=a - b) |
template<class A , class B > | |
constexpr auto | operator*= (A &a, const B &b) -> decltype(a=a *b) |
template<class A , class B > | |
constexpr auto | operator/= (A &a, const B &b) -> decltype(a=a/b) |
template<class A , class B > | |
constexpr auto | operator%= (A &a, const B &b) -> decltype(a=a % b) |
template<class A , class B > | |
constexpr auto | operator|= (A &a, const B &b) -> decltype(a=a|b) |
template<class A , class B > | |
constexpr auto | operator^= (A &a, const B &b) -> decltype(a=a ^ b) |
template<class A , class B > | |
constexpr auto | operator&= (A &a, const B &b) -> decltype(a=a &b) |
template<class A , class B > | |
constexpr auto | operator<<= (A &a, const B &b) -> decltype(a=a<< b) |
template<class A , class B > | |
constexpr auto | operator>>= (A &a, const B &b) -> decltype(a=a > > b) |
Binary operators are defined component-wise for linalg types, EXCEPT for operator *
, which does standard matrix multiplication, scalar multiplication, and component-wise multiplication for same-size vectors. Use cmul
for the matrix Hadamard product.