SciML / SciML/SparseWithDenseRowColMatrices.jl
Test coverage gaps: structured adjoint/matrix-RHS matvec, cached-LS value updates, and lstsq generic-eltype / guard boundary are untested
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 0
- Forks
- 1
- Avg merge
- 14m
- Merged PRs (30d)
- 6
Description
WHAT: (a) test/test_matvec.jl has no adjoint/transpose test at all (grep for adjoint|transpose returns nothing) — the 'load-bearing' structured adjoint with subtle cnj/Sop conjugation logic, the 5-arg mul!, and the matrix-RHS adjoint (the 3000x regression) are all uncovered; this is why that regression went unnoticed. (b) The cached LS factorization is only ever built once (test_lstsq.jl:213-244); no value-update test, so the new LS refactor! would ship without a regression net. (c) test_generic_eltypes.jl never calls lstsq, so the BigFloat-iterative capability would be untested once enabled; it also tests Dual through factorize but not through qr(A)\b (verified working but advertised-and-untested, fragile vs backend updates). (d) The κ̂(S) guard (lstsq.jl:208-210) is tested only at one extreme (κ≈5e13 rejected); no boundary test pinning a safe ill-conditioned S that must NOT be rejected, and :iterative is never tested on a genuinely singular-S A (its stated reason to exist). WHY IT MATTERS: Locks in the matvec/LS-refactor/eltype fixes and guards the guard heuristic against false-positive regressions. FIX: Add tests for A'*u and transpose(A)*u (real+complex, selector+dense U), the 5-arg form, matrix-RHS A'*X (after the matrix-adjoint fix); LS refactor! vs fresh build; lstsq(BigFloat; :iterative) vs pinv; ForwardDiff through qr(A)\b; a borderline-conditioned S the guard must accept; :iterative on a large general-singular-S A. EFFORT: S-M.
Priority: medium. Filed from an automated next-steps audit of the QR/lstsq work (see PR #6).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading test/test_matvec.jl, test_lstsq.jl, test_generic_eltypes.jl, and the κ̂(S) guard in lstsq.jl, with PR #6 for context. Add the specified adjoint, matrix-RHS, cached-factorization, generic-eltype, guard-boundary, and singular-S tests; done means the listed regressions and advertised capabilities are covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- testing-qa
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100