  We consider approximation algorithms for the problem of finding $x$ of
minimal norm $\|x\|$ satisfying a linear system $\mathbf{A} x = \mathbf{b}$,
where the norm $\|\cdot \|$ is arbitrary and generally non-Euclidean. We show a
simple general technique for composing solvers, converting iterative solvers
with residual error $\|\mathbf{A} x - \mathbf{b}\| \leq t^{-\Omega(1)}$ into
solvers with residual error $\exp(-\Omega(t))$, at the cost of an increase in
$\|x\|$, by recursively invoking the solver on the residual problem
$\tilde{\mathbf{b}} = \mathbf{b} - \mathbf{A} x$. Convergence of the composed
solvers depends strongly on a generalization of the classical condition number
to general norms, reducing the task of designing algorithms for many such
problems to that of designing a \emph{generalized preconditioner} for
$\mathbf{A}$. The new ideas significantly generalize those introduced by the
author's earlier work on maximum flow, making them more widely applicable.
  As an application of the new technique, we present a nearly-linear time
approximation algorithm for uncapacitated minimum-cost flow on undirected
graphs. Given an undirected graph with $m$ edges labelled with costs, and $n$
vertices labelled with demands, the algorithm takes
$\epsilon^{-2}m^{1+o(1)}$-time and outputs a flow routing the demands with
total cost at most $(1+\epsilon)$ times larger than minimal, along with a dual
solution proving near-optimality. The generalized preconditioner is obtained by
embedding the cost metric into $\ell_1$, and then considering a simple
hierarchical routing scheme in $\ell_1$ where demands initially supported on a
dense lattice are pulled from a sparser lattice by randomly rounding unaligned
coordinates to their aligned neighbors. Analysis of the generalized condition
number for the preconditioner follows that of the classical multigrid algorithm
for lattice Laplacian systems.
