Re: Floating point comparison inconsistencies of the geometric types

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Emre Hasegeli <emre(at)hasegeli(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andreas Karlsson <andreas(at)proxel(dot)se>, Teodor Sigaev <teodor(at)sigaev(dot)ru>
Subject: Re: Floating point comparison inconsistencies of the geometric types
Date: 2016-06-01 13:08:58
Message-ID: CA+Tgmoa0uSeM5AR1OTjAZELvV+KKatc51SfSMm18GXMc_013Xg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, May 27, 2016 at 6:43 AM, Emre Hasegeli <emre(at)hasegeli(dot)com> wrote:
> There are those macros defined for the built-in geometric types:
>
>> #define EPSILON 1.0E-06
>
>> #define FPzero(A) (fabs(A) <= EPSILON)
>> #define FPeq(A,B) (fabs((A) - (B)) <= EPSILON)
>> #define FPne(A,B) (fabs((A) - (B)) > EPSILON)
>> #define FPlt(A,B) ((B) - (A) > EPSILON)
>> #define FPle(A,B) ((A) - (B) <= EPSILON)
>> #define FPgt(A,B) ((A) - (B) > EPSILON)
>> #define FPge(A,B) ((B) - (A) <= EPSILON)
>
> with this warning:
>
>> * XXX These routines were not written by a numerical analyst.

I agree that those macros looks like a pile of suck. It's unclear to
me what purpose they're trying to accomplish, but regardless of what
it is, it's hard for me to believe that they are accomplishing it.
Whether 1.0E-06 is a correct fuzz factor presumably depends greatly on
the scale of the number; e.g. if the values are all like "3" it's
probably fine but if they are like "37142816124856" it's probably not
enough fuzz and if they are all like ".00000004" it's probably way too
much fuzz.

Figuring out what to do about it is harder. Your proposal seems to be
to remove them except where we need the fuzzy behavior, which doesn't
sound unreasonable, but I don't personally understand why we need it
in some places and not others. It would be good if some of the people
who are more numerically inclined than I am (and hate floats less, but
then that's everyone) could jump in here.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David G. Johnston 2016-06-01 13:18:00 Re: PostmasterPid not marked with PGDLLIMPORT
Previous Message Robert Haas 2016-06-01 13:00:29 Re: PostmasterPid not marked with PGDLLIMPORT