QkTargetEntry
typedef struct QkTargetEntry QkTargetEntry타겟의 게이트 맵을 나타내는 쿼비트 인자와 프로퍼티의 매핑입니다. 이 기능은 C에서 사용할 수 있는 유효한 네이티브 매핑이 없기 때문에 사용됩니다.
다음은 이 구조가 어떻게 작동하는지에 대한 예시입니다:
#include <qiskit.h>
#include <math.h>
// Create a Target Entry for a CX Gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
// Set a name for the entry
qk_target_entry_set_name(entry, "cx_gate");
// Add mapping between (0,1) and properties duration of 10e-9 and unknown error.
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 10e-9, NAN);
// Add mapping between Global, and no set duration NAN and error of 0.003)
qk_target_entry_add_property(entry, NULL, 0, NAN, 0.003);함수
qk_target_entry_new
QkTargetEntry *qk_target_entry_new(QkGate operation)
QkGate 인스턴스를 기반으로 QkTarget 에 항목을 생성합니다.
예
QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);매개변수
- 작업 - 이 대상 항목이 정의하는 속성을 가진
QkGate.QkGate에서 매개변수(qk_gate_num_params에서 확인할 수 있음)를 받는 경우 모든 매개변수 값을 허용하는 대상에 인스트럭션으로 추가됩니다. 게이트가 고정 매개변수 값만 허용하는 경우qk_target_entry_new_fixed대신 사용할 수 있습니다.
리턴
새로운 QkTargetEntry 에 대한 포인터입니다.
qk_target_entry_new_measure
QkTargetEntry *qk_target_entry_new_measure(void)
QkTarget 에 측정 지침을 추가하기 위한 새 항목을 만듭니다.
예
QkTargetEntry *entry = qk_target_entry_new_measure();
// Add fixed duration and error rates from qubits at index 0 to 4.
for (uint32_t i = 0; i < 5; i++) {
// Measure is a single qubit instruction
uint32_t qargs[1] = {i};
qk_target_entry_add_property(entry, qargs, 1, 1.928e-10, 7.9829e-11);
}
// Add the entry to a target with 5 qubits
QkTarget *measure_target = qk_target_new(5);
qk_target_add_instruction(measure_target, entry);리턴
측정 지침에 대한 새로운 QkTargetEntry 포인터입니다.
qk_target_entry_new_reset
QkTargetEntry *qk_target_entry_new_reset(void)
QkTarget 에 재설정 명령을 추가하기 위한 새 항목을 만듭니다.
예
QkTargetEntry *entry = qk_target_entry_new_reset();
// Add fixed duration and error rates from qubits at index 0 to 2.
for (uint32_t i = 0; i < 3; i++) {
// Reset is a single qubit instruction
uint32_t qargs[1] = {i};
qk_target_entry_add_property(entry, qargs, 1, 1.2e-11, 5.9e-13);
}
// Add the entry to a target with 3 qubits
QkTarget *reset_target = qk_target_new(3);
qk_target_add_instruction(reset_target, entry);리턴
재설정 명령에 대한 새로운 QkTargetEntry 포인터입니다.
qk_target_entry_new_fixed
QkTargetEntry *qk_target_entry_new_fixed(QkGate operation, double *params, const char *name)
매개변수 없이 QkGate 인스턴스를 기반으로 QkTarget 에 항목을 생성합니다.
예
double crx_params[1] = {3.14};
QkTargetEntry *entry = qk_target_entry_new_fixed(QkGate_CRX, crx_params, "crx_fixed")";안전
params 유형은 길이가 QkGate 의 기대치와 일치하는 double 의 배열에 대한 포인터가 될 것으로 예상됩니다. 배열이 충분히 길지 않으면 배열의 범위를 벗어나 읽히므로 이 함수의 동작이 정의되지 않습니다. 주어진 게이트에 대한 파라미터가 없는 경우 널 포인터가 될 수 있습니다. qk_gate_num_params 에서 특정 게이트에 필요한 큐비트 수를 확인할 수 있습니다.
포인터는 name 유효한 UTF-8 문자열로 구성된 C 문자열이거나 null 포인터여야 합니다.
일반 매개변수와 함께 QkGate 을 추가하는 것은 현재 지원되지 않습니다.
매개변수
- 작업 - 이 대상 항목이 정의하는 속성을 가진
QkGate. - 매개변수 - 인스트럭션이 보정되는 매개변수에 대한 포인터입니다.
- 이름 – 대상에서 명령어에 대한 선택적 이름. NULL 포인터가 제공되면 해당 항목은 작업의 기본 이름을 사용합니다.
리턴
새로운 QkTargetEntry 에 대한 포인터입니다.
qk_target_entry_num_properties
size_t qk_target_entry_num_properties(const QkTargetEntry *entry)
대상 항목에 저장된 속성 수를 검색합니다.
예
// Create an entry for an H gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
size_t props_size = qk_target_entry_num_properties(entry);안전
entry 이 QkTargetEntry 객체에 대한 유효한 널이 아닌 포인터가 아닌 경우 동작이 정의되지 않습니다.
매개변수
- 항목 - 매핑 객체에 대한 포인터입니다.
리턴
QkTargetEntry 에 있는 속성 수입니다.
qk_target_entry_free
void qk_target_entry_free(QkTargetEntry *entry)
항목을 해제합니다.
예
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
qk_target_entry_free(entry);안전
entry 이 QkTargetEntry 객체에 대한 유효한 널이 아닌 포인터가 아닌 경우 동작이 정의되지 않습니다.
qk_target_add_instruction 을 통해 QkTarget 에 항목을 추가하면 항목 포인터가 해제되며, 이 함수는 QkTarget 인스턴스에 항목을 추가하지 않는 경우에만 대체로 사용하도록 되어 있습니다.
매개변수
- 항목 - 해제할 매핑 객체에 대한 포인터입니다.
qk_target_entry_add_property
QkExitCode qk_target_entry_add_property(QkTargetEntry *entry, uint32_t *qargs, uint32_t num_qubits, double duration, double error)
할당된 qarg를 기반으로 인스트럭션 프로퍼티 인스턴스를 추가합니다.
예
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 0.0, 0.1);안전
entry 이 QkTargetEntry 객체에 대한 유효한 널이 아닌 포인터가 아닌 경우 동작이 정의되지 않습니다.
매개변수
- 항목 - 항목 객체에 대한 포인터입니다.
- qargs - 게이트를 추가할
uint32_t쿼비트 인덱스 배열에 대한 포인터로, 전역 속성을 확인하기 위한 널 포인터일 수 있습니다. - 숫자_쿼비트 - qargs 배열의 길이입니다.
- 기간 - 특정 큐비트 집합에 대한 인스트럭션의 기간(초)입니다.
- 오류 - 특정 큐비트 집합에 대한 인스트럭션의 평균 오류율입니다.
리턴
종료 코드.
qk_target_entry_set_name
QkExitCode qk_target_entry_set_name(QkTargetEntry *entry, const char *name)
대상 항목에 사용자 정의 이름을 설정합니다.
예
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
qk_target_entry_set_name(entry, "cx_gate");안전
가 유효한 null이 아닌 객체 QkTargetEntry 포인터가 아닐 경우 entry 동작이 정의되지 않습니다. 포인터는 name 유효한 UTF-8 문자열로 구성된 C 문자열이거나 null 포인터여야 합니다.
매개변수
- 항목 - 항목 객체에 대한 포인터입니다.
- 이름 – 대상 항목에 설정할 이름.
리턴
QkExitCode 작업이 성공했는지 여부를 명시합니다.