xerus
a general purpose tensor library
indexedTensor_tensor_evaluate.cpp File Reference

Implementation of the (indexed) Tensor evaluation (ie. generlized transpositions). More...

#include <xerus/basic.h>
#include <xerus/index.h>
#include <xerus/misc/check.h>
#include <xerus/tensor.h>
#include <memory>
#include <xerus/misc/basicArraySupport.h>
#include <xerus/misc/containerSupport.h>
#include <xerus/misc/performanceAnalysis.h>
#include <xerus/misc/internal.h>

Go to the source code of this file.

Namespaces

 xerus
 The main namespace of xerus.
 
 xerus::internal
 Namespace for function and classes designated only for internal use.
 

Macros

#define VLA(T, name)   auto name##_store = xerus::misc::make_unique_array(new T); const auto & (name) = name##_store.get();
 

Functions

bool xerus::internal::check_position (size_t &_position, const std::pair< size_t, value_t > &_entry, const size_t *const _baseIndexDim, const size_t *const _divisors, const size_t *const _attributes, const bool *const _fixedFlags, const bool *const _traceFlags, const size_t numIndices)
 
void xerus::internal::evaluate (IndexedTensorWritable< Tensor > &&_out, IndexedTensorReadOnly< Tensor > &&_base)
 
std::vector< size_t > xerus::internal::get_dimension_vector (const std::vector< Index > &_indices)
 
size_t xerus::internal::get_position (const std::pair< size_t, value_t > &_entry, const size_t *const _baseIndexDim, const size_t *const _divisors, const size_t *const _attributes, const size_t numIndices)
 
std::vector< size_t > xerus::internal::get_step_sizes (const std::vector< Index > &_indices)
 
void xerus::increase_indices (const size_t _i, value_t *&_outPosition, const std::vector< size_t > &_stepSizes, const std::vector< size_t > &_baseDimensions)
 
void xerus::internal::increase_indices (const size_t _i, const value_t *&_oldPosition, const std::vector< size_t > &_steps, const std::vector< size_t > &_multDimensions)
 
void xerus::reshuffle (Tensor &_out, const Tensor &_base, const std::vector< size_t > &_shuffle)
 : Performs a simple reshuffle. Much less powerfull then a full evaluate, but more efficient. More...
 
Tensor xerus::reshuffle (const Tensor &_base, const std::vector< size_t > &_shuffle)
 
void xerus::internal::sum_traces (value_t *const _newPosition, const value_t *_oldPosition, const std::vector< size_t > &_doubleSteps, const std::vector< size_t > &_doubleMultDimensions, const size_t _numSummations)
 
void xerus::internal::sum_traces (value_t *const _newPosition, const value_t *_oldPosition, const std::vector< size_t > &_doubleSteps, const std::vector< size_t > &_doubleMultDimensions, const size_t _numSummations, const size_t _orderedIndicesMultDim)
 

Detailed Description

Implementation of the (indexed) Tensor evaluation (ie. generlized transpositions).

Definition in file indexedTensor_tensor_evaluate.cpp.

Macro Definition Documentation

◆ VLA

#define VLA (   T,
  name 
)    auto name##_store = xerus::misc::make_unique_array(new T); const auto & (name) = name##_store.get();