stdlib-js / stdlib-js/stdlib

[RFC]: Add BLAS bindings and implementations for linear algebra (tracking issue)

Ouverte
#2,039 15 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Accepted BLAS C difficulty: 4 Feature Fortran JavaScript Native Addons priority: High RFC status: In Progress Tracking Issue WebAssembly
Langage dominant
JavaScript
Étoiles
6k
Forks
1.3k
Merge moyen
1 j 3 h
PR mergées (30 j)
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:`.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c, fortran, javascript, wasm
Domaine
hpc
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.