A bit of statistic:
I have a set of 315 test projects.
This set needed a
night and a day to render in the old 1.3.0100 version.
The 2.0.1.0 needs
3:20 to do this set.
301 projects are rendered.
14 projects are still crashing - to be debugged.
The 1.3.0100 was not able to render 46 projects out of this set.
For example, it was taking "infinity" to render this:
A bit of theory:
The old algorithm was O(n^2), and it used 3-valued logic (yes / no / don't-know) to defeat the round-of error. The don-know cases were solved by a set of boolean equations system, needing O(n^3) operations. In a rare case of undetermined equation systems, I used a brute force method, needing O(2^n) operations.
Now there is a "simple" O(n log(n)) algorithm. However, a single term takes longer to execute.
The idea of the difference:

- lnogn.png (7.69 KiB) Viewed 2258 times
Also, the algorithm was quite complicated. I was not willing to debug the problematic cases anymore. With the new algorithm, I am systematically getting rid of the crashes every release.