Function initPauliHamil

Source
pub unsafe extern "C" fn initPauliHamil(
    hamil: PauliHamil,
    coeffs: *mut f64,
    codes: *mut pauliOpType,
)
Expand description

Initialise ::PauliHamil instance \p hamil with the given term coefficients and Pauli codes (one for every qubit in every term).

Arguments \p coeffs and \p codes encode a weighted sum of Pauli operators, with the same format as other QuEST functions (like calcExpecPauliSum()).

This is useful to set the elements of the ::PauliHamil in batch. \n For example

int numQubits = 3;
int numTerms = 2;
PauliHamil hamil = createPauliHamil(numQubits, numTerms);

// hamil = 0.5 X0 Y1 - 0.5 Z1 X3
initPauliHamil(hamil,
    (qreal[]) {0.5, -0.5},
    (enum pauliOpType[]) {PAULI_X,PAULI_Y,PAULI_I, PAULI_I, PAULI_Z, PAULI_X});

The initialised ::PauliHamil can be previewed with reportPauliHamil().

\p hamil must be already created with createPauliHamil(), or createPauliHamilFromFile().

@see

  • reportPauliHamil()
  • createPauliHamil()
  • createPauliHamilFromFile()

@ingroup type @param[in, out] hamil an existing ::PauliHamil instance to be modified @param[in] coeffs an array of sum term coefficients, which must have length hamil.numSumTerms @param[in] codes a flat array of Pauli codes, of length hamil.numSumTerms*hamil.numQubits @throws invalidQuESTInputError()

  • if \p hamil has invalid parameters (\p numQubits <= 0, \p numSumTerms <= 0)
  • if any code in \p codes is not a valid Pauli code (::pauliOpType) @author Tyson Jones