| From: | Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> |
|---|---|
| To: | Chengpeng Yan <chengpeng_yan(at)outlook(dot)com>, rmt(at)lists(dot)postgresql(dot)org |
| Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: [PATCH] Fix overflow and underflow in regr_r2() |
| Date: | 2026-05-28 12:37:54 |
| Message-ID: | CAEZATCWwqMUHnjNzBday-fh15oPNqec3vLnqj7A8-G+vnmQ0RQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Sat, 23 May 2026 at 03:42, Chengpeng Yan <chengpeng_yan(at)outlook(dot)com> wrote:
>
> Thanks for the regr_intercept.patch. The approach looks good to me.
Thanks for reviewing, and sorry for the delay getting back to you.
> 2. `dy` seems a bit hard to understand. Perhaps `offset`, as used in the
> earlier sketch, would be clearer?
[Shrug] I think dy is common enough to denote a difference in
y-values, and it seems clear enough, given the large comment above it.
> 3. Do we need to add tests for the underflow path, and perhaps for the
> Inf/NaN guard?
Yeah, I think it makes sense to include a test with underflow, since
that really can lead to a large relative error. I don't think it's
worth testing the Inf/NaN guard, since that's more about avoiding
operating on technically uninitialised variables, and I don't believe
that it actually affects the results.
I've add this test case:
SELECT regr_intercept(y, x) FROM (VALUES (-1e-131, 0), (2e-131,
3e-131)) v(x, y);
Here, directly computing Sx * Sxy / Sxx causes an underflow to zero,
while the correct result should be 1e-131. Since Sy is 3e-131, this
makes a noticeable difference to the final result (without the patch,
it returns an intercept of 1.5e-131, whereas with the patch, it
correctly returns 1e-131).
If there are no objections from the RMT, I'll push both of these (to
HEAD only) in a couple of days or so.
Regards,
Dean
| Attachment | Content-Type | Size |
|---|---|---|
| v2-0001-Improve-overflow-underflow-handling-in-regr_r2.patch | text/x-patch | 7.2 KB |
| v2-0002-Improve-overflow-underflow-handling-in-regr_inter.patch | text/x-patch | 4.3 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Robert Haas | 2026-05-28 12:40:39 | Re: injection_points: Switch wait/wakeup to use atomics rather than latches |
| Previous Message | Robert Haas | 2026-05-28 12:28:59 | Re: code contributions for 2025, WIP version |