GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Verify ill-conditioned full-rank Jacobians in the redundancy check by alken1t15 · Pull Request #1818 · solvespace/solvespace

Conversation

@alken1t15

@alken1t15 alken1t15 commented Nov 11, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Adding a parallel constraint to r00c/r010 in #1723 is accepted as independent on the first solve (2 DoF), then reported as redundant on the next solve (3 DoF). Nearly dependent Jacobians can be reported as full row rank by SparseQR's fill-reducing ordering, and the result changes after a small Newton step.

Keep SparseQR as the normal rank check. When it reports full row rank but its smallest R pivot is below 1e-6 times the largest, verify the rank with Eigen's Jacobi SVD. Normalize rows and columns of a copy first, then use a relative singular-value cutoff of 1e-9. The Newton matrix and least-squares step are unchanged; already rank-deficient QR results keep their existing path.

The verification detects both reported pairs immediately and keeps 3 DoF across repeated solves, without increasing SparseQR's threshold for every sketch.

Regression coverage includes the reporter's model, both pairs, 10 repeated solves, four rotations at three scales with translation, and small independent-column checks. Both model regression tests fail on the original rank check. The full headless Debug suite passes with sanitizers and OpenMP: 303 cases, 1,461 checks. Local sanitizer validation also includes the separate cleanup fix from #1817 to avoid that known shutdown leak. No interactive GUI testing was performed.

The fallback is more expensive: a synthetic -O2 probe (three repetitions) increased from about 2.3 ms to 22 ms at 128x128, and from 14 ms to 297 ms at 256x256. Well-conditioned cases retain the QR path. The cutoffs and large-matrix cost need review; these tests do not establish correct classification of every near-singular configuration.

Fixes #1723.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@alken1t15
Verify ill-conditioned full-rank Jacobians before accepting constraints
eaae36e
@alken1t15

alken1t15 commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

@ruevs Could you review this proposed fix for #1723 when you have time? Both reported pairs are now detected as redundant on the first solve in the local tests, including rotated/scaled copies. I'd particularly appreciate your feedback on the numerical cutoffs and the cost of the SVD fallback before this is merged.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@alken1t15 alken1t15 mentioned this pull request Nov 11, 2026
unstable redundant constraints #1723
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

unstable redundant constraints

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@alken1t15
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.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.