Re: pgsql: Tweak "line" test to avoid negative zeros on some platforms

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема Re: pgsql: Tweak "line" test to avoid negative zeros on some platforms
Дата
Msg-id 526AC452.9020501@gmx.net
обсуждение исходный текст
Ответ на Re: pgsql: Tweak "line" test to avoid negative zeros on some platforms  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-committers
On 10/25/13, 10:55 AM, Tom Lane wrote:
> diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
> index 25f0bfd..41178a6 100644
> --- a/src/backend/utils/adt/geo_ops.c
> +++ b/src/backend/utils/adt/geo_ops.c
> @@ -1116,6 +1116,9 @@ line_construct_pts(LINE *line, Point *pt1, Point *pt2)
>          line->A = (pt2->y - pt1->y) / (pt2->x - pt1->x);
>          line->B = -1.0;
>          line->C = pt1->y - line->A * pt1->x;
> +        /* on some platforms, the preceding expression tends to produce -0 */
> +        if (line->C == 0.0)
> +            line->C = 0.0;
>  #ifdef GEODEBUG
>          printf("line_construct_pts- line is neither vertical nor horizontal (diffs x=%.*g, y=%.*g\n",
>                 DBL_DIG, (pt2->x - pt1->x), DBL_DIG, (pt2->y - pt1->y));
>
>
> While this is surely pretty ugly, I think it is less ugly and more robust
> than what you've done here.  Comments?

Hehe, if that work's, then yes, it's better.



В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Tweak "line" test to avoid negative zeros on some platforms
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Suppress -0 in the C field of lines computed by line_construct_p