Skip to main content
IBM Quantum Platform

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 - このターゲット・エントリが定義するプロパティを持つ、 QkGateQkGate がパラメータを取る場合(これは 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 操作が成功したかどうかを指定する。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。