예제 #1
0
 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)
예제 #2
0
 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
예제 #3
0
 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