def test_split_operator_trotter_ansatz_params(): ansatz = SplitOperatorTrotterAnsatz(hubbard_hamiltonian) assert (set(ansatz.params()) == {cirq.Symbol(name) for name in {'U_0_0', 'U_1_0', 'U_6_0', 'U_7_0', 'V_0_1_0', 'V_2_3_0', 'V_4_5_0', 'V_6_7_0'}}) ansatz = SplitOperatorTrotterAnsatz(hubbard_hamiltonian, iterations=2) assert (set(ansatz.params()) == {cirq.Symbol(name) for name in {'U_0_0', 'U_1_0', 'U_6_0', 'U_7_0', 'V_0_1_0', 'V_2_3_0', 'V_4_5_0', 'V_6_7_0', 'U_0_1', 'U_1_1', 'U_6_1', 'U_7_1', 'V_0_1_1', 'V_2_3_1', 'V_4_5_1', 'V_6_7_1'}})
def test_split_operator_trotter_ansatz_param_bounds(): ansatz = SplitOperatorTrotterAnsatz(hubbard_hamiltonian) assert list(symbol.name for symbol in ansatz.params()) == [ 'U_0_0', 'U_1_0', 'U_6_0', 'U_7_0', 'V_0_1_0', 'V_2_3_0', 'V_4_5_0', 'V_6_7_0'] assert ansatz.param_bounds() == [ (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0), (-1.0, 1.0)]
def test_split_operator_trotter_ansatz_default_initial_params_length(): ansatz = SplitOperatorTrotterAnsatz(hubbard_hamiltonian) assert len(ansatz.default_initial_params()) == len(list(ansatz.params()))