--- linalg/hh_old.c 2014-05-30 12:57:40.232099826 +1000 +++ linalg/hh.c 2014-05-30 12:58:53.603105257 +1000 @@ -59,20 +59,20 @@ int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x) { - if (A->size1 > A->size2) + if (A->size2 > A->size1) { /* System is underdetermined. */ GSL_ERROR ("System is underdetermined", GSL_EINVAL); } - else if (A->size2 != x->size) + else if (A->size1 != x->size) { GSL_ERROR ("matrix and vector sizes must be equal", GSL_EBADLEN); } else { - const size_t N = A->size1; - const size_t M = A->size2; + const size_t M = A->size1; + const size_t N = A->size2; size_t i, j, k; REAL *d = (REAL *) malloc (N * sizeof (REAL));