56#ifndef __stir_ArrayFunction_H__
57#define __stir_ArrayFunction_H__
76template <
int num_dimensions,
class elemT>
77inline Array<num_dimensions, elemT>&
in_place_log(Array<num_dimensions, elemT>& v);
86template <
int num_dimensions,
class elemT>
87inline Array<num_dimensions, elemT>&
in_place_exp(Array<num_dimensions, elemT>& v);
100template <
int num_dimensions,
class elemT>
101inline Array<num_dimensions, elemT>&
in_place_abs(Array<num_dimensions, elemT>& v);
113template <
class T,
class FUNCTION>
144template <
int num_dim,
typename elemT,
typename FunctionObjectPtr>
156template <
int num_dim,
typename elemT,
typename FunctionObjectPtr>
173#if !defined(__GNUC__) && !defined(_MSC_VER)
174# define ActualFunctionObjectPtrIter VectorWithOffset<shared_ptr<ArrayFunctionObject<1, elemT>>>::const_iterator
183# define ActualFunctionObjectPtrIter shared_ptr<ArrayFunctionObject<1, elemT>> const*
201template <
int num_dim,
typename elemT,
typename FunctionObjectPtrIter>
203 FunctionObjectPtrIter start,
204 FunctionObjectPtrIter stop);
207template <
typename elemT,
typename FunctionObjectPtrIter>
226template <
int num_dim,
typename elemT,
typename FunctionObjectPtrIter>
228 const Array<num_dim, elemT>& in_array,
229 FunctionObjectPtrIter start,
230 FunctionObjectPtrIter stop);
240template <
int num_dim,
typename elemT>
242 const Array<num_dim, elemT>& in_array,
243 ActualFunctionObjectPtrIter start,
244 ActualFunctionObjectPtrIter stop);
250template <
typename elemT>
252 const Array<1, elemT>& in_array,
253 ActualFunctionObjectPtrIter start,
254 ActualFunctionObjectPtrIter stop);
256template <
typename elemT,
typename FunctionObjectPtrIter>
261 const Array<1, elemT>& in_array,
262 FunctionObjectPtrIter start,
263 FunctionObjectPtrIter stop);
265template <
int num_dim,
typename elemT>
266inline void transform_array_to_periodic_indices(Array<num_dim, elemT>& out_array,
const Array<num_dim, elemT>& in_array);
267template <
int num_dim,
typename elemT>
268inline void transform_array_from_periodic_indices(Array<num_dim, elemT>& out_array,
const Array<num_dim, elemT>& in_array);
273#undef ActualFunctionObjectPtrIter
Declaration of class stir::ArrayFunctionObject.
Implementations for ArrayFunction.h.
defines the stir::Array class for multi-dimensional (numeric) arrays
Array< 1, elemT > & in_place_abs(Array< 1, elemT > &v)
Replace elements by their absolute value, 1D version.
Definition ArrayFunction.inl:82
void in_place_apply_array_function_on_1st_index(Array< num_dim, elemT > &array, FunctionObjectPtr f)
Apply a function object on all possible 1d arrays extracted by keeping all indices fixed,...
Definition ArrayFunction.inl:115
T & in_place_apply_function(T &v, FUNCTION f)
apply any function(object) to each element of the multi-dimensional array
Definition ArrayFunction.inl:101
void apply_array_function_on_1st_index(Array< num_dim, elemT > &out_array, const Array< num_dim, elemT > &in_array, FunctionObjectPtr f)
apply any function(object) to each element of the multi-dimensional array, storing results in a diffe...
Definition ArrayFunction.inl:152
void in_place_apply_array_functions_on_each_index(Array< num_dim, elemT > &array, FunctionObjectPtrIter start, FunctionObjectPtrIter stop)
Apply a sequence of 1d array-function objects on every dimension of the input array.
Definition ArrayFunction.inl:197
void apply_array_functions_on_each_index(Array< num_dim, elemT > &out_array, const Array< num_dim, elemT > &in_array, FunctionObjectPtrIter start, FunctionObjectPtrIter stop)
Apply a sequence of 1d array-function objects on every dimension of the input array,...
Definition ArrayFunction.inl:220
Array< 1, elemT > & in_place_exp(Array< 1, elemT > &v)
Replace elements by their exponentiation, 1D version.
Definition ArrayFunction.inl:64
Array< 1, elemT > & in_place_log(Array< 1, elemT > &v)
Replace elements by their logarithm, 1D version.
Definition ArrayFunction.inl:46
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...