Fix countTurns using exact float equality instead of epsilon - #817
Open
Priyanshubhartistm wants to merge 1 commit into
Open
Fix countTurns using exact float equality instead of epsilon#817Priyanshubhartistm wants to merge 1 commit into
Priyanshubhartistm wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
countTurns() classified segment orientation with strict prev.x === curr.x, which breaks on float drift produced by chained += math elsewhere in the pipeline (e.g. TraceOverlapIssueSolver jog offsets) - a geometrically straight run could get miscounted as having a turn. Since countTurns feeds path-scoring in turnMinimization.ts, minimizeTurnsWithFilteredLabels.ts, and scoreRailAlignment.ts, this could make those solvers reject a genuinely straighter candidate path. Switch to an epsilon comparison matching the isVertical/isHorizontal pattern already used elsewhere (e.g. collisions.ts).
Priyanshubhartistm
force-pushed
the
fix-countturns-float-equality
branch
from
August 15, 2026 18:06
9bde9ff to
e906c59
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
countTurnsclassified segment orientation with strictprev.x === curr.x, which breaks on the float drift produced by chained+=math elsewhere in the pipeline (e.g.TraceOverlapIssueSolver's jog offsets) - a geometrically straight run could get miscounted as having a turn.Math.abs(...) < EPS), matching the pattern already used elsewhere in the codebase (e.g.isVertical/isHorizontalinSchematicTraceSingleLineSolver2/collisions.ts).countTurnsfeeds path-scoring inturnMinimization.ts,minimizeTurnsWithFilteredLabels.ts, andscoreRailAlignment.ts, so a wrong turn count can make those solvers reject a genuinely straighter candidate path.tests/functions/countTurns.test.ts- confirmed it fails against the old===code and passes against the fix.Validation
bunx tsc --noEmitbun test(185 pass, 4 pre-existing skips, 0 fail, no snapshot changes)git stashbefore confirming the fix