stdlib-js / stdlib-js/stdlib

[RFC]: add LAPACK routines

Open
#2,464 6 comments 0 reactions 0 assignees View on GitHub
Accepted BLAS C difficulty: 4 Fortran JavaScript LAPACK priority: Normal RFC Tracking Issue
Dominant language
JavaScript
Stars
6k
Forks
1.3k
Avg merge
1d 3h
Merged PRs (30d)
611

Description

## Description

This RFC proposes adding complete LAPACK routines to stdlib.

### BLAS Routines

* [ ] [`DTRSM`](https://www.netlib.org/lapack/explore-html/d9/de5/group__trsm_ga7120d931d7b1a15e12d50d328799df8a.html#ga7120d931d7b1a15e12d50d328799df8a) ( Level: 3 )
* [ ] JavaScript https://github.com/stdlib-js/stdlib/pull/2518
* [ ] C
* [ ] Fortran
* [ ] [`DGER`](https://www.netlib.org/lapack/explore-html/d8/d75/group__ger_gaef5d248da0fdfb62bccb259725935cb8.html#gaef5d248da0fdfb62bccb259725935cb8) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`dsyrk`](https://www.netlib.org/lapack/explore-html/d4/d6e/group__herk_ga09ec411a6b845c47efb0bc8bd3283b03.html#ga09ec411a6b845c47efb0bc8bd3283b03) ( Level: 3 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSPR`](https://www.netlib.org/lapack/explore-html/d5/df9/group__hpr_gaa5d4297738fb1391709c645a7c2bee5e.html#gaa5d4297738fb1391709c645a7c2bee5e) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTPSV`](https://www.netlib.org/lapack/explore-html/d7/d3b/group__tpsv_gaa7aa06a5635bdd236463a56a889d3aa4.html#gaa7aa06a5635bdd236463a56a889d3aa4) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTPMV`](https://www.netlib.org/lapack/explore-html/db/d62/group__tpmv_gaf61fb853f06adfe9c44a0b71a5d505f7.html#gaf61fb853f06adfe9c44a0b71a5d505f7) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYR`](https://www.netlib.org/lapack/explore-html/dc/d82/group__her_ga07f0e3f8592107877f12a554a41c7413.html#ga07f0e3f8592107877f12a554a41c7413) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTBSV`](https://www.netlib.org/lapack/explore-html/d4/dcd/group__tbsv_gaf2fd78c89c68cdbc9f697ea37c075ece.html#gaf2fd78c89c68cdbc9f697ea37c075ece) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYMV`](https://www.netlib.org/lapack/explore-html/db/d17/group__hemv_ga0b20bcf6e94079dce2f3d035798e9738.html#ga0b20bcf6e94079dce2f3d035798e9738) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGEMM`](https://www.netlib.org/lapack/explore-html/dd/d09/group__gemm_ga1e899f8453bcbfde78e91a86a2dab984.html#ga1e899f8453bcbfde78e91a86a2dab984) ( Level: 3 )
* [x] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTRMV`](https://www.netlib.org/lapack/explore-html/d6/d1c/group__trmv_ga73370bd6dca01abe05d54ecd1d91ce9a.html#ga73370bd6dca01abe05d54ecd1d91ce9a) ( Level: 2 )
* [ ] JavaScript
* [ ] C
* [ ] Fortran

### Easy

The routines listed below are independent and do not depend on others.

* [ ] [`DLASWP`](https://www.netlib.org/lapack/explore-html/d1/d7e/group__laswp_ga5d3ea3e3cb61e32750bf062a2446aa33.html#ga5d3ea3e3cb61e32750bf062a2446aa33)
* [x] JavaScript https://github.com/stdlib-js/stdlib/pull/2483
* [ ] C
* [ ] Fortran
* [ ] [`DGTTRF`](https://www.netlib.org/lapack/explore-html/d6/d46/group__gttrf_ga8d1e46216e6c861c89bd4328b8be52a1.html#ga8d1e46216e6c861c89bd4328b8be52a1)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGTTS2`](https://www.netlib.org/lapack/explore-html/d2/dea/group__gtts2_gae123fb2b13f2398457e4c47f5c7f7fcd.html#gae123fb2b13f2398457e4c47f5c7f7fcd)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPOTF2`](https://www.netlib.org/lapack/explore-html/de/db9/group__potf2_gac3e7c9b72833e5467d91259ce0d0d4d4.html#gac3e7c9b72833e5467d91259ce0d0d4d4)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPOEQU`](https://www.netlib.org/lapack/explore-html/db/d48/group__poequ_ga64054a216849b768d3b922deba351e50.html#ga64054a216849b768d3b922deba351e50)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLA_PORPVGRW`](https://www.netlib.org/lapack/explore-html/d5/d6b/group__la__porpvgrw_ga59f6030be8c9ea68bd101d54633dc90a.html#ga59f6030be8c9ea68bd101d54633dc90a)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPEQU`](https://www.netlib.org/lapack/explore-html/d4/d32/group__ppequ_gab707d51530c978eaae279e5728e4f54d.html#gab707d51530c978eaae279e5728e4f54d)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPBEQU`](https://www.netlib.org/lapack/explore-html/d7/db5/group__pbequ_ga4c834a317dced4dde3933700263536ec.html#ga4c834a317dced4dde3933700263536ec)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPTCON`](https://www.netlib.org/lapack/explore-html/d1/d85/group__ptcon_gafc28b3de543d210d9dd7ad6dd9373071.html#gafc28b3de543d210d9dd7ad6dd9373071)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPTRF`](https://www.netlib.org/lapack/explore-html/d4/d2c/group__pttrf_ga8f112041da2b9b443f8761a1eaaf15b6.html#ga8f112041da2b9b443f8761a1eaaf15b6)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPTS2`](https://www.netlib.org/lapack/explore-html/d5/d5d/group__ptts2_ga35fdfa6109e8f9cbfbde271814bf0b27.html#ga35fdfa6109e8f9cbfbde271814bf0b27)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLASYF`](https://www.netlib.org/lapack/explore-html/db/d65/group__lahef_ga34fff8adc0a628063393ed6f229d81c5.html#ga34fff8adc0a628063393ed6f229d81c5)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYCONV`](https://www.netlib.org/lapack/explore-html/de/df4/group__syconv_ga52cd6ea02632c6c4d2336a158505b3d5.html#ga52cd6ea02632c6c4d2336a158505b3d5)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYSWAPR`](https://www.netlib.org/lapack/explore-html/de/d9e/group__heswapr_ga50095266fbc1cdb38e42c32a2e727550.html#ga50095266fbc1cdb38e42c32a2e727550)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLA_SYRPVGRW`](https://www.netlib.org/lapack/explore-html/d5/da6/group__la__herpvgrw_ga4eb0f97e05c29d4f3cf2ffd4b59afd06.html#ga4eb0f97e05c29d4f3cf2ffd4b59afd06)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYCONVF`](https://www.netlib.org/lapack/explore-html/d4/dca/group__syconvf_gaceeb68157cb81924ebdd08f4d94fad23.html#gaceeb68157cb81924ebdd08f4d94fad23)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYCONVF_ROOK`](https://www.netlib.org/lapack/explore-html/d8/d6a/group__syconvf__rook_ga751fea4834e92ec2509630b1c606995c.html#ga751fea4834e92ec2509630b1c606995c)
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLAUU2`](https://www.netlib.org/lapack/explore-html/d3/d8f/group__lauu2_ga52dc4db093f8513ca2f74195f3aaf689.html#ga52dc4db093f8513ca2f74195f3aaf689)
* [ ] JavaScript
* [ ] C
* [ ] Fortran

### Medium

Routines that depends on other LAPACK routines

* [ ] [`DPPTRI`](https://www.netlib.org/lapack/explore-html/d0/de3/group__pptri_ga7429f5db00250f8e8dc56cd787f9cf8f.html#ga7429f5db00250f8e8dc56cd787f9cf8f) depends on `dtpri`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPTRS`](https://www.netlib.org/lapack/explore-html/d9/dc9/group__pttrs_ga969bdf7ff1290319fa68fd84b2bc2928.html#ga969bdf7ff1290319fa68fd84b2bc2928) depends on `dptts2`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPTRFS`](https://www.netlib.org/lapack/explore-html/d1/db8/group__ptrfs_gae8e63ac99b4837effb04965a7cc05751.html#gae8e63ac99b4837effb04965a7cc05751) depends on `dpttrs`
* [ ] JavaScript
* [ ] C
* [ ] Fortran

### Depends on auxiliary or BLAS routines

* [ ] [`DGEEQU`](https://www.netlib.org/lapack/explore-html/d5/d8a/group__geequ_ga7238812c5c26fc2fbe8bbbc22b6ee885.html#ga7238812c5c26fc2fbe8bbbc22b6ee885) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGEEQUB`](https://www.netlib.org/lapack/explore-html/df/d0a/group__geequb_gaef3a3015d58122ab3d4d018422b93b90.html#gaef3a3015d58122ab3d4d018422b93b90) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLAQGE`](https://www.netlib.org/lapack/explore-html/d3/d21/group__laqge_gad474e329dbefb47f6baeca18ce09e249.html#gad474e329dbefb47f6baeca18ce09e249) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGETC2`](https://www.netlib.org/lapack/explore-html/d8/d4d/group__getc2_gab40de248b52eae8c638d72d951631795.html#gab40de248b52eae8c638d72d951631795) depends on `dger`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGBTF2`](https://www.netlib.org/lapack/explore-html/d1/dfc/group__gbtf2_ga08166df8c1bd99c0d00b010eecf6f824.html#ga08166df8c1bd99c0d00b010eecf6f824) depends on `dger`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGBEQU`](https://www.netlib.org/lapack/explore-html/d8/d73/group__gbequ_ga63d0c43382052424ca7213ab357aaa5d.html#ga63d0c43382052424ca7213ab357aaa5d) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DGBEQUB`](https://www.netlib.org/lapack/explore-html/d9/d3e/group__gbequb_ga3b869b3fe2d5e2504847d83b7f0fcda6.html#ga3b869b3fe2d5e2504847d83b7f0fcda6) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`LAQGB`](https://www.netlib.org/lapack/explore-html/dc/da1/group__laqgb_ga5637058e906c4762b8e35342ff18e5bb.html#ga5637058e906c4762b8e35342ff18e5bb) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPSTF2`](https://www.netlib.org/lapack/explore-html/db/d58/group__pstf2_ga9ff052d08d72c8016d16ddd67fe9b682.html#ga9ff052d08d72c8016d16ddd67fe9b682) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPOTRS`](https://www.netlib.org/lapack/explore-html/d3/dc8/group__potrs_ga70a04d13ff2123745a26b1e236212cf7.html#ga70a04d13ff2123745a26b1e236212cf7) depends on `dtrms`.
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPOEQUB`](https://www.netlib.org/lapack/explore-html/d1/da9/group__poequb_ga335265d8cad6dc99d803cb703b4f9cd8.html#ga335265d8cad6dc99d803cb703b4f9cd8) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLAQSY`](https://www.netlib.org/lapack/explore-html/df/dca/group__laqhe_gaba164109f29d549e268fb25310701918.html#gaba164109f29d549e268fb25310701918) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPTRF`](https://www.netlib.org/lapack/explore-html/d4/d81/group__pptrf_ga767274ca963e0c56fcbbcd9ee23c4fc9.html#ga767274ca963e0c56fcbbcd9ee23c4fc9) depends on `dspr` and `dtpsv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPPTRS`](https://www.netlib.org/lapack/explore-html/dc/d15/group__pptrs_ga55f52449dc8170a98bb97e1eafd0cf72.html#ga55f52449dc8170a98bb97e1eafd0cf72) depends on `dtpsv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTPTRI`](https://www.netlib.org/lapack/explore-html/d4/d92/group__tptri_ga5f8af5d725a5c1cd3423b5ae8c882171.html#ga5f8af5d725a5c1cd3423b5ae8c882171) depends on `dtpmv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLAQSP`](https://www.netlib.org/lapack/explore-html/d1/d63/group__laqhp_ga60516a6dc31da01e46cfad594b906b40.html#ga60516a6dc31da01e46cfad594b906b40) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPBTF2`](https://www.netlib.org/lapack/explore-html/d4/d16/group__pbtf2_ga0dfc5e60d7f185bf4723a1d45eb4f153.html#ga0dfc5e60d7f185bf4723a1d45eb4f153) depends on `dsyr`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DPBTRS`](https://www.netlib.org/lapack/explore-html/db/dec/group__pbtrs_ga1ccbe62287933e8bf693cc0e506d167f.html#ga1ccbe62287933e8bf693cc0e506d167f) depends on `dtbsv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLAQSB`](https://www.netlib.org/lapack/explore-html/da/d10/group__laqhb_gaad1ad2750361373bd4a1188a612561ed.html#gaad1ad2750361373bd4a1188a612561ed) depends on `dlamch`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYTRS`](https://www.netlib.org/lapack/explore-html/d4/d30/group__hetrs_gad78145fc1575efc7f4bc09896deb65ff.html#gad78145fc1575efc7f4bc09896deb65ff) depends on `dger`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYTRI`](https://www.netlib.org/lapack/explore-html/da/dfa/group__hetri_gac3efdf326b7a18865d26c5801635beea.html#gac3efdf326b7a18865d26c5801635beea) depends on `dsymv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYTRS_3`](https://www.netlib.org/lapack/explore-html/d2/d94/group__hetrs__3_gad176e7493b16e6fcc81d43239cd007a9.html#gad176e7493b16e6fcc81d43239cd007a9) depends on `dtrsm`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSPTRS`](https://www.netlib.org/lapack/explore-html/d3/dbd/group__hptrs_ga89bf06708cb5bffbb5e05f1fbbd76887.html#ga89bf06708cb5bffbb5e05f1fbbd76887) depends on `dger`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSPTRI`](https://www.netlib.org/lapack/explore-html/d3/d43/group__hptri_ga8beb82015a4ef64b9c08101e80a87010.html#ga8beb82015a4ef64b9c08101e80a87010) depends on `dspmv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYTRI_ROOK`](https://www.netlib.org/lapack/explore-html/d5/d87/group__hetri__rook_gacad0bb6609c33533f65d5b86035b3859.html#gacad0bb6609c33533f65d5b86035b3859) depends on `dsymv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DLASYF_RK`](https://www.netlib.org/lapack/explore-html/d3/dd9/group__lahef__rk_ga1532a7563d8d5a67eb3445137c938f04.html#ga1532a7563d8d5a67eb3445137c938f04) depends on `dgemm`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DSYTF2_RK`](https://www.netlib.org/lapack/explore-html/d0/d22/group__hetf2__rk_ga880a8461fc8141993c36cdab0cc5abfe.html#ga880a8461fc8141993c36cdab0cc5abfe) depends on `dsyr`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTRTRS`](https://www.netlib.org/lapack/explore-html/d4/dc1/group__trtrs_gab0b6a7438a7eb98fe2ab28e6c4d84b21.html#gab0b6a7438a7eb98fe2ab28e6c4d84b21) depends on `dtrsm`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTRTI2`](https://www.netlib.org/lapack/explore-html/d3/da3/group__trti2_ga36dcbaa90700a0dc16f835f16b281ac0.html#ga36dcbaa90700a0dc16f835f16b281ac0) depends on `dtrmv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTPTRS`](https://www.netlib.org/lapack/explore-html/d1/db6/group__tptrs_gaca2a67c006910a35d219248c83e58419.html#gaca2a67c006910a35d219248c83e58419) depends on `dtpsv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTPMV`](https://www.netlib.org/lapack/explore-html/d4/d92/group__tptri_ga5f8af5d725a5c1cd3423b5ae8c882171.html#ga5f8af5d725a5c1cd3423b5ae8c882171) depends on `dtptri`
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`DTBTRS`](https://www.netlib.org/lapack/explore-html/d9/d0d/group__tbtrs_ga5d9df22d66b53ecf7e6b9990c1ca756e.html#ga5d9df22d66b53ecf7e6b9990c1ca756e) depends on `dtbsv`
* [ ] JavaScript
* [ ] C
* [ ] Fortran

### Auxiliary routines

* [ ] [`DLAMCH`](https://www.netlib.org/lapack/explore-html/d4/d86/group__lamch_gaeab255e77cbd3b0f31aea74ed0ce099e.html#gaeab255e77cbd3b0f31aea74ed0ce099e) depends on [`LSAME`](https://www.netlib.org/lapack/explore-html/de/d69/group__lsame_ga6336c37012000e6d635737da0a16b075.html#ga6336c37012000e6d635737da0a16b075) which is a BLAS auxiliary routine.
* [ ] JavaScript
* [ ] C
* [ ] Fortran
* [ ] [`LACN2`](https://www.netlib.org/lapack/explore-html/d6/d2d/group__lacn2_gabc1e7463e250c9e43596bfcbfa83c1de.html#gabc1e7463e250c9e43596bfcbfa83c1de)
* [ ] JavaScript
* [ ] C
* [ ] Fortran

## Related Issues

None.

## Questions

No.

## Other

### Status of iteration across packages

checked all packages from `LU: computational routines`, `Cholesky: computational routines`, `LDL: computational routines`, `Triangular computational routines` and listed ones which can be knocked off easily.

## 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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.