def test_x_y_to_zeta_eta(): x = np.random.rand(16) * 3000 y = np.random.rand(16) * 3000 x[-1] = y[-1] = 56.0 x[-2] = y[-2] = 0.0 factor_ = 4 / np.pi zeta_ = [] eta_ = [] for x_, y_ in zip(x, y): z = np.sqrt(x_**2 + y_**2) if x_ < y_: eta_.append(factor_ * np.arctan(x_ / y_)) zeta_.append(z) elif x_ > y_: eta_.append(factor_ * np.arctan(y_ / x_)) zeta_.append(-z) else: zeta_.append(z) eta_.append(1.0) z_temp, e_temp = x_y_to_zeta_eta([x_], [y_]) assert np.allclose(zeta_[-1], z_temp) assert np.allclose(eta_[-1], e_temp) zeta, eta = x_y_to_zeta_eta(x, y) assert np.allclose(zeta, np.asarray(zeta_)) assert np.allclose(eta, np.asarray(eta_))
def test_extended_czjzek_polar(): S0 = {"zeta": 1, "eta": 0.1} x, y = ExtCzjzekDistribution(S0, eps=0.05, polar=True).rvs(size=COUNT) x1, y1 = x_y_from_zeta_eta(*x_y_to_zeta_eta(x, y)) np.testing.assert_almost_equal(x, x1) np.testing.assert_almost_equal(y, y1)
def test_czjzek_polar(): x, y = CzjzekDistribution(sigma=0.5, polar=True).rvs(size=COUNT) x1, y1 = x_y_from_zeta_eta(*x_y_to_zeta_eta(x, y)) np.testing.assert_almost_equal(x, x1) np.testing.assert_almost_equal(y, y1)