qulacs

cppsim python interface

Subpackages

Package Contents

Classes

CausalConeSimulator

ClsNoisyEvolution

ClsNoisyEvolution_fast

ClsNpairQubitGate

ClsOneControlOneTargetGate

ClsOneQubitGate

ClsOneQubitRotationGate

ClsPauliGate

ClsPauliRotationGate

ClsReversibleBooleanGate

ClsStateReflectionGate

ClsTwoQubitGate

DensityMatrix

GeneralQuantumOperator

GradCalculator

NoiseSimulator

Observable

ParametricQuantumCircuit

PauliOperator

QuantumCircuit

QuantumCircuitSimulator

QuantumGateBase

QuantumGateDiagonalMatrix

QuantumGateMatrix

QuantumGateSparseMatrix

QuantumGate_Adaptive

QuantumGate_CP

QuantumGate_CPTP

QuantumGate_Instrument

QuantumGate_Probabilistic

QuantumGate_ProbabilisticInstrument

QuantumGate_SingleParameter

QuantumState

QuantumStateBase

SimulationResult

Functions

StateVector

StateVector

check_build_for_mpi

to_general_quantum_operator

class qulacs.CausalConeSimulator(arg0: ParametricQuantumCircuit, arg1: Observable)
build() None

Build

get_circuit_list() list[list[ParametricQuantumCircuit]]

Return circuit_list

get_coef_list() list[complex]

Return coef_list

get_expectation_value() complex

Return expectation_value

get_pauli_operator_list() list[list[PauliOperator]]

Return pauli_operator_list

class qulacs.ClsNoisyEvolution

Bases: QuantumGateBase

class qulacs.ClsNoisyEvolution_fast

Bases: QuantumGateBase

class qulacs.ClsNpairQubitGate

Bases: QuantumGateBase

class qulacs.ClsOneControlOneTargetGate

Bases: QuantumGateBase

class qulacs.ClsOneQubitGate

Bases: QuantumGateBase

class qulacs.ClsOneQubitRotationGate

Bases: QuantumGateBase

class qulacs.ClsPauliGate

Bases: QuantumGateBase

class qulacs.ClsPauliRotationGate

Bases: QuantumGateBase

class qulacs.ClsReversibleBooleanGate

Bases: QuantumGateBase

class qulacs.ClsStateReflectionGate

Bases: QuantumGateBase

class qulacs.ClsTwoQubitGate

Bases: QuantumGateBase

class qulacs.DensityMatrix(qubit_count: int)

Bases: QuantumStateBase

add_state(state: QuantumStateBase) None

Add state vector to this state

allocate_buffer() DensityMatrix

Allocate buffer with the same size

copy() DensityMatrix

Create copied insntace

get_classical_value(index: int) int

Get classical value

get_device_name() str

Get allocated device name

get_entropy() float

Get entropy

get_marginal_probability(measured_values: list[int]) float

Get merginal probability for measured values

get_matrix() numpy.ndarray

Get density matrix

get_qubit_count() int

Get qubit count

get_squared_norm() float

Get squared norm

get_zero_probability(index: int) float

Get probability with which we obtain 0 when we measure a qubit

load(state: QuantumStateBase) None
load(state: list[complex]) None
load(state: numpy.ndarray) None

Load quantum state represented as a two-dimensional list

multiply_coef(coef: complex) None

Multiply coefficient to this state

normalize(squared_norm: float) None

Normalize quantum state

sampling(sampling_count: int) list[int]
sampling(sampling_count: int, random_seed: int) list[int]

Sampling measurement results

set_Haar_random_state() None
set_Haar_random_state(seed: int) None

Set Haar random state

set_classical_value(index: int, value: int) None

Set classical value

set_computational_basis(comp_basis: int) None

Set state to computational basis

set_zero_state() None

Set state to |0>

to_json() str

to json string

to_string() str

to string

class qulacs.GeneralQuantumOperator(qubit_count: int)
add_operator(pauli_operator: PauliOperator) None
add_operator(coef: complex, pauli_string: str) None

Add Pauli operator

add_operator_copy(pauli_operator: PauliOperator) None

