lin
Classes | Functions
tensor_operations.hpp File Reference
#include "../config.hpp"
#include "../traits.hpp"
#include "../types.hpp"
#include "functors.hpp"
#include "mapping_transpose.hpp"
#include "stream_element_wise_operator.hpp"
#include "stream_transpose.hpp"
#include <type_traits>

Go to the source code of this file.

Classes

struct  lin::internal::matches_tensor< T >
 Tests if a type is a tensor. More...
 
struct  lin::internal::matches_scalar< T >
 Tests if a type is a scalar. More...
 
struct  lin::internal::matches_tensor_tensor< T, U >
 Tests if a pair of types is a "tensor tensor" pair. More...
 
struct  lin::internal::matches_tensor_scalar< T, U >
 Tests if a pair of types is a "tensor scalar" pair. More...
 
struct  lin::internal::matches_scalar_tensor< T, U >
 Tests if a pair of types is a "scalar tensor" pair. More...
 
struct  lin::internal::matches_scalar_scalar< T, U >
 Tests if a pair of types is a "scalar scalar" pair. More...
 
class  lin::internal::StreamTranspose< C >
 Proxy to a lazily evalutated transpose operation. More...
 

Functions

template<class C , class D , std::enable_if_t< internal::matches_tensor_tensor< C, D >::value, size_t > = 0>
constexpr auto lin::add (internal::Stream< C > const &c, internal::Stream< D > const &d)
 
template<typename T , class C , std::enable_if_t< internal::matches_scalar_tensor< T, C >::value, size_t > = 0>
constexpr auto lin::add (T const &t, internal::Stream< C > const &c)
 
template<class C , typename T , std::enable_if_t< internal::matches_tensor_scalar< C, T >::value, size_t > = 0>
constexpr auto lin::add (internal::Stream< C > const &c, T const &t)
 
template<typename T , typename U , std::enable_if_t< internal::matches_scalar_scalar< T, U >::value, size_t > = 0>
constexpr auto lin::add (T const &t, U const &u)
 
template<typename T , class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::cast (internal::Stream< C > const &c)
 
template<typename T , typename U , std::enable_if_t< internal::matches_scalar< U >::value, size_t > = 0>
constexpr auto lin::cast (U const &u)
 
template<class C , class D , std::enable_if_t< internal::matches_tensor_tensor< C, D >::value, size_t > = 0>
constexpr auto lin::divide (internal::Stream< C > const &c, internal::Stream< D > const &d)
 
template<typename T , class C , std::enable_if_t< internal::matches_scalar_tensor< T, C >::value, size_t > = 0>
constexpr auto lin::divide (T const &t, internal::Stream< C > const &c)
 
template<class C , typename T , std::enable_if_t< internal::matches_tensor_scalar< C, T >::value, size_t > = 0>
constexpr auto lin::divide (internal::Stream< C > const &c, T const &t)
 
template<typename T , typename U , std::enable_if_t< internal::matches_scalar_scalar< T, U >::value, size_t > = 0>
constexpr auto lin::divide (T const &t, U const &u)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::fro (internal::Stream< C > const &c)
 
template<typename T , std::enable_if_t< internal::matches_scalar< T >::value, size_t > = 0>
constexpr auto lin::fro (T const &t)
 
template<class C , class D , std::enable_if_t< internal::matches_tensor_tensor< C, D >::value, size_t > = 0>
constexpr auto lin::multiply (internal::Stream< C > const &c, internal::Stream< D > const &d)
 
template<typename T , class C , std::enable_if_t< internal::matches_scalar_tensor< T, C >::value, size_t > = 0>
constexpr auto lin::multiply (T const &t, internal::Stream< C > const &c)
 
template<class C , typename T , std::enable_if_t< internal::matches_tensor_scalar< C, T >::value, size_t > = 0>
constexpr auto lin::multiply (internal::Stream< C > const &c, T const &t)
 
template<typename T , typename U , std::enable_if_t< internal::matches_scalar_scalar< T, U >::value, size_t > = 0>
constexpr auto lin::multiply (T const &t, U const &u)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::negate (internal::Stream< C > const &c)
 
template<typename T , std::enable_if_t< internal::matches_scalar< T >::value, size_t > = 0>
constexpr auto lin::negate (T const &t)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::sign (internal::Stream< C > const &c)
 
template<typename T , std::enable_if_t< internal::matches_scalar< T >::value, size_t > = 0>
constexpr auto lin::sign (T const &t)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::square (internal::Stream< C > const &c)
 
template<typename T , std::enable_if_t< internal::matches_scalar< T >::value, size_t > = 0>
constexpr auto lin::square (T const &t)
 
template<class C , class D , std::enable_if_t< internal::matches_tensor_tensor< C, D >::value, size_t > = 0>
constexpr auto lin::subtract (internal::Stream< C > const &c, internal::Stream< D > const &d)
 
template<typename T , class C , std::enable_if_t< internal::matches_scalar_tensor< T, C >::value, size_t > = 0>
constexpr auto lin::subtract (T const &t, internal::Stream< C > const &c)
 
template<class C , typename T , std::enable_if_t< internal::matches_tensor_scalar< C, T >::value, size_t > = 0>
constexpr auto lin::subtract (internal::Stream< C > const &c, T const &t)
 
template<typename T , typename U , std::enable_if_t< internal::matches_scalar_scalar< T, U >::value, size_t > = 0>
constexpr auto lin::subtract (T const &t, U const &u)
 
template<class C >
constexpr auto lin::sum (internal::Stream< C > const &c)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::transpose (internal::Mapping< C > &c)
 
template<class C , std::enable_if_t< internal::matches_tensor< C >::value, size_t > = 0>
constexpr auto lin::transpose (internal::Stream< C > const &c)
 

Detailed Description

Author
Kyle Krol