Re: [eigen] inverse unit test

[ Thread Index | Date Index | More Archives ]

Reading your answer, I understand that I was not clear enough and
silly, so let me try again:
ei_isMuchSmallerThan is

inline bool ei_isMuchSmallerThan(float a, float b, float prec =
 return ei_abs(a) <= ei_abs(b) * prec;

so what I understand is that in fact it checks if |a|/|b| is less than prec

but here what is required is to test if x is less prec so it is not
exactly the same.
However I understand that if you choose b = prec and prec = 1, you
achieve the same result but it is not very user friendly in my opinion
because a precision of 1.0 does not match my understanding of the
precision parameter and is far from the default value.

What I want to point is that I agree that we need a two parameters
function, but here we have a 3 parameter function.
And as a lazzy people I would really love to have a default value for
the second parameter...


P.S. Please, forget about my first remark, it was silly.

On Thu, Jun 10, 2010 at 9:54 AM, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> wrote:
> well, if you do isMuchSmallerThan(x,0) then that clearly means you want to
> check the x equals 0.
> Now let's consider isApproxZero(x); How can we decide whether x is close to
> zero without knowing the context, i.e., without knowing the magnitude of
> your non zeros? This is why we really have to add a "reference value"
> parameter to this function. So isApproxZero(x) becomes
> isApproxZero(x,reference) == isZeroComparedTo(x,reference) ==
> isMuchSmallerThan(x,reference).
> The only purpose of the isMuchSmallerThan function is to check a value is
> nearly zero. Nothing else. So this is really what you want.
> gael
> On Thu, Jun 10, 2010 at 9:42 AM, Manuel Yguel <manuel.yguel@xxxxxxxxx>
> wrote:
>> I hit the same problem several times and the implementation of
>> isMuchSmallerThan for float is:
>> inline bool ei_isMuchSmallerThan(float a, float b, float prec =
>> NumTraits<float>::dummy_precision())
>> {
>>  return ei_abs(a) <= ei_abs(b) * prec;
>> }
>> if b is zero, then whatever prec is, it will failed if a is not zero,
>> so I do agree with Hauke that his implementation is needed.
>> So in fact in my own code I finally used the function he proposed.
>> - cheers,
>> Manu

Mail converted by MHonArc 2.6.19+