Seems to be sparse, O(N). T ~ c * N. But c is large.

when sparse matrices are used, behavior seems to be O(N) up to 6000 (50 sec). Will try larger sizes overnight. Patience is low. The Gauss-Seidel solver, however, is quite slow. And the SciPy sparse "direct" solver is super fast. Our Python Gauss-Seidel implementation is probably a main bottleneck, weighted as it is with mandatory memory copies. In production, it could be written in C, C++, or Fortran for great justice. Take off every ZIG.