Dear Robert, > > I got the following error when running fnirt. I don't know if it's a > bug report or something with my images. > > ************************************************* > SpMat::SolveForx: Warning requested tolerence not obtained. > Requested tolerance was 0.001, and achieved tolerance was 0.0883485 > This may or may not be a problem in your application, but you should > look into it > ************************************************* In all likelihood you will not need to worry about this. For each iteration fnirt solves a very large system of linear equations, so large that it is not possible to use direct methods. Instead it uses an iterative solver. In that solver a "tentative solution" is checked by multiplying it with the original matrix and comparing the result to the original data vector. Once a "solution" is found that almost perfectly replicates the original data (i.e. when the difference is below the requested tolerance) it is said to have converged. Sometimes, especially if the more "advanced" intensity models are used, that system becomes quite poorly conditioned and the tolerance is never achieved. The linear solver will then issue that warning. However, because it is used as part of a Leveberg-Marquardt scheme that typically just means that for the next iteration the matrix will be nudged to become better conditioned, and the next step will be good. So, in conclusion if the results of the registration looks good you can safely ignore this warning. The warning is really more for the application programmer that uses the linear solver, to tell him that he/she needs to rethink his/her choice of tolerance. I should probably turn it off in fnirt so as not to worry people. Good luck Jesper