Qulacs-Osaka / qulacs-osaka

Development branch of qulacs at Osaka Univ
MIT License
13 stars 6 forks source link

Mark `const` as possible #380

Open ikanago opened 2 years ago

ikanago commented 2 years ago

scikit-qulacs をリファクタリングしているときに ParametricQuantumCircuit::backprop() がメンバ変数を書き換えないのであれば削除できる処理を見つけたのですが,ParametricQuantumCircuit::backprop()const 修飾されていなかったので処理を読む必要がありました. 結局 backprop() はメンバ変数を書き換えず,const 修飾しても qulacs-osaka のテストにすべてパスしたので const をつけようと思うのですが、QuantumCircuit::update_quantum_state()const 修飾する必要があり,修整範囲は広くなりそうです.

WATLE commented 1 year ago

これやります。

WATLE commented 1 year ago

ちなみに、 どの部分が削除できるか覚えてますか?

WATLE commented 1 year ago

QuantumCircuit::update_quantum_state() を const修飾するためには、 gateのupdate_quantum_state() も const修飾する必要があると思われますが、 内部で乱数状態を持つゲートがあるのでgateのupdate_quantum_state()はconst修飾不可能だと思われますが、 どうやってconst修飾しましたか?

ikanago commented 1 year ago

qulacs のほうにあげました.指摘の通りなのですが実はできてしまって,QuantumCircuit::_gate_liststd::vector<QuantumGateBase*> なのが const 修飾できてしまう原因っぽいです. もっと小さい規模のコードで試しても,同じように const 修飾したメソッドから const 修飾されていないメソッドが呼び出せました. https://wandbox.org/permlink/zp43W6AQ88ytTPmE