{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:51:27Z","timestamp":1750308687842,"version":"3.41.0"},"reference-count":15,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2014,4,1]],"date-time":"2014-04-01T00:00:00Z","timestamp":1396310400000},"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":[[2014,4]]},"abstract":"<jats:p>In this article we present a compile-time algorithm, implemented using C++ template metaprogramming techniques, that minimizes the use of temporary storage when evaluating expressions. We present the basic building blocks of our algorithm---transformations that act locally on nodes of the expression parse tree---and demonstrate that the application of these local transformations generates a (nonunique) expression that requires a minimum number of temporary storage objects to evaluate. We discuss a C++ implementation of our algorithm using expression templates, and give results demonstrating the effectiveness of our approach.<\/jats:p>","DOI":"10.1145\/2591005","type":"journal-article","created":{"date-parts":[[2014,4,22]],"date-time":"2014-04-22T13:37:45Z","timestamp":1398173865000},"page":"1-21","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Algorithm 940"],"prefix":"10.1145","volume":"40","author":[{"given":"Blake","family":"Nelson","sequence":"first","affiliation":[{"name":"SCI Institute, University of Utah"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Robert M.","family":"Kirby","sequence":"additional","affiliation":[{"name":"SCI Institute, University of Utah"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Steven","family":"Parker","sequence":"additional","affiliation":[{"name":"NVIDIA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2014,4]]},"reference":[{"key":"e_1_2_2_1_1","first-page":"81","article-title":"A domain specific embedded language in c++ for automatic differentiation, projection, integration and variational formulations. Sci","volume":"14","author":"Christophe Prud\u2019hom","year":"2006","unstructured":"Prud\u2019hom Christophe . 2006 . A domain specific embedded language in c++ for automatic differentiation, projection, integration and variational formulations. Sci . Program. 14 , 2, 81 -- 110 . http:\/\/portal.acm.org\/citation.cfm?id=1376891.1376895. Prud\u2019hom Christophe. 2006. A domain specific embedded language in c++ for automatic differentiation, projection, integration and variational formulations. Sci. Program. 14, 2, 81--110. http:\/\/portal.acm.org\/citation.cfm?id=1376891.1376895.","journal-title":"Program."},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00791-008-0117-x"},{"key":"e_1_2_2_3_1","unstructured":"Ga\u00ebl Guennebaud Beno\u00eet Jacob etal 2010. Eigen v3. http:\/\/eigen.tuxfamily.org.  Ga\u00ebl Guennebaud Beno\u00eet Jacob et al. 2010. Eigen v3. http:\/\/eigen.tuxfamily.org."},{"key":"e_1_2_2_4_1","unstructured":"Masakatsu Ito. 2001. Matrix expression templates. http:\/\/met.sourceforge.net\/.  Masakatsu Ito. 2001. Matrix expression templates. http:\/\/met.sourceforge.net\/."},{"key":"e_1_2_2_5_1","volume-title":"Sherwin","author":"Karniadakis George Em","year":"1999","unstructured":"George Em Karniadakis and Spencer J . Sherwin . 1999 . Spectral\/Hp Element Methods for CFD. Oxford University Press , New York . George Em Karniadakis and Spencer J. Sherwin. 1999. Spectral\/Hp Element Methods for CFD. Oxford University Press, New York."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCISE.2003.1196309"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355847"},{"key":"e_1_2_2_8_1","unstructured":"Michael Lehn Alexander Stippler and Karsten Urban. 2005. Flens --- A flexible library for efficient numerical solutions. http:\/\/dml.cz\/bitstream\/handle\/10338.dmlcz\/700445\/Equadiff_11-2005-2_55.pdf.  Michael Lehn Alexander Stippler and Karsten Urban. 2005. Flens --- A flexible library for efficient numerical solutions. http:\/\/dml.cz\/bitstream\/handle\/10338.dmlcz\/700445\/Equadiff_11-2005-2_55.pdf."},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1595655.1595663"},{"key":"e_1_2_2_10_1","volume-title":"Armadillo: An open source c++ linear algebra library for fast prototyping and computationally intensive experiments. Tech. rep. NICTA, Australia","author":"Sanderson Conrad","year":"2010","unstructured":"Conrad Sanderson . 2010 . Armadillo: An open source c++ linear algebra library for fast prototyping and computationally intensive experiments. Tech. rep. NICTA, Australia . http:\/\/arma.sourceforge.net\/armadillo_nicta_2010.pdf. Conrad Sanderson. 2010. Armadillo: An open source c++ linear algebra library for fast prototyping and computationally intensive experiments. Tech. rep. NICTA, Australia. http:\/\/arma.sourceforge.net\/armadillo_nicta_2010.pdf."},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/321607.321620"},{"key":"e_1_2_2_12_1","volume-title":"Josuttis","author":"Vandevoorde David","year":"2002","unstructured":"David Vandevoorde and Nicolai M . Josuttis . 2002 . C++ Templates. Addison-Wesley Longman , Boston, MA. David Vandevoorde and Nicolai M. Josuttis. 2002. C++ Templates. Addison-Wesley Longman, Boston, MA."},{"key":"e_1_2_2_13_1","unstructured":"Todd L. Veldhuizen. 1995. Expression templates. C++ Rep. 7 5 26--31. (Reprinted in C++ Gems Stanley Lippman Ed.)  Todd L. Veldhuizen. 1995. Expression templates. C++ Rep. 7 5 26--31. (Reprinted in C ++ Gems Stanley Lippman Ed.)"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.5555\/646894.709708"},{"key":"e_1_2_2_15_1","unstructured":"Joerg Walter and Mathias Koch. 2002. Boost basic linear algebra library (ublas) homepage. http:\/\/www.boost.org\/libs\/numeric\/ublas\/.  Joerg Walter and Mathias Koch. 2002. Boost basic linear algebra library (ublas) homepage. http:\/\/www.boost.org\/libs\/numeric\/ublas\/."}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2591005","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2591005","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T20:01:13Z","timestamp":1750276873000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2591005"}},"subtitle":["Optimal Accumulator-Based Expression Evaluation through the Use of Expression Templates"],"short-title":[],"issued":{"date-parts":[[2014,4]]},"references-count":15,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2014,4]]}},"alternative-id":["10.1145\/2591005"],"URL":"https:\/\/doi.org\/10.1145\/2591005","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2014,4]]},"assertion":[{"value":"2012-02-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2014-04-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}