def test_dist_dot(d1, d2, d3): print "testing dist_dot with d1 = " + str(d1) + ", d2 = " + str(d2) + ", d3 = " + str(d3) a = dist.dist_random_normal([d1, d2], [10, 10]) b = dist.dist_random_normal([d2, d3], [10, 10]) c = dist.dist_dot(a, b) a_val = a.assemble() b_val = b.assemble() c_val = c.assemble() np.testing.assert_allclose(np.dot(a_val, b_val), c_val)
def test_dist_tsqr(d1, d2): print "testing dist_tsqr with d1 = " + str(d1) + ", d2 = " + str(d2) a = dist.dist_random_normal([d1, d2], [10, 10]) q, r = dist.dist_tsqr(a) a_val = a.assemble() q_val = q.assemble() np.testing.assert_allclose(np.dot(q_val, r), a_val) # check that a = q * r np.testing.assert_allclose(np.dot(q_val.T, q_val), np.eye(min(d1, d2)), atol=1e-6) # check that q.T * q = I np.testing.assert_allclose(np.triu(r), r) # check that r is upper triangular
def test_dist_tsqr_hr(d1, d2): print "testing dist_tsqr_hr with d1 = " + str(d1) + ", d2 = " + str(d2) a = dist.dist_random_normal([d1, d2], [10, 10]) a_val = a.assemble() y, t, y_top, r = dist.dist_tsqr_hr(a) tall_eye = np.zeros((d1, min(d1, d2))) np.fill_diagonal(tall_eye, 1) q = tall_eye - np.dot(y, np.dot(t, y_top.T)) np.testing.assert_allclose(np.dot(q.T, q), np.eye(min(d1, d2)), atol=1e-6) # check that q.T * q = I np.testing.assert_allclose(np.dot(q, r), a_val) # check that a = (I - y * t * y_top.T) * r