def test_exhaustive_state_dfe_run(benchmarker: BenchmarkConnection): wfnsim = NumpyWavefunctionSimulator(n_qubits=1) process = Program(X(0)) texpt = generate_exhaustive_state_dfe_experiment(program=process, qubits=[0], benchmarker=benchmarker) for setting in texpt: setting = setting[0] prog = Program() for oneq_state in setting.in_state.states: prog += _one_q_state_prep(oneq_state) prog += process expectation = wfnsim.reset().do_program(prog).expectation( setting.out_operator) assert expectation == 1.
def wfn_measure_observables(n_qubits, tomo_expt: TomographyExperiment): if len(tomo_expt.program.defined_gates) > 0: raise pytest.skip("Can't do wfn on defined gates yet") wfn = NumpyWavefunctionSimulator(n_qubits) for settings in tomo_expt: for setting in settings: prog = Program() for oneq_state in setting.in_state.states: prog += _one_q_state_prep(oneq_state) prog += tomo_expt.program yield ExperimentResult( setting=setting, expectation=wfn.reset().do_program(prog).expectation(setting.out_operator), stddev=0., total_counts=1, # don't set to zero unless you want nans )
def test_monte_carlo_process_dfe(benchmarker: BenchmarkConnection): process = Program(CNOT(0, 1)) texpt = generate_monte_carlo_process_dfe_experiment( program=process, qubits=[0, 1], n_terms=10, benchmarker=benchmarker) assert len(texpt) == 10 wfnsim = NumpyWavefunctionSimulator(n_qubits=2) for setting in texpt: setting = setting[0] prog = Program() for oneq_state in setting.in_state.states: prog += _one_q_state_prep(oneq_state) prog += process expectation = wfnsim.reset().do_program(prog).expectation( setting.out_operator) assert_almost_equal(expectation, 1., decimal=7)