QkTargetEntry
typedef struct QkTargetEntry QkTargetEntryEine Zuordnung von Qubit-Argumenten und Eigenschaften, die eine Gate-Map des Ziels darstellen. Diese Funktion wird verwendet, wenn keine gültigen nativen Mappings aus C verfügbar sind.
Hier ein Beispiel dafür, wie diese Struktur funktioniert:
#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);Funktionen
qk_target_entry_new
QkTargetEntry *qk_target_entry_new(QkGate operation)
Erstellt einen Eintrag in QkTarget basierend auf einer QkGate Instanz.
Beispiel
QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);Parameter
- operation - Die
QkGate, deren Eigenschaften dieser Zieleintrag definiert. WennQkGateParameter akzeptiert (was mitqk_gate_num_paramsüberprüft werden kann), wird es als eine Anweisung auf dem Ziel hinzugefügt, die jeden Parameterwert akzeptiert. Wenn das Gate nur einen festen Parameterwert akzeptiert, können Sie stattdessenqk_target_entry_new_fixedverwenden.
Rückgabe
Ein Verweis auf die neue QkTargetEntry.
qk_target_entry_new_measure
QkTargetEntry *qk_target_entry_new_measure(void)
Erzeugt einen neuen Eintrag für das Hinzufügen einer Messanweisung zu einer QkTarget.
Beispiel
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);Rückgabe
Ein Zeiger auf die neue QkTargetEntry für eine Messanweisung.
qk_target_entry_new_reset
QkTargetEntry *qk_target_entry_new_reset(void)
Erzeugt einen neuen Eintrag für das Hinzufügen einer Reset-Anweisung zu einer QkTarget.
Beispiel
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);Rückgabe
Ein Zeiger auf die neue QkTargetEntry für eine Reset-Anweisung.
qk_target_entry_new_fixed
QkTargetEntry *qk_target_entry_new_fixed(QkGate operation, double *params, const char *name)
Erstellt einen Eintrag in der QkTarget auf der Grundlage einer QkGate -Instanz ohne Parameter.
Beispiel
double crx_params[1] = {3.14};
QkTargetEntry *entry = qk_target_entry_new_fixed(QkGate_CRX, crx_params, "crx_fixed")";Sicherheit
Es wird erwartet, dass der Typ params ein Zeiger auf ein Array von double ist, dessen Länge den Erwartungen von QkGate entspricht. Wenn das Array nicht lang genug ist, ist das Verhalten dieser Funktion undefiniert, da sie außerhalb der Grenzen des Arrays liest. Es kann ein Null-Zeiger sein, wenn es keine Parameter für ein bestimmtes Tor gibt. Sie können unter qk_gate_num_params nachsehen, wie viele Qubits für ein bestimmtes Gatter erforderlich sind.
Der name Zeiger muss entweder ein C-String sein, der aus gültigen Zeichen ( UTF-8 ) besteht, oder ein Nullzeiger.
Das Hinzufügen einer QkGate mit regulären Parametern wird derzeit nicht unterstützt.
Parameter
- operation - Die
QkGate, deren Eigenschaften dieser Zieleintrag definiert. - params - Ein Zeiger auf die Parameter, für die die Anweisung kalibriert wird.
- name – Ein optionaler Name für die Anweisung im Ziel. Wenn ein Null-Zeiger angegeben wird, verwendet der Eintrag den Standardnamen der Operation.
Rückgabe
Ein Verweis auf die neue QkTargetEntry.
qk_target_entry_num_properties
size_t qk_target_entry_num_properties(const QkTargetEntry *entry)
Ruft die Anzahl der im Zieleintrag gespeicherten Eigenschaften ab.
Beispiel
// 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);Sicherheit
Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.
Parameter
- entry - Der Zeiger auf das Mapping-Objekt.
Rückgabe
Die Anzahl der Immobilien auf QkTargetEntry.
qk_target_entry_free
void qk_target_entry_free(QkTargetEntry *entry)
Gibt den Eintrag frei.
Beispiel
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
qk_target_entry_free(entry);Sicherheit
Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.
Ein Eintragszeiger wird freigegeben, wenn er über qk_target_add_instruction zu einer QkTarget -Instanz hinzugefügt wird. Diese Funktion ist nur als Alternative gedacht, wenn nie ein Eintrag zu einer QkTarget -Instanz hinzugefügt wird.
Parameter
- entry - Der Zeiger auf das freizugebende Mapping-Objekt.
qk_target_entry_add_property
QkExitCode qk_target_entry_add_property(QkTargetEntry *entry, uint32_t *qargs, uint32_t num_qubits, double duration, double error)
Fügt eine Instruktionseigenschaftsinstanz auf der Grundlage der ihr zugewiesenen qargs hinzu.
Beispiel
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);Sicherheit
Das Verhalten ist undefiniert, wenn entry kein gültiger, nicht-null Zeiger auf ein QkTargetEntry Objekt ist.
Parameter
- entry - Der Zeiger auf das Eintragsobjekt.
- qargs - Ein Zeiger auf das Array von
uint32_tQubit-Indizes, um das Tor hinzuzufügen, kann ein Null-Zeiger sein, um auf globale Eigenschaften zu prüfen. - num_qubits - Die Länge des qargs-Arrays.
- duration - Die Dauer des Befehls in Sekunden für den spezifischen Satz von Qubits.
- error - Die durchschnittliche Fehlerrate der Anweisung auf dem spezifischen Satz von Qubits.
Rückgabe
Ein Exit-Code.
qk_target_entry_set_name
QkExitCode qk_target_entry_set_name(QkTargetEntry *entry, const char *name)
Legt einen benutzerdefinierten Namen für den Zieleintrag fest.
Beispiel
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
qk_target_entry_set_name(entry, "cx_gate");Sicherheit
Das Verhalten ist undefiniert, wenn kein gültiger, nicht-null entry Zeiger auf ein QkTargetEntry Objekt ist. Der name Zeiger muss entweder ein C-String sein, der aus gültigen Zeichen ( UTF-8 ) besteht, oder ein Nullzeiger.
Parameter
- entry - Der Zeiger auf das Eintragsobjekt.
- name – Der Name, der für den Zieleintrag festgelegt werden soll.
Rückgabe
QkExitCode Angabe, ob der Vorgang erfolgreich war.