Hello.

2020-01-04 6:10 UTC+01:00, Matt Juntunen <matt.juntu...@hotmail.com>:
> Gilles,
>
> I took another look at the code and it turns out we can easily remove the
> entire Equivalency interface and just use methods of the form "eq(T,
> DoublePrecisionContext)", exactly the same way that the VectorXD classes do
> it now. This way, it's a little more clear what precision is being used for
> the comparison and we don't have an extra interface floating around. The
> original behavior can also be replicated with just "obj.eq(other,
> obj.getPrecision())".
>
> WDYT?

+1

For further consolidation, could we rename "eq" to "equals", and
make "equals(Object)" call "equals(T, DoublePrecisionContext)"?

Gilles

>
> -Matt
> ________________________________
> From: Gilles Sadowski <gillese...@gmail.com>
> Sent: Friday, January 3, 2020 8:12 PM
> To: Commons Developers List <dev@commons.apache.org>
> Subject: Re: [Geometry] Class "Equivalency"
>
> Hi.
>
> 2020-01-03 22:02 UTC+01:00, Matt Juntunen <matt.juntu...@hotmail.com>:
>> Gilles,
>>
>> Yes, users are responsible for handling their own PrecisionContexts. The
>> idea behind the Equivalency interface was to provide an easy way to
>> perform
>> "fuzzy" comparisons between objects. The interface itself does not define
>> what the comparison involves. Classes that implement the interface (such
>> as
>> Line and Plane) decide what "fuzzy" means in their particular case. All
>> of
>> the current implementations of this interface contain a requirement that
>> PrecisionContexts used by the compared objects (and used in floating
>> point
>> comparisons in the eq() method itself) be exactly equal in order for the
>> objects to be considered equivalent. This is done to make the operation
>> commutative, so that if "a.eq(b)" is true, then "b.eq(a)" is also true.
>> This
>> is documented on each implementing class.
>
> My impression is that it is more akin to "strict" equality rather
> than fuzzy.  Looking at the code, e.g. for "Line3D", it doesn't
> strike as obvious what the different use-cases are for "equals"
> and "eq".
> In effect, I could imagine that "fuzzy" equality could not be
> commutative (random, perhaps naive, thought): an instance with
> low precision would indicate that some result (where precision
> could have been lost) would consider itself equal to another
> instance (that may have have been set with higher precision).
>
> Gilles
>
>>
>> -Matt
>> ________________________________
>> From: Gilles Sadowski <gillese...@gmail.com>
>> Sent: Friday, January 3, 2020 12:56 PM
>> To: Commons Developers List <dev@commons.apache.org>
>> Subject: [Geometry] Class "Equivalency"
>>
>> Hello.
>>
>> I'm wary about making that class part of the public API.
>> I thought that the original idea was that users would be
>> responsible of how they handle the "PrecisionContext".
>> However, it seems that "Equivalency" requires equality
>> of "PrecisionContext" instances (not the "double" value).
>> This is non-obvious and IMHO deserves some explanation
>> in the Javadoc and user guide.
>>
>> Regards,
>> Gilles

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to