test_simeq_small.c results should be exactly X[0]=1.0, X[1]=-1.0 err is the error multiplying the solution, X, times matrix A*X=Y a small change in data gives a big change in solution. the big change is not indicated by the computed error. decimal .835*X[0] + .667*X[1] = .168 decimal .333*X[0] + .266*X[1] = .067 flt-pt 0.835000*X[0] + 0.667000*X[1] = 0.168000 flt-pt 0.333000*X[0] + 0.266000*X[1] = 0.067000 initialization complete, solving solution X[0]=1, err=0 solution X[1]=-1, err=0 now perturb .067 to .066, .001 change, and run again flt-pt 0.835000*X[0] + 0.667000*X[1] = 0.168000 flt-pt 0.333000*X[0] + 0.266000*X[1] = 0.066000 solution X[0]=-666, err=0 solution X[1]=834, err=2.84217e-14 notice computed errors are still small, yet, the values of X[0] and X[1] are very different. Typical problem with people and computers: Often called garbage in, garbage out! test_simeq_small.c finished