{
if (!Ints.util.contains(target, j) && A.get(j,j) == 0)
zeros.append(j);
}
IIntArray nonzeros = Ints.util.removeValueToNew(Ints.create.listRange(0, A.rows()), zeros);
// clean matrix
IDoubleArray Aclean = A.view(nonzeros.getArray(), nonzeros.getArray());
// rhs
IDoubleArray b = Doubles.create.array(A.rows());
for (int i=0; i<b.size(); i++)
b.set(i, -1);
for (int i=0; i<target.size(); i++)
b.set(target.get(i), 0);
// clean vector
IDoubleArray bclean = Doubles.util.subToNew(b, nonzeros);
// Attention: we had done the following here... does this make sense??
// int[] tmp = {0};
// DoubleMatrix2D Bclean = B.viewSelection(nonzeros, tmp);
IDoubleArray X = Algebra.util.solve(Aclean, bclean);
// reshuffle x into full vector
this.mfpts = Doubles.create.array(T.rows(), Double.NaN);
for (int i=0; i<nonzeros.size(); i++)
mfpts.set(nonzeros.get(i), X.get(i));
}