| 108 | } |
| 109 | |
| 110 | void LinearDepthDecomposition::execute(std::shared_ptr<QNode> node, std::shared_ptr<QNode> parent_node) |
| 111 | { |
| 112 | switch (node->getNodeType()) |
| 113 | { |
| 114 | case GATE_NODE: |
| 115 | return execute(std::dynamic_pointer_cast<AbstractQGateNode>(node), parent_node); |
| 116 | break; |
| 117 | |
| 118 | case CIRCUIT_NODE: |
| 119 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractQuantumCircuit>(node), parent_node); |
| 120 | break; |
| 121 | |
| 122 | case PROG_NODE: |
| 123 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractQuantumProgram>(node), parent_node); |
| 124 | break; |
| 125 | |
| 126 | case MEASURE_GATE: |
| 127 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractQuantumMeasure>(node), parent_node); |
| 128 | break; |
| 129 | |
| 130 | case CLASS_COND_NODE: |
| 131 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractClassicalProg>(node), parent_node); |
| 132 | break; |
| 133 | |
| 134 | case QIF_START_NODE: |
| 135 | case WHILE_START_NODE: |
| 136 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractControlFlowNode>(node), parent_node); |
| 137 | break; |
| 138 | |
| 139 | case RESET_NODE: |
| 140 | return QNodeDeepCopy::execute(std::dynamic_pointer_cast<AbstractQuantumReset>(node), parent_node); |
| 141 | break; |
| 142 | } |
| 143 | |
| 144 | QCERR_AND_THROW(run_fail, "error: unsupport copy-node type."); |
| 145 | } |
| 146 | |
| 147 | static QStat get_U4_matrix(prob_vec params, bool is_dagger) |
| 148 | { |
nothing calls this directly
no test coverage detected