def test_exp_factory_with_asympt(test_f: Callable[[float], float], avoid_log: bool): """Test of exponential extrapolator.""" seeded_f = apply_seed_to_func(test_f, SEED) fac = ExpFactory(X_VALS, asymptote=A, avoid_log=avoid_log) fac.run_classical(seeded_f) assert not fac._opt_params zne_value = fac.reduce() assert np.isclose(zne_value, seeded_f(0, err=0), atol=CLOSE_TOL) # There are three parameters in the exponential ansatz assert len(fac._opt_params) == 3 exp_vals = fac.get_expectation_values() assert np.isclose( fac.extrapolate(X_VALS, exp_vals, asymptote=A, avoid_log=avoid_log), zne_value, ) assert np.isclose( fac.extrapolate( X_VALS, exp_vals, asymptote=A, avoid_log=avoid_log, full_output=True, )[0], zne_value, )
def test_avoid_log_keyword(): """Test that avoid_log=True and avoid_log=False give different results.""" fac = ExpFactory(X_VALS, asymptote=A, avoid_log=False) fac.run_classical(f_exp_down) znl_with_log = fac.reduce() fac.avoid_log = True znl_without_log = fac.reduce() assert not znl_with_log == znl_without_log
def test_exp_factory_no_asympt(test_f: Callable[[float], float]): """Test of exponential extrapolator.""" seeded_f = apply_seed_to_func(test_f, SEED) fac = ExpFactory(X_VALS, asymptote=None) fac.run_classical(seeded_f) assert not fac._opt_params assert np.isclose(fac.reduce(), seeded_f(0, err=0), atol=CLOSE_TOL) # There are three parameters to fit in the exponential ansatz assert len(fac._opt_params) == 3