diff --git a/src/include/multi_array_operation.cc.h b/src/include/multi_array_operation.cc.h index 919d1e7..fc61082 100644 --- a/src/include/multi_array_operation.cc.h +++ b/src/include/multi_array_operation.cc.h @@ -108,6 +108,27 @@ namespace MultiArrayTools return out; } + template + template + auto OperationBase::pto(const std::shared_ptr&... inds) const + -> MultiArray + { + MultiArray out(inds->range()...); + out(inds...).par() = THIS(); + return out; + } + + template + template + auto OperationBase::paddto(const std::shared_ptr&... inds) const + -> MultiArray + { + MultiArray out(inds->range()..., + static_cast(0)); + out(inds...).par() += THIS(); + return out; + } + template template auto OperationBase::a(const std::shared_ptr>& ll, diff --git a/src/include/multi_array_operation.h b/src/include/multi_array_operation.h index 4d88ad1..55d1bbc 100644 --- a/src/include/multi_array_operation.h +++ b/src/include/multi_array_operation.h @@ -73,6 +73,14 @@ namespace MultiArrayTools auto addto(const std::shared_ptr&... inds) const -> MultiArray; + template + auto pto(const std::shared_ptr&... inds) const + -> MultiArray; + + template + auto paddto(const std::shared_ptr&... inds) const + -> MultiArray; + template // Args = Operation Classes auto a(const std::shared_ptr>& ll, const Args&... args) const -> Operation,OperationClass, Args...>;