! \brief Performs LU factorization in place. * * This is Crout's algorithm (cf., Num. Rec. in C, Section 2.3). The map of * swapped indeces is recorded in idx. The return value is +1 or -1 * depending on whether the number of row swaps was even or odd * respectively. idx must be preinitialized to a valid set of indices * (e.g., {1,2, ... ,A.nr_rows()}). */