ffsim 0.0.75__tar.gz → 0.0.76__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.
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/build-and-release.yml +0 -2
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/check.yml +1 -1
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/docs-dev.yml +1 -1
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/docs-release.yml +1 -1
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/test-latest-versions.yml +0 -6
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/test-minimum-versions.yml +0 -3
- ffsim-0.0.76/Cargo.lock +319 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/Cargo.toml +0 -6
- {ffsim-0.0.75 → ffsim-0.0.76}/PKG-INFO +17 -5
- {ffsim-0.0.75 → ffsim-0.0.76}/README.md +16 -4
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/variational-ansatzes.ipynb +1 -1
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/index.md +14 -0
- ffsim-0.0.76/docs/install.md +43 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/tutorials/double-factorized-trotter.ipynb +1 -1
- {ffsim-0.0.75 → ffsim-0.0.76}/pyproject.toml +2 -2
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_lib.pyi +2 -2
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/givens.py +3 -2
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/coupled_cluster.py +12 -12
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/__init__.py +2 -5
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/transpiler_passes/__init__.py +0 -3
- {ffsim-0.0.75 → ffsim-0.0.76}/src/gates/phase_shift.rs +2 -14
- {ffsim-0.0.75 → ffsim-0.0.76}/src/jordan_wigner.rs +1 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/linalg/givens.rs +7 -8
- {ffsim-0.0.75 → ffsim-0.0.76}/uv.lock +1407 -1066
- ffsim-0.0.75/Cargo.lock +0 -1067
- ffsim-0.0.75/docs/install.md +0 -65
- {ffsim-0.0.75 → ffsim-0.0.76}/.dockerignore +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/.github/workflows/docker.yml +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/.gitignore +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/.pre-commit-config.yaml +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/CONTRIBUTING.md +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/Dockerfile +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/LICENSE +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/compose.yaml +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/_static/logo-dark.svg +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/_static/logo.svg +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/_templates/autosummary/class.rst +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/conf.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/diag-coulomb-hamiltonian.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/double-factorized.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/fermion-operator.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/hamiltonians.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/index.md +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/lucj.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/orbital-rotation.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/protocols.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/qubit-gate-decompositions.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/explanations/state-vectors-and-gates.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/generate_api_docs.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/compute-expectation-values.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/entanglement-forging.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/index.md +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/qiskit-circuits-sim.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/qiskit-lucj.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/qiskit-merge-orbital-rotations.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/qiskit-trotter.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/sample-from-state-vectors.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/sample-slater.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/simulate-trotter-hubbard.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/simulate-trotter-mol-ham.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/how-to-guides/simulate-vqe.ipynb +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/docs/tutorials/index.md +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_cistring.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/contract/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/contract/diag_coulomb.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/contract/num_op_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/fermion_operator.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/gates/diag_coulomb.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/gates/num_op_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/_slow/gates/orbital_rotation.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/contract/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/contract/diag_coulomb.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/contract/num_op_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/contract/one_body.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/contract/two_body.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/basic_gates.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/diag_coulomb.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/num_op_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/orbital_rotation.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/gates/quad_ham.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/hamiltonians/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/hamiltonians/diagonal_coulomb_hamiltonian.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/hamiltonians/double_factorized_hamiltonian.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/hamiltonians/molecular_hamiltonian.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/hamiltonians/single_factorized_hamiltonian.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/init_cache.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/double_factorized_decomposition.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/linalg.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/predicates.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/linalg/util.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/molecular_data.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/common_operators.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/fermi_hubbard.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/fermion_action.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/operators/fermion_operator.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/optimize/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/optimize/_util.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/optimize/linear_method.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/apply_unitary_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/approximate_equality_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/diagonal_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/fermion_operator_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/linear_operator_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/protocols/trace_protocol.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/py.typed +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/diag_coulomb.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/diag_coulomb_trotter_split_op.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/double_factorized_trotter.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/givens_ansatz.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/num_num_ansatz.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/num_op_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/orbital_rotation.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/slater_determinant.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/gates/ucj.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/jordan_wigner.py +0 -0
- /ffsim-0.0.75/python/ffsim/qiskit/transpiler_passes/lucj_preset_pass_manager.py → /ffsim-0.0.76/python/ffsim/qiskit/lucj_pass_manager.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/sampler.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/sim.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/transpiler_passes/drop_negligible.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/transpiler_passes/merge_orbital_rotations.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/transpiler_stages.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/qiskit/util.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/random/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/random/random.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/bitstring.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/dimensions.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/product_state_sum.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/rdm.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/sample_slater.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/slater.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/spin.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/states.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/states/wick.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/testing/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/testing/testing.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/trotter/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/trotter/_util.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/trotter/diagonal_coulomb_split_op.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/trotter/double_factorized.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/trotter/qdrift.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/givens.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/hopgate.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/multireference.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/num_num.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/orbital_optimization.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/uccsd.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/ucj_angles_spin_balanced.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/ucj_spin_balanced.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/ucj_spin_unbalanced.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/ucj_spinless.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/python/ffsim/variational/util.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/contract/diag_coulomb.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/contract/mod.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/contract/num_op_sum.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/fermion_operator.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/gates/diag_coulomb.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/gates/mod.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/gates/num_op_sum.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/gates/orbital_rotation.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/lib.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/src/linalg/mod.rs +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/contract/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/contract/diag_coulomb_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/contract/num_op_sum_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/gates/diag_coulomb_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/gates/num_op_sum_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/_slow/gates/orbital_rotation_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/contract/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/contract/diag_coulomb_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/contract/num_op_sum_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/contract/two_body_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/basic_gates_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/diag_coulomb_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/num_op_sum_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/orbital_rotation_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/gates/quad_ham_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/hamiltonians/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/hamiltonians/diagonal_coulomb_hamiltonian_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/hamiltonians/double_factorized_hamiltonian_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/hamiltonians/molecular_hamiltonian_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/hamiltonians/single_factorized_hamiltonian_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/linalg/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/linalg/double_factorized_decomposition_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/linalg/givens_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/linalg/linalg_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/linalg/util_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/molecular_data_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/common_operators_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/coupled_cluster_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/fermi_hubbard_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/fermion_action_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/operators/fermion_operator_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/optimize/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/optimize/linear_method_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/protocols/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/protocols/trace_protocol_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/diag_coulomb_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/diag_coulomb_trotter_split_op_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/double_factorized_trotter_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/givens_ansatz_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/num_num_ansatz_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/num_op_sum_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/orbital_rotation_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/slater_determinant_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/gates/ucj_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/jordan_wigner_test.py +0 -0
- /ffsim-0.0.75/tests/python/qiskit/transpiler_passes/lucj_preset_pass_manager_test.py → /ffsim-0.0.76/tests/python/qiskit/lucj_pass_manager_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/sampler_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/sim_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/transpiler_passes/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/transpiler_passes/drop_negligible_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/transpiler_passes/merge_orbital_rotations_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/qiskit/util_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/random_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/bitstring_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/rdm_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/sample_slater_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/slater_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/states_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/states/wick_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/test_data/orbital_rotation-0.npy +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/test_no_warnings.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/testing_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/trotter/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/trotter/diag_coulomb_split_op_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/trotter/double_factorized_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/trotter/qdrift_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/__init__.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/givens_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/hopgate_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/multireference_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/num_num_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/orbital_optimization_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/uccsd_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/ucj_angles_spin_balanced_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/ucj_spin_balanced_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/ucj_spin_unbalanced_test.py +0 -0
- {ffsim-0.0.75 → ffsim-0.0.76}/tests/python/variational/ucj_spinless_test.py +0 -0
|
@@ -50,8 +50,6 @@ jobs:
|
|
|
50
50
|
permissions:
|
|
51
51
|
id-token: write
|
|
52
52
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
53
|
-
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
|
|
54
|
-
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
55
53
|
steps:
|
|
56
54
|
- uses: actions/download-artifact@v4
|
|
57
55
|
with:
|
|
@@ -20,9 +20,6 @@ jobs:
|
|
|
20
20
|
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
21
21
|
steps:
|
|
22
22
|
- uses: actions/checkout@v6
|
|
23
|
-
- name: Install dependencies
|
|
24
|
-
run: |
|
|
25
|
-
sudo apt install -y libopenblas-dev
|
|
26
23
|
- name: Set up Python
|
|
27
24
|
uses: actions/setup-python@v6
|
|
28
25
|
with:
|
|
@@ -41,9 +38,6 @@ jobs:
|
|
|
41
38
|
python-version: ["3.10", "3.14"]
|
|
42
39
|
steps:
|
|
43
40
|
- uses: actions/checkout@v6
|
|
44
|
-
- name: Install dependencies
|
|
45
|
-
run: |
|
|
46
|
-
sudo apt install -y libopenblas-dev
|
|
47
41
|
- name: Set up Python
|
|
48
42
|
uses: actions/setup-python@v6
|
|
49
43
|
with:
|
ffsim-0.0.76/Cargo.lock
ADDED
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "autocfg"
|
|
7
|
+
version = "1.1.0"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "cfg-if"
|
|
13
|
+
version = "1.0.0"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "crossbeam-deque"
|
|
19
|
+
version = "0.8.3"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
|
22
|
+
dependencies = [
|
|
23
|
+
"cfg-if",
|
|
24
|
+
"crossbeam-epoch",
|
|
25
|
+
"crossbeam-utils",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[[package]]
|
|
29
|
+
name = "crossbeam-epoch"
|
|
30
|
+
version = "0.9.15"
|
|
31
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
32
|
+
checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
|
|
33
|
+
dependencies = [
|
|
34
|
+
"autocfg",
|
|
35
|
+
"cfg-if",
|
|
36
|
+
"crossbeam-utils",
|
|
37
|
+
"memoffset",
|
|
38
|
+
"scopeguard",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[[package]]
|
|
42
|
+
name = "crossbeam-utils"
|
|
43
|
+
version = "0.8.16"
|
|
44
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
45
|
+
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
|
46
|
+
dependencies = [
|
|
47
|
+
"cfg-if",
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[[package]]
|
|
51
|
+
name = "either"
|
|
52
|
+
version = "1.8.1"
|
|
53
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
54
|
+
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
|
|
55
|
+
|
|
56
|
+
[[package]]
|
|
57
|
+
name = "ffsim"
|
|
58
|
+
version = "0.0.0"
|
|
59
|
+
dependencies = [
|
|
60
|
+
"ndarray",
|
|
61
|
+
"num-integer",
|
|
62
|
+
"numpy",
|
|
63
|
+
"pyo3",
|
|
64
|
+
"rayon",
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
[[package]]
|
|
68
|
+
name = "heck"
|
|
69
|
+
version = "0.5.0"
|
|
70
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
71
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
72
|
+
|
|
73
|
+
[[package]]
|
|
74
|
+
name = "indoc"
|
|
75
|
+
version = "2.0.5"
|
|
76
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
77
|
+
checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
|
|
78
|
+
|
|
79
|
+
[[package]]
|
|
80
|
+
name = "libc"
|
|
81
|
+
version = "0.2.147"
|
|
82
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
83
|
+
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
|
|
84
|
+
|
|
85
|
+
[[package]]
|
|
86
|
+
name = "matrixmultiply"
|
|
87
|
+
version = "0.3.7"
|
|
88
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
89
|
+
checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77"
|
|
90
|
+
dependencies = [
|
|
91
|
+
"autocfg",
|
|
92
|
+
"rawpointer",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
[[package]]
|
|
96
|
+
name = "memoffset"
|
|
97
|
+
version = "0.9.0"
|
|
98
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
99
|
+
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
|
100
|
+
dependencies = [
|
|
101
|
+
"autocfg",
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
[[package]]
|
|
105
|
+
name = "ndarray"
|
|
106
|
+
version = "0.15.6"
|
|
107
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
108
|
+
checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32"
|
|
109
|
+
dependencies = [
|
|
110
|
+
"matrixmultiply",
|
|
111
|
+
"num-complex",
|
|
112
|
+
"num-integer",
|
|
113
|
+
"num-traits",
|
|
114
|
+
"rawpointer",
|
|
115
|
+
"rayon",
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
[[package]]
|
|
119
|
+
name = "num-complex"
|
|
120
|
+
version = "0.4.6"
|
|
121
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
122
|
+
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
|
123
|
+
dependencies = [
|
|
124
|
+
"num-traits",
|
|
125
|
+
]
|
|
126
|
+
|
|
127
|
+
[[package]]
|
|
128
|
+
name = "num-integer"
|
|
129
|
+
version = "0.1.45"
|
|
130
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
131
|
+
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
|
132
|
+
dependencies = [
|
|
133
|
+
"autocfg",
|
|
134
|
+
"num-traits",
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[[package]]
|
|
138
|
+
name = "num-traits"
|
|
139
|
+
version = "0.2.19"
|
|
140
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
142
|
+
dependencies = [
|
|
143
|
+
"autocfg",
|
|
144
|
+
]
|
|
145
|
+
|
|
146
|
+
[[package]]
|
|
147
|
+
name = "numpy"
|
|
148
|
+
version = "0.27.1"
|
|
149
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
150
|
+
checksum = "7aac2e6a6e4468ffa092ad43c39b81c79196c2bb773b8db4085f695efe3bba17"
|
|
151
|
+
dependencies = [
|
|
152
|
+
"libc",
|
|
153
|
+
"ndarray",
|
|
154
|
+
"num-complex",
|
|
155
|
+
"num-integer",
|
|
156
|
+
"num-traits",
|
|
157
|
+
"pyo3",
|
|
158
|
+
"pyo3-build-config",
|
|
159
|
+
"rustc-hash",
|
|
160
|
+
]
|
|
161
|
+
|
|
162
|
+
[[package]]
|
|
163
|
+
name = "once_cell"
|
|
164
|
+
version = "1.21.3"
|
|
165
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
166
|
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
|
167
|
+
|
|
168
|
+
[[package]]
|
|
169
|
+
name = "portable-atomic"
|
|
170
|
+
version = "1.7.0"
|
|
171
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
172
|
+
checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
|
|
173
|
+
|
|
174
|
+
[[package]]
|
|
175
|
+
name = "proc-macro2"
|
|
176
|
+
version = "1.0.105"
|
|
177
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
178
|
+
checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
|
|
179
|
+
dependencies = [
|
|
180
|
+
"unicode-ident",
|
|
181
|
+
]
|
|
182
|
+
|
|
183
|
+
[[package]]
|
|
184
|
+
name = "pyo3"
|
|
185
|
+
version = "0.27.2"
|
|
186
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
187
|
+
checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
|
|
188
|
+
dependencies = [
|
|
189
|
+
"indoc",
|
|
190
|
+
"libc",
|
|
191
|
+
"memoffset",
|
|
192
|
+
"num-complex",
|
|
193
|
+
"once_cell",
|
|
194
|
+
"portable-atomic",
|
|
195
|
+
"pyo3-build-config",
|
|
196
|
+
"pyo3-ffi",
|
|
197
|
+
"pyo3-macros",
|
|
198
|
+
"unindent",
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
[[package]]
|
|
202
|
+
name = "pyo3-build-config"
|
|
203
|
+
version = "0.27.2"
|
|
204
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
205
|
+
checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6"
|
|
206
|
+
dependencies = [
|
|
207
|
+
"target-lexicon",
|
|
208
|
+
]
|
|
209
|
+
|
|
210
|
+
[[package]]
|
|
211
|
+
name = "pyo3-ffi"
|
|
212
|
+
version = "0.27.2"
|
|
213
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
214
|
+
checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089"
|
|
215
|
+
dependencies = [
|
|
216
|
+
"libc",
|
|
217
|
+
"pyo3-build-config",
|
|
218
|
+
]
|
|
219
|
+
|
|
220
|
+
[[package]]
|
|
221
|
+
name = "pyo3-macros"
|
|
222
|
+
version = "0.27.2"
|
|
223
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
224
|
+
checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02"
|
|
225
|
+
dependencies = [
|
|
226
|
+
"proc-macro2",
|
|
227
|
+
"pyo3-macros-backend",
|
|
228
|
+
"quote",
|
|
229
|
+
"syn",
|
|
230
|
+
]
|
|
231
|
+
|
|
232
|
+
[[package]]
|
|
233
|
+
name = "pyo3-macros-backend"
|
|
234
|
+
version = "0.27.2"
|
|
235
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
236
|
+
checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9"
|
|
237
|
+
dependencies = [
|
|
238
|
+
"heck",
|
|
239
|
+
"proc-macro2",
|
|
240
|
+
"pyo3-build-config",
|
|
241
|
+
"quote",
|
|
242
|
+
"syn",
|
|
243
|
+
]
|
|
244
|
+
|
|
245
|
+
[[package]]
|
|
246
|
+
name = "quote"
|
|
247
|
+
version = "1.0.43"
|
|
248
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
249
|
+
checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
|
|
250
|
+
dependencies = [
|
|
251
|
+
"proc-macro2",
|
|
252
|
+
]
|
|
253
|
+
|
|
254
|
+
[[package]]
|
|
255
|
+
name = "rawpointer"
|
|
256
|
+
version = "0.2.1"
|
|
257
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
258
|
+
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
|
259
|
+
|
|
260
|
+
[[package]]
|
|
261
|
+
name = "rayon"
|
|
262
|
+
version = "1.11.0"
|
|
263
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
264
|
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
|
|
265
|
+
dependencies = [
|
|
266
|
+
"either",
|
|
267
|
+
"rayon-core",
|
|
268
|
+
]
|
|
269
|
+
|
|
270
|
+
[[package]]
|
|
271
|
+
name = "rayon-core"
|
|
272
|
+
version = "1.13.0"
|
|
273
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
274
|
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
|
|
275
|
+
dependencies = [
|
|
276
|
+
"crossbeam-deque",
|
|
277
|
+
"crossbeam-utils",
|
|
278
|
+
]
|
|
279
|
+
|
|
280
|
+
[[package]]
|
|
281
|
+
name = "rustc-hash"
|
|
282
|
+
version = "2.1.1"
|
|
283
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
284
|
+
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
|
|
285
|
+
|
|
286
|
+
[[package]]
|
|
287
|
+
name = "scopeguard"
|
|
288
|
+
version = "1.1.0"
|
|
289
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
290
|
+
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
|
291
|
+
|
|
292
|
+
[[package]]
|
|
293
|
+
name = "syn"
|
|
294
|
+
version = "2.0.114"
|
|
295
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
296
|
+
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
|
297
|
+
dependencies = [
|
|
298
|
+
"proc-macro2",
|
|
299
|
+
"quote",
|
|
300
|
+
"unicode-ident",
|
|
301
|
+
]
|
|
302
|
+
|
|
303
|
+
[[package]]
|
|
304
|
+
name = "target-lexicon"
|
|
305
|
+
version = "0.13.4"
|
|
306
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
307
|
+
checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba"
|
|
308
|
+
|
|
309
|
+
[[package]]
|
|
310
|
+
name = "unicode-ident"
|
|
311
|
+
version = "1.0.9"
|
|
312
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
313
|
+
checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
|
|
314
|
+
|
|
315
|
+
[[package]]
|
|
316
|
+
name = "unindent"
|
|
317
|
+
version = "0.2.3"
|
|
318
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
319
|
+
checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
|
|
@@ -10,8 +10,6 @@ name = "ffsim"
|
|
|
10
10
|
crate-type = ["cdylib"]
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
|
-
blas = "0.23"
|
|
14
|
-
blas-src = "0.14"
|
|
15
13
|
ndarray = { version = "0.15", features = ["rayon"] }
|
|
16
14
|
num-integer = "0.1"
|
|
17
15
|
numpy = "0.27"
|
|
@@ -21,7 +19,3 @@ pyo3 = { version = "0.27", features = [
|
|
|
21
19
|
"abi3-py310",
|
|
22
20
|
] }
|
|
23
21
|
rayon = "1.11"
|
|
24
|
-
|
|
25
|
-
[target.'cfg(target_os = "linux")'.dependencies]
|
|
26
|
-
blas-src = { version = "0.14", features = ["openblas"] }
|
|
27
|
-
openblas-src = { version = "0.10", features = ["system"] }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ffsim
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.76
|
|
4
4
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
5
5
|
Classifier: Programming Language :: Python
|
|
6
6
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
@@ -69,6 +69,22 @@ This method won't work natively on Windows, however. Refer to the [installation
|
|
|
69
69
|
|
|
70
70
|
<!-- end installation -->
|
|
71
71
|
|
|
72
|
+
## Get started
|
|
73
|
+
|
|
74
|
+
<!-- start get-started -->
|
|
75
|
+
|
|
76
|
+
Visit [*State vectors and gates*](https://qiskit-community.github.io/ffsim/explanations/state-vectors-and-gates.html) to start learning ffsim's core concepts, or jump straight into a [tutorial](https://qiskit-community.github.io/ffsim/tutorials/double-factorized-trotter.html). Check out the [guides](https://qiskit-community.github.io/ffsim/how-to-guides/index.html) for help with specific tasks, or visit the [API reference](https://qiskit-community.github.io/ffsim/api/index.html) for detailed documentation of all function and classes available in the library.
|
|
77
|
+
|
|
78
|
+
<!-- end get-started -->
|
|
79
|
+
|
|
80
|
+
## Multithreading
|
|
81
|
+
|
|
82
|
+
<!-- start multithreading -->
|
|
83
|
+
|
|
84
|
+
Some ffsim functions implemented in Rust use multithreading. The number of threads can be controlled using the environment variable `RAYON_NUM_THREADS`. For example, to disable multithreading, set this variable as `RAYON_NUM_THREADS=1`.
|
|
85
|
+
|
|
86
|
+
<!-- end multithreading -->
|
|
87
|
+
|
|
72
88
|
## Code example
|
|
73
89
|
|
|
74
90
|
<!-- start code-example -->
|
|
@@ -104,10 +120,6 @@ print(energy) # prints -104.17181289596
|
|
|
104
120
|
|
|
105
121
|
<!-- end code-example -->
|
|
106
122
|
|
|
107
|
-
## Multithreading
|
|
108
|
-
|
|
109
|
-
Some ffsim functions implemented in Rust use multithreading. The number of threads can be set using the environment variable `RAYON_NUM_THREADS`. For example, to disable multithreading, set this variable as `RAYON_NUM_THREADS=1`.
|
|
110
|
-
|
|
111
123
|
## Citing ffsim
|
|
112
124
|
|
|
113
125
|
<!-- start citing -->
|
|
@@ -24,6 +24,22 @@ This method won't work natively on Windows, however. Refer to the [installation
|
|
|
24
24
|
|
|
25
25
|
<!-- end installation -->
|
|
26
26
|
|
|
27
|
+
## Get started
|
|
28
|
+
|
|
29
|
+
<!-- start get-started -->
|
|
30
|
+
|
|
31
|
+
Visit [*State vectors and gates*](https://qiskit-community.github.io/ffsim/explanations/state-vectors-and-gates.html) to start learning ffsim's core concepts, or jump straight into a [tutorial](https://qiskit-community.github.io/ffsim/tutorials/double-factorized-trotter.html). Check out the [guides](https://qiskit-community.github.io/ffsim/how-to-guides/index.html) for help with specific tasks, or visit the [API reference](https://qiskit-community.github.io/ffsim/api/index.html) for detailed documentation of all function and classes available in the library.
|
|
32
|
+
|
|
33
|
+
<!-- end get-started -->
|
|
34
|
+
|
|
35
|
+
## Multithreading
|
|
36
|
+
|
|
37
|
+
<!-- start multithreading -->
|
|
38
|
+
|
|
39
|
+
Some ffsim functions implemented in Rust use multithreading. The number of threads can be controlled using the environment variable `RAYON_NUM_THREADS`. For example, to disable multithreading, set this variable as `RAYON_NUM_THREADS=1`.
|
|
40
|
+
|
|
41
|
+
<!-- end multithreading -->
|
|
42
|
+
|
|
27
43
|
## Code example
|
|
28
44
|
|
|
29
45
|
<!-- start code-example -->
|
|
@@ -59,10 +75,6 @@ print(energy) # prints -104.17181289596
|
|
|
59
75
|
|
|
60
76
|
<!-- end code-example -->
|
|
61
77
|
|
|
62
|
-
## Multithreading
|
|
63
|
-
|
|
64
|
-
Some ffsim functions implemented in Rust use multithreading. The number of threads can be set using the environment variable `RAYON_NUM_THREADS`. For example, to disable multithreading, set this variable as `RAYON_NUM_THREADS=1`.
|
|
65
|
-
|
|
66
78
|
## Citing ffsim
|
|
67
79
|
|
|
68
80
|
<!-- start citing -->
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"source": [
|
|
115
115
|
"n_reps = 2\n",
|
|
116
116
|
"\n",
|
|
117
|
-
"# Construct from random t2- and t1-amplitudes. The t2-amplitudes are double
|
|
117
|
+
"# Construct from random t2- and t1-amplitudes. The t2-amplitudes are double-factorized\n",
|
|
118
118
|
"# to obtain the diagonal Coulomb matries and orbital rotations. The t1-amplitudes are\n",
|
|
119
119
|
"# used to set a final orbital rotation.\n",
|
|
120
120
|
"t2 = ffsim.random.random_t2_amplitudes(norb, nocc, seed=rng, dtype=float)\n",
|
|
@@ -12,6 +12,20 @@
|
|
|
12
12
|
:end-before: <!-- end installation -->
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
## Get started
|
|
16
|
+
|
|
17
|
+
```{include} ../README.md
|
|
18
|
+
:start-after: <!-- start get-started -->
|
|
19
|
+
:end-before: <!-- end get-started -->
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Multithreading
|
|
23
|
+
|
|
24
|
+
```{include} ../README.md
|
|
25
|
+
:start-after: <!-- start multithreading -->
|
|
26
|
+
:end-before: <!-- end multithreading -->
|
|
27
|
+
```
|
|
28
|
+
|
|
15
29
|
## Code example
|
|
16
30
|
|
|
17
31
|
```{include} ../README.md
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
ffsim is supported directly on Linux and macOS.
|
|
4
|
+
|
|
5
|
+
ffsim is not supported directly on Windows. Windows users have two main options:
|
|
6
|
+
|
|
7
|
+
- Use [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/). WSL provides a Linux environment where ffsim can be pip installed from PyPI or from source.
|
|
8
|
+
- Use ffsim within Docker. See [Use within Docker](#use-within-docker).
|
|
9
|
+
|
|
10
|
+
## Pip install
|
|
11
|
+
|
|
12
|
+
ffsim is available on [PyPI](https://pypi.org/project/ffsim/). You can install it by running
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install ffsim
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Install from source
|
|
19
|
+
|
|
20
|
+
You can use pip to install ffsim from source. For example:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
git clone https://github.com/qiskit-community/ffsim.git
|
|
24
|
+
cd ffsim
|
|
25
|
+
pip install .
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Use within Docker
|
|
29
|
+
|
|
30
|
+
We provide a [Dockerfile](https://github.com/qiskit-community/ffsim/blob/main/Dockerfile) and a [compose.yaml](https://github.com/qiskit-community/ffsim/blob/main/compose.yaml) file, which you can use to build a [Docker](https://www.docker.com/) image with just a few simple commands:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git clone https://github.com/qiskit-community/ffsim.git
|
|
34
|
+
cd ffsim
|
|
35
|
+
docker compose build
|
|
36
|
+
docker compose up
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Depending on your system configuration, you may need to type `sudo` before each `docker` command.
|
|
40
|
+
|
|
41
|
+
Once the container is running, navigate to <http://localhost:58888> in a web browser to access the Jupyter Notebook interface.
|
|
42
|
+
|
|
43
|
+
The home directory includes a subdirectory named `persistent-volume`. All work you’d like to save should be placed in this directory, as it is the only one that will be saved across different container runs.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"cell_type": "markdown",
|
|
5
5
|
"metadata": {},
|
|
6
6
|
"source": [
|
|
7
|
-
"#
|
|
7
|
+
"# Implement Trotter simulation of the double-factorized Hamiltonian\n",
|
|
8
8
|
"\n",
|
|
9
9
|
"In this tutorial, we'll write a function to implement approximate time evolution of the double-factorized Hamiltonian via a Trotter-Suzuki formula. See [Double-factorized representation of the molecular Hamiltonian](../explanations/double-factorized.ipynb) for background information. We'll compare our implementation with exact time evolution computed using direct operator exponentiation, as well as ffsim's built-in implementation [simulate_trotter_double_factorized](../api/stubs/ffsim.simulate_trotter_double_factorized.rst#ffsim.simulate_trotter_double_factorized).\n",
|
|
10
10
|
"\n",
|
|
@@ -5,7 +5,7 @@ build-backend = "maturin"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ffsim"
|
|
7
7
|
requires-python = ">=3.10"
|
|
8
|
-
version = "0.0.
|
|
8
|
+
version = "0.0.76"
|
|
9
9
|
description = "Faster simulation of fermionic quantum circuits."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
license = { file = "LICENSE" }
|
|
@@ -69,7 +69,7 @@ test-requires = "pytest"
|
|
|
69
69
|
test-command = "pytest {project}/tests"
|
|
70
70
|
|
|
71
71
|
[tool.cibuildwheel.linux]
|
|
72
|
-
before-all = "dnf install -y
|
|
72
|
+
before-all = "dnf install -y openssl-devel"
|
|
73
73
|
|
|
74
74
|
[tool.pytest.ini_options]
|
|
75
75
|
testpaths = ["tests"]
|
|
@@ -11,7 +11,7 @@ class FermionOperator(MutableMapping[tuple[tuple[bool, bool, int], ...], complex
|
|
|
11
11
|
def conserves_particle_number(self) -> bool: ...
|
|
12
12
|
def conserves_spin_z(self) -> bool: ...
|
|
13
13
|
def many_body_order(self) -> int: ...
|
|
14
|
-
def simplify(self, tol: float =
|
|
14
|
+
def simplify(self, tol: float = ...) -> None: ...
|
|
15
15
|
def copy(self) -> FermionOperator: ...
|
|
16
16
|
def __getitem__(self, key: tuple[tuple[bool, bool, int], ...]) -> complex: ...
|
|
17
17
|
def __setitem__(self, key: tuple[tuple[bool, bool, int], ...], complex) -> None: ...
|
|
@@ -40,7 +40,7 @@ def apply_givens_rotation_in_place(
|
|
|
40
40
|
vec: np.ndarray, c: float, s: complex, slice1: np.ndarray, slice2: np.ndarray
|
|
41
41
|
) -> None: ...
|
|
42
42
|
def givens_decomposition(
|
|
43
|
-
mat: np.ndarray,
|
|
43
|
+
mat: np.ndarray, tol: float = ...
|
|
44
44
|
) -> tuple[list[tuple[float, complex, int, int]], np.ndarray]: ...
|
|
45
45
|
def apply_num_op_sum_evolution_in_place(
|
|
46
46
|
vec: np.ndarray,
|
|
@@ -92,7 +92,7 @@ def zrotg(a: complex, b: complex, tol=1e-12) -> tuple[float, complex]:
|
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
def givens_decomposition(
|
|
95
|
-
mat: np.ndarray,
|
|
95
|
+
mat: np.ndarray, tol: float = 1e-12
|
|
96
96
|
) -> tuple[list[tuple[float, complex, int, int]], np.ndarray]:
|
|
97
97
|
r"""Givens rotation decomposition of a unitary matrix.
|
|
98
98
|
|
|
@@ -135,6 +135,7 @@ def givens_decomposition(
|
|
|
135
135
|
|
|
136
136
|
Args:
|
|
137
137
|
mat: The unitary matrix to decompose into Givens rotations.
|
|
138
|
+
tol: Matrix entries smaller than this value will be treated as equal to zero.
|
|
138
139
|
|
|
139
140
|
Returns:
|
|
140
141
|
- A list containing the Givens rotations :math:`G_1, \ldots, G_L`.
|
|
@@ -146,4 +147,4 @@ def givens_decomposition(
|
|
|
146
147
|
|
|
147
148
|
.. _Clements et al., "Optimal design for universal multiport interferometers" (2016): https://doi.org/10.1364/OPTICA.3.001460
|
|
148
149
|
""" # noqa: E501
|
|
149
|
-
return _lib.givens_decomposition(
|
|
150
|
+
return _lib.givens_decomposition(mat.astype(complex, copy=False), tol=tol)
|
|
@@ -72,8 +72,8 @@ def singles_excitations_unrestricted(
|
|
|
72
72
|
- :math:`a` runs over virtual spin-up orbitals,
|
|
73
73
|
- :math:`I` runs over occupied spin-down orbitals,
|
|
74
74
|
- :math:`A` runs over virtual spin-down orbitals,
|
|
75
|
-
- :math:`t^{(\alpha}
|
|
76
|
-
- :math:`t^{(\beta}
|
|
75
|
+
- :math:`t^{(\alpha)}_{ia}` are the spin-up singles amplitudes, and
|
|
76
|
+
- :math:`t^{(\beta)}_{IA}` are the spin-down singles amplitudes.
|
|
77
77
|
|
|
78
78
|
Args:
|
|
79
79
|
t1: The singles amplitudes. This should be a pair of Numpy arrays,
|
|
@@ -150,12 +150,12 @@ def doubles_excitations_unrestricted(
|
|
|
150
150
|
|
|
151
151
|
.. math::
|
|
152
152
|
|
|
153
|
-
T_2 = \
|
|
153
|
+
T_2 = \frac14 \sum_{ijab} t^{(\alpha \alpha)}_{ijab}
|
|
154
154
|
a^\dagger_{a\alpha} a^\dagger_{b\alpha} a_{j\alpha} a_{i\alpha} +
|
|
155
|
-
\
|
|
156
|
-
a^\dagger_{
|
|
157
|
-
\sum_{
|
|
158
|
-
|
|
155
|
+
\frac14 \sum_{IJAB} t^{(\beta \beta)}_{IJAB}
|
|
156
|
+
a^\dagger_{A\beta} a^\dagger_{B\beta} a_{J\beta} a_{I\beta} +
|
|
157
|
+
\sum_{iJaB} t^{(\alpha \beta)}_{iJaB}
|
|
158
|
+
a^\dagger_{a\alpha} a^\dagger_{B\beta} a_{J\beta} a_{i\alpha}
|
|
159
159
|
|
|
160
160
|
where
|
|
161
161
|
|
|
@@ -163,12 +163,12 @@ def doubles_excitations_unrestricted(
|
|
|
163
163
|
- :math:`a` and :math:`b` run over virtual spin-up orbitals,
|
|
164
164
|
- :math:`I` and :math:`J` run over occupied spin-down orbitals,
|
|
165
165
|
- :math:`A` and :math:`B` run over virtual spin-down orbitals,
|
|
166
|
-
- :math:`t^{(\alpha \alpha}
|
|
166
|
+
- :math:`t^{(\alpha \alpha)}_{ijab}` are the doubles amplitudes within spin-up
|
|
167
167
|
orbitals,
|
|
168
|
-
- :math:`t^{(\
|
|
169
|
-
|
|
170
|
-
- :math:`t^{(\
|
|
171
|
-
orbitals.
|
|
168
|
+
- :math:`t^{(\beta \beta)}_{IJAB}` are the doubles amplitudes within spin-down
|
|
169
|
+
orbitals, and
|
|
170
|
+
- :math:`t^{(\alpha \beta)}_{iJaB}` are the doubles amplitudes between spin-up
|
|
171
|
+
and spin-down orbitals.
|
|
172
172
|
|
|
173
173
|
Args:
|
|
174
174
|
t2: The doubles amplitudes. This should be a tuple of three of Numpy arrays,
|