11 #ifndef EXATN_NUMERICS_TENSOR_OPERATION_HPP_
12 #define EXATN_NUMERICS_TENSOR_OPERATION_HPP_
14 #include "tensor_basic.hpp"
29 using TensorOpExecHandle = std::size_t;
31 class TensorNodeExecutor;
42 unsigned int num_operands,
43 unsigned int num_scalars);
52 virtual bool isSet()
const = 0;
59 runtime::TensorOpExecHandle * exec_handle) = 0;
63 virtual void printItFile(std::ofstream & output_file)
const;
79 bool * conjugated =
nullptr)
const;
83 bool conjugated =
false);
92 std::complex<double>
getScalar(
unsigned int scalar_num)
const;
96 const std::complex<double> scalar);
106 void setId(std::size_t
id);
109 std::size_t
getId()
const;
113 std::string pattern_;
114 std::vector<std::pair<std::shared_ptr<Tensor>,
bool>> operands_;
115 std::vector<std::complex<double>> scalars_;
116 unsigned int num_operands_;
117 unsigned int num_scalars_;
118 TensorOpCode opcode_;
122 using createTensorOpFn = std::unique_ptr<TensorOperation> (*)(void);
128 #endif //EXATN_NUMERICS_TENSOR_OPERATION_HPP_
unsigned int getNumOperandsSet() const
Definition: tensor_operation.cpp:69
unsigned int getNumOperands() const
Definition: tensor_operation.cpp:64
TensorHashType getTensorOperandHash(unsigned int op_num) const
Definition: tensor_operation.cpp:74
unsigned int getNumScalars() const
Definition: tensor_operation.cpp:96
std::size_t getId() const
Definition: tensor_operation.cpp:137
virtual bool isSet() const =0
TensorOpCode getOpcode() const
Definition: tensor_operation.cpp:59
std::complex< double > getScalar(unsigned int scalar_num) const
Definition: tensor_operation.cpp:106
const std::string & getIndexPattern() const
Definition: tensor_operation.cpp:119
Definition: DriverClient.hpp:10
unsigned int getNumScalarsSet() const
Definition: tensor_operation.cpp:101
void setIndexPattern(const std::string &pattern)
Definition: tensor_operation.cpp:124
Definition: tensor_operation.hpp:36
virtual int accept(runtime::TensorNodeExecutor &node_executor, runtime::TensorOpExecHandle *exec_handle)=0
virtual void printIt() const
Definition: tensor_operation.cpp:22
TensorOperation(TensorOpCode opcode, unsigned int num_operands, unsigned int num_scalars)
Definition: tensor_operation.cpp:15
void setTensorOperand(std::shared_ptr< Tensor > tensor, bool conjugated=false)
Definition: tensor_operation.cpp:88
Definition: tensor_node_executor.hpp:36
std::shared_ptr< Tensor > getTensorOperand(unsigned int op_num, bool *conjugated=nullptr) const
Definition: tensor_operation.cpp:79
void setScalar(unsigned int scalar_num, const std::complex< double > scalar)
Definition: tensor_operation.cpp:112
void setId(std::size_t id)
Definition: tensor_operation.cpp:131