オペレーター規約
C API では、演算子の個々の項に対して操作を行うためのさまざまな関数が提供されており、それらの構造に基づいて項を分割することができます。
グループ化
「グループ演算子の用語」 を参照してください。このモジュールの機能に関する詳細な説明については、演算子の構造を参照してください。
割り当て
C API では、ユーザーにグループインデックスの指定を常に任せるのではなく、グループ化情報を自動的に決定する一連の関数が用意されています。
コラム「 1 」 | コラム「 2 」 |
|---|---|
qf_ferm_op_group_terms_by_electronic_structure() | 演算子の項を、その電子構造に基づいて分類する。 |
解析
集合の指標には本質的な意味はない。それらは、どの項が互いに属し合うかを示すだけで、その理由については決して示さない。 したがって、グループ分けが「正しい」かどうかを報告する関数は存在しません。 その代わりに、C API は、既存のグループ化に関する、明確に定義された1つの限定的な質問にそれぞれ答える一連の関数を提供しています。これにより、下流の利用者が行う仮定を、呼び出しのたびに処理コストを払うのではなく、事前に確認することが可能になります。 これらは汎用演算子表現で動作するため、「 グループ化関数」 のページに記載されています。
フィルタリング
C API には、下流の計算に実質的な寄与をもたらさない項を演算子から削除するための関数のセットが用意されています。
メンバー
コラム「 1 」 | コラム「 2 」 |
|---|---|
qf_ferm_op_filter_diagonal_terms() | 演算子の項のうち、対角にあるものを除外する。 |
順序付け
C API には、演算子の項を、標準的な係数に依存しない順序、あるいは群の添字順に並べ替えるための関数が用意されています。
グループインデックスは、各項に付けられるタグであり、それらの項がどこに位置するかについては何も示さないため、あるグループの項は、一般的に演算子の全体に散在している。 グループごとに並べ替えると、各グループが1つの連続した範囲にまとめられます。これにより、すべての項をスキャンすることなく、二分探索によって要求されたグループを特定 qf_op_type_split_out_groups できるようになります。
メンバー
コラム「 1 」 | コラム「 2 」 |
|---|---|
qf_ferm_op_canonical_order() | フェルミオン演算子の項を、標準的な順序で並べ替えます。 |
qf_maj_op_canonical_order() | マジョラナ演算子の項を、標準的な順序で並べ替える。 |
qf_edge_op_canonical_order() | エッジ・頂点演算子の項を標準的な順序で並べ替えます。 |
qf_transfer_op_canonical_order() | 転送頂点演算子の項を、標準的な順序で並べ替えます。 |
qf_ferm_op_group_order() | フェルミオン演算子の項を、群指標順に並べ替えます。 |
qf_maj_op_group_order() | マジョラナ演算子の項を、群インデックス順に並べ替えます。 |
qf_edge_op_group_order() | エッジ・頂点演算子の項を、群インデックス順に並べ替えます。 |
qf_transfer_op_group_order() | 転送頂点演算子の項を、群の添字順に並べ替えます。 |