59#include <vigra/multi_array.hxx>
60#include <vigra/tinyvector.hxx>
108template <
typename T >
110typename vigra::ExpandElementResult < T > :: type ;
115template <
typename T >
118std::integral_constant
120 vigra::ExpandElementResult < T > :: size
129 std::integral_constant
132 <
typename vigra::ExpandElementResult < T > :: type ,
133 vigra::UnsuitableTypeForExpandElements
144template <
class T1 ,
class T2 >
146 =
typename vigra::PromoteTraits < T1 , T2 > :: Promote ;
163template <
class T1 ,
class T2 >
165 =
typename vigra::NumericTraits
179template <
class T1 ,
class T2 >
181 =
typename vigra::ExpandElementResult
189template <
class T1 ,
class T2 >
191 =
typename vigra::NumericTraits
218template <
typename T ,
int N = EN < T > :: value >
224 vigra::TinyVector < ET < T > , N >
227template <
typename T ,
int N = EN < T > :: value >
229vigra::TinyVector < ET < T > , N > ;
231template <
class T ,
size_t sz = 1 >
234 static_assert ( sz == 1 ,
"scalar values can only take size 1" ) ;
240template <
class T ,
size_t sz = 1 >
242 typename std::conditional
254template <
typename T ,
size_t SZ >
256vigra::TinyVector < T , static_cast < int > ( SZ ) > ;
265template <
typename T >
268 typedef std::allocator < T >
type ;
276: std::invalid_argument
279 :
std::invalid_argument ( msg ) { } ;
286: std::invalid_argument
289 :
std::invalid_argument ( msg ) { } ;
296: std::invalid_argument
299 :
std::invalid_argument ( msg ) { } ;
306: std::invalid_argument
309 :
std::invalid_argument ( msg ) { } ;
324: std::invalid_argument
327 :
std::invalid_argument ( msg ) { } ;
344template <
typename arg_t >
345arg_t fma (
const arg_t & arg1 ,
const arg_t & arg2 ,
const arg_t & arg3 )
347 return std::fma ( arg1 , arg2 , arg3 ) ;
350template <
typename T ,
int SZ >
351vigra::TinyVector < T , SZ > fma (
const vigra::TinyVector < T , SZ > & arg1 ,
352 const vigra::TinyVector < T , SZ > & arg2 ,
353 const vigra::TinyVector < T , SZ > & arg3 )
355 vigra::TinyVector < T , SZ > result ;
356 for (
size_t i = 0 ; i < SZ ; i++ )
357 result[i] = fma ( arg1[i] , arg2[i] , arg3[i] ) ;
361template <
typename T ,
size_t SZ >
367 for (
size_t i = 0 ; i < SZ ; i++ )
368 result[i] = fma ( arg1[i] , arg2[i] , arg3[i] ) ;
class template simd_type provides a fixed-size container type for small sets of fundamentals which ar...
typename std::conditional< sz==1, T, invalid_scalar< T, sz > > ::type scalar
definition of a scalar with the same template argument list as a simdized type, to use 'scalar' in th...
typename vigra::PromoteTraits< T1, T2 > ::Promote promote_type
typename vigra::ExpandElementResult< T > ::type ET
using definition for the 'elementary type' of a type via vigra's ExpandElementResult mechanism....
vigra::TinyVector< ET< T >, N > synthetic_type
typename vigra::NumericTraits< promote_ele_type< T1, T2 > > ::RealPromote common_math_ele_type
typename vigra::ExpandElementResult< promote_type< T1, T2 > > ::type promote_ele_type
typename std::conditional< N==1, ET< T >, vigra::TinyVector< ET< T >, N > > ::type canonical_type
produce the 'canonical type' for a given type T. If T is single-channel, this will be the elementary ...
const std::string bc_name[]
bc_name is for diagnostic output of bc codes
typename std::integral_constant< int, vigra::ExpandElementResult< T > ::size > ::type EN
produce a std::integral_constant from the size obtained from vigra's ExpandElementResult mechanism
typename vigra::NumericTraits< promote_type< T1, T2 > > ::RealPromote common_math_type
typename vigra::TinyVector< T, static_cast< int >(SZ) > tiny_vector
typename std::integral_constant< bool, ! std::is_same< typename vigra::ExpandElementResult< T > ::type, vigra::UnsuitableTypeForExpandElements > ::value > ::type is_element_expandable
is_element_expandable tests if a type T is known to vigra's ExpandElementResult mechanism....
bc_code
This enumeration is used for codes connected to boundary conditions. There are two aspects to boundar...
vspline creates vigra::MultiArrays of vectorized types. As long as the vectorized types are Vc::SimdA...
dimension-mismatch is thrown if two arrays have different dimensions which should have the same dimen...
dimension_mismatch(const char *msg)
for interfaces which need specific implementations we use:
not_implemented(const char *msg)
exception which is thrown if an opertion is requested which vspline does not support
not_supported(const char *msg)
exception which is thrown when assigning an rvalue which is larger than what the lvalue can hold
numeric_overflow(const char *msg)
out_of_bounds is thrown by mapping mode REJECT for out-of-bounds coordinates this exception is left w...
shape mismatch is the exception which is thrown if the shapes of an input array and an output array d...
shape_mismatch(const char *msg)
code for horizontal vectorization in vspline