[RFC]: Add BLAS bindings and implementations for linear algebra (tracking issue)
- Dominant language
- JavaScript
- Stars
- 6k
- Forks
- 1.3k
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 611
Description
### Description
This RFC proposes adding BLAS routines. The purpose of this issue is to serve as a tracking issue for adding BLAS routines.
# Implementation Status for BLAS Routines
## Level 1
### Single Precision
- [ ] SROTG
- [x] JavaScript
- [ ] C: https://github.com/stdlib-js/stdlib/pull/4762 : https://github.com/stdlib-js/stdlib/pull/987
- [ ] Fortran
- [ ] WebAssembly
- [ ] SROTMG
- [ ] JavaScript: https://github.com/stdlib-js/stdlib/pull/4710
- [ ] C/Fortran : : https://github.com/stdlib-js/stdlib/pull/9711
- [ ] WebAssembly
- [x] SROT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SROTM
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SSWAP
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SSCAL
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SCOPY
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SAXPY
- [x] JavaScript
- [x] C/Fortran
- [x] SDOT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SDSDOT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SNRM2
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SCNRM2
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] SASUM
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] ISAMAX
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
### Double Precision
- [ ] DROTG
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/2264
- [ ] Fortran
- [ ] WebAssembly
- [ ] DROTMG
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/5022
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/9724
- [ ] WebAssembly
- [x] DROT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DROTM
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DSWAP
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DSCAL
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DCOPY
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DAXPY
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DDOT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DSDOT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DNRM2
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DZNRM2
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] DASUM
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] IDAMAX
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
### Complex Single
- [ ] CROTG
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/9849
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/9849
- [ ] WebAssembly
- [x] CSROT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] CSWAP
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] CSCAL
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [ ] CSSCAL
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [x] CCOPY
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [ ] CAXPY
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CDOTU
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/4773
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/11024
- [ ] WebAssembly
- [ ] CDOTC
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/4752
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/11026
- [ ] WebAssembly
- [x] SCASUM
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [ ] ICAMAX
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/5068
- [ ] C/ Fortran : https://github.com/stdlib-js/stdlib/pull/10942
- [ ] WebAssembly
### Complex Double
- [ ] ZROTG
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6697
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/9628
- [ ] WebAssembly
- [x] ZDROT
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] ZSWAP
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [x] ZSCAL
- [x] JavaScript
- [x] C
- [x] Fortran
- [ ] WebAssembly : https://github.com/stdlib-js/stdlib/pull/6810
- [ ] ZDSCAL
- [x] JavaScript
- [x] C : https://github.com/stdlib-js/stdlib/pull/7086
- [x] Fortran
- [ ] WebAssembly
- [x] ZCOPY
- [x] JavaScript
- [x] C
- [x] Fortran
- [x] WebAssembly
- [ ] ZAXPY
- [x] JavaScript
- [x] C : https://github.com/stdlib-js/stdlib/pull/7594
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZDOTU
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6613
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/11025
- [ ] WebAssembly
- [ ] ZDOTC
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6847
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DZASUM
- [x] JavaScript : https://github.com/stdlib-js/stdlib/pull/4697
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/10920
- [ ] WebAssembly
- [ ] IZAMAX
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/4787
- [ ] C/Fortran : https://github.com/stdlib-js/stdlib/pull/10976
- [ ] WebAssembly
## Level 2
### Single Precision
- [ ] SGEMV
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SGBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/5928
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSYMV
- [x] JavaScript : https://github.com/stdlib-js/stdlib/pull/2843 (refactoring)
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7142
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6666
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSPMV
- [x] JavaScript : https://github.com/stdlib-js/stdlib/pull/2839 ( refactoring )
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7141
- [ ] Fortran
- [ ] WebAssembly
- [ ] STRMV
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7017
- [ ] Fortran
- [ ] WebAssembly
- [ ] STBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6878
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] STPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/2825
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] STRSV
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7154
- [ ] Fortran
- [ ] WebAssembly
- [ ] STBSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6709
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] STPSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/2822
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SGER
- [x] JavaScript
- [x] C
- [x] Fortran: Not working due to dep resolution
- [ ] WebAssembly
- [ ] SSYR
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSPR
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSYR2
- [x] JavaScript
- [x] C : https://github.com/stdlib-js/stdlib/pull/2880
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSPR2
- [ ] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/2801
- [ ] Fortran
- [ ] WebAssembly
### Double Precision
- [ ] DGEMV
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DGBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6121
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSYMV
- [x] JavaScript : https://github.com/stdlib-js/stdlib/pull/2844
- [ ] C : https://github.com/stdlib-js/stdlib/pull/11087
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6650
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSPMV
- [x] JavaScript : https://github.com/stdlib-js/stdlib/pull/2840
- [ ] C : https://github.com/stdlib-js/stdlib/pull/10838
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTRMV
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7016
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6862
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/2827
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTRSV
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/7157
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTBSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/6707
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTPSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/2823
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DGER
- [x] JavaScript
- [x] C
- [x] Fortran: Not working due to dep resolution
- [ ] WebAssembly
- [ ] DSYR
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSPR
- [x] JavaScript
- [ ] C : https://github.com/stdlib-js/stdlib/pull/6580
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSYR2
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSPR2
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/2803
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Complex Single
- [x] CGEMV
- [x] JavaScript
- [x] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CGBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/10492
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHEMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/10914
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/10492
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11202
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTRMV
- [ ] JavaScript https://github.com/stdlib-js/stdlib/pull/7497
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11282
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11282
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTRSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11384
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTBSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11439
- [ ] C/Fortran
- [ ] CTPSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12008
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CGERU
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12115
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CGERC
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12255
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHER
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7088
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHPR
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHER2
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7206
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHPR2
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Complex Double
- [ ] ZGEMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/10237
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZGBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11879
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHEMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11888
- [ ] C/Fortran
- [ ] ZHBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11901
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11922
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTRMV
- [ ] JavaScript :
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTBMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11945
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTPMV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11965
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTRSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11987
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTBSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/11997
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTPSV
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12095
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZGERU
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12262
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZGERC
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/12419
- [ ] C
- [ ] Fortran
- [ ] ZHER
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7119
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHPR
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHER2
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7251
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHPR2
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
## Level 3
### Single Precision
- [ ] SGEMM
- [x] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSYMM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7385
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSYRK
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7411
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] SSYR2K
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7462
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] STRMM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7343
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] STRSM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7021
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Double Precision
- [ ] DGEMM
- [x] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSYMM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7382
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSYRK
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7412
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DSYR2K
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7437
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTRMM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7366
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] DTRSM
- [ ] JavaScript : https://github.com/stdlib-js/stdlib/pull/7359
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Complex Single
- [ ] CGEMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CSYMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHEMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CSYRK
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHERK
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CSYR2K
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CHER2K
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTRMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] CTRSM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Complex Double
- [ ] ZGEMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZSYMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHEMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZSYRK
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHERK
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZSYR2K
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZHER2K
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTRMM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
- [ ] ZTRSM
- [ ] JavaScript
- [ ] C
- [ ] Fortran
- [ ] WebAssembly
### Related Issues
None.
### Questions
No.
### Other
No.
### Checklist
- [X] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [X] Searched for existing issues and pull requests.
- [X] The issue name begins with `RFC:`.
Contributor guide
Research direction
Use the implementation-status checklist in issue #2039 to identify an unchecked BLAS routine and review any linked pull requests before choosing work. The issue does not name source files, tests, or a bounded routine, so completion would require selecting a routine and updating its JavaScript, C, Fortran, or WebAssembly implementation status.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, fortran, javascript, wasm
- Domain
- hpc
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100