Motivation
stdlib's current BLAS/LAPACK derives from the version 3.10.1
I asked ChatGPT to give an overview of novelties that have been introduced. It might be worth considering to enhance the library
cc @fortran-lang/stdlib @jvdp1 @perazz @loiseaujc @sebastian-mutz @ivan-pi
the releases from 3.11.x through 3.12.x have been evolutionary rather than revolutionary. There have not been changes comparable to the introduction of divide-and-conquer eigensolvers or the MRRR algorithms. The improvements mainly fall into four categories:
- New computational routines (especially QR with column pivoting and mixed precision)
- Performance improvements
- Numerical robustness and bug fixes
- Modernization (CMake, testing, CI)
For a Fortran Standard Library, the first category is the most relevant.
1. Strong Rank-Revealing QR (RRQR)
Probably the most significant algorithmic addition.
LAPACK added routines implementing Strong Rank-Revealing QR factorization, based on Gu and Eisenstat.
Examples include
- xGEQP3RK
- supporting routines
Advantages:
- better low-rank approximation
- more reliable numerical rank determination
- useful for least squares and model reduction
- increasingly important in machine learning and randomized linear algebra
If stdlib currently only exposes
then RRQR is arguably the biggest missing dense linear algebra feature.
Recommendation: High priority.
2. Mixed-Precision Iterative Refinement
Several improvements were made to iterative refinement solvers.
These include better support for
- FP32 factorization
- FP64 refinement
- improved stopping criteria
- robustness for difficult matrices
Motivation:
Modern CPUs and GPUs have much faster single precision.
Factorize in FP32:
$$PA=LU$$
then refine in FP64 until nearly double-precision accuracy.
For many problems this provides
- 2–5× speedups
- almost identical accuracy
This is becoming standard in HPC.
Recommendation: High priority if stdlib wants modern numerical capabilities.
3. Improved QR with Column Pivoting
The traditional
received numerous fixes:
- improved pivot selection
- overflow handling
- better edge-case behavior
- better workspace handling
No API changes, but newer implementations are generally preferable.
4. More Robust Eigenvalue Solvers
Many bug fixes were made to
- xSYEVR
- xHEEVR
- xSTEGR
- xGEEV
- xGEES
Typical improvements include
- convergence
- orthogonality
- clustered eigenvalues
- overflow avoidance
These are mostly maintenance improvements rather than new algorithms.
5. SVD Improvements
Numerous fixes to
including
- accuracy
- workspace estimation
- pathological matrices
Worth incorporating because SVD is heavily used.
6. Better Error Bounds
Several routines now compute tighter
- forward error estimates
- backward error estimates
- reciprocal condition estimates
These improve confidence in computed solutions.
7. New Testing Infrastructure
LAPACK's testing has expanded considerably:
- larger test matrices
- randomized testing
- corner cases
- NaN/Inf testing
While not something to port directly, adopting similar tests would strengthen stdlib's validation.
8. CMake Improvements
Modern LAPACK now has much better
- CMake support
- package exports
- CI
- compiler support
These are only relevant if you synchronize the build system.
9. BLAS Changes
Reference BLAS has changed very little.
Mostly:
- bug fixes
- compiler portability
- testing improvements
No major new BLAS Level 1–3 algorithms.
Features not added
Notably, LAPACK still does not include:
- randomized SVD
- randomized QR
- communication-avoiding QR
- communication-avoiding LU
- blocked Jacobi SVD
- batched BLAS/LAPACK
- GPU kernels
- task-based algorithms
- distributed-memory algorithms (these remain in ScaLAPACK, SLATE, ELPA, etc.)
So there are no hidden major features waiting after 3.10.
Suggested priorities for stdlib
If I were maintaining the stdlib LAPACK port, I would prioritize:
| Priority |
Feature |
Benefit |
| ★★★★★ |
Strong Rank-Revealing QR (xGEQP3RK family) |
Modern low-rank approximation and reliable numerical rank detection |
| ★★★★★ |
Mixed-precision iterative refinement updates |
Significant performance gains on modern hardware while retaining high accuracy |
| ★★★★☆ |
Refresh xGESDD/xGESVD implementations |
Improved robustness and accuracy for SVD |
| ★★★★☆ |
Refresh eigenvalue routines |
Better convergence and stability in challenging cases |
| ★★★☆☆ |
Updated QR/LU implementations |
Incremental numerical robustness improvements |
| ★★☆☆☆ |
Testing improvements |
Better long-term reliability |
| ★☆☆☆☆ |
Build system synchronization |
Easier maintenance, but little impact on library users |
From a user-facing perspective, Strong Rank-Revealing QR is the standout new capability since LAPACK 3.10. The rest of the changes are predominantly refinements that improve robustness, accuracy, and performance rather than introducing fundamentally new dense linear algebra algorithms.
Prior Art
No response
Additional Information
No response
Motivation
stdlib's current BLAS/LAPACK derives from the version 3.10.1
I asked ChatGPT to give an overview of novelties that have been introduced. It might be worth considering to enhance the library
cc @fortran-lang/stdlib @jvdp1 @perazz @loiseaujc @sebastian-mutz @ivan-pi
the releases from 3.11.x through 3.12.x have been evolutionary rather than revolutionary. There have not been changes comparable to the introduction of divide-and-conquer eigensolvers or the MRRR algorithms. The improvements mainly fall into four categories:
For a Fortran Standard Library, the first category is the most relevant.
1. Strong Rank-Revealing QR (RRQR)
Probably the most significant algorithmic addition.
LAPACK added routines implementing Strong Rank-Revealing QR factorization, based on Gu and Eisenstat.
Examples include
Advantages:
If stdlib currently only exposes
then RRQR is arguably the biggest missing dense linear algebra feature.
Recommendation: High priority.
2. Mixed-Precision Iterative Refinement
Several improvements were made to iterative refinement solvers.
These include better support for
Motivation:
Modern CPUs and GPUs have much faster single precision.
Factorize in FP32:
$$PA=LU$$
then refine in FP64 until nearly double-precision accuracy.
For many problems this provides
This is becoming standard in HPC.
Recommendation: High priority if stdlib wants modern numerical capabilities.
3. Improved QR with Column Pivoting
The traditional
received numerous fixes:
No API changes, but newer implementations are generally preferable.
4. More Robust Eigenvalue Solvers
Many bug fixes were made to
Typical improvements include
These are mostly maintenance improvements rather than new algorithms.
5. SVD Improvements
Numerous fixes to
including
Worth incorporating because SVD is heavily used.
6. Better Error Bounds
Several routines now compute tighter
These improve confidence in computed solutions.
7. New Testing Infrastructure
LAPACK's testing has expanded considerably:
While not something to port directly, adopting similar tests would strengthen stdlib's validation.
8. CMake Improvements
Modern LAPACK now has much better
These are only relevant if you synchronize the build system.
9. BLAS Changes
Reference BLAS has changed very little.
Mostly:
No major new BLAS Level 1–3 algorithms.
Features not added
Notably, LAPACK still does not include:
So there are no hidden major features waiting after 3.10.
Suggested priorities for stdlib
If I were maintaining the stdlib LAPACK port, I would prioritize:
From a user-facing perspective, Strong Rank-Revealing QR is the standout new capability since LAPACK 3.10. The rest of the changes are predominantly refinements that improve robustness, accuracy, and performance rather than introducing fundamentally new dense linear algebra algorithms.
Prior Art
No response
Additional Information
No response