20 #ifndef CIVITA_INTERPOLATE_HYPERCUBE_H 21 #define CIVITA_INTERPOLATE_HYPERCUBE_H 37 std::vector<std::pair<XVector, std::vector<std::size_t>>>
sortedArgHC;
38 void sortAndAdd(
const XVector&);
41 vector<std::size_t> splitAndRotate(std::size_t)
const;
48 WeightedIndex(std::size_t index,
double weight): index(index), weight(weight) {}
53 bool argIsOnDestHypercube=
false;
65 double operator[](std::size_t)
const override;
std::vector< std::size_t > rotation
permutation of axes of interimHC and this->hypercube()
std::vector< std::size_t > strides
strides along each dimension of this->hypercube()
WeightedIndex(std::size_t index, double weight)
Timestamp timestamp() const override
timestamp indicating how old the dependendent data might be. Used in CachedTensorOp to determine when...
structure for referring to an argument index and its weight
std::chrono::time_point< std::chrono::high_resolution_clock > Timestamp
vector< WeightedIndexVector > weightedIndices
map from this tensor's index into the argument tensor
arguments relevant for tensor expressions, not always meaningful. Exception thrown if not...
std::vector< std::pair< XVector, std::vector< std::size_t > > > sortedArgHC
std::shared_ptr< ITensor > TensorPtr
Hypercube interimHC
hypercube that's been rotated to match the arguments hypercube
Interpolates its argument to its hypercube rank must equal arg->rank(), and xvectors type must match...