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);パラメーター
- operation - このターゲット・エントリが定義するプロパティを持つ、
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 型は、 double の配列へのポインタであることが期待され、その長さは QkGate の期待値と一致する。 配列の長さが十分でない場合、配列の境界外を読み込むことになるため、この関数の動作は未定義である。 指定されたゲートのパラメータがない場合は、NULLポインタになることもある。 qk_gate_num_params 、与えられたゲートに必要な量子ビットの数を調べることができる。
ポインタ name は、有効な UTF-8 文字で構成されるC文字列、またはヌルポインタのいずれかであることが期待される。
現在のところ、通常のパラメータによる QkGate の追加はサポートされていない。
パラメーター
- operation - このターゲット・エントリが定義するプロパティを持つ、
QkGate。 - params - 命令が校正されるパラメータへのポインタ.
- name – ターゲット内の命令に対する任意の名前。 ヌルポインタが指定された場合、エントリは操作のデフォルト名を使用します。
戻り値
新しい 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 オブジェクトへの NULL ではないポインタでない場合の動作は未定義である。
パラメーター
- entry - マッピング・オブジェクトへのポインタ。
戻り値
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 オブジェクトへの NULL ではないポインタでない場合の動作は未定義である。
エントリーのポインターは、 qk_target_add_instruction を介して QkTarget に追加されると解放される。この関数は、エントリーが QkTarget インスタンスに追加されない場合にのみ、代わりに使用されることを意図している。
パラメーター
- entry - 解放されるマッピング・オブジェクトへのポインタ.
qk_target_entry_add_property
QkExitCode qk_target_entry_add_property(QkTargetEntry *entry, uint32_t *qargs, uint32_t num_qubits, double duration, double error)
割り当てられた qargs に基づいて、命令プロパティのインスタンスを追加します。
例
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 オブジェクトへの NULL ではないポインタでない場合の動作は未定義である。
パラメーター
- entry - エントリー・オブジェクトへのポインタ。
- qargs - ゲートを追加する
uint32_tの量子ビットインデックスの配列へのポインタ. - num_qubits - qargs配列の長さ。
- duration - 特定の量子ビットのセットにおける命令の持続時間(秒)。
- error - 特定の量子ビットの集合における命令の平均エラー率。
戻り値
終了コード。
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文字列、またはヌルポインタのいずれかであることが期待される。
パラメーター
- entry - エントリー・オブジェクトへのポインタ。
- name – 対象エントリに設定する名前。
戻り値
QkExitCode 操作が成功したかどうかを指定する。