Implement comprehensive BLAS, ARPACK, and LAPACK test coverage#34
Merged
Implement comprehensive BLAS, ARPACK, and LAPACK test coverage#34
Conversation
aaa91d1 to
368728d
Compare
df74492 to
162d64c
Compare
fc2822b to
86f145c
Compare
Replace 728 stub tests (assumeTrue(false)) with functional tests across all three modules, bringing overall test coverage from ~8% to 94% (797 of 848 test files). BLAS had 67 existing tests (unchanged); ARPACK gains 58 and LAPACK gains 670 functional tests. Fix three critical JNI bugs discovered during testing: 1. Missing Fortran hidden string length arguments: Fortran's calling convention requires appending implicit `int len_xxx` args for every CHARACTER parameter. All three JNI files were omitting these, causing lsamen (Fortran string comparison) to receive garbage lengths and always return false. This meant any native LAPACK routine that branches on character params (UPLO, TRANS, JOBU, etc.) silently took wrong code paths. Added 481 length parameters across BLAS (42), LAPACK (406), and ARPACK (33). 2. RTLD_GLOBAL -> RTLD_LOCAL: Changed dlopen flags to prevent symbol conflicts between different BLAS/LAPACK providers (e.g., OpenBLAS vs reference LAPACK). 3. Explicit library handle for dlsym: Changed LOAD_SYMBOL macro from dlsym(RTLD_DEFAULT, ...) to dlsym(libhandle, ...) to resolve symbols from the specific loaded library rather than the global symbol table, which is necessary with RTLD_LOCAL. Extract shared test utilities into a new test-utils module (not published to Maven Central) containing TestHelpers with: - Relative/absolute array comparison with epsilon scaling - Column-major matrix multiply and transpose - Generators for symmetric, positive-definite, banded, packed, triangular, Hessenberg, and Hilbert matrices in both float/double Other changes: - CI: Add --no-transfer-progress to mvn commands, include test-utils in test job, improve job naming conventions - Devcontainer: Add gh CLI and Claude CLI installation - Add .claude/test-plan.md documenting coverage status and known issues - 51 LAPACK stubs remain due to version differences (f2j uses LAPACK 3.1, native uses 3.12), callback NPEs, or sign/pivot ambiguity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
86f145c to
fadfff4
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.
No description provided.