vector_expression.hpp File Reference
#include <boost/type_traits/is_convertible.hpp>
#include <boost/utility/enable_if.hpp>
#include "vector_proxy.hpp"
#include "kernels/dot.hpp"

Go to the source code of this file.

Classes

class  shark::blas::vector_scalar_multiply< E >
 Implements multiplications of a vector by a scalar. More...
 
class  shark::blas::scalar_vector< T >
 Vector expression representing a constant valued vector. More...
 
class  shark::blas::vector_unary< E, F >
 Class implementing vector transformation expressions. More...
 
class  shark::blas::vector_addition< E1, E2 >
 
class  shark::blas::vector_binary< E1, E2, F >
 

Namespaces

 shark
 AbstractMultiObjectiveOptimizer.
 
 shark::blas
 

Macros

#define SHARK_UNARY_VECTOR_TRANSFORMATION(name, F)
 
#define SHARK_VECTOR_SCALAR_TRANSFORMATION(name, F)
 
#define SHARK_VECTOR_SCALAR_TRANSFORMATION_2(name, F)
 
#define SHARK_BINARY_VECTOR_EXPRESSION(name, F)
 

Functions

template<class T , class E >
boost::enable_if< boost::is_convertible< T, typename E::scalar_type >, vector_scalar_multiply< E >>::type shark::blas::operator* (vector_expression< E > const &e, T scalar)
 
template<class T , class E >
boost::enable_if< boost::is_convertible< T, typename E::scalar_type >, vector_scalar_multiply< E >>::type shark::blas::operator* (T scalar, vector_expression< E > const &e)
 
template<class E >
vector_scalar_multiply< E > shark::blas::operator- (vector_expression< E > const &e)
 
template<class T >
boost::enable_if< boost::is_arithmetic< T >, scalar_vector< T > >::type shark::blas::repeat (T scalar, std::size_t elements)
 Creates a vector having a constant value. More...
 
template<class E1 , class E2 >
vector_addition< E1, E2 > shark::blas::operator+ (vector_expression< E1 > const &e1, vector_expression< E2 > const &e2)
 Adds two vectors. More...
 
template<class E1 , class E2 >
vector_addition< E1, vector_scalar_multiply< E2 > > shark::blas::operator- (vector_expression< E1 > const &e1, vector_expression< E2 > const &e2)
 Subtracts two vectors. More...
 
template<class E , class T >
boost::enable_if< boost::is_convertible< T, typename E::value_type >, vector_addition< E, scalar_vector< T > >>::type shark::blas::operator+ (vector_expression< E > const &e, T t)
 Adds a vector plus a scalr which is interpreted as a constant vector. More...
 
template<class T , class E >
boost::enable_if< boost::is_convertible< T, typename E::value_type >, vector_addition< E, scalar_vector< T > >>::type shark::blas::operator+ (T t, vector_expression< E > const &e)
 Adds a vector plus a scalar which is interpreted as a constant vector. More...
 
template<class E , class T >
boost::enable_if< boost::is_convertible< T, typename E::value_type >, vector_addition< E, vector_scalar_multiply< scalar_vector< T > > >>::type shark::blas::operator- (vector_expression< E > const &e, T t)
 Subtracts a scalar which is interpreted as a constant vector from a vector. More...
 
template<class E , class T >
boost::enable_if< boost::is_convertible< T, typename E::value_type >, vector_addition< scalar_vector< T >, vector_scalar_multiply< E > >>::type shark::blas::operator- (T t, vector_expression< E > const &e)
 Subtracts a vector from a scalar which is interpreted as a constant vector. More...
 
template<class E1 , class E2 >
vector_binary< E1, E2, scalar_binary_safe_divide< typename E1::value_type, typename E2::value_type > > shark::blas::safe_div (vector_expression< E1 > const &e1, vector_expression< E2 > const &e2, typename promote_traits< typename E1::value_type, typename E2::value_type >::promote_type defaultValue)
 
template<class E >
E::value_type shark::blas::sum (const vector_expression< E > &e)
 sum v = sum_i v_i More...
 
