quantum-debugger 1.0.0__tar.gz → 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/AUTHORS.md +3 -4
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/CHANGELOG.md +8 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/PKG-INFO +4 -4
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/README.md +3 -3
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/__init__.py +1 -1
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/tebd.py +30 -14
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mpo.py +9 -5
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mps.py +39 -14
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger.egg-info/PKG-INFO +4 -4
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_imaginary_tebd.py +15 -6
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_mpo.py +7 -1
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_mps.py +39 -17
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_mps_extensions.py +68 -25
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_tebd.py +9 -2
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/LICENSE +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/MANIFEST.in +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/bell_state_debug.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/benchmarks.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/grover_profiling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/interactive_demo.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/qaoa_maxcut_example.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/qiskit_integration_demo.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/qml_basic_example.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/examples/vqe_h2_example.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/adiabatic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/amplitude_amplification.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/amplitude_estimation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/arithmetic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/bb84.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/bell_test.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/channel_capacity.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/classical_shadows.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/cloning.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/contextuality.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/decoherence_free.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/decomposition.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/discrimination.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/distillation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/dynamical_decoupling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/entanglement_growth.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/entanglement_negativity.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/error_correction.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/error_detection.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/geometric_phase.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/grover.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/grover_optimize.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/hamiltonian_simulation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/hhl.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/holevo.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/hubbard.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/imaginary_time.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/jordan_wigner.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/kitaev_chain.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/krylov.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/level_statistics.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/loschmidt.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/loss_robustness.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/magic_measures.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/magic_state.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/many_body_correlations.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/maxcut.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/mbqc.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/metrology.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/multicontrol.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/nonlocality.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/oracles.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/otoc.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/perfect_code.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/petz.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/phase_estimation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/protocols.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/qec_noise.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/qec_threshold.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/qft.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/quantum_counting.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/quantum_phase_transition.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/quantum_walk.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/randomized_benchmarking.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/sat_solver.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/schmidt.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/shor.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/simon.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/spectroscopy.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/spin_squeezing.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/ssh_model.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/state_preparation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/steane_code.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/swap_test.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/thermal.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/uncertainty.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/vqe_solver.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/weak_values.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/algorithms/zeno.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/_cuda_dll.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/aws_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/base.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/base_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/cupy_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/gpu_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/ibm_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/numba_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/numpy_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/backends/sparse_backend.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/benchmarks/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/benchmarks/optimization_benchmarks.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/benchmarks/qml_benchmarks.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/benchmarks/report_generator.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/benchmarks/scalability_benchmarks.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/core/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/core/circuit.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/core/gates.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/core/quantum_state.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/debugger/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/debugger/breakpoints.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/debugger/debugger.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/debugger/inspector.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/density_matrix.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/gpu/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/gpu/memory.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/gpu/mixed_precision.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/gpu/multi_gpu.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/cirq_adapter.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/cirq_bridge.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/pennylane_bridge.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/qiskit_adapter.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/integrations/qiskit_bridge.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mitigation/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mitigation/core/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mitigation/core/extrapolator.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mitigation/core/folder.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/mitigation/zne.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/composite_noise.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/hardware_profiles.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/noise_helpers.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/noise_models.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/noise/stochastic_sampler.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/optimization/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/optimization/circuit_compiler.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/optimization/gate_reduction.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/optimization/optimization_passes.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/optimization/transpiler.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/parallel/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/parallel/executor.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/profiler/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/profiler/metrics.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/profiler/profiler.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/ansatz_analysis.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/autoencoder.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/data_reuploading.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/qcnn.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/advanced/vqc.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/actor_critic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/dqn.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/policy_gradient.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/qaoa.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/qgan.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/qrl.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/vqd.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/algorithms/vqe.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/ansatz/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/ansatz/excitation_preserving.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/ansatz/real_amplitudes.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/ansatz/strongly_entangling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/ansatz/two_local.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/automl/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/automl/ansatz_selector.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/automl/architecture_search.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/automl/auto_qnn.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/automl/hyperparameter_tuner.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/data/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/data/dataset.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/data/feature_maps.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/error_mitigation/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/error_mitigation/zne.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/gates/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/gates/parameterized.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hamiltonians/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hamiltonians/molecular.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hybrid/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hybrid/layers.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hybrid/pytorch_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/hybrid/tensorflow_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/kernels/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/kernels/alignment.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/kernels/qsvm.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/kernels/quantum_kernel.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/mitigation/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/mitigation/cdr.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/mitigation/error_characterization.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/mitigation/noise_models.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/mitigation/pec.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/optimizers/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/optimizers/advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/optimizers/basics.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/optimizers/spsa.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/base.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/encoding.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/losses.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/network.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/qnn/variational.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/training/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/transfer/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/transfer/fine_tuning.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/transfer/model_zoo.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/transfer/pretrained.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/transfer/serialization.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/utils/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/qml/utils/gradients.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/stabilizer.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/tomography.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/visualization/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/visualization/bloch_sphere.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger/visualization/state_viz.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger.egg-info/SOURCES.txt +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger.egg-info/dependency_links.txt +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger.egg-info/requires.txt +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/quantum_debugger.egg-info/top_level.txt +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/requirements.txt +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/setup.cfg +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/setup.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/cirq/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/cirq/test_cirq_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/cirq/test_cirq_edge_cases.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/cirq/test_cirq_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/conftest.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/integration/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/integration/test_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/integration/test_qiskit_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_actor_critic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_advanced_algorithms.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_advanced_optimizers.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_advanced_qml.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_ansatz_library.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_automl.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_dataset.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_dqn.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_edge_cases.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_hamiltonians.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_hybrid.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_kernels.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_mitigation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_policy_gradient.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_qaoa.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_qml_parameterized_gates.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_qnn.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_spsa.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_transfer.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_transfer_extended.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_vqd.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_vqe.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/qml/test_zne.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_adiabatic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_algorithms.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_arithmetic.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_backends.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_bb84.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_bell_test.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_benchmarks.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_channel_capacity.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_classical_shadows.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_cloning.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_contextuality.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_decoherence_free.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_decomposition.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_density_matrix.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_discrimination.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_distillation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_dynamical_decoupling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_entanglement_growth.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_error_correction.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_error_detection.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_geometric_phase.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_grover_optimize.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_hamiltonian_simulation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_holevo.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_hubbard.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_imaginary_time.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_integrations.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_jordan_wigner.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_kitaev_chain.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_krylov.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_level_statistics.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_loschmidt.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_loss_robustness.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_magic_measures.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_magic_state.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_many_body_extra.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_maxcut.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_mbqc.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_metrology.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_multicontrol.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_nonlocality.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_optimization.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_otoc.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_pauli_decompose.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_perfect_code.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_petz.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_protocols_shor.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_qec_noise.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_qec_threshold.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_randomized_benchmarking.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_sat_solver.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_schmidt.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_simon.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_spectroscopy.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_spin_squeezing.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_stabilizer.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_state_preparation.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_steane_code.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_thermal.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_tomography.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_trotter_scaling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_uncertainty.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_vqe_solver.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_weak_values.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/test_zeno.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/CONVERSION_TRACKER.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/__init__.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backend_comprehensive.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backend_integration.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backends.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backends_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backends_comprehensive.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_backends_fast.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_circuit_noise.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_circuit_noise_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_circuit_noise_unique.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_compatibility.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_comprehensive.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_distribution.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_docstrings.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_error_handling.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_extreme.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_gpu_quick.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_hardware_profiles_extended.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_hardware_profiles_phase3.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_mitigation_comprehensive.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_mitigation_final.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_mitigation_observables.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_mitigation_zne.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_extreme.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_final.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_performance.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_quantum_info.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_noise_ultimate.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_parallel.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_performance.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_production.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qiskit_complex.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qiskit_extreme.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qiskit_ultra.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qml_advanced.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qml_comprehensive.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qml_memory.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qml_threading.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_qml_tricky.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_quickstart.py +0 -0
- {quantum_debugger-1.0.0 → quantum_debugger-1.0.1}/tests/unit/test_validation.py +0 -0
|
@@ -37,11 +37,10 @@ If you use quantum-debugger in your research, please cite:
|
|
|
37
37
|
|
|
38
38
|
```bibtex
|
|
39
39
|
@software{quantum_debugger_2026,
|
|
40
|
-
title = {Quantum Debugger:
|
|
41
|
-
author = {
|
|
40
|
+
title = {Quantum Debugger: Interactive Circuit Debugging, Multi-Engine Simulation, and Quantum Machine Learning Framework},
|
|
41
|
+
author = {Raunak Kumar Gupta},
|
|
42
42
|
year = {2026},
|
|
43
|
-
url = {https://github.com/Raunakg2005/quantum-debugger}
|
|
44
|
-
note = {Supervised by Dr. Vaibhav Prakash Vasani, K.J. Somaiya School of Engineering}
|
|
43
|
+
url = {https://github.com/Raunakg2005/quantum-debugger}
|
|
45
44
|
}
|
|
46
45
|
```
|
|
47
46
|
|
|
@@ -5,6 +5,14 @@ All notable changes to QuantumDebugger will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.0.1]
|
|
9
|
+
|
|
10
|
+
Theme: documentation and metadata refresh.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Updated BibTeX software citation author to full name (`Raunak Kumar Gupta`) and modernized project title across README and documentation.
|
|
14
|
+
- Enriched documentation tutorials and examples for Matrix Product States (MPS), TEBD dynamics, VQE molecular chemistry, and open systems noise models.
|
|
15
|
+
|
|
8
16
|
## [1.0.0]
|
|
9
17
|
|
|
10
18
|
Theme: scale & tensor networks — breaking the exponential state-vector wall. The
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantum-debugger
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: A quantum simulation and debugging toolkit: state-vector, Clifford/stabilizer, and density-matrix (open-systems) engines, with a broad algorithm library, error correction under noise, quantum machine learning, GPU acceleration, and multi-framework support (Qiskit, PennyLane, Cirq, TensorFlow, PyTorch).
|
|
5
5
|
Home-page: https://github.com/Raunakg2005/quantum-debugger
|
|
6
6
|
Author: Raunak Kumar Gupta
|
|
@@ -486,8 +486,8 @@ If you use quantum-debugger in your research, please cite:
|
|
|
486
486
|
|
|
487
487
|
```bibtex
|
|
488
488
|
@software{quantum_debugger_2026,
|
|
489
|
-
title = {Quantum Debugger:
|
|
490
|
-
author = {
|
|
489
|
+
title = {Quantum Debugger: Interactive Circuit Debugging, Multi-Engine Simulation, and Quantum Machine Learning Framework},
|
|
490
|
+
author = {Raunak Kumar Gupta},
|
|
491
491
|
year = {2026},
|
|
492
492
|
url = {https://github.com/Raunakg2005/quantum-debugger}
|
|
493
493
|
}
|
|
@@ -511,5 +511,5 @@ If you use quantum-debugger in your research, please cite:
|
|
|
511
511
|
|
|
512
512
|
---
|
|
513
513
|
|
|
514
|
-
**Version:** 1.0.
|
|
514
|
+
**Version:** 1.0.1 (latest on PyPI) · 1.0.0, 0.9.1, 0.9.0 (previous)
|
|
515
515
|
**Last Updated:** September 2026
|
|
@@ -411,8 +411,8 @@ If you use quantum-debugger in your research, please cite:
|
|
|
411
411
|
|
|
412
412
|
```bibtex
|
|
413
413
|
@software{quantum_debugger_2026,
|
|
414
|
-
title = {Quantum Debugger:
|
|
415
|
-
author = {
|
|
414
|
+
title = {Quantum Debugger: Interactive Circuit Debugging, Multi-Engine Simulation, and Quantum Machine Learning Framework},
|
|
415
|
+
author = {Raunak Kumar Gupta},
|
|
416
416
|
year = {2026},
|
|
417
417
|
url = {https://github.com/Raunakg2005/quantum-debugger}
|
|
418
418
|
}
|
|
@@ -436,5 +436,5 @@ If you use quantum-debugger in your research, please cite:
|
|
|
436
436
|
|
|
437
437
|
---
|
|
438
438
|
|
|
439
|
-
**Version:** 1.0.
|
|
439
|
+
**Version:** 1.0.1 (latest on PyPI) · 1.0.0, 0.9.1, 0.9.0 (previous)
|
|
440
440
|
**Last Updated:** September 2026
|
|
@@ -22,7 +22,9 @@ _Z = np.array([[1, 0], [0, -1]], dtype=complex)
|
|
|
22
22
|
_I = np.eye(2, dtype=complex)
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
def tfim_bond_gate(
|
|
25
|
+
def tfim_bond_gate(
|
|
26
|
+
n: int, i: int, dt: float, j_coupling: float, field: float
|
|
27
|
+
) -> np.ndarray:
|
|
26
28
|
"""
|
|
27
29
|
Two-site Trotter gate ``exp(-i h_{i,i+1} dt)`` for the transverse-field Ising model
|
|
28
30
|
``H = -J sum Z Z - h sum X`` on a chain of ``n`` sites. The single-site field is
|
|
@@ -31,15 +33,20 @@ def tfim_bond_gate(n: int, i: int, dt: float, j_coupling: float, field: float) -
|
|
|
31
33
|
hx_i = field * (0.5 if i > 0 else 1.0)
|
|
32
34
|
hx_j = field * (0.5 if i < n - 2 else 1.0)
|
|
33
35
|
h_local = (
|
|
34
|
-
-j_coupling * np.kron(_Z, _Z)
|
|
35
|
-
- hx_i * np.kron(_I, _X)
|
|
36
|
-
- hx_j * np.kron(_X, _I)
|
|
36
|
+
-j_coupling * np.kron(_Z, _Z) - hx_i * np.kron(_I, _X) - hx_j * np.kron(_X, _I)
|
|
37
37
|
)
|
|
38
38
|
return expm(-1j * h_local * dt)
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
def tebd_tfim(
|
|
42
|
-
|
|
41
|
+
def tebd_tfim(
|
|
42
|
+
n: int,
|
|
43
|
+
time: float,
|
|
44
|
+
steps: int = 100,
|
|
45
|
+
j_coupling: float = 1.0,
|
|
46
|
+
field: float = 1.0,
|
|
47
|
+
max_bond: int = 16,
|
|
48
|
+
initial: "MPS" = None,
|
|
49
|
+
) -> "MPS":
|
|
43
50
|
"""
|
|
44
51
|
Evolve a TFIM chain of ``n`` sites for total ``time`` with ``steps`` Trotter steps,
|
|
45
52
|
on an MPS truncated to ``max_bond``. Starts from ``|0...0>`` unless an ``initial``
|
|
@@ -77,16 +84,19 @@ def _imag_bond_gate(n, i, dtau, j_coupling, field):
|
|
|
77
84
|
hx_i = field * (0.5 if i > 0 else 1.0)
|
|
78
85
|
hx_j = field * (0.5 if i < n - 2 else 1.0)
|
|
79
86
|
h_local = (
|
|
80
|
-
-j_coupling * np.kron(_Z, _Z)
|
|
81
|
-
- hx_i * np.kron(_I, _X)
|
|
82
|
-
- hx_j * np.kron(_X, _I)
|
|
87
|
+
-j_coupling * np.kron(_Z, _Z) - hx_i * np.kron(_I, _X) - hx_j * np.kron(_X, _I)
|
|
83
88
|
)
|
|
84
89
|
return expm(-h_local * dtau) # imaginary time -> real exponential (cooling)
|
|
85
90
|
|
|
86
91
|
|
|
87
|
-
def imaginary_tebd_ground_state(
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
def imaginary_tebd_ground_state(
|
|
93
|
+
n: int,
|
|
94
|
+
j_coupling: float = 1.0,
|
|
95
|
+
field: float = 1.0,
|
|
96
|
+
dtau: float = 0.05,
|
|
97
|
+
steps: int = 300,
|
|
98
|
+
max_bond: int = 16,
|
|
99
|
+
) -> dict:
|
|
90
100
|
"""
|
|
91
101
|
Find the TFIM ground state of an ``n``-site chain by imaginary-time TEBD -- apply
|
|
92
102
|
``e^{-h_{j,j+1} dtau}`` bond gates (cooling), renormalizing each step, until the
|
|
@@ -124,8 +134,14 @@ def imaginary_tebd_ground_state(n: int, j_coupling: float = 1.0, field: float =
|
|
|
124
134
|
return result
|
|
125
135
|
|
|
126
136
|
|
|
127
|
-
def tebd_magnetization(
|
|
128
|
-
|
|
137
|
+
def tebd_magnetization(
|
|
138
|
+
n: int,
|
|
139
|
+
time: float,
|
|
140
|
+
steps: int = 100,
|
|
141
|
+
j_coupling: float = 1.0,
|
|
142
|
+
field: float = 1.0,
|
|
143
|
+
max_bond: int = 16,
|
|
144
|
+
) -> dict:
|
|
129
145
|
"""
|
|
130
146
|
Quench a TFIM chain from the all-up state and read out the transverse magnetization.
|
|
131
147
|
|
|
@@ -30,9 +30,9 @@ def tfim_mpo(n: int, j_coupling: float = 1.0, field: float = 1.0) -> list:
|
|
|
30
30
|
tensors = []
|
|
31
31
|
for i in range(n):
|
|
32
32
|
if i == 0:
|
|
33
|
-
tensors.append(W[2:3, :, :, :])
|
|
33
|
+
tensors.append(W[2:3, :, :, :]) # left boundary row
|
|
34
34
|
elif i == n - 1:
|
|
35
|
-
tensors.append(W[:, :, :, 0:1])
|
|
35
|
+
tensors.append(W[:, :, :, 0:1]) # right boundary column
|
|
36
36
|
else:
|
|
37
37
|
tensors.append(W)
|
|
38
38
|
return tensors
|
|
@@ -71,8 +71,8 @@ def mpo_expectation(mps, mpo) -> float:
|
|
|
71
71
|
"""
|
|
72
72
|
E = np.ones((1, 1, 1), dtype=complex) # (bra bond, mpo bond, ket bond)
|
|
73
73
|
for A, W in zip(mps.tensors, mpo):
|
|
74
|
-
E = np.einsum("lmn,nSr->lmSr", E, A)
|
|
75
|
-
E = np.einsum("lmSr,mSTw->lTrw", E, W)
|
|
74
|
+
E = np.einsum("lmn,nSr->lmSr", E, A) # absorb ket tensor
|
|
75
|
+
E = np.einsum("lmSr,mSTw->lTrw", E, W) # apply operator tensor
|
|
76
76
|
E = np.einsum("lTrw,lTb->wrb", E, np.conj(A)) # absorb bra tensor
|
|
77
77
|
E = E.transpose(2, 0, 1)
|
|
78
78
|
return float(np.real(E[0, 0, 0]))
|
|
@@ -93,5 +93,9 @@ def mpo_to_matrix(mpo) -> np.ndarray:
|
|
|
93
93
|
M = T.reshape(dim, dim)
|
|
94
94
|
# little-endian reordering to match the rest of the library
|
|
95
95
|
perm = list(range(n - 1, -1, -1))
|
|
96
|
-
Mt =
|
|
96
|
+
Mt = (
|
|
97
|
+
M.reshape([2] * (2 * n))
|
|
98
|
+
.transpose(perm + [n + p for p in perm])
|
|
99
|
+
.reshape(dim, dim)
|
|
100
|
+
)
|
|
97
101
|
return Mt
|
|
@@ -74,7 +74,9 @@ class MPS:
|
|
|
74
74
|
return mps
|
|
75
75
|
|
|
76
76
|
@classmethod
|
|
77
|
-
def from_statevector(
|
|
77
|
+
def from_statevector(
|
|
78
|
+
cls, state_vector, max_bond: int = None, tol: float = 1e-12
|
|
79
|
+
) -> "MPS":
|
|
78
80
|
"""
|
|
79
81
|
Exact MPS for a dense ``state_vector`` via sequential SVD (truncated to
|
|
80
82
|
``max_bond`` if given). Qubit ``i`` becomes site ``i`` (little-endian).
|
|
@@ -130,8 +132,8 @@ class MPS:
|
|
|
130
132
|
E = np.ones((1, 1), dtype=complex) # (bra bond, ket bond)
|
|
131
133
|
for i, A in enumerate(self.tensors):
|
|
132
134
|
Op = ops.get(i, eye)
|
|
133
|
-
tmp = np.einsum("lm,msr->lsr", E, A)
|
|
134
|
-
tmp = np.einsum("ts,lsr->ltr", Op, tmp)
|
|
135
|
+
tmp = np.einsum("lm,msr->lsr", E, A) # ket contracted
|
|
136
|
+
tmp = np.einsum("ts,lsr->ltr", Op, tmp) # apply operator
|
|
135
137
|
E = np.einsum("lta,ltr->ar", np.conj(A), tmp) # bra contracted
|
|
136
138
|
return complex(E[0, 0])
|
|
137
139
|
|
|
@@ -169,7 +171,7 @@ class MPS:
|
|
|
169
171
|
U, S, Vh = np.linalg.svd(mat, full_matrices=False)
|
|
170
172
|
keep = S > 1e-14
|
|
171
173
|
if self.max_bond is not None:
|
|
172
|
-
keep[self.max_bond:] = False
|
|
174
|
+
keep[self.max_bond :] = False
|
|
173
175
|
U, S, Vh = U[:, keep], S[keep], Vh[keep, :]
|
|
174
176
|
chi_new = len(S)
|
|
175
177
|
self.tensors[i] = U.reshape(chi_l, 2, chi_new)
|
|
@@ -240,7 +242,9 @@ class MPS:
|
|
|
240
242
|
n = len(T)
|
|
241
243
|
for i in range(n - 1, 0, -1):
|
|
242
244
|
chi_l, d, chi_r = T[i].shape
|
|
243
|
-
U, S, Vh = np.linalg.svd(
|
|
245
|
+
U, S, Vh = np.linalg.svd(
|
|
246
|
+
T[i].reshape(chi_l, d * chi_r), full_matrices=False
|
|
247
|
+
)
|
|
244
248
|
T[i] = Vh.reshape(len(S), d, chi_r)
|
|
245
249
|
T[i - 1] = np.tensordot(T[i - 1], U * S, axes=(2, 0))
|
|
246
250
|
|
|
@@ -248,7 +252,9 @@ class MPS:
|
|
|
248
252
|
carry = T[0]
|
|
249
253
|
for i in range(n - 1):
|
|
250
254
|
chi_l, d, chi_r = carry.shape
|
|
251
|
-
U, S, Vh = np.linalg.svd(
|
|
255
|
+
U, S, Vh = np.linalg.svd(
|
|
256
|
+
carry.reshape(chi_l * d, chi_r), full_matrices=False
|
|
257
|
+
)
|
|
252
258
|
S = S / np.linalg.norm(S)
|
|
253
259
|
s2 = S**2
|
|
254
260
|
s2 = s2[s2 > 1e-14]
|
|
@@ -325,8 +331,10 @@ class MPS:
|
|
|
325
331
|
Two-point correlation ``<psi| O_a O_b |psi>`` for single-qubit operators on
|
|
326
332
|
``qubit_a`` and ``qubit_b`` (contraction, no dense state).
|
|
327
333
|
"""
|
|
328
|
-
ops = {
|
|
329
|
-
|
|
334
|
+
ops = {
|
|
335
|
+
qubit_a: np.asarray(obs_a, dtype=complex),
|
|
336
|
+
qubit_b: np.asarray(obs_b, dtype=complex),
|
|
337
|
+
}
|
|
330
338
|
return float(np.real(self._environment_scan(ops) / self._environment_scan({})))
|
|
331
339
|
|
|
332
340
|
# --- operators & reduced states ----------------------------------------
|
|
@@ -418,6 +426,7 @@ class MPS:
|
|
|
418
426
|
Quantum mutual information ``I(a:b) = S(a) + S(b) - S(ab)`` between two qubits
|
|
419
427
|
(bits), from their reduced density matrices -- total correlation across the pair.
|
|
420
428
|
"""
|
|
429
|
+
|
|
421
430
|
def vn(rho):
|
|
422
431
|
vals = np.linalg.eigvalsh(rho).real
|
|
423
432
|
vals = vals[vals > 1e-12]
|
|
@@ -487,7 +496,10 @@ class MPS:
|
|
|
487
496
|
"""
|
|
488
497
|
counts = self.sample(shots, seed)
|
|
489
498
|
best = max(counts, key=counts.get)
|
|
490
|
-
return {
|
|
499
|
+
return {
|
|
500
|
+
"bitstring": best,
|
|
501
|
+
"probability": self.probability([int(c) for c in best]),
|
|
502
|
+
}
|
|
491
503
|
|
|
492
504
|
def structure_factor(self, observable, momentum: float) -> float:
|
|
493
505
|
"""
|
|
@@ -500,7 +512,11 @@ class MPS:
|
|
|
500
512
|
total = 0.0 + 0j
|
|
501
513
|
for i in range(n):
|
|
502
514
|
for j in range(n):
|
|
503
|
-
cij =
|
|
515
|
+
cij = (
|
|
516
|
+
self.expectation(O @ O, i)
|
|
517
|
+
if i == j
|
|
518
|
+
else self.correlation(O, i, O, j)
|
|
519
|
+
)
|
|
504
520
|
total += np.exp(1j * momentum * (i - j)) * cij
|
|
505
521
|
return float(np.real(total) / n)
|
|
506
522
|
|
|
@@ -531,7 +547,9 @@ class MPS:
|
|
|
531
547
|
return cls(tensors, max_bond)
|
|
532
548
|
|
|
533
549
|
@classmethod
|
|
534
|
-
def random(
|
|
550
|
+
def random(
|
|
551
|
+
cls, n: int, bond: int = 4, seed: int = 0, max_bond: int = None
|
|
552
|
+
) -> "MPS":
|
|
535
553
|
"""
|
|
536
554
|
A random MPS on ``n`` qubits with bond dimension ``bond`` (bonds taper to 1 at
|
|
537
555
|
the ends). Normalized. Useful for testing and benchmarking.
|
|
@@ -628,7 +646,10 @@ class MPS:
|
|
|
628
646
|
Energy variance ``<H^2> - <H>^2`` of a Pauli-sum Hamiltonian ``terms`` -- zero
|
|
629
647
|
iff the MPS is an exact eigenstate (a convergence check for DMRG/imaginary TEBD).
|
|
630
648
|
"""
|
|
631
|
-
from .algorithms.hamiltonian_simulation import
|
|
649
|
+
from .algorithms.hamiltonian_simulation import (
|
|
650
|
+
hamiltonian_matrix,
|
|
651
|
+
pauli_decompose,
|
|
652
|
+
)
|
|
632
653
|
|
|
633
654
|
H = hamiltonian_matrix(terms, self.n)
|
|
634
655
|
H2_terms = pauli_decompose(H @ H)
|
|
@@ -654,13 +675,17 @@ class MPS:
|
|
|
654
675
|
n = len(T)
|
|
655
676
|
for i in range(n - 1, 0, -1):
|
|
656
677
|
chi_l, d, chi_r = T[i].shape
|
|
657
|
-
U, S, Vh = np.linalg.svd(
|
|
678
|
+
U, S, Vh = np.linalg.svd(
|
|
679
|
+
T[i].reshape(chi_l, d * chi_r), full_matrices=False
|
|
680
|
+
)
|
|
658
681
|
T[i] = Vh.reshape(len(S), d, chi_r)
|
|
659
682
|
T[i - 1] = np.tensordot(T[i - 1], U * S, axes=(2, 0))
|
|
660
683
|
carry = T[0]
|
|
661
684
|
for i in range(n - 1):
|
|
662
685
|
chi_l, d, chi_r = carry.shape
|
|
663
|
-
U, S, Vh = np.linalg.svd(
|
|
686
|
+
U, S, Vh = np.linalg.svd(
|
|
687
|
+
carry.reshape(chi_l * d, chi_r), full_matrices=False
|
|
688
|
+
)
|
|
664
689
|
S = S / np.linalg.norm(S)
|
|
665
690
|
if i == bond:
|
|
666
691
|
return S**2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quantum-debugger
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: A quantum simulation and debugging toolkit: state-vector, Clifford/stabilizer, and density-matrix (open-systems) engines, with a broad algorithm library, error correction under noise, quantum machine learning, GPU acceleration, and multi-framework support (Qiskit, PennyLane, Cirq, TensorFlow, PyTorch).
|
|
5
5
|
Home-page: https://github.com/Raunakg2005/quantum-debugger
|
|
6
6
|
Author: Raunak Kumar Gupta
|
|
@@ -486,8 +486,8 @@ If you use quantum-debugger in your research, please cite:
|
|
|
486
486
|
|
|
487
487
|
```bibtex
|
|
488
488
|
@software{quantum_debugger_2026,
|
|
489
|
-
title = {Quantum Debugger:
|
|
490
|
-
author = {
|
|
489
|
+
title = {Quantum Debugger: Interactive Circuit Debugging, Multi-Engine Simulation, and Quantum Machine Learning Framework},
|
|
490
|
+
author = {Raunak Kumar Gupta},
|
|
491
491
|
year = {2026},
|
|
492
492
|
url = {https://github.com/Raunakg2005/quantum-debugger}
|
|
493
493
|
}
|
|
@@ -511,5 +511,5 @@ If you use quantum-debugger in your research, please cite:
|
|
|
511
511
|
|
|
512
512
|
---
|
|
513
513
|
|
|
514
|
-
**Version:** 1.0.
|
|
514
|
+
**Version:** 1.0.1 (latest on PyPI) · 1.0.0, 0.9.1, 0.9.0 (previous)
|
|
515
515
|
**Last Updated:** September 2026
|
|
@@ -31,7 +31,9 @@ class TestGroundState:
|
|
|
31
31
|
def test_deep_paramagnet(self):
|
|
32
32
|
# Large field: ground state ~ |+...+>, energy ~ -h * n.
|
|
33
33
|
n, h = 6, 5.0
|
|
34
|
-
r = imaginary_tebd_ground_state(
|
|
34
|
+
r = imaginary_tebd_ground_state(
|
|
35
|
+
n, j_coupling=0.2, field=h, dtau=0.02, steps=400
|
|
36
|
+
)
|
|
35
37
|
assert r["error"] < 1e-2
|
|
36
38
|
|
|
37
39
|
|
|
@@ -39,15 +41,22 @@ class TestScale:
|
|
|
39
41
|
def test_large_chain(self):
|
|
40
42
|
# 24-qubit ground state -- beyond the dense diagonalizer.
|
|
41
43
|
r = imaginary_tebd_ground_state(24, 1.0, 1.0, dtau=0.05, steps=150, max_bond=12)
|
|
42
|
-
assert "exact_energy" not in r
|
|
43
|
-
assert r["energy"] < 0
|
|
44
|
+
assert "exact_energy" not in r # too big to diagonalize
|
|
45
|
+
assert r["energy"] < 0 # ferromagnetic-ish, negative
|
|
44
46
|
assert r["bond"] <= 12
|
|
45
47
|
|
|
46
48
|
def test_extensive_energy(self):
|
|
47
49
|
# Ground energy per site is roughly constant (extensivity).
|
|
48
|
-
e12 =
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
e12 = (
|
|
51
|
+
imaginary_tebd_ground_state(12, 1.0, 1.0, dtau=0.05, steps=200)["energy"]
|
|
52
|
+
/ 12
|
|
53
|
+
)
|
|
54
|
+
e20 = (
|
|
55
|
+
imaginary_tebd_ground_state(
|
|
56
|
+
20, 1.0, 1.0, dtau=0.05, steps=200, max_bond=16
|
|
57
|
+
)["energy"]
|
|
58
|
+
/ 20
|
|
59
|
+
)
|
|
51
60
|
assert abs(e12 - e20) < 0.1
|
|
52
61
|
|
|
53
62
|
|
|
@@ -38,7 +38,13 @@ class TestMPOExpectation:
|
|
|
38
38
|
psi = psi / np.linalg.norm(psi)
|
|
39
39
|
H = hamiltonian_matrix(tfim_hamiltonian(n, 0.7, 1.0), n)
|
|
40
40
|
m = MPS.from_statevector(psi, max_bond=16)
|
|
41
|
-
assert
|
|
41
|
+
assert (
|
|
42
|
+
abs(
|
|
43
|
+
mpo_expectation(m, tfim_mpo(n, 1.0, 0.7))
|
|
44
|
+
- np.real(psi.conj() @ H @ psi)
|
|
45
|
+
)
|
|
46
|
+
< 1e-9
|
|
47
|
+
)
|
|
42
48
|
|
|
43
49
|
def test_large_ghz(self):
|
|
44
50
|
n = 30
|
|
@@ -105,7 +105,7 @@ class TestScale:
|
|
|
105
105
|
assert m.max_bond_dimension() == 2
|
|
106
106
|
assert abs(m.norm() - 1.0) < 1e-9
|
|
107
107
|
assert abs(m.correlation(_Z, 0, _Z, n - 1) - 1.0) < 1e-9 # perfectly correlated
|
|
108
|
-
assert abs(m.expectation(_X, 0)) < 1e-9
|
|
108
|
+
assert abs(m.expectation(_X, 0)) < 1e-9 # <X> = 0
|
|
109
109
|
|
|
110
110
|
def test_product_circuit_stays_bond_one(self):
|
|
111
111
|
n = 50
|
|
@@ -174,7 +174,6 @@ class TestSampling:
|
|
|
174
174
|
assert sum(m.sample(137, seed=3).values()) == 137
|
|
175
175
|
|
|
176
176
|
|
|
177
|
-
|
|
178
177
|
class TestEntanglementEntropy:
|
|
179
178
|
def test_matches_dense(self):
|
|
180
179
|
from quantum_debugger.density_matrix import DensityMatrix
|
|
@@ -220,20 +219,25 @@ class TestEntanglementEntropy:
|
|
|
220
219
|
assert len(ent) == n - 1
|
|
221
220
|
assert all(abs(s - 1.0) < 1e-9 for s in ent)
|
|
222
221
|
|
|
222
|
+
|
|
223
223
|
class TestOverlapFidelity:
|
|
224
224
|
def test_overlap_matches_dense(self):
|
|
225
225
|
rng = np.random.default_rng(0)
|
|
226
226
|
n = 4
|
|
227
|
-
a = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
228
|
-
|
|
227
|
+
a = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
228
|
+
a /= np.linalg.norm(a)
|
|
229
|
+
b = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
230
|
+
b /= np.linalg.norm(b)
|
|
229
231
|
ov = MPS.from_statevector(a).overlap(MPS.from_statevector(b))
|
|
230
232
|
assert abs(ov - np.vdot(b, a)) < 1e-9
|
|
231
233
|
|
|
232
234
|
def test_fidelity_matches_dense(self):
|
|
233
235
|
rng = np.random.default_rng(1)
|
|
234
236
|
n = 4
|
|
235
|
-
a = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
236
|
-
|
|
237
|
+
a = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
238
|
+
a /= np.linalg.norm(a)
|
|
239
|
+
b = rng.normal(size=2**n) + 1j * rng.normal(size=2**n)
|
|
240
|
+
b /= np.linalg.norm(b)
|
|
237
241
|
fid = MPS.from_statevector(a).fidelity(MPS.from_statevector(b))
|
|
238
242
|
assert abs(fid - abs(np.vdot(b, a)) ** 2) < 1e-9
|
|
239
243
|
|
|
@@ -244,8 +248,9 @@ class TestOverlapFidelity:
|
|
|
244
248
|
assert abs(m.fidelity(m) - 1.0) < 1e-9
|
|
245
249
|
|
|
246
250
|
def test_orthogonal_states_zero_overlap(self):
|
|
247
|
-
a = MPS.zero_state(3)
|
|
248
|
-
b = MPS.zero_state(3)
|
|
251
|
+
a = MPS.zero_state(3) # |000>
|
|
252
|
+
b = MPS.zero_state(3)
|
|
253
|
+
b.apply_single(_X, 0) # |001>
|
|
249
254
|
assert abs(a.overlap(b)) < 1e-12
|
|
250
255
|
|
|
251
256
|
def test_large_ghz_self_fidelity(self):
|
|
@@ -260,6 +265,7 @@ class TestOverlapFidelity:
|
|
|
260
265
|
with pytest.raises(ValueError):
|
|
261
266
|
MPS.zero_state(3).overlap(MPS.zero_state(4))
|
|
262
267
|
|
|
268
|
+
|
|
263
269
|
class TestLongRangeGates:
|
|
264
270
|
@pytest.mark.parametrize("a,b", [(0, 2), (0, 4), (1, 3), (0, 3)])
|
|
265
271
|
def test_matches_state_vector(self, a, b):
|
|
@@ -277,7 +283,8 @@ class TestLongRangeGates:
|
|
|
277
283
|
|
|
278
284
|
def test_adjacent_delegates(self):
|
|
279
285
|
rng = np.random.default_rng(0)
|
|
280
|
-
psi = rng.normal(size=16) + 1j * rng.normal(size=16)
|
|
286
|
+
psi = rng.normal(size=16) + 1j * rng.normal(size=16)
|
|
287
|
+
psi /= np.linalg.norm(psi)
|
|
281
288
|
m = MPS.from_statevector(psi)
|
|
282
289
|
m.apply_two_long_range(_CNOT, 1, 2)
|
|
283
290
|
ref = apply_gate_tensor(np, psi, _CNOT, [1, 2], 4)
|
|
@@ -294,23 +301,34 @@ class TestLongRangeGates:
|
|
|
294
301
|
with pytest.raises(ValueError):
|
|
295
302
|
MPS.zero_state(4).apply_two_long_range(_CNOT, 3, 1)
|
|
296
303
|
|
|
304
|
+
|
|
297
305
|
class TestFromCircuit:
|
|
298
306
|
def test_matches_state_vector(self):
|
|
299
307
|
from quantum_debugger.core.circuit import QuantumCircuit
|
|
300
308
|
|
|
301
309
|
qc = QuantumCircuit(5)
|
|
302
|
-
qc.h(0)
|
|
303
|
-
qc.cnot(
|
|
310
|
+
qc.h(0)
|
|
311
|
+
qc.cnot(0, 1)
|
|
312
|
+
qc.cnot(3, 1)
|
|
313
|
+
qc.x(2)
|
|
314
|
+
qc.cnot(4, 2)
|
|
315
|
+
qc.h(3)
|
|
316
|
+
qc.cnot(2, 0)
|
|
304
317
|
m = MPS.from_circuit(qc, max_bond=32)
|
|
305
|
-
assert np.allclose(
|
|
318
|
+
assert np.allclose(
|
|
319
|
+
m.to_statevector(), qc.get_statevector().state_vector, atol=1e-9
|
|
320
|
+
)
|
|
306
321
|
|
|
307
322
|
def test_reversed_cnot(self):
|
|
308
323
|
from quantum_debugger.core.circuit import QuantumCircuit
|
|
309
324
|
|
|
310
325
|
qc = QuantumCircuit(3)
|
|
311
|
-
qc.x(2)
|
|
326
|
+
qc.x(2)
|
|
327
|
+
qc.cnot(2, 0) # control > target
|
|
312
328
|
m = MPS.from_circuit(qc)
|
|
313
|
-
assert np.allclose(
|
|
329
|
+
assert np.allclose(
|
|
330
|
+
m.to_statevector(), qc.get_statevector().state_vector, atol=1e-9
|
|
331
|
+
)
|
|
314
332
|
|
|
315
333
|
def test_ghz_circuit_bond_two(self):
|
|
316
334
|
from quantum_debugger.core.circuit import QuantumCircuit
|
|
@@ -331,6 +349,7 @@ class TestFromCircuit:
|
|
|
331
349
|
with pytest.raises(NotImplementedError):
|
|
332
350
|
MPS.from_circuit(qc)
|
|
333
351
|
|
|
352
|
+
|
|
334
353
|
class TestPauliExpectation:
|
|
335
354
|
def test_matches_dense_all_strings(self):
|
|
336
355
|
from quantum_debugger.algorithms import pauli_term_matrix
|
|
@@ -352,7 +371,7 @@ class TestPauliExpectation:
|
|
|
352
371
|
m.apply_single(_H, 0)
|
|
353
372
|
for q in range(n - 1):
|
|
354
373
|
m.apply_two(_CNOT, q)
|
|
355
|
-
assert abs(m.expectation_pauli("X" * n) - 1.0) < 1e-9
|
|
374
|
+
assert abs(m.expectation_pauli("X" * n) - 1.0) < 1e-9 # X^n stabilizes GHZ
|
|
356
375
|
assert abs(m.expectation_pauli("Z" + "I" * (n - 2) + "Z") - 1.0) < 1e-9
|
|
357
376
|
|
|
358
377
|
def test_identity_string_is_one(self):
|
|
@@ -360,6 +379,7 @@ class TestPauliExpectation:
|
|
|
360
379
|
m.apply_single(_H, 0)
|
|
361
380
|
assert abs(m.expectation_pauli("IIII") - 1.0) < 1e-9
|
|
362
381
|
|
|
382
|
+
|
|
363
383
|
class TestHamiltonianEnergy:
|
|
364
384
|
def test_tfim_energy_matches_dense(self):
|
|
365
385
|
from quantum_debugger.algorithms import hamiltonian_matrix, tfim_hamiltonian
|
|
@@ -374,7 +394,10 @@ class TestHamiltonianEnergy:
|
|
|
374
394
|
assert abs(m.energy(terms) - dense) < 1e-9
|
|
375
395
|
|
|
376
396
|
def test_hubbard_energy_via_pauli_decompose(self):
|
|
377
|
-
from quantum_debugger.algorithms import
|
|
397
|
+
from quantum_debugger.algorithms import (
|
|
398
|
+
pauli_decompose,
|
|
399
|
+
fermi_hubbard_hamiltonian,
|
|
400
|
+
)
|
|
378
401
|
|
|
379
402
|
H = fermi_hubbard_hamiltonian(2, 1.0, 3.0)
|
|
380
403
|
terms = pauli_decompose(H)
|
|
@@ -396,6 +419,5 @@ class TestHamiltonianEnergy:
|
|
|
396
419
|
assert abs(m.energy(tfim_hamiltonian(n, 1.0, 1.0)) - (-(n - 1))) < 1e-9
|
|
397
420
|
|
|
398
421
|
|
|
399
|
-
|
|
400
422
|
if __name__ == "__main__":
|
|
401
423
|
pytest.main([__file__, "-v"])
|