title: low RAM consuming c++ eigen solver
body: <p>I'm newbie in <em>C++ programming</em>, but I have a task to compute eigenvalues and eigenvectors (standard eigenproblem <em>Ax=lx</em>) for symmetric matrices (and hermitian)) for very large matrix of size: <em>binomial(L,L/2)</em> where <em>L</em> is about 18-22. Now I'm testing it on machine which has about 7.7 GB ram available, but at final I'll have access to PC with 64GB RAM.</p>
  
  <p>I've started with <em>Lapack++</em>. At the beginning my project assume to solve this problem only for symmetrical real matrices.</p>
  
  <p>This library was great. Very quick and small RAM consuming. It has an option to compute eigenvectors and place into input matrix A to save memory. It works! I thought that <em>Lapack++</em> eigensolver can handle with Hermitian matrix, but it can't for unknown reason (maybe I'm doing something wrong). My project has evolved and I should be able to calculate also this problem for Hermitian matrices.</p>
  
  <p>So I've tried to change library to <em>Armadillo library</em>. It works fine, but it isn't that nice as <em>Lapack++</em> which replaces <code>mat A</code> with all <code>eigenvec</code>, but of course supports hermitian matrices.</p>
  
  <p>Some statistic for L=14</p>
  
  <ul>
  <li><p><em>Lapack++</em>  RAM 126MB time 7.9s eigenval + eigenvectors</p></li>
  <li><p><em>Armadillo</em> RAM 216MB time 12s eigenval</p></li>
  <li><p><em>Armadillo</em> RAM 396MB time 15s eigenval+eigenvectors</p></li>
  </ul>
  
  <p>Let's do some calculation: <code>double</code> variable is about <em>8B</em>. My matrix has size
  <em>binomial(14,7) = 3432</em>, so in the ideal case it should have <em>3432^2*8/1024^2 = 89 MB</em>.</p>
  
  <p>My question is: is it posible to modify or inforce <em>Armadillo</em> to do a nice trick as <em>Lapack++</em>? <em>Armadillo</em> uses <code>LAPACK</code> and <code>BLAS</code> routines. Or maybe someone can recomemnd another approach to this problem using another library?</p>
  
  <p>P.S.:
  My matrix is really sparse. It has about <em>2 * binomial(L,L/2)</em> non-zero elements.
  I've tried to compute this with <code>SuperLU</code> in CSC format but It wasn't very effective, for L=14 -> RAM 185MB, but time 135s.</p>