template<class E >
E::value_type shark::blas::max (const vector_expression< E > &e)
 max v = max_i v_i More...
 
template<class E >
E::value_type shark::blas::min (const vector_expression< E > &e)
 min v = min_i v_i More...
 
template<class E >
std::size_t shark::blas::arg_max (const vector_expression< E > &e)
 arg_max v = arg max_i v_i More...
 
template<class E >
std::size_t shark::blas::arg_min (const vector_expression< E > &e)
 arg_min v = arg min_i v_i More...
 
template<class E >
E::value_type shark::blas::soft_max (const vector_expression< E > &e)
 soft_max v = ln(sum(exp(v))) More...
 
template<class E >
real_traits< typename E::value_type >::type shark::blas::norm_1 (const vector_expression< E > &e)
 norm_1 v = sum_i |v_i| More...
 
template<class E >
real_traits< typename E::value_type >::type shark::blas::norm_sqr (const vector_expression< E > &e)
 norm_2 v = sum_i |v_i|^2 More...
 
template<class E >
real_traits< typename E::value_type >::type shark::blas::norm_2 (const vector_expression< E > &e)
 norm_2 v = sqrt (sum_i |v_i|^2 ) More...
 
template<class E >
real_traits< typename E::value_type >::type shark::blas::norm_inf (vector_expression< E > const &e)
 norm_inf v = max_i |v_i| More...
 
template<class E >
std::size_t shark::blas::index_norm_inf (vector_expression< E > const &e)
 index_norm_inf v = arg max_i |v_i| More...
 
template<class E1 , class E2 >
promote_traits< typename E1::value_type, typename E2::value_type >::promote_type shark::blas::inner_prod (vector_expression< E1 > const &e1, vector_expression< E2 > const &e2)
 

Macro Definition Documentation

§ SHARK_BINARY_VECTOR_EXPRESSION

#define SHARK_BINARY_VECTOR_EXPRESSION (   name,
 
)
Value:
template<class E1, class E2>\
vector_binary<E1, E2, F<typename E1::value_type, typename E2::value_type> >\
name(vector_expression<E1> const& e1, vector_expression<E2> const& e2){\
typedef F<typename E1::value_type, typename E2::value_type> functor_type;\
return vector_binary<E1, E2, functor_type>(e1(),e2(), functor_type());\
}

Definition at line 644 of file vector_expression.hpp.

§ SHARK_UNARY_VECTOR_TRANSFORMATION

#define SHARK_UNARY_VECTOR_TRANSFORMATION (   name,
 
)
Value:
template<class E>\
vector_unary<E,F<typename E::value_type> >\
name(vector_expression<E> const& e){\
typedef F<typename E::value_type> functor_type;\
return vector_unary<E, functor_type>(e, functor_type());\
}

Definition at line 320 of file vector_expression.hpp.

§ SHARK_VECTOR_SCALAR_TRANSFORMATION

#define SHARK_VECTOR_SCALAR_TRANSFORMATION (   name,
 
)
Value:
template<class T, class E> \
typename boost::enable_if< \
boost::is_convertible<T, typename E::value_type >,\
vector_unary<E,F<typename E::value_type,T> > \
>::type \
name (vector_expression<E> const& e, T scalar){ \
typedef F<typename E::value_type,T> functor_type; \
return vector_unary<E, functor_type>(e, functor_type(scalar)); \
}

Definition at line 344 of file vector_expression.hpp.

§ SHARK_VECTOR_SCALAR_TRANSFORMATION_2

#define SHARK_VECTOR_SCALAR_TRANSFORMATION_2 (   name,
 
)
Value:
template<class T, class E> \
typename boost::enable_if< \
boost::is_convertible<T, typename E::value_type >,\
vector_unary<E,F<typename E::value_type,T> > \
>::type \
name (T scalar, vector_expression<E> const& e){ \
typedef F<typename E::value_type,T> functor_type; \
return vector_unary<E, functor_type>(e, functor_type(scalar)); \
}

Definition at line 367 of file vector_expression.hpp.