1 from __future__
import annotations
4 from pathlib
import Path
9 REPO_ROOT = Path(__file__).resolve().parents[3]
10 if str(REPO_ROOT)
not in sys.path:
11 sys.path.insert(0, str(REPO_ROOT))
13 from benchmarks.density_matrix.planner_surface.common
import (
14 build_software_metadata,
17 from squander.partitioning.noisy_planner
import NoisyPartitionDescriptorSet
18 from squander.partitioning.noisy_runtime
import (
19 NoisyRuntimeExecutionResult,
20 execute_partitioned_density,
21 execute_partitioned_density_fused,
22 execute_sequential_density_reference,
25 PHASE3_RUNTIME_DENSITY_TOL = 1e-10
26 PHASE3_RUNTIME_ENERGY_TOL = 1e-8
30 return np.linspace(0.05, 0.05 * param_num, param_num, dtype=np.float64)
33 def density_energy(hamiltonian, density_matrix: np.ndarray) -> tuple[float, float]:
34 energy = np.trace(hamiltonian.dot(density_matrix))
35 return float(np.real(energy)), float(np.imag(energy))
39 if isinstance(density_matrix, DensityMatrix):
40 return np.asarray(density_matrix.to_numpy())
41 return np.asarray(density_matrix)
45 partitioned_density: DensityMatrix | np.ndarray,
46 reference_density: DensityMatrix | np.ndarray,
50 delta = partitioned - reference
52 "frobenius_norm_diff": float(np.linalg.norm(delta)),
53 "max_abs_diff": float(np.max(np.abs(delta))),
58 descriptor_set: NoisyPartitionDescriptorSet,
59 parameters: np.ndarray,
61 allow_fusion: bool =
False,
62 ) -> tuple[NoisyRuntimeExecutionResult, DensityMatrix, dict[str, Any]]:
70 runtime_result.density_matrix, reference_density
72 return runtime_result, reference_density, metrics
76 descriptor_set: NoisyPartitionDescriptorSet,
77 parameters: np.ndarray,
78 ) -> tuple[NoisyRuntimeExecutionResult, DensityMatrix, dict[str, Any]]:
80 descriptor_set, parameters, allow_fusion=
True def execute_sequential_density_reference
Execute a sequential density reference.
def execute_partitioned_density
def build_initial_parameters
def execute_fused_with_reference
def coerce_density_matrix_array
def execute_partitioned_density_fused
def build_density_comparison_metrics
def execute_partitioned_with_reference