Skip to content
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
41238fc
Transpiler: implement exact Pauli generators for LightCone in Rust
debasmita2102 Feb 12, 2026
6eb6d49
Lint: apply cargo fmt and fix clippy::map_clone in split_2q_unitaries.rs
debasmita2102 Feb 12, 2026
2e78986
Expose generator_observable to Python
debasmita2102 Feb 12, 2026
d0d78a5
Refactor generator logic to use qiskit_circuit::StandardGate
debasmita2102 Feb 16, 2026
f5d3e94
Update generator_observable with expansions for CCX/CCZ/CSwap
debasmita2102 Feb 19, 2026
520d6d4
Fix generator fallback for unsupported gates and update docs
debasmita2102 Feb 19, 2026
2be8d7c
Narrow PR scope: remove split_2q_unitaries and pyext python wrapper
debasmita2102 Mar 11, 2026
701f392
Add generator support for CS, CSdg, CSX, CCX, CCZ; add commutation tests
debasmita2102 Mar 11, 2026
dd34744
style: run black on test_commutation_checker.py
debasmita2102 Mar 11, 2026
1972698
style: run rustfmt on standard_generators.rs
debasmita2102 Mar 11, 2026
c23f14e
lint: fix license headers and pylint warnings
debasmita2102 Mar 11, 2026
0f239aa
style: remove decorative unicode lines and add operator equivalence t…
debasmita2102 Mar 11, 2026
f8922f4
fix: ensure strict Operator equivalence for all supported generators
debasmita2102 Mar 11, 2026
f180a39
style: fix pylint reimport and missing variables in test_commutation_…
debasmita2102 Mar 11, 2026
55e23ef
Add generic generator equivalence test, fix matrix conversion, and op…
debasmita2102 Mar 16, 2026
d3f2fe0
Format python tests
debasmita2102 Mar 16, 2026
f6be929
Update copyright year in standard_generators.rs
debasmita2102 Mar 16, 2026
9a5f713
Clarify docstring for multi-qubit generators context
debasmita2102 Mar 16, 2026
1869532
Fix XXPlusYY and XXMinusYY generator validation and test cases
debasmita2102 Mar 16, 2026
3c023c4
Move test imports to top of file
debasmita2102 Mar 16, 2026
4c54c4e
Use ddt data parameterization for gate generator testing tests
debasmita2102 Mar 16, 2026
dfe3e02
Refactor test_clifford_gates_have_generators to use ddt
debasmita2102 Mar 16, 2026
65f8579
Add CPhase, CRX, CRY, CRZ to generator tests
debasmita2102 Mar 16, 2026
dd04a0f
Update test_all_gates_operator_equivalence_ddt docstring to be more a…
debasmita2102 Mar 16, 2026
d1ed83f
Move all inline imports to the top of the file
debasmita2102 Mar 16, 2026
644b658
Reorganize test data to group related gates logically
debasmita2102 Mar 16, 2026
8527682
Add tests for unsupported gates and parameters in generator logic
debasmita2102 Mar 16, 2026
641b154
Rename test helper to _commute to reflect that it uses either generat…
debasmita2102 Mar 16, 2026
9f52f4e
Clarify parameter handling in generator_observable docstring
debasmita2102 Mar 16, 2026
a806de7
Comprehensive audit: Add Identity support and register all missing ga…
debasmita2102 Mar 18, 2026
1bdf23b
Fix: Correct gate generator expansions and resolve UnsortedIndices la…
debasmita2102 Mar 18, 2026
3f6c971
pose generator engine, restore overflow logic, expand tests, and cent…
debasmita2102 Mar 23, 2026
fa1613b
Update crates/circuit/src/util.rs
debasmita2102 Mar 26, 2026
b8d488f
Update releasenotes/notes/pauli-evolution-commutation-8f7caab8.yaml
debasmita2102 Mar 26, 2026
68c4dea
Update releasenotes/notes/pauli-evolution-commutation-8f7caab8.yaml
debasmita2102 Mar 26, 2026
1264d99
added missing gate, added test, copyright year, doc explaining
debasmita2102 Mar 26, 2026
3f9f12f
restore negative constants to util.rs for generator expansions
debasmita2102 Mar 26, 2026
162fd7b
fix lint errors in regression test and move imports to top
debasmita2102 Mar 26, 2026
b1ce968
Final PR fixes: address remaining lint issues and update copyright he…
debasmita2102 Mar 27, 2026
df74bc5
Remove accidental temporary files from PR
debasmita2102 Mar 27, 2026
818da54
Restore original copyright years for existing files (only PR-created …
debasmita2102 Mar 27, 2026
7be547e
Permanently delete bicycle-architecture-compiler from branch
debasmita2102 Mar 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bicycle-architecture-compiler
Submodule bicycle-architecture-compiler added at 22a038
9 changes: 9 additions & 0 deletions crates/circuit/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,12 @@ pub const C_ONE: Complex64 = c64(1., 0.);
pub const C_M_ONE: Complex64 = c64(-1., 0.);
pub const IM: Complex64 = c64(0., 1.);
pub const M_IM: Complex64 = c64(0., -1.);

use std::f64::consts::{FRAC_PI_2, FRAC_PI_4, FRAC_PI_8, SQRT_2};
pub const C_FRAC_PI_2: Complex64 = c64(FRAC_PI_2, 0.0);
pub const C_FRAC_PI_4: Complex64 = c64(FRAC_PI_4, 0.0);
pub const C_FRAC_PI_8: Complex64 = c64(FRAC_PI_8, 0.0);
pub const C_FRAC_PI_2_SQRT_2: Complex64 = c64(FRAC_PI_2 / SQRT_2, 0.0);
pub const C_M_FRAC_PI_4: Complex64 = c64(-FRAC_PI_4, 0.0);
pub const C_M_FRAC_PI_8: Complex64 = c64(-FRAC_PI_8, 0.0);
pub const C_M_FRAC_PI_2_SQRT_2: Complex64 = c64(-FRAC_PI_2 / SQRT_2, 0.0);
1 change: 1 addition & 0 deletions crates/pyext/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ fn _accelerate(m: &Bound<PyModule>) -> PyResult<()> {
add_submodule(m, ::qiskit_transpiler::passes::sabre::sabre, "sabre")?;
add_submodule(m, ::qiskit_accelerate::sampled_exp_val::sampled_exp_val, "sampled_exp_val")?;
add_submodule(m, ::qiskit_quantum_info::sparse_observable::sparse_observable, "sparse_observable")?;
add_submodule(m, ::qiskit_quantum_info::sparse_observable::standard_generators::standard_generators, "standard_generators")?;
add_submodule(m, ::qiskit_quantum_info::sparse_pauli_op::sparse_pauli_op, "sparse_pauli_op")?;
add_submodule(m, ::qiskit_quantum_info::unitary_sim::unitary_sim, "unitary_sim")?;
add_submodule(m, ::qiskit_transpiler::passes::split_2q_unitaries_mod, "split_2q_unitaries")?;
Expand Down
13 changes: 13 additions & 0 deletions crates/quantum_info/src/sparse_observable/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
// copyright notice, and modified files need to carry a notice indicating
// that they have been altered from the originals.

pub mod standard_generators;

mod lookup;

use hashbrown::HashSet;
Expand Down Expand Up @@ -4261,8 +4263,19 @@ fn coerce_to_observable<'py>(
}
}
}
#[pyfunction(name = "_generator_observable")]
#[pyo3(signature = (gate, params = None))]
pub fn generator_observable_py(
gate: qiskit_circuit::operations::StandardGate,
params: Option<Vec<qiskit_circuit::operations::Param>>,
) -> Option<SparseObservable> {
let params = params.unwrap_or_default();
standard_generators::generator_observable(gate, &params)
}

pub fn sparse_observable(m: &Bound<PyModule>) -> PyResult<()> {
m.add_class::<PySparseObservable>()?;
m.add_function(wrap_pyfunction!(generator_observable_py, m)?)?;
Ok(())
}

Expand Down
Loading
Loading