Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSa04-003Gru-37 for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 12:38:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSa01-00BxrW-2P for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 12:38:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSa01-00BxrO-0g for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 12:38:10 +0000 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSZzz-00000001AJA-2gkC for pgsql-hackers@postgresql.org; Thu, 28 May 2026 12:38:09 +0000 Received: by mail-qv1-xf2c.google.com with SMTP id 6a1803df08f44-8b5232009a6so176999076d6.1 for ; Thu, 28 May 2026 05:38:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779971887; cv=none; d=google.com; s=arc-20240605; b=bo2XRC3DMJwYWGh0EglO4GliOz8cxX8paE0xEZYZ/vwg5gTKNRGqnmi7lPeGdDdu96 ZJTRld1dGR6pyHFZyQn3+eFswX9S2/F3T8VeDsogY6JoIWw005qYZcSLmdDsirJMhWlA XQPpHzHbuvgRolR+LcI5ySiIV8rnUhv4YlOWYJN/qyq+TFqWlA5xdwlKAaR5kofdraeE Yvtbhi6o7QXbzsHygN56OYXjdmQmrKo2uN4UEjFmOWXhISAUgnUaM1Xm1bnQCCfKV1f+ 8OfstIvXvAepQAnJk7IYr1dD9Vg0wbU9VcpQ0IAyG3mt+37UGydCHx5tqI97x7shf1NA yZwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=is2x96mjCTIkwUcYt6nMs63eJWZ84XlHIj5apQ/Xl9c=; fh=te8+GTI8VJM1Oe3sRyNmwVZ14D5lIoxzdxPQhy/MYPE=; b=Tp9FsJztMXq4nbZez5NMCieKaFpCnLyx5osR8a/XeQ3z7JQ6A+DnYNID5S5uyceL9M zIuwibnaMWutsgKTjVs6GWHDnwjXE1wK05wMWuh/jmox7pZtgr4hPUsGH2dAlgdWH+Jj jSg/dvHoX0gzfS9zF7q3Ayzc80fhkGo+tjCpq6wbpjFU/twbGAEDh/Beta2ZlwxI+bLr uqoZq8WF017vwDZ2jQXoY5pG5dksfeszDVvZDOMdYu2CiwSlcnKQXzOV2kXfBUh2r6M8 QRORFPUNyJkVVIGu9DUi88TiCsoin1TpiyCCQiMJemMQMfnp0YQ64WZUJKOI7F8xUbip Keag==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779971887; x=1780576687; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=is2x96mjCTIkwUcYt6nMs63eJWZ84XlHIj5apQ/Xl9c=; b=lEle/bw7H7gfiOJNc9D+ONL14GyV/seGO9VP8b0Vmodn+r9V+uyeigzH7sLvrQ3cfY s55eFwvYaL9Y6EXUAnrnHqcalJi1CNE1Iwlinz59Tn5vQmkp8m6dDm8/L6loixwW+9Lq 36jDAZVGBNHpqFOSWzCwJKnAjNxgJuCaarWLkhIjp8bpN2aZprryifUIUD9WcMNuuDbZ 5fNZDQSG7aDJPSFVCsuVTS0Y9pvMi2Oz/YP2eYOO4wT9USxApRmW/G4ELDsEGoIeP7q/ 64iOaLIs7mWfCAPu6l3xoT1B4QZ/XjXSTDHma/DrrKsK/5t9ximooGFeKlDEGNbEG7Hc onKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779971887; x=1780576687; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=is2x96mjCTIkwUcYt6nMs63eJWZ84XlHIj5apQ/Xl9c=; b=oDq12SIhfjv/G1vG2GmLBYrHxyM6ki9lBe6bbfHh2aDUIL4vgNeCvGtGnIuc5Eo+dB TbVWajTcPeIED1uxmmNJyCN7Jo18OpmfQ32LN/EkOB/7LqW3gnIru5d9mdFAAO0M53E8 7mnrHefC2L08jyYiA/+bj9pl0C3Xvr9GX/KqsvHamxkMpihAJ0Ql1Tll04p6k3j8VGzA fMgzp3uCyfYu9rDu/FPpxiJdd9qfhTdfU+EFIcJ3Ra6BiSi9tYtWODj0Fs6FuY+elS05 Wf1hATQAGpRg9bAg6deLPBHd75UOJd8EHIADYUCrNW2RpgpYuzqMuWOxVtCai6yVPrWr fikQ== X-Forwarded-Encrypted: i=1; AFNElJ8Dn9LW1Yz1fISqCfEAdWO5iHJtH2wanUa7EAe1LDNnQQzuDd87ubCrm74XWgmzeRkQCFfoaXK5OXtPw2N9@postgresql.org X-Gm-Message-State: AOJu0YxAM5LDt6wBTsxhpElJ4dVwx3GLXuvrb8PgysblQLkU98ZUHFza YD1C9UDOpa9ZKowLr6cwqvevxofCYDqW+VYuRuvVi0/SBhNCfIyq4fDD6UC4Xc4ChMCJ7dBeSqL q/IJ2Rue4mbN66Nvo5rnajT/y054Be1k= X-Gm-Gg: Acq92OGJ+PiKY+f/O2EMvDbvnl+DIvtCjz0zUqFP/l9dqqw3oauoBTTS6ZjLR5sWNm3 A71zwg1/JQcDjKemI1oaBwiwew7D4I4AyW+LQF5ecUo9i0iKcqmQBo++fqZEa8sMR6gk/GMlUjR ZN/OLMj9S7Ti0Nh9rDOTFaNAvKRZDRBIKCokrTqO5zMmL5S+xef0FRkrSZNqdQrl8Ih6tka0JQ0 7syuVeEMaH4iUI4Jq4lc/we2xmN9IkjslJslPnN3Dsbdbvi/yhW7+VVm1j9J/7GPypqWU0CBZhP uI3FIvwnndIlPhfTGdjDGrwAts1ddhWs9naTXgqkvEnQFWFJimgR X-Received: by 2002:a05:6214:4705:b0:8cc:d02f:da86 with SMTP id 6a1803df08f44-8ccd02fe783mr38019116d6.22.1779971886683; Thu, 28 May 2026 05:38:06 -0700 (PDT) MIME-Version: 1.0 References: <33E01656-BB3B-46E9-A41F-24A01A7C35F4@outlook.com> <1494820.1778938764@sss.pgh.pa.us> <1506197.1778949916@sss.pgh.pa.us> <1513654.1778956979@sss.pgh.pa.us> <1524050.1778966323@sss.pgh.pa.us> <10B9314B-B6F2-4657-94BC-C990F918CE44@outlook.com> In-Reply-To: <10B9314B-B6F2-4657-94BC-C990F918CE44@outlook.com> From: Dean Rasheed Date: Thu, 28 May 2026 13:37:54 +0100 X-Gm-Features: AVHnY4K6urtXL2mvNacrwfJyLUyzkD8IhwzpQfCs7dlkuL4fxD94tWxjzDf4mFc Message-ID: Subject: Re: [PATCH] Fix overflow and underflow in regr_r2() To: Chengpeng Yan , rmt@lists.postgresql.org Cc: Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000004ac6c0652e000ba" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000004ac6c0652e000ba Content-Type: text/plain; charset="UTF-8" On Sat, 23 May 2026 at 03:42, Chengpeng Yan 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 --00000000000004ac6c0652e000ba Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Improve-overflow-underflow-handling-in-regr_r2.patch" Content-Disposition: attachment; filename="v2-0001-Improve-overflow-underflow-handling-in-regr_r2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppgs34u0 RnJvbSA2ZGYxNTJkNTI2ZDI4YzM4MjcyZDVmZjE3ZWZjZDJiYTE4NGY1NjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAxNiBNYXkgMjAyNiAwOTowNzoyMiArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIgMS8yXSBJbXByb3ZlIG92ZXJmbG93L3VuZGVyZmxvdyBoYW5kbGluZyBpbiByZWdyX3IyKCku CgpDb21taXQgNjQ5ODI4NzY5NmQgaW1wcm92ZWQgY29ycigpJ3MgZmluYWwgZnVuY3Rpb24gdG8g Y29wZSB3aXRoCm92ZXJmbG93L3VuZGVyZmxvdyBpbiB0aGUgZmluYWwgY2FsY3VsYXRpb24sIGFu ZCBjbGFtcGVkIGl0cyByZXN1bHQgdG8KWy0xLCAxXSBpbiBjYXNlIG9mIHJvdW5kb2ZmIGVycm9y LiBJbXByb3ZlIHJlZ3JfcjIoKSBpbiBhIHNpbWlsYXIgd2F5LApjbGFtcGluZyBpdHMgcmVzdWx0 IHRvIFswLCAxXS4KCkFyZ3VhYmx5IHRoaXMgaXMgYSBidWcgZml4LCBidXQgZ2l2ZW4gdGhlIGxh Y2sgb2YgcHJpb3IgY29tcGxhaW50cywKcmVmcmFpbiBmcm9tIGJhY2stcGF0Y2hpbmcsIGFzIHdl IGRpZCB3aXRoIDY0OTgyODc2OTZkLgoKUmVwb3J0ZWQtYnk6IENoZW5ncGVuZyBZYW4gPGNoZW5n cGVuZ195YW5Ab3V0bG9vay5jb20+CkF1dGhvcjogQ2hlbmdwZW5nIFlhbiA8Y2hlbmdwZW5nX3lh bkBvdXRsb29rLmNvbT4KUmV2aWV3ZWQtYnk6IERlYW4gUmFzaGVlZCA8ZGVhbi5hLnJhc2hlZWRA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzMzRTAxNjU2LUJCM0ItNDZFOS1BNDFGLTI0QTAx QTdDMzVGNEBvdXRsb29rLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jICAg ICAgICAgICAgfCAzNyArKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YWdncmVnYXRlcy5vdXQgfCA1OCArKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsICAgICAgfCAxOSArKysrKystLQogMyBmaWxlcyBjaGFu Z2VkLCA4NyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZmxvYXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5j CmluZGV4IDM2MmMyOWFiODAzLi5jYzAwYzEwYzBkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2Zsb2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMKQEAg LTM5MTYsNyArMzkxNiwxMiBAQCBmbG9hdDhfcmVncl9yMihQR19GVU5DVElPTl9BUkdTKQogCWZs b2F0OAkJTiwKIAkJCQlTeHgsCiAJCQkJU3l5LAotCQkJCVN4eTsKKwkJCQlTeHksCisJCQkJbnVt ZXJhdG9yLAorCQkJCWRlbm9taW5hdG9yLAorCQkJCXNxcnRkZW5vbWluYXRvciwKKwkJCQlzcXJ0 cmVzdWx0LAorCQkJCXJlc3VsdDsKIAogCXRyYW5zdmFsdWVzID0gY2hlY2tfZmxvYXQ4X2FycmF5 KHRyYW5zYXJyYXksICJmbG9hdDhfcmVncl9yMiIsIDgpOwogCU4gPSB0cmFuc3ZhbHVlc1swXTsK QEAgLTM5MzgsNyArMzk0MywzNSBAQCBmbG9hdDhfcmVncl9yMihQR19GVU5DVElPTl9BUkdTKQog CWlmIChTeXkgPT0gMCkKIAkJUEdfUkVUVVJOX0ZMT0FUOCgxLjApOwogCi0JUEdfUkVUVVJOX0ZM T0FUOCgoU3h5ICogU3h5KSAvIChTeHggKiBTeXkpKTsKKwkvKgorCSAqIFRoZSBwcm9kdWN0cyBT eHkgKiBTeHkgYW5kL29yIFN4eCAqIFN5eSBtaWdodCB1bmRlcmZsb3cgb3Igb3ZlcmZsb3cuIElm CisJICogc28sIHdlIGNhbiByZWNvdmVyIGJ5IGNvbXB1dGluZyBTeHkgLyAoc3FydChTeHgpICog c3FydChTeXkpKSBhbmQKKwkgKiBzcXVhcmluZyBpdCBpbnN0ZWFkLiAgSG93ZXZlciwgdGhlIGRv dWJsZSBzcXJ0KCkgY2FsY3VsYXRpb24gaXMgYSBiaXQKKwkgKiBzbG93ZXIgYW5kIGxlc3MgYWNj dXJhdGUsIHNvIGRvbid0IGRvIGl0IGlmIHdlIGRvbid0IGhhdmUgdG8uCisJICovCisJbnVtZXJh dG9yID0gU3h5ICogU3h5OworCWRlbm9taW5hdG9yID0gU3h4ICogU3l5OworCWlmIChudW1lcmF0 b3IgPT0gMCB8fCBpc2luZihudW1lcmF0b3IpIHx8CisJCWRlbm9taW5hdG9yID09IDAgfHwgaXNp bmYoZGVub21pbmF0b3IpKQorCXsKKwkJc3FydGRlbm9taW5hdG9yID0gc3FydChTeHgpICogc3Fy dChTeXkpOworCQlzcXJ0cmVzdWx0ID0gU3h5IC8gc3FydGRlbm9taW5hdG9yOworCQlyZXN1bHQg PSBzcXJ0cmVzdWx0ICogc3FydHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXN1bHQgPSBudW1lcmF0 b3IgLyBkZW5vbWluYXRvcjsKKworCS8qCisJICogRGVzcGl0ZSBhbGwgdGhlc2UgcHJlY2F1dGlv bnMsIHRoaXMgZm9ybXVsYSBjYW4geWllbGQgcmVzdWx0cyBvdXRzaWRlCisJICogWzAsIDFdIGR1 ZSB0byByb3VuZG9mZiBlcnJvci4gIENsYW1wIGl0IHRvIHRoZSBleHBlY3RlZCByYW5nZS4KKwkg KgorCSAqIE5vdGUgdGhhdCByZXN1bHQgaXMgZ3VhcmFudGVlZCB0byBiZSBub24tbmVnYXRpdmUg YmVjYXNlIFN4eCBhbmQgU3l5CisJICogYXJlIG5vbi1uZWdhdGl2ZSwgc28gd2Ugb25seSBuZWVk IHRvIGNsYW1wIHRoZSB1cHBlciBlbmQgb2YgdGhlIHJhbmdlLgorCSAqLworCWlmIChyZXN1bHQg PiAxKQorCQlyZXN1bHQgPSAxOworCisJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwogfQogCiBE YXR1bQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggZmJkYTBl M2JiYzIuLjFjY2RmN2RmZGQ3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2FnZ3JlZ2F0ZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRl cy5vdXQKQEAgLTUxNiw2ICs1MTYsNyBAQCBTRUxFQ1QgY292YXJfcG9wKDE6OmZsb2F0OCwnbmFu Jzo6ZmxvYXQ4KSwgY292YXJfc2FtcCgzOjpmbG9hdDgsJ25hbic6OmZsb2F0OCk7CiAoMSByb3cp CiAKIC0tIGNoZWNrIHNvbWUgY2FzZXMgdGhhdCBmb3JtZXJseSBoYWQgcG9vciByb3VuZG9mZi1l cnJvciBiZWhhdmlvcgorLS0gbm90ZTogcmVncl9yMigpIGRpZmZlcnMgZnJvbSBjb3JyKCkgZm9y IGEgaG9yaXpvbnRhbCBsaW5lLCBwZXIgc3BlYwogU0VMRUNUIGNvcnIoMC4wOSwgZyksIHJlZ3Jf cjIoMC4wOSwgZykKICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIGc7CiAgY29yciB8IHJl Z3JfcjIgCkBAIC01MzcsMzggKzUzOCw1NSBAQCBTRUxFQ1QgY29ycigxLjMgKyBnICogMWUtMTYs IDEuMyArIGcgKiAxZS0xNikKICAgICAgCiAoMSByb3cpCiAKLVNFTEVDVCBjb3JyKDFlLTEwMCAr IGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUpCistLSBjaGVjayBzb21lIGNhc2VzIHRo YXQgZm9ybWVybHkgc3VmZmVyZWQgZnJvbSBpbnRlcm5hbCBvdmVyZmxvdy91bmRlcmZsb3cKK1NF TEVDVCBjb3JyKDFlLTEwMCArIGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUpLAorICAg ICAgIHJlZ3JfcjIoMWUtMTAwICsgZyAqIDFlLTEwNSwgMWUtMTAwICsgZyAqIDFlLTEwNSkKICAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZzsKLSBjb3JyIAotLS0tLS0tCi0gICAgMQorIGNv cnIgfCByZWdyX3IyIAorLS0tLS0tKy0tLS0tLS0tLQorICAgIDEgfCAgICAgICAxCiAoMSByb3cp CiAKLVNFTEVDVCBjb3JyKDFlLTEwMCArIGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUp CitTRUxFQ1QgY29ycigxZS0xMDAgKyBnICogMWUtMTA1LCAxZS0xMDAgKyBnICogMWUtMTA1KSwK KyAgICAgICByZWdyX3IyKDFlLTEwMCArIGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUp CiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwotIGNvcnIgCi0tLS0tLS0KLSAgICAx CisgY29yciB8IHJlZ3JfcjIgCistLS0tLS0rLS0tLS0tLS0tCisgICAgMSB8ICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIGNvcnIoMWUxMDAgKyBnICogMWU5NSwgMWUxMDAgKyBnICogMWU5NSks CisgICAgICAgcmVncl9yMigxZTEwMCArIGcgKiAxZTk1LCAxZTEwMCArIGcgKiAxZTk1KQorICBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBnOworIGNvcnIgfCByZWdyX3IyIAorLS0tLS0tKy0t LS0tLS0tLQorICAgIDEgfCAgICAgICAxCiAoMSByb3cpCiAKIC0tIHRoZXNlIGV4YW1wbGVzIHBv c2UgZGVmaW5pdGlvbmFsIHF1ZXN0aW9ucyBmb3IgTmFOIGlucHV0cywKIC0tIHdoaWNoIHdlIHJl c29sdmUgYnkgc2F5aW5nIHRoYXQgYW4gYWxsLU5hTiBpbnB1dCBjb2x1bW4gaXMgbm90IGFsbCBl cXVhbAotU0VMRUNUIGNvcnIoZywgJ05hTicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBn OwotIGNvcnIgCi0tLS0tLS0KLSAgTmFOCitTRUxFQ1QgY29ycihnLCAnTmFOJyksIHJlZ3JfcjIo ZywgJ05hTicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOworIGNvcnIgfCByZWdyX3Iy IAorLS0tLS0tKy0tLS0tLS0tLQorICBOYU4gfCAgICAgTmFOCiAoMSByb3cpCiAKLVNFTEVDVCBj b3JyKDAuMSwgJ05hTicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwotIGNvcnIgCi0t LS0tLS0KLSAgICAgCitTRUxFQ1QgY29ycigwLjEsICdOYU4nKSwgcmVncl9yMigwLjEsICdOYU4n KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgZzsKKyBjb3JyIHwgcmVncl9yMiAKKy0tLS0t LSstLS0tLS0tLS0KKyAgICAgIHwgICAgICAgMQogKDEgcm93KQogCi1TRUxFQ1QgY29ycignTmFO JywgJ05hTicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwotIGNvcnIgCi0tLS0tLS0K LSAgTmFOCitTRUxFQ1QgY29ycignTmFOJywgMC4xKSwgcmVncl9yMignTmFOJywgMC4xKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzMCkgZzsKKyBjb3JyIHwgcmVncl9yMiAKKy0tLS0tLSstLS0t LS0tLS0KKyAgICAgIHwgICAgICAgIAorKDEgcm93KQorCitTRUxFQ1QgY29ycignTmFOJywgJ05h TicpLCByZWdyX3IyKCdOYU4nLCAnTmFOJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIGc7 CisgY29yciB8IHJlZ3JfcjIgCistLS0tLS0rLS0tLS0tLS0tCisgIE5hTiB8ICAgICBOYU4KICgx IHJvdykKIAogLS0gdGVzdCBhY2N1bSBhbmQgY29tYmluZSBmdW5jdGlvbnMgZGlyZWN0bHkKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKaW5kZXggNTgwZjM2NGJhOTcuLmEzMTBiMzllN2I4 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbApAQCAtMTQxLDIyICsxNDEsMzEgQEAg U0VMRUNUIGNvdmFyX3BvcCgxOjpmbG9hdDgsJ2luZic6OmZsb2F0OCksIGNvdmFyX3NhbXAoMzo6 ZmxvYXQ4LCdpbmYnOjpmbG9hdDgpOwogU0VMRUNUIGNvdmFyX3BvcCgxOjpmbG9hdDgsJ25hbic6 OmZsb2F0OCksIGNvdmFyX3NhbXAoMzo6ZmxvYXQ4LCduYW4nOjpmbG9hdDgpOwogCiAtLSBjaGVj ayBzb21lIGNhc2VzIHRoYXQgZm9ybWVybHkgaGFkIHBvb3Igcm91bmRvZmYtZXJyb3IgYmVoYXZp b3IKKy0tIG5vdGU6IHJlZ3JfcjIoKSBkaWZmZXJzIGZyb20gY29ycigpIGZvciBhIGhvcml6b250 YWwgbGluZSwgcGVyIHNwZWMKIFNFTEVDVCBjb3JyKDAuMDksIGcpLCByZWdyX3IyKDAuMDksIGcp CiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwogU0VMRUNUIGNvcnIoZywgMC4wOSks IHJlZ3JfcjIoZywgMC4wOSksIHJlZ3Jfc2xvcGUoZywgMC4wOSksIHJlZ3JfaW50ZXJjZXB0KGcs IDAuMDkpCiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwogU0VMRUNUIGNvcnIoMS4z ICsgZyAqIDFlLTE2LCAxLjMgKyBnICogMWUtMTYpCiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMpIGc7Ci1TRUxFQ1QgY29ycigxZS0xMDAgKyBnICogMWUtMTA1LCAxZS0xMDAgKyBnICogMWUt MTA1KQorCistLSBjaGVjayBzb21lIGNhc2VzIHRoYXQgZm9ybWVybHkgc3VmZmVyZWQgZnJvbSBp bnRlcm5hbCBvdmVyZmxvdy91bmRlcmZsb3cKK1NFTEVDVCBjb3JyKDFlLTEwMCArIGcgKiAxZS0x MDUsIDFlLTEwMCArIGcgKiAxZS0xMDUpLAorICAgICAgIHJlZ3JfcjIoMWUtMTAwICsgZyAqIDFl LTEwNSwgMWUtMTAwICsgZyAqIDFlLTEwNSkKICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykg ZzsKLVNFTEVDVCBjb3JyKDFlLTEwMCArIGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUp CitTRUxFQ1QgY29ycigxZS0xMDAgKyBnICogMWUtMTA1LCAxZS0xMDAgKyBnICogMWUtMTA1KSwK KyAgICAgICByZWdyX3IyKDFlLTEwMCArIGcgKiAxZS0xMDUsIDFlLTEwMCArIGcgKiAxZS0xMDUp CiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOworU0VMRUNUIGNvcnIoMWUxMDAgKyBn ICogMWU5NSwgMWUxMDAgKyBnICogMWU5NSksCisgICAgICAgcmVncl9yMigxZTEwMCArIGcgKiAx ZTk1LCAxZTEwMCArIGcgKiAxZTk1KQorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBnOwog CiAtLSB0aGVzZSBleGFtcGxlcyBwb3NlIGRlZmluaXRpb25hbCBxdWVzdGlvbnMgZm9yIE5hTiBp bnB1dHMsCiAtLSB3aGljaCB3ZSByZXNvbHZlIGJ5IHNheWluZyB0aGF0IGFuIGFsbC1OYU4gaW5w dXQgY29sdW1uIGlzIG5vdCBhbGwgZXF1YWwKLVNFTEVDVCBjb3JyKGcsICdOYU4nKSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzMCkgZzsKLVNFTEVDVCBjb3JyKDAuMSwgJ05hTicpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwotU0VMRUNUIGNvcnIoJ05hTicsICdOYU4nKSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzMCkgZzsKK1NFTEVDVCBjb3JyKGcsICdOYU4nKSwgcmVncl9yMihn LCAnTmFOJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIGc7CitTRUxFQ1QgY29ycigwLjEs ICdOYU4nKSwgcmVncl9yMigwLjEsICdOYU4nKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkg ZzsKK1NFTEVDVCBjb3JyKCdOYU4nLCAwLjEpLCByZWdyX3IyKCdOYU4nLCAwLjEpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSBnOworU0VMRUNUIGNvcnIoJ05hTicsICdOYU4nKSwgcmVncl9y MignTmFOJywgJ05hTicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwogCiAtLSB0ZXN0 IGFjY3VtIGFuZCBjb21iaW5lIGZ1bmN0aW9ucyBkaXJlY3RseQogQ1JFQVRFIFRBQkxFIHJlZ3Jf dGVzdCAoeCBmbG9hdDgsIHkgZmxvYXQ4KTsKLS0gCjIuNTEuMAoK --00000000000004ac6c0652e000ba Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-Improve-overflow-underflow-handling-in-regr_inter.patch" Content-Disposition: attachment; filename="v2-0002-Improve-overflow-underflow-handling-in-regr_inter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppgs88t1 RnJvbSAwMTg4MWYyZWEyNWRmYTJlYTkzNDY1ZWNlMjZjYzNlOGEwYWU4NTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAyOCBNYXkgMjAyNiAxMjo1MTowOSArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIgMi8yXSBJbXByb3ZlIG92ZXJmbG93L3VuZGVyZmxvdyBoYW5kbGluZyBpbgogcmVncl9pbnRl cmNlcHQoKS4KCkFzIHdpdGggY29ycigpIGFuZCByZWdyX3IyKCksIGltcHJvdmUgcmVncl9pbnRl cmNlcHQoKSdzIGZpbmFsCmZ1bmN0aW9uIHRvIGNvcGUgd2l0aCBvdmVyZmxvdy91bmRlcmZsb3cg aW4gdGhlIGZpbmFsIGNhbGN1bGF0aW9uLgpIZXJlLCBpbnN0ZWFkIG9mIHVzaW5nIHNxcnQoKSwg d2UgdXNlIGZyZXhwKCkgYW5kIGxkZXhwKCkgdG8gcmVjb3ZlciwKaWYgYW4gb3ZlcmZsb3cgb3Ig dW5kZXJmbG93IGlzIGRldGVjdGVkLCBzbyB0aGF0IHRoZSBtdWx0aXBsaWNhdGlvbgphbmQgZGl2 aXNpb24gc3RlcHMgb3BlcmF0ZSBvbiBub3JtYWxpc2VkIG1hbnRpc3NhcywgYW5kIGNhbm5vdApv dmVyZmxvdyBvciB1bmRlcmZsb3cuCgpBcyB3aXRoIDY0OTgyODc2OTZkLCBhbmQgdGhlIHByZXZp b3VzIGNvbW1pdCBpbXByb3ZpbmcgcmVncl9yMigpLCB0aGlzCmlzIGFyZ3VhYmx5IGEgYnVnIGZp eCwgYnV0IGdpdmVuIHRoZSBsYWNrIG9mIHByaW9yIGNvbXBsYWludHMsIHJlZnJhaW4KZnJvbSBi YWNrLXBhdGNoaW5nLgoKUmVwb3J0ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4K QXV0aG9yOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IENoZW5ncGVuZyBZYW4gPGNoZW5ncGVuZ195YW5Ab3V0bG9vay5jb20+CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vMzNFMDE2NTYtQkIzQi00NkU5LUE0MUYtMjRBMDFBN0MzNUY0 QG91dGxvb2suY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgICAgICAgICAg ICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9hZ2dyZWdhdGVzLm91dCB8IDEyICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dy ZWdhdGVzLnNxbCAgICAgIHwgIDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxv YXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCmluZGV4IGNjMDBjMTBjMGQ0Li4y NjJlYTJiNzNiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMKQEAgLTQwMTAsNyArNDAxMCw4IEBAIGZs b2F0OF9yZWdyX2ludGVyY2VwdChQR19GVU5DVElPTl9BUkdTKQogCQkJCVN4LAogCQkJCVN4eCwK IAkJCQlTeSwKLQkJCQlTeHk7CisJCQkJU3h5LAorCQkJCWR5OwogCiAJdHJhbnN2YWx1ZXMgPSBj aGVja19mbG9hdDhfYXJyYXkodHJhbnNhcnJheSwgImZsb2F0OF9yZWdyX2ludGVyY2VwdCIsIDgp OwogCU4gPSB0cmFuc3ZhbHVlc1swXTsKQEAgLTQwMjksNyArNDAzMCw0MSBAQCBmbG9hdDhfcmVn cl9pbnRlcmNlcHQoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoU3h4ID09IDApCiAJCVBHX1JFVFVS Tl9OVUxMKCk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KChTeSAtIFN4ICogU3h5IC8gU3h4KSAvIE4p OworCS8qCisJICogVGhlIGludGVyY2VwdCBpcyBnaXZlbiBieSAoU3kgLSBkeSkgLyBOLCB3aGVy ZSBkeSA9IFN4ICogU3h5IC8gU3h4LgorCSAqIEhvd2V2ZXIsIHdoZW4gY29tcHV0aW5nIGR5LCB0 aGUgaW50ZXJtZWRpYXRlIHByb2R1Y3QgU3ggKiBTeHkgbWlnaHQKKwkgKiB1bmRlcmZsb3cgb3Ig b3ZlcmZsb3cuICBJZiBzbywgd2UgY2FuIHJlY292ZXIgYnkgZGVjb21wb3NpbmcgU3gsIFN4eSwK KwkgKiBhbmQgU3h4IGludG8gbm9ybWFsaXplZCBtYW50aXNzYSBhbmQgaW50ZWdlciBwb3dlci1v Zi10d28gY29tcG9uZW50cywKKwkgKiBjb21wdXRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9u ZW50cyBvZiBkeSwgYW5kIHRoZW4gcmVjb21wb3NpbmcgZHkuCisJICogV2UgYXZvaWQgZG9pbmcg dGhpcyBpZiBTeCwgU3h5LCBvciBTeHggYXJlIGluZmluaXRlIG9yIE5hTiwgc2luY2UgdGhlCisJ ICogZXhwb25lbnQgcmV0dXJuZWQgYnkgZnJleHAoKSBpcyB1bnNwZWNpZmllZCBpbiB0aG9zZSBj YXNlcyAoYW5kIHRoZQorCSAqIGZpbmFsIHJlc3VsdCB3b3VsZCBiZSB0aGUgc2FtZSBpbiBhbnkg Y2FzZSkuCisJICovCisJZHkgPSBTeCAqIFN4eSAvIFN4eDsKKwlpZiAoKGR5ID09IDAgfHwgaXNp bmYoZHkpKSAmJgorCQkhKGlzaW5mKFN4KSB8fCBpc2luZihTeHkpIHx8IGlzaW5mKFN4eCkgfHwK KwkJICBpc25hbihTeCkgfHwgaXNuYW4oU3h5KSB8fCBpc25hbihTeHgpKSkKKwl7CisJCWZsb2F0 OAkJbV9TeCwKKwkJCQkJbV9TeHksCisJCQkJCW1fU3h4LAorCQkJCQltX2R5OworCQlpbnQJCQlu X1N4LAorCQkJCQluX1N4eSwKKwkJCQkJbl9TeHgsCisJCQkJCW5fZHk7CisKKwkJbV9TeCA9IGZy ZXhwKFN4LCAmbl9TeCk7CisJCW1fU3h5ID0gZnJleHAoU3h5LCAmbl9TeHkpOworCQltX1N4eCA9 IGZyZXhwKFN4eCwgJm5fU3h4KTsKKworCQltX2R5ID0gbV9TeCAqIG1fU3h5IC8gbV9TeHg7CisJ CW5fZHkgPSBuX1N4ICsgbl9TeHkgLSBuX1N4eDsKKworCQlkeSA9IGxkZXhwKG1fZHksIG5fZHkp OworCX0KKworCVBHX1JFVFVSTl9GTE9BVDgoKFN5IC0gZHkpIC8gTik7CiB9CiAKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggMWNjZGY3ZGZkZDcuLjg5ZTA1 MWVlODI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKQEAgLTU2 Myw2ICs1NjMsMTggQEAgU0VMRUNUIGNvcnIoMWUxMDAgKyBnICogMWU5NSwgMWUxMDAgKyBnICog MWU5NSksCiAgICAgMSB8ICAgICAgIDEKICgxIHJvdykKIAorU0VMRUNUIHJlZ3JfaW50ZXJjZXB0 KHksIHgpIEZST00gKFZBTFVFUyAoLTFlMTUwLCAwKSwgKDJlMTUwLCAzZTE1MCkpIHYoeCwgeSk7 CisgcmVncl9pbnRlcmNlcHQgCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAxZSsxNTAKKygx IHJvdykKKworU0VMRUNUIHJlZ3JfaW50ZXJjZXB0KHksIHgpIEZST00gKFZBTFVFUyAoLTFlLTEz MSwgMCksICgyZS0xMzEsIDNlLTEzMSkpIHYoeCwgeSk7CisgcmVncl9pbnRlcmNlcHQgCistLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAxZS0xMzEKKygxIHJvdykKKwogLS0gdGhlc2UgZXhhbXBs ZXMgcG9zZSBkZWZpbml0aW9uYWwgcXVlc3Rpb25zIGZvciBOYU4gaW5wdXRzLAogLS0gd2hpY2gg d2UgcmVzb2x2ZSBieSBzYXlpbmcgdGhhdCBhbiBhbGwtTmFOIGlucHV0IGNvbHVtbiBpcyBub3Qg YWxsIGVxdWFsCiBTRUxFQ1QgY29ycihnLCAnTmFOJyksIHJlZ3JfcjIoZywgJ05hTicpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBnOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvYWdncmVnYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbApp bmRleCBhMzEwYjM5ZTdiOC4uOTE2MzgzZGI5MjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0 ZXMuc3FsCkBAIC0xNTksNiArMTU5LDggQEAgU0VMRUNUIGNvcnIoMWUtMTAwICsgZyAqIDFlLTEw NSwgMWUtMTAwICsgZyAqIDFlLTEwNSksCiBTRUxFQ1QgY29ycigxZTEwMCArIGcgKiAxZTk1LCAx ZTEwMCArIGcgKiAxZTk1KSwKICAgICAgICByZWdyX3IyKDFlMTAwICsgZyAqIDFlOTUsIDFlMTAw ICsgZyAqIDFlOTUpCiAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGc7CitTRUxFQ1QgcmVn cl9pbnRlcmNlcHQoeSwgeCkgRlJPTSAoVkFMVUVTICgtMWUxNTAsIDApLCAoMmUxNTAsIDNlMTUw KSkgdih4LCB5KTsKK1NFTEVDVCByZWdyX2ludGVyY2VwdCh5LCB4KSBGUk9NIChWQUxVRVMgKC0x ZS0xMzEsIDApLCAoMmUtMTMxLCAzZS0xMzEpKSB2KHgsIHkpOwogCiAtLSB0aGVzZSBleGFtcGxl cyBwb3NlIGRlZmluaXRpb25hbCBxdWVzdGlvbnMgZm9yIE5hTiBpbnB1dHMsCiAtLSB3aGljaCB3 ZSByZXNvbHZlIGJ5IHNheWluZyB0aGF0IGFuIGFsbC1OYU4gaW5wdXQgY29sdW1uIGlzIG5vdCBh bGwgZXF1YWwKLS0gCjIuNTEuMAoK --00000000000004ac6c0652e000ba--