MCPcopy Create free account
hub / github.com/OriginQ/QPanda-2 / get_U4_matrix

Function get_U4_matrix

Core/Utilities/Tools/MultiControlGateDecomposition.cpp:147–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145}
146
147static QStat get_U4_matrix(prob_vec params, bool is_dagger)
148{
149 QPANDA_ASSERT(4 != params.size(), "U4 params error");
150
151 auto alpha = params[0];
152 auto beta = params[1];
153 auto gamma = params[2];
154 auto delta = params[3];
155
156 QStat _U4;
157
158 QStat matrix;
159 _U4.emplace_back(qcomplex_t(cos(alpha - beta / 2 - delta / 2)*cos(gamma / 2),
160 sin(alpha - beta / 2 - delta / 2)*cos(gamma / 2)));
161 _U4.emplace_back(qcomplex_t(-cos(alpha - beta / 2 + delta / 2)*sin(gamma / 2),
162 -sin(alpha - beta / 2 + delta / 2)*sin(gamma / 2)));
163 _U4.emplace_back(qcomplex_t(cos(alpha + beta / 2 - delta / 2)*sin(gamma / 2),
164 sin(alpha + beta / 2 - delta / 2)*sin(gamma / 2)));
165 _U4.emplace_back(qcomplex_t(cos(alpha + beta / 2 + delta / 2)*cos(gamma / 2),
166 sin(alpha + beta / 2 + delta / 2)*cos(gamma / 2)));
167
168 if (is_dagger) dagger(_U4);
169 return _U4;
170}
171
172void LinearDepthDecomposition::execute(std::shared_ptr<AbstractQGateNode> cur_node,
173 std::shared_ptr<QNode> parent_node)

Callers 1

executeMethod · 0.85

Calls 5

daggerFunction · 0.85
cosFunction · 0.50
sinFunction · 0.50
sizeMethod · 0.45
emplace_backMethod · 0.45

Tested by

no test coverage detected