summaryrefslogtreecommitdiff
path: root/inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp')
-rw-r--r--inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp759
1 files changed, 0 insertions, 759 deletions
diff --git a/inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp b/inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp
deleted file mode 100644
index ecd52cad8..000000000
--- a/inference-engine/thirdparty/clDNN/common/boost/1.64.0/include/boost-1_64/boost/numeric/ublas/traits.hpp
+++ /dev/null
@@ -1,759 +0,0 @@
-//
-// Copyright (c) 2000-2002
-// Joerg Walter, Mathias Koch
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// The authors gratefully acknowledge the support of
-// GeNeSys mbH & Co. KG in producing this work.
-//
-
-#ifndef _BOOST_UBLAS_TRAITS_
-#define _BOOST_UBLAS_TRAITS_
-
-#include <iterator>
-#include <complex>
-#include <boost/config/no_tr1/cmath.hpp>
-
-#include <boost/numeric/ublas/detail/config.hpp>
-#include <boost/numeric/ublas/detail/iterator.hpp>
-#include <boost/numeric/ublas/detail/returntype_deduction.hpp>
-#ifdef BOOST_UBLAS_USE_INTERVAL
-#include <boost/numeric/interval.hpp>
-#endif
-
-#include <boost/type_traits.hpp>
-#include <complex>
-#include <boost/typeof/typeof.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_float.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_unsigned.hpp>
-#include <boost/mpl/and.hpp>
-
-// anonymous namespace to avoid ADL issues
-namespace {
- template<class T> T boost_numeric_ublas_sqrt (const T& t) {
- using namespace std;
- // we'll find either std::sqrt or else another version via ADL:
- return sqrt (t);
- }
-
-template<typename T>
-inline typename boost::disable_if<
- boost::is_unsigned<T>, T >::type
- boost_numeric_ublas_abs (const T &t ) {
- using namespace std;
- return abs( t );
- }
-
-template<typename T>
-inline typename boost::enable_if<
- boost::is_unsigned<T>, T >::type
- boost_numeric_ublas_abs (const T &t ) {
- return t;
- }
-}
-
-namespace boost { namespace numeric { namespace ublas {
-
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator+ (I in1, std::complex<R> const& in2 ) {
- return R (in1) + in2;
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator+ (std::complex<R> const& in1, I in2) {
- return in1 + R (in2);
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator- (I in1, std::complex<R> const& in2) {
- return R (in1) - in2;
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator- (std::complex<R> const& in1, I in2) {
- return in1 - R (in2);
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator* (I in1, std::complex<R> const& in2) {
- return R (in1) * in2;
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator* (std::complex<R> const& in1, I in2) {
- return in1 * R(in2);
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator/ (I in1, std::complex<R> const& in2) {
- return R(in1) / in2;
- }
-
- template<typename R, typename I>
- typename boost::enable_if<
- mpl::and_<
- boost::is_float<R>,
- boost::is_integral<I>
- >,
- std::complex<R> >::type inline operator/ (std::complex<R> const& in1, I in2) {
- return in1 / R (in2);
- }
-
- // Use Joel de Guzman's return type deduction
- // uBLAS assumes a common return type for all binary arithmetic operators
- template<class X, class Y>
- struct promote_traits {
- typedef type_deduction_detail::base_result_of<X, Y> base_type;
- static typename base_type::x_type x;
- static typename base_type::y_type y;
- static const std::size_t size = sizeof (
- type_deduction_detail::test<
- typename base_type::x_type
- , typename base_type::y_type
- >(x + y) // Use x+y to stand of all the arithmetic actions
- );
-
- static const std::size_t index = (size / sizeof (char)) - 1;
- typedef typename mpl::at_c<
- typename base_type::types, index>::type id;
- typedef typename id::type promote_type;
- };
-
-
-
- // Type traits - generic numeric properties and functions
- template<class T>
- struct type_traits;
-
- // Define properties for a generic scalar type
- template<class T>
- struct scalar_traits {
- typedef scalar_traits<T> self_type;
- typedef T value_type;
- typedef const T &const_reference;
- typedef T &reference;
-
- typedef T real_type;
- typedef real_type precision_type; // we do not know what type has more precision then the real_type
-
- static const unsigned plus_complexity = 1;
- static const unsigned multiplies_complexity = 1;
-
- static
- BOOST_UBLAS_INLINE
- real_type real (const_reference t) {
- return t;
- }
- static
- BOOST_UBLAS_INLINE
- real_type imag (const_reference /*t*/) {
- return 0;
- }
- static
- BOOST_UBLAS_INLINE
- value_type conj (const_reference t) {
- return t;
- }
-
- static
- BOOST_UBLAS_INLINE
- real_type type_abs (const_reference t) {
- return boost_numeric_ublas_abs (t);
- }
- static
- BOOST_UBLAS_INLINE
- value_type type_sqrt (const_reference t) {
- // force a type conversion back to value_type for intgral types
- return value_type (boost_numeric_ublas_sqrt (t));
- }
-
- static
- BOOST_UBLAS_INLINE
- real_type norm_1 (const_reference t) {
- return self_type::type_abs (t);
- }
- static
- BOOST_UBLAS_INLINE
- real_type norm_2 (const_reference t) {
- return self_type::type_abs (t);
- }
- static
- BOOST_UBLAS_INLINE
- real_type norm_inf (const_reference t) {
- return self_type::type_abs (t);
- }
-
- static
- BOOST_UBLAS_INLINE
- bool equals (const_reference t1, const_reference t2) {
- return self_type::norm_inf (t1 - t2) < BOOST_UBLAS_TYPE_CHECK_EPSILON *
- (std::max) ((std::max) (self_type::norm_inf (t1),
- self_type::norm_inf (t2)),
- BOOST_UBLAS_TYPE_CHECK_MIN);
- }
- };
-
- // Define default type traits, assume T is a scalar type
- template<class T>
- struct type_traits : scalar_traits <T> {
- typedef type_traits<T> self_type;
- typedef T value_type;
- typedef const T &const_reference;
- typedef T &reference;
-
- typedef T real_type;
- typedef real_type precision_type;
- static const unsigned multiplies_complexity = 1;
-
- };
-
- // Define real type traits
- template<>
- struct type_traits<float> : scalar_traits<float> {
- typedef type_traits<float> self_type;
- typedef float value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef double precision_type;
- };
- template<>
- struct type_traits<double> : scalar_traits<double> {
- typedef type_traits<double> self_type;
- typedef double value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef long double precision_type;
- };
- template<>
- struct type_traits<long double> : scalar_traits<long double> {
- typedef type_traits<long double> self_type;
- typedef long double value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef value_type precision_type;
- };
-
- // Define properties for a generic complex type
- template<class T>
- struct complex_traits {
- typedef complex_traits<T> self_type;
- typedef T value_type;
- typedef const T &const_reference;
- typedef T &reference;
-
- typedef typename T::value_type real_type;
- typedef real_type precision_type; // we do not know what type has more precision then the real_type
-
- static const unsigned plus_complexity = 2;
- static const unsigned multiplies_complexity = 6;
-
- static
- BOOST_UBLAS_INLINE
- real_type real (const_reference t) {
- return std::real (t);
- }
- static
- BOOST_UBLAS_INLINE
- real_type imag (const_reference t) {
- return std::imag (t);
- }
- static
- BOOST_UBLAS_INLINE
- value_type conj (const_reference t) {
- return std::conj (t);
- }
-
- static
- BOOST_UBLAS_INLINE
- real_type type_abs (const_reference t) {
- return abs (t);
- }
- static
- BOOST_UBLAS_INLINE
- value_type type_sqrt (const_reference t) {
- return sqrt (t);
- }
-
- static
- BOOST_UBLAS_INLINE
- real_type norm_1 (const_reference t) {
- return self_type::type_abs (t);
- // original computation has been replaced because a complex number should behave like a scalar type
- // return type_traits<real_type>::type_abs (self_type::real (t)) +
- // type_traits<real_type>::type_abs (self_type::imag (t));
- }
- static
- BOOST_UBLAS_INLINE
- real_type norm_2 (const_reference t) {
- return self_type::type_abs (t);
- }
- static
- BOOST_UBLAS_INLINE
- real_type norm_inf (const_reference t) {
- return self_type::type_abs (t);
- // original computation has been replaced because a complex number should behave like a scalar type
- // return (std::max) (type_traits<real_type>::type_abs (self_type::real (t)),
- // type_traits<real_type>::type_abs (self_type::imag (t)));
- }
-
- static
- BOOST_UBLAS_INLINE
- bool equals (const_reference t1, const_reference t2) {
- return self_type::norm_inf (t1 - t2) < BOOST_UBLAS_TYPE_CHECK_EPSILON *
- (std::max) ((std::max) (self_type::norm_inf (t1),
- self_type::norm_inf (t2)),
- BOOST_UBLAS_TYPE_CHECK_MIN);
- }
- };
-
- // Define complex type traits
- template<>
- struct type_traits<std::complex<float> > : complex_traits<std::complex<float> >{
- typedef type_traits<std::complex<float> > self_type;
- typedef std::complex<float> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef float real_type;
- typedef std::complex<double> precision_type;
-
- };
- template<>
- struct type_traits<std::complex<double> > : complex_traits<std::complex<double> >{
- typedef type_traits<std::complex<double> > self_type;
- typedef std::complex<double> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef double real_type;
- typedef std::complex<long double> precision_type;
- };
- template<>
- struct type_traits<std::complex<long double> > : complex_traits<std::complex<long double> > {
- typedef type_traits<std::complex<long double> > self_type;
- typedef std::complex<long double> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef long double real_type;
- typedef value_type precision_type;
- };
-
-#ifdef BOOST_UBLAS_USE_INTERVAL
- // Define scalar interval type traits
- template<>
- struct type_traits<boost::numeric::interval<float> > : scalar_traits<boost::numeric::interval<float> > {
- typedef type_traits<boost::numeric::interval<float> > self_type;
- typedef boost::numeric::interval<float> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef boost::numeric::interval<double> precision_type;
-
- };
- template<>
- struct type_traits<boost::numeric::interval<double> > : scalar_traits<boost::numeric::interval<double> > {
- typedef type_traits<boost::numeric::interval<double> > self_type;
- typedef boost::numeric::interval<double> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef boost::numeric::interval<long double> precision_type;
- };
- template<>
- struct type_traits<boost::numeric::interval<long double> > : scalar_traits<boost::numeric::interval<long double> > {
- typedef type_traits<boost::numeric::interval<long double> > self_type;
- typedef boost::numeric::interval<long double> value_type;
- typedef const value_type &const_reference;
- typedef value_type &reference;
- typedef value_type real_type;
- typedef value_type precision_type;
- };
-#endif
-
-
- // Storage tags -- hierarchical definition of storage characteristics
-
- struct unknown_storage_tag {};
- struct sparse_proxy_tag: public unknown_storage_tag {};
- struct sparse_tag: public sparse_proxy_tag {};
- struct packed_proxy_tag: public sparse_proxy_tag {};
- struct packed_tag: public packed_proxy_tag {};
- struct dense_proxy_tag: public packed_proxy_tag {};
- struct dense_tag: public dense_proxy_tag {};
-
- template<class S1, class S2>
- struct storage_restrict_traits {
- typedef S1 storage_category;
- };
-
- template<>
- struct storage_restrict_traits<sparse_tag, dense_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<sparse_tag, packed_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<sparse_tag, sparse_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
-
- template<>
- struct storage_restrict_traits<packed_tag, dense_proxy_tag> {
- typedef packed_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<packed_tag, packed_proxy_tag> {
- typedef packed_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<packed_tag, sparse_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
-
- template<>
- struct storage_restrict_traits<packed_proxy_tag, sparse_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
-
- template<>
- struct storage_restrict_traits<dense_tag, dense_proxy_tag> {
- typedef dense_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<dense_tag, packed_proxy_tag> {
- typedef packed_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<dense_tag, sparse_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
-
- template<>
- struct storage_restrict_traits<dense_proxy_tag, packed_proxy_tag> {
- typedef packed_proxy_tag storage_category;
- };
- template<>
- struct storage_restrict_traits<dense_proxy_tag, sparse_proxy_tag> {
- typedef sparse_proxy_tag storage_category;
- };
-
-
- // Iterator tags -- hierarchical definition of storage characteristics
-
- struct sparse_bidirectional_iterator_tag : public std::bidirectional_iterator_tag {};
- struct packed_random_access_iterator_tag : public std::random_access_iterator_tag {};
- struct dense_random_access_iterator_tag : public packed_random_access_iterator_tag {};
-
- // Thanks to Kresimir Fresl for convincing Comeau with iterator_base_traits ;-)
- template<class IC>
- struct iterator_base_traits {};
-
- template<>
- struct iterator_base_traits<std::forward_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef forward_iterator_base<std::forward_iterator_tag, I, T> type;
- };
- };
-
- template<>
- struct iterator_base_traits<std::bidirectional_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef bidirectional_iterator_base<std::bidirectional_iterator_tag, I, T> type;
- };
- };
- template<>
- struct iterator_base_traits<sparse_bidirectional_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef bidirectional_iterator_base<sparse_bidirectional_iterator_tag, I, T> type;
- };
- };
-
- template<>
- struct iterator_base_traits<std::random_access_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef random_access_iterator_base<std::random_access_iterator_tag, I, T> type;
- };
- };
- template<>
- struct iterator_base_traits<packed_random_access_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef random_access_iterator_base<packed_random_access_iterator_tag, I, T> type;
- };
- };
- template<>
- struct iterator_base_traits<dense_random_access_iterator_tag> {
- template<class I, class T>
- struct iterator_base {
- typedef random_access_iterator_base<dense_random_access_iterator_tag, I, T> type;
- };
- };
-
- template<class I1, class I2>
- struct iterator_restrict_traits {
- typedef I1 iterator_category;
- };
-
- template<>
- struct iterator_restrict_traits<packed_random_access_iterator_tag, sparse_bidirectional_iterator_tag> {
- typedef sparse_bidirectional_iterator_tag iterator_category;
- };
- template<>
- struct iterator_restrict_traits<sparse_bidirectional_iterator_tag, packed_random_access_iterator_tag> {
- typedef sparse_bidirectional_iterator_tag iterator_category;
- };
-
- template<>
- struct iterator_restrict_traits<dense_random_access_iterator_tag, sparse_bidirectional_iterator_tag> {
- typedef sparse_bidirectional_iterator_tag iterator_category;
- };
- template<>
- struct iterator_restrict_traits<sparse_bidirectional_iterator_tag, dense_random_access_iterator_tag> {
- typedef sparse_bidirectional_iterator_tag iterator_category;
- };
-
- template<>
- struct iterator_restrict_traits<dense_random_access_iterator_tag, packed_random_access_iterator_tag> {
- typedef packed_random_access_iterator_tag iterator_category;
- };
- template<>
- struct iterator_restrict_traits<packed_random_access_iterator_tag, dense_random_access_iterator_tag> {
- typedef packed_random_access_iterator_tag iterator_category;
- };
-
- template<class I>
- BOOST_UBLAS_INLINE
- void increment (I &it, const I &it_end, typename I::difference_type compare, packed_random_access_iterator_tag) {
- it += (std::min) (compare, it_end - it);
- }
- template<class I>
- BOOST_UBLAS_INLINE
- void increment (I &it, const I &/* it_end */, typename I::difference_type /* compare */, sparse_bidirectional_iterator_tag) {
- ++ it;
- }
- template<class I>
- BOOST_UBLAS_INLINE
- void increment (I &it, const I &it_end, typename I::difference_type compare) {
- increment (it, it_end, compare, typename I::iterator_category ());
- }
-
- template<class I>
- BOOST_UBLAS_INLINE
- void increment (I &it, const I &it_end) {
-#if BOOST_UBLAS_TYPE_CHECK
- I cit (it);
- while (cit != it_end) {
- BOOST_UBLAS_CHECK (*cit == typename I::value_type/*zero*/(), internal_logic ());
- ++ cit;
- }
-#endif
- it = it_end;
- }
-
- namespace detail {
-
- // specialisation which define whether a type has a trivial constructor
- // or not. This is used by array types.
- template<typename T>
- struct has_trivial_constructor : public boost::has_trivial_constructor<T> {};
-
- template<typename T>
- struct has_trivial_destructor : public boost::has_trivial_destructor<T> {};
-
- template<typename FLT>
- struct has_trivial_constructor<std::complex<FLT> > : public has_trivial_constructor<FLT> {};
-
- template<typename FLT>
- struct has_trivial_destructor<std::complex<FLT> > : public has_trivial_destructor<FLT> {};
-
- }
-
-
- /** \brief Traits class to extract type information from a constant matrix or vector CONTAINER.
- *
- */
- template < class E >
- struct container_view_traits {
- /// type of indices
- typedef typename E::size_type size_type;
- /// type of differences of indices
- typedef typename E::difference_type difference_type;
-
- /// storage category: \c unknown_storage_tag, \c dense_tag, \c packed_tag, ...
- typedef typename E::storage_category storage_category;
-
- /// type of elements
- typedef typename E::value_type value_type;
- /// const reference to an element
- typedef typename E::const_reference const_reference;
-
- /// type used in expressions to mark a reference to this class (usually a const container_reference<const E> or the class itself)
- typedef typename E::const_closure_type const_closure_type;
- };
-
- /** \brief Traits class to extract additional type information from a mutable matrix or vector CONTAINER.
- *
- */
- template < class E >
- struct mutable_container_traits {
- /// reference to an element
- typedef typename E::reference reference;
-
- /// type used in expressions to mark a reference to this class (usually a container_reference<E> or the class itself)
- typedef typename E::closure_type closure_type;
- };
-
- /** \brief Traits class to extract type information from a matrix or vector CONTAINER.
- *
- */
- template < class E >
- struct container_traits
- : container_view_traits<E>, mutable_container_traits<E> {
-
- };
-
-
- /** \brief Traits class to extract type information from a constant MATRIX.
- *
- */
- template < class MATRIX >
- struct matrix_view_traits : container_view_traits <MATRIX> {
-
- /// orientation of the matrix, either \c row_major_tag, \c column_major_tag or \c unknown_orientation_tag
- typedef typename MATRIX::orientation_category orientation_category;
-
- /// row iterator for the matrix
- typedef typename MATRIX::const_iterator1 const_iterator1;
-
- /// column iterator for the matrix
- typedef typename MATRIX::const_iterator2 const_iterator2;
- };
-
- /** \brief Traits class to extract additional type information from a mutable MATRIX.
- *
- */
- template < class MATRIX >
- struct mutable_matrix_traits
- : mutable_container_traits <MATRIX> {
-
- /// row iterator for the matrix
- typedef typename MATRIX::iterator1 iterator1;
-
- /// column iterator for the matrix
- typedef typename MATRIX::iterator2 iterator2;
- };
-
-
- /** \brief Traits class to extract type information from a MATRIX.
- *
- */
- template < class MATRIX >
- struct matrix_traits
- : matrix_view_traits <MATRIX>, mutable_matrix_traits <MATRIX> {
- };
-
- /** \brief Traits class to extract type information from a VECTOR.
- *
- */
- template < class VECTOR >
- struct vector_view_traits : container_view_traits <VECTOR> {
-
- /// iterator for the VECTOR
- typedef typename VECTOR::const_iterator const_iterator;
-
- /// iterator pointing to the first element
- static
- const_iterator begin(const VECTOR & v) {
- return v.begin();
- }
- /// iterator pointing behind the last element
- static
- const_iterator end(const VECTOR & v) {
- return v.end();
- }
-
- };
-
- /** \brief Traits class to extract type information from a VECTOR.
- *
- */
- template < class VECTOR >
- struct mutable_vector_traits : mutable_container_traits <VECTOR> {
- /// iterator for the VECTOR
- typedef typename VECTOR::iterator iterator;
-
- /// iterator pointing to the first element
- static
- iterator begin(VECTOR & v) {
- return v.begin();
- }
-
- /// iterator pointing behind the last element
- static
- iterator end(VECTOR & v) {
- return v.end();
- }
- };
-
- /** \brief Traits class to extract type information from a VECTOR.
- *
- */
- template < class VECTOR >
- struct vector_traits
- : vector_view_traits <VECTOR>, mutable_vector_traits <VECTOR> {
- };
-
-
- // Note: specializations for T[N] and T[M][N] have been moved to traits/c_array.hpp
-
-}}}
-
-#endif