On Mon, Jan 19, 2009 at 23:36, Charles R Harris <charlesr.har...@gmail.com> wrote: > > On Mon, Jan 19, 2009 at 9:17 PM, Robert Kern <robert.k...@gmail.com> wrote: >> >> On Mon, Jan 19, 2009 at 22:09, Charles R Harris >> <charlesr.har...@gmail.com> wrote: >> > >> > >> > On Mon, Jan 19, 2009 at 7:23 PM, Jonathan Taylor >> > <jonathan.tay...@utoronto.ca> wrote: >> >> >> >> Interesting. That makes sense and I suppose that also explains why >> >> there is no function to do this sort of thing for you. >> > >> > A combination of relative and absolute errors is another common >> > solution, >> > i.e., test against relerr*max(abs(array_of_inputs)) + abserr. In cases >> > like >> > this relerr is typically eps and abserr tends to be something like >> > 1e-12, >> > which keeps you from descending towards zero any further than you need >> > to. >> >> I don't think the absolute error term is appropriate in this case. If >> all of my inputs are of the size 1e-12, I would expect a result of >> 1e-14 to be significantly far from 0. > > Sure, that's why you *chose* constants appropriate to the problem.
But that's what eps*max(abs(array_of_inputs)) is supposed to do. In the formulation that you are using (e.g. that of assert_arrays_almost_equal()), the absolute error comes into play when you are comparing two numbers in ignorance of the processes that created them. The relative error in that formula is being adjusted by the size of the two numbers (*not* the inputs to the algorithm). The two numbers may be close to 0, but the relevant inputs to the algorithm may be ~1, let's say. In that case, you need the absolute error term to provide the scale information that is otherwise not present in the comparison. But if you know what the inputs to the calculation were, you can estimate the scale factor for the relative tolerance directly (rigorously, if you've done the numerical analysis) and the absolute tolerance is supernumerary. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion