[3dprinter-general] Bug#1037614: cura-engine: ftbfs with GCC-13
Gregor Riepl
onitake at gmail.com
Sat Jul 22 17:58:15 BST 2023
So, I investigated where the second issue
(PolygonConnectorTest.getBridgeNestedSquares) is coming from, and found
another case where tiny precision problems lead to off-by-one rounding
errors. In this case, the end result is much more severe than in
IntPointTest.TestRotationMatrix, because many errors accumulate and lead
to a big difference.
After adding more llrint() rounding in the right places, the unit tests
no longer fail on i686, while still producing correct results on amd64.
I'm inclined to push the patch (attached) as it is and not gate it with
#ifdef __i386__. The explicit rounding has no impact on performance on
amd64/SSE, because the truncating conversion function (cvttsd2si) has
the same performance as the rounding conversion function (cvtsd2si).
On the FPU, there is a slight penalty, because the rounding mode needs
to be loaded into the FPU control register first.
As an added bonus, I added a rounding fix for the original issue
reported in https://github.com/Ultimaker/CuraEngine/issues/1192 - this
was actually in the unit test itself. With this fix, the patch
1001-relax-test.patch can be dropped.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0017-Round-from-double-to-cInt-explicitly-when-applying-m.patch
Type: text/x-patch
Size: 3266 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/3dprinter-general/attachments/20230722/ab07c78a/attachment.bin>
More information about the 3dprinter-general
mailing list