Qulacs-Osaka / qulacs-osaka

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

NoisyEvolutionのc_opsに空が指定されるとsegmentation faultする #374

Closed forest1040 closed 2 years ago

forest1040 commented 2 years ago
import numpy as np

from qulacs import QuantumState,Observable
from qulacs.gate import NoisyEvolution

# instance
n_qubits = 4
gamma = 0.5474999999999999
depth = 10
step = 0.8
time = step * depth

c_ops = []

# op = GeneralQuantumOperator(n_qubits)
# op2 = GeneralQuantumOperator(n_qubits)
# op.add_operator(1., "Z 0")
# op2.add_operator(1., "Z 1")
# c_ops.append(op)
# c_ops.append(op2)

# hamiltonian
hamiltonian = Observable(n_qubits)
# X-term
for i in range(n_qubits):
    hamiltonian.add_operator(gamma, "X {0}".format(i))

gate = NoisyEvolution(hamiltonian, c_ops, time, step)
state = QuantumState(n_qubits)

for i in range(2**n_qubits):
    state.set_computational_basis(i)
    print("done:",i)
    gate.update_quantum_state(state)
forest1040 commented 2 years ago

調査します。

forest1040 commented 2 years ago

c_opsを空リストにして、state.set_computational_basis(i)を呼び出して、 gate.update_quantum_state(state)を実行すると落ちるようです。 どちらか片方だけだと落ちません。

forest1040 commented 2 years ago

https://github.com/Qulacs-Osaka/qulacs-osaka/pull/376 で修正