{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:24:02Z","timestamp":1750220642347,"version":"3.41.0"},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2020,3,20]],"date-time":"2020-03-20T00:00:00Z","timestamp":1584662400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Math. Softw."],"published-print":{"date-parts":[[2020,3,31]]},"abstract":"<jats:p>A set of Fortran subroutines for reverse mode algorithmic (or automatic) differentiation of the basic linear algebra subprograms (BLAS) is presented. This is preceded by a description of the mathematical tools used to obtain the formulae of these derivatives, with emphasis on special matrices supported by the BLAS: triangular, symmetric, and band. All single and double precision BLAS derivatives have been implemented, together with the Cholesky factorization from Linear Algebra Package (LAPACK). The subroutines are written in Fortran 2003 with a Fortran 77 interface to allow use from C and C++, as well as dynamic languages such as R, Python, Matlab, and Octave. The subroutines are all implemented by calling BLAS, thereby attaining fast runtime. Timing results show derivative runtimes that are about twice those of the corresponding BLAS, in line with theory. The emphasis is on reverse mode because it is more important for the main application that we have in mind, numerical optimization. Two examples are presented, one dealing with the least squares modeling of groundwater, and the other dealing with the maximum likelihood estimation of the parameters of a vector autoregressive time series. The article contains comprehensive tables of formulae for the BLAS derivatives as well as for several non-BLAS matrix operations commonly used in optimization.<\/jats:p>","DOI":"10.1145\/3382191","type":"journal-article","created":{"date-parts":[[2020,3,20]],"date-time":"2020-03-20T10:23:08Z","timestamp":1584699788000},"page":"1-20","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Algorithm 1005"],"prefix":"10.1145","volume":"46","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-9066-3128","authenticated-orcid":false,"given":"Kristjan","family":"Jonasson","sequence":"first","affiliation":[{"name":"University of Iceland, Dunhagi, Reykjavik, Iceland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sven","family":"Sigurdsson","sequence":"additional","affiliation":[{"name":"University of Iceland, Dunhagi, Reykjavik, Iceland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hordur Freyr","family":"Yngvason","sequence":"additional","affiliation":[{"name":"University of Iceland, Dunhagi, Reykjavik, Iceland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Petur Orri","family":"Ragnarsson","sequence":"additional","affiliation":[{"name":"University of Iceland, Dunhagi, Reykjavik, Iceland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8418-6724","authenticated-orcid":false,"given":"Pall","family":"Melsted","sequence":"additional","affiliation":[{"name":"University of Iceland, Dunhagi, Reykjavik, Iceland"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,3,20]]},"reference":[{"volume-title":"Retrieved","year":"2017","key":"e_1_2_2_1_1"},{"volume-title":"OpenBLAS: An optimized BLAS library. Retrieved","year":"2017","key":"e_1_2_2_2_1"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/TAC.1977.1101604"},{"volume":"2","volume-title":"Proceedings of the SIAM Workshop on Object Oriented Methods for Inter-Operable Scientific and Engineering Computing, SIAM","author":"Thomas","key":"e_1_2_2_4_1"},{"volume-title":"Coleman and Wei Xu","year":"2016","author":"Thomas","key":"e_1_2_2_5_1"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/77626.79170"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1137\/1037042"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1214\/aoms\/1177730148"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1141885.1141888"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/293686.293695"},{"volume-title":"Advances in Automatic Differentiation, Christian H","author":"Giles Mike B.","key":"e_1_2_2_12_1"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1377603.1377607"},{"volume-title":"On automatic differentiation","author":"Griewank Andreas","key":"e_1_2_2_14_1"},{"volume-title":"Acta Numerica.","author":"Griewank Andreas","key":"e_1_2_2_15_1"},{"volume-title":"Extra","author":"Griewank Andreas","key":"e_1_2_2_16_1"},{"volume-title":"Mark R. Dennis","author":"Griewank Andreas","key":"e_1_2_2_17_1"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/229473.229474"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1137\/1.9780898717761"},{"volume-title":"Automatic Differentiation of Algorithms: Theory, Implementation, and Application, Andreas Griewank and George F","author":"Iri Masao","key":"e_1_2_2_20_1"},{"key":"e_1_2_2_21_1","article-title":"Algorithm 878: Exact VARMA likelihood and its gradient for complete and incomplete data with Matlab","volume":"35","author":"Jonasson Kristjan","year":"2008","journal-title":"ACM Transactions on Mathematical Software (TOMS)"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1486525.1486531"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/355887.355890"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355847"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/3114201.3114717"},{"volume-title":"The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation","author":"Naumann Uwe","key":"e_1_2_2_26_1","doi-asserted-by":"crossref","DOI":"10.1137\/1.9781611972078"},{"key":"e_1_2_2_27_1","doi-asserted-by":"crossref","first-page":"134","DOI":"10.1080\/10618600.1995.10474671","article-title":"Differentiation of the Cholesky algorithm","volume":"4","author":"Smith S. P.","year":"1995","journal-title":"Journal of Computational and Graphical Statistics"},{"volume-title":"Object Oriented Methods for Interoperable Scientific and Engineering Computing: Proceedings of the 1998 SIAM Workshop, M. E. Henderson, C. R. Anderson, and S. L. Lyons (Eds.). SIAM","year":"1999","author":"Verma Arun","key":"e_1_2_2_29_1"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jocs.2011.10.007"},{"key":"e_1_2_2_31_1","first-page":"1","article-title":"AUGEM: Automatically generate high performance dense linear algebra kernels on x86 CPUs. In Proceedings of the International Conference on High Performance Computing","volume":"25","author":"Wang Qian","year":"2013","journal-title":"Networking, Storage and Analysis. ACM"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3104990"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-8191(00)00087-9"}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3382191","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3382191","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:09Z","timestamp":1750197729000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3382191"}},"subtitle":["Fortran Subroutines for Reverse Mode Algorithmic Differentiation of BLAS Matrix Operations"],"short-title":[],"issued":{"date-parts":[[2020,3,20]]},"references-count":31,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2020,3,31]]}},"alternative-id":["10.1145\/3382191"],"URL":"https:\/\/doi.org\/10.1145\/3382191","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2020,3,20]]},"assertion":[{"value":"2017-12-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-03-20","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}