NIKX-Tech / NIKX-Tech/numx

linalg: QR decomposition (Householder)

Open
#82 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement good first issue
Dominant language
C
Stars
23
Forks
2
PR merge metrics
No merged PRs in 30d

Description

Add numx_qr_decompose to the linalg module: QR decomposition via Householder reflections, bounded by NUMX_MAX_MAT_ROWS/NUMX_MAX_MAT_COLS like the rest of linalg (see numx_lu_decompose and numx_cholesky_decompose, #51, for the established style of matrix decomposition functions in this codebase).

Follow CONTRIBUTING.md exactly: full Doxygen header, NULL-checks, numx_status_t return, all four deliverables (header, impl, test, docs page). Test against known QR examples and verify Q is orthogonal (Q^T Q = I) and QR reconstructs the original matrix, following the same reconstruction-test pattern #51 used for Cholesky (test_cholesky_decompose_residual_reconstruction in tests/test_linalg.c).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read CONTRIBUTING.md and the existing numx_lu_decompose and numx_cholesky_decompose implementations first; use their established header, status, bounds, and deliverable conventions. Run tests/test_linalg.c, especially test_cholesky_decompose_residual_reconstruction, then add known QR cases and verify Q^T Q = I and QR reconstructs the input; done means the header, implementation, test, and docs page are present.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
embedded-iot
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.