Skip to content

Scale multirotor rank validation - #347

Open
be-student wants to merge 1 commit into
kmolan:mainfrom
be-student:codex/301-scale-mixer-rank
Open

Scale multirotor rank validation#347
be-student wants to merge 1 commit into
kmolan:mainfrom
be-student:codex/301-scale-mixer-rank

Conversation

@be-student

Copy link
Copy Markdown

What & why

Fixes #301 by replacing the mixer rank check’s fixed 1e-4 threshold with a forward-error bound derived from T::EPSILON, the multiplication dimension, and ‖A‖‖A⁺‖. The bound is capped below the order-one residual produced by a missing control direction.

Tests reproduce the prior precision mismatch with a valid layout whose moment rows are scaled by 100,000×, then prove acceptance at both f32 and f64; a rank-deficient layout remains rejected at both precisions. The constructor docs and changelog describe the scale-aware contract. This contribution was implemented with AI assistance and reviewed through the repository's test and lint gates.

Checklist

  • cargo test + cargo clippy --all-targets clean locally
  • New public APIs have a doc example (no new public API)
  • No unwrap/expect/panic on library paths (typed errors instead)

@be-student
be-student requested a review from kmolan as a code owner September 6, 2026 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Scale the mixer's rank check to the scalar type

1 participant