順序関数
qf_ferm_op_canonical_order
QfFermionOperator *qf_ferm_op_canonical_order(const QfFermionOperator *op)
フェルミオン演算子のコピーを、その項が正準順序で並んだ状態で返します。
各項は、その係数には依存せず、各項の構造(それが表す演算子列)のみに基づいて、標準的な順序に並べ替えられています。 したがって、演算子がどのように組み立てられたかに関わらず、与えられた項の集合に対しては、その順序は決定的である。 式そのものは変更されません。これは単に項の順序を入れ替えるだけであり、演算子を単純化したり、標準形にしたりするものではありません。
1QfFermionOperator *op = qf_ferm_op_zero();
2bool actions[2] = {true, false};
3uint32_t modes_a[2] = {1, 0};
4QkComplex64 coeff_a = {1.0, 0.0};
5qf_ferm_op_add_term(op, 2, actions, modes_a, &coeff_a);
6uint32_t modes_b[2] = {0, 1};
7QkComplex64 coeff_b = {2.0, 0.0};
8qf_ferm_op_add_term(op, 2, actions, modes_b, &coeff_b);
9
10QfFermionOperator *ordered = qf_ferm_op_canonical_order(op);任意の群インデックス(参照 qf_ferm_op_get_groups())は保持されます。群インデックスは項ごとのタグであり、項の順序に依存しないため、各項は移動する際にもその群インデックスを保持したままになります。 その後、同じグループに属する項は、もはや連続しなくなります。 入力にグループが含まれていない場合、結果にもグループは含まれません。
パラメーター
- op – 順序を変更するオペランドへのポインタ。
戻り値
作成された演算子へのポインタ。
qf_maj_op_canonical_order
QfMajoranaOperator *qf_maj_op_canonical_order(const QfMajoranaOperator *op)
マジョラナ演算子のコピーを、その項が標準的な順序で並んだ状態で返します。
各項は、その係数には依存せず、各項の構造(それが表す演算子列)のみに基づいて、標準的な順序に並べ替えられています。 したがって、演算子がどのように組み立てられたかに関わらず、与えられた項の集合に対しては、その順序は決定的である。 項そのものは変更されません。これは単に項の順序を入れ替えるだけであり、演算子を単純化するものではありません。
1QfMajoranaOperator *op = qf_maj_op_zero();
2uint32_t modes_a[2] = {1, 0};
3QkComplex64 coeff_a = {1.0, 0.0};
4qf_maj_op_add_term(op, 2, modes_a, &coeff_a);
5uint32_t modes_b[2] = {0, 1};
6QkComplex64 coeff_b = {2.0, 0.0};
7qf_maj_op_add_term(op, 2, modes_b, &coeff_b);
8
9QfMajoranaOperator *ordered = qf_maj_op_canonical_order(op);任意の群インデックス(参照 qf_maj_op_get_groups())は保持されます。群インデックスは項ごとのタグであり、項の順序に依存しないため、各項は移動する際にもその群インデックスを保持したままになります。 その後、同じグループに属する項は、もはや連続しなくなります。 入力にグループが含まれていない場合、結果にもグループは含まれません。
パラメーター
- op – 順序を変更するオペランドへのポインタ。
戻り値
作成された演算子へのポインタ。