MCPcopy Create free account
hub / github.com/QuEST-Kit/QuEST / calcInnerProduct

Function calcInnerProduct

quest/src/api/calculations.cpp:49–61  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47
48
49qcomp calcInnerProduct(Qureg quregA, Qureg quregB) {
50 validate_quregFields(quregA, __func__);
51 validate_quregFields(quregB, __func__);
52 validate_quregsCanBeProducted(quregA, quregB, __func__);
53
54 // <A|B> or Tr(A^dagger B) = <<A|B>>
55 if (quregA.isDensityMatrix == quregB.isDensityMatrix)
56 return localiser_statevec_calcInnerProduct(quregA, quregB);
57
58 return (quregA.isDensityMatrix)?
59 localiser_densmatr_calcFidelityWithPureState(quregA, quregB, true): // <B|A^dagger|B>
60 localiser_densmatr_calcFidelityWithPureState(quregB, quregA, false); // <A|B|A>
61}
62extern "C" void _wrap_calcInnerProduct(Qureg bra, Qureg ket, qcomp* out) {
63
64 *out = calcInnerProduct(bra, ket);

Callers 1

_wrap_calcInnerProductFunction · 0.70

Tested by

no test coverage detected