Add Pauli operator

add_operator_move(pauli_operator: PauliOperator) None

Add Pauli operator

apply_to_state(work_state: QuantumStateBase, state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None
apply_to_state(state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None

Apply observable to state_to_be_multiplied. The result is stored into dst_state.

copy() GeneralQuantumOperator

Create copied instance of General Quantum operator class

get_expectation_value(state: QuantumStateBase) complex

Get expectation value

get_expectation_value_single_thread(state: QuantumStateBase) complex

Get expectation value

get_matrix() scipy.sparse.csr_matrix

Get the Hermitian matrix representation of the observable

get_qubit_count() int

Get qubit count

get_state_dim() int

Get state dimension

get_term(index: int) PauliOperator

Get Pauli term

get_term_count() int

Get count of Pauli terms

get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex

Get transition amplitude

is_hermitian() bool

Get is Herimitian

to_json() str

to json string

class qulacs.GradCalculator
calculate_grad(parametric_circuit: ParametricQuantumCircuit, observable: Observable) list[complex]
calculate_grad(parametric_circuit: ParametricQuantumCircuit, observable: Observable, angles_of_gates: list[float]) list[complex]

Calculate Grad

class qulacs.NoiseSimulator(arg0: QuantumCircuit, arg1: QuantumState)
execute(arg0: int) list[int]

Sampling & Return result [array]

execute_and_get_result(arg0: int) SimulationResult

Simulate & Return ressult [array of (state, frequency)]

class qulacs.Observable(qubit_count: int)

Bases: GeneralQuantumOperator

add_operator(pauli_operator: PauliOperator) None
add_operator(coef: complex, string: str) None

Add Pauli operator

add_operator_copy(pauli_operator: PauliOperator) None

Add Pauli operator

add_operator_move(pauli_operator: PauliOperator) None

Add Pauli operator

add_random_operator(operator_count: int) None
add_random_operator(operator_count: int, seed: int) None

Add random pauli operator

apply_to_state(work_state: QuantumStateBase, state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None

Apply observable to state_to_be_multiplied. The result is stored into dst_state.

get_expectation_value(state: QuantumStateBase) float

Get expectation value

get_expectation_value_single_thread(state: QuantumStateBase) float

Get expectation value

get_qubit_count() int

Get qubit count

get_state_dim() int

Get state dimension

get_term(index: int) PauliOperator

Get Pauli term

get_term_count() int

Get count of Pauli terms

get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex

Get transition amplitude

solve_ground_state_eigenvalue_by_arnoldi_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex

Compute ground state eigenvalue by arnoldi method

solve_ground_state_eigenvalue_by_lanczos_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex

Compute ground state eigenvalue by lanczos method

solve_ground_state_eigenvalue_by_power_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex

Compute ground state eigenvalue by power method

class qulacs.ParametricQuantumCircuit(qubit_count: int)

Bases: QuantumCircuit

add_gate(gate: QuantumGateBase) None
add_gate(gate: QuantumGateBase, position: int) None

Add gate

add_parametric_RX_gate(index: int, angle: float) None

Add parametric Pauli-X rotation gate

add_parametric_RY_gate(index: int, angle: float) None

Add parametric Pauli-Y rotation gate

add_parametric_RZ_gate(index: int, angle: float) None

Add parametric Pauli-Z rotation gate

add_parametric_gate(gate: QuantumGate_SingleParameter) None
add_parametric_gate(gate: QuantumGate_SingleParameter, position: int) None

Add parametric gate

add_parametric_multi_Pauli_rotation_gate(index_list: list[int], pauli_ids: list[int], angle: float) None

Add parametric multi-qubit Pauli rotation gate

backprop(obs: GeneralQuantumOperator) list[float]

Do backprop

backprop_inner_product(state: QuantumState) list[float]

Do backprop with innder product

copy() ParametricQuantumCircuit

Create copied instance

get_parameter(index: int) float

Get parameter

get_parameter_count() int

Get parameter count

get_parametric_gate_position(index: int) int

Get parametric gate position

merge_circuit(circuit: ParametricQuantumCircuit) None

Merge another ParametricQuantumCircuit

remove_gate(position: int) None

Remove gate

set_parameter(index: int, parameter: float) None

Set parameter

class qulacs.PauliOperator(coef: complex = 1 + 0j)           PauliOperator(pauli_string: str, coef: complex = 1 + 0j)           PauliOperator(target_qubit_index_list: list[int], pauli_operator_type_list: str, coef: complex = 1 + 0j)
add_single_Pauli(index: int, pauli_type: int) None

Add Pauli operator to this term

change_coef(new_coef: complex) None

Change coefficient

copy() PauliOperator

Create copied instance of Pauli operator class

get_coef() complex

Get coefficient of Pauli term

get_expectation_value(state: QuantumStateBase) complex

Get expectation value

get_expectation_value_single_thread(state: QuantumStateBase) complex

Get expectation value

get_index_list() list[int]

Get list of target qubit indices

get_pauli_id_list() list[int]

Get list of Pauli IDs (I,X,Y,Z) = (0,1,2,3)

get_pauli_string() str

Get pauli string

get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex

Get transition amplitude

class qulacs.QuantumCircuit(qubit_count: int)
add_CNOT_gate(control: int, target: int) None

Add CNOT gate

add_CZ_gate(control: int, target: int) None

Add CZ gate

add_FusedSWAP_gate(target1: int, target2: int, block_size: int) None

Add FusedSWAP gate

add_H_gate(index: int) None

Add Hadamard gate

add_P0_gate(index: int) None

Add projection gate to |0> subspace

add_P1_gate(index: int) None

Add projection gate to |1> subspace

add_RX_gate(index: int, angle: float) None

Add Pauli-X rotation gate

Notes

Matrix Representation

\[\begin{split}R_X(\theta) = \exp(i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & i\sin(\frac{\theta}{2}) \\ i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RY_gate(index: int, angle: float) None

Add Pauli-Y rotation gate

Notes

Matrix Representation

\[\begin{split}R_Y(\theta) = \exp(i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & \sin(\frac{\theta}{2}) \\ -\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RZ_gate(index: int, angle: float) None

Add Pauli-Z rotation gate

Notes

Matrix Representation

\[\begin{split}R_Z(\theta) = \exp(i\frac{\theta}{2} Z) = \begin{pmatrix} e^{i\frac{\theta}{2}} & 0 \\ 0 & e^{-i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
add_RotInvX_gate(index: int, angle: float) None

Add Pauli-X rotation gate

Notes

Matrix Representation

\[\begin{split}R_X(\theta) = \exp(i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & i\sin(\frac{\theta}{2}) \\ i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RotInvY_gate(index: int, angle: float) None

Add Pauli-Y rotation gate

Notes

Matrix Representation

\[\begin{split}R_Y(\theta) = \exp(i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & \sin(\frac{\theta}{2}) \\ -\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RotInvZ_gate(index: int, angle: float) None

Add Pauli-Z rotation gate

Notes

Matrix Representation

\[\begin{split}R_Z(\theta) = \exp(i\frac{\theta}{2} Z) = \begin{pmatrix} e^{i\frac{\theta}{2}} & 0 \\ 0 & e^{-i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
add_RotX_gate(index: int, angle: float) None

Add Pauli-X rotation gate

Notes

Matrix Representation

\[\begin{split}RotX(\theta) = \exp(-i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & -i\sin(\frac{\theta}{2}) \\ -i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RotY_gate(index: int, angle: float) None

Add Pauli-Y rotation gate

Notes

Matrix Representation

\[\begin{split}RotY(\theta) = \exp(-i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & -\sin(\frac{\theta}{2}) \\ \sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
add_RotZ_gate(index: int, angle: float) None

Add Pauli-Z rotation gate

Notes

Matrix Representation

\[\begin{split}RotZ(\theta) = \exp(-i\frac{\theta}{2} Z) = \begin{pmatrix} e^{-i\frac{\theta}{2}} & 0 \\ 0 & e^{i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
add_SWAP_gate(target1: int, target2: int) None

Add SWAP gate

add_S_gate(index: int) None

Add pi/4 phase gate

add_Sdag_gate(index: int) None

Add adjoint of pi/4 phsae gate

add_T_gate(index: int) None

Add pi/8 phase gate

add_Tdag_gate(index: int) None

Add adjoint of pi/8 phase gate

add_U1_gate(index: int, lambda_: float) None

Add QASM U1 gate

add_U2_gate(index: int, phi: float, lambda_: float) None

Add QASM U2 gate

add_U3_gate(index: int, theta: float, phi: float, lambda_: float) None

Add QASM U3 gate

add_X_gate(index: int) None

Add Pauli-X gate

add_Y_gate(index: int) None

Add Pauli-Y gate

add_Z_gate(index: int) None

Add Pauli-Z gate

add_dense_matrix_gate(index: int, matrix: numpy.ndarray) None
add_dense_matrix_gate(index_list: list[int], matrix: numpy.ndarray) None

Add dense matrix gate

add_diagonal_observable_rotation_gate(observable: Observable, angle: float) None

Add diagonal observable rotation gate

add_gate(gate: QuantumGateBase) None
add_gate(gate: QuantumGateBase, position: int) None

Add gate with copy

add_multi_Pauli_gate(index_list: list[int], pauli_ids: list[int]) None
add_multi_Pauli_gate(pauli: PauliOperator) None

Add multi-qubit Pauli gate

add_multi_Pauli_rotation_gate(index_list: list[int], pauli_ids: list[int], angle: float) None
add_multi_Pauli_rotation_gate(pauli: PauliOperator) None

Add multi-qubit Pauli rotation gate

add_noise_gate(gate: QuantumGateBase, NoiseType: str, NoiseProbability: float) None

Add noise gate with copy

add_observable_rotation_gate(observable: Observable, angle: float, repeat: int) None

Add observable rotation gate

add_random_unitary_gate(index_list: list[int]) None
add_random_unitary_gate(index_list: list[int], seed: int) None

Add random unitary gate

add_sqrtX_gate(index: int) None

Add pi/4 Pauli-X rotation gate

add_sqrtXdag_gate(index: int) None

Add adjoint of pi/4 Pauli-X rotation gate

add_sqrtY_gate(index: int) None

Add pi/4 Pauli-Y rotation gate

add_sqrtYdag_gate(index: int) None

Add adjoint of pi/4 Pauli-Y rotation gate

calculate_depth() int

Calculate depth of circuit

copy() QuantumCircuit

Create copied instance

get_gate(position: int) QuantumGateBase

Get gate instance

get_gate_count() int

Get gate count

get_inverse() QuantumCircuit

get inverse circuit

get_qubit_count() int

Get qubit count

merge_circuit(circuit: QuantumCircuit) None
remove_gate(position: int) None

Remove gate

to_json() str
to_string() str

Get string representation

update_quantum_state(state: QuantumStateBase) None
update_quantum_state(state: QuantumStateBase, start: int, end: int) None
update_quantum_state(state: QuantumStateBase, seed: int) None
update_quantum_state(state: QuantumStateBase, start: int, end: int, seed: int) None

Update quantum state

class qulacs.QuantumCircuitSimulator(circuit: QuantumCircuit, state: QuantumStateBase)
copy_state_from_buffer() None

Copy buffer to state

copy_state_to_buffer() None

Copy state to buffer

get_expectation_value(observable: Observable) complex

Get expectation value

get_gate_count() int

Get gate count

initialize_random_state() None
initialize_random_state(seed: int) None

Initialize state with random pure state

initialize_state(arg0: int) None

Initialize state

simulate() None

Simulate circuit

simulate_range(start: int, end: int) None

Simulate circuit

swap_state_and_buffer() None

Swap state and buffer

class qulacs.QuantumGateBase
copy() QuantumGateBase

Create copied instance

get_control_index_list() list[int]

Get control qubit index list

get_control_index_value_list() list[tuple[int, int]]

Get control qubit pair index value list

get_control_value_list() list[int]

Get control qubit value list

get_inverse() QuantumGateBase

get inverse gate

get_matrix() numpy.ndarray

Get gate matrix

get_name() str

Get gate name

get_target_index_list() list[int]

Get target qubit index list

is_Clifford() bool

Check this gate is element of Clifford group

is_Gaussian() bool

Check this gate is element of Gaussian group

is_Pauli() bool

Check this gate is element of Pauli group

is_commute(gate: QuantumGateBase) bool

Check this gate commutes with a given gate

is_diagonal() bool

Check the gate matrix is diagonal

is_parametric() bool

Check this gate is parametric gate

to_json() str

to json string

to_string() str

to string

update_quantum_state(state: QuantumStateBase) None

Update quantum state

class qulacs.QuantumGateDiagonalMatrix

Bases: QuantumGateBase

class qulacs.QuantumGateMatrix

Bases: QuantumGateBase

add_control_qubit(index: int, control_value: int) None

Add control qubit

multiply_scalar(value: complex) None

Multiply scalar value to gate matrix

class qulacs.QuantumGateSparseMatrix

Bases: QuantumGateBase

class qulacs.QuantumGate_Adaptive

Bases: QuantumGateBase

class qulacs.QuantumGate_CP

Bases: QuantumGateBase

get_gate_list() list[QuantumGateBase]

get_gate_list

class qulacs.QuantumGate_CPTP

Bases: QuantumGateBase

QuantumGate_Instrument

get_gate_list() list[QuantumGateBase]

get_gate_list

class qulacs.QuantumGate_Probabilistic

Bases: QuantumGateBase

QuantumGate_ProbabilisticInstrument

get_cumulative_distribution() list[float]

get_cumulative_distribution

get_distribution() list[float]

get_distribution

get_gate_list() list[QuantumGateBase]

get_gate_list

optimize_ProbablisticGate() None

optimize_ProbablisticGate

class qulacs.QuantumGate_SingleParameter

Bases: QuantumGateBase

copy() QuantumGate_SingleParameter

Create copied instance

get_parameter_value() float

Get parameter value

set_parameter_value(value: float) None

Set parameter value

class qulacs.QuantumState(qubit_count: int)           QuantumState(qubit_count: int, use_multi_cpu: bool)

Bases: QuantumStateBase

add_state(state: QuantumStateBase) None

Add state vector to this state

allocate_buffer() QuantumState

Allocate buffer with the same size

copy() QuantumState

Create copied instance

get_amplitude(comp_basis: int) complex

Get Amplitude of a specified computational basis

get_classical_value(index: int) int

Get classical value

get_device_name() str

Get allocated device name

get_entropy() float

Get entropy

get_marginal_probability(measured_values: list[int]) float

Get merginal probability for measured values

get_qubit_count() int

Get qubit count

get_squared_norm() float

Get squared norm

get_vector() numpy.ndarray

Get state vector

get_zero_probability(index: int) float

Get probability with which we obtain 0 when we measure a qubit

load(state: QuantumStateBase) None
load(state: list[complex]) None

Load quantum state vector

multiply_coef(coef: complex) None

Multiply coefficient to this state

multiply_elementwise_function(func: Callable[[int], complex]) None

Multiply elementwise function

normalize(squared_norm: float) None

Normalize quantum state

sampling(sampling_count: int) list[int]
sampling(sampling_count: int, random_seed: int) list[int]

Sampling measurement results

set_Haar_random_state() None
set_Haar_random_state(seed: int) None

Set Haar random state

set_classical_value(index: int, value: int) None

Set classical value

set_computational_basis(comp_basis: int) None

Set state to computational basis

set_zero_state() None

Set state to |0>

to_json() str

to json string

to_string() str

to string

class qulacs.QuantumStateBase
class qulacs.SimulationResult
get_count() int

get state count

get_frequency(arg0: int) int

get state frequency

get_state(arg0: int) QuantumState

get state

qulacs.StateVector(arg0: int) QuantumState

StateVector

qulacs.check_build_for_mpi() bool
qulacs.to_general_quantum_operator(gate: QuantumGateBase, qubits: int, tol: float) GeneralQuantumOperator