stdlib-js / stdlib-js/stdlib

[RFC]: add LAPACK routines

未关闭
#2,464 6 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Accepted BLAS C difficulty: 4 Fortran JavaScript LAPACK priority: Normal RFC Tracking Issue
主要语言
JavaScript
星标
6k
派生
1.3k
平均合并
1 天 3 小时
30 天内合并 PR
611

描述

## 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:`.

贡献指南

打开贡献指南

调研方向

Start by reading the linked LAPACK specifications and the existing JavaScript pull requests for DGEMM and DLASWP. Choose a specific unchecked routine and determine its JavaScript, C, and Fortran scope from the checklist. Done means the selected routine is implemented and its corresponding checklist entries can be marked complete.

由索引模型根据 Issue 内容生成。

评估

技术栈
c, fortran, javascript
领域
hpc
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
20/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。