@Test
public void testLanczosSolver() throws Exception {

  int numRows = 800;
  int numColumns = 500;
  Matrix corpus = randomHierarchicalMatrix(numRows, numColumns, false);
  Vector initialVector = new DenseVector(numColumns);
  initialVector.assign(1.0 / Math.sqrt(numColumns));
  int rank = 50;
  LanczosState state = new LanczosState(corpus, rank, initialVector);
  LanczosSolver solver = new LanczosSolver();
  solver.solve(state, rank, false);
  assertOrthonormal(state);
  for (int i = 0; i < rank/2; i++) {
    assertEigen(i, state.getRightSingularVector(i), corpus, ERROR_TOLERANCE, false);
  }
  //assertEigen(eigens, corpus, rank / 2, ERROR_TOLERANCE, false);
}