{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:08:01Z","timestamp":1750306081508,"version":"3.41.0"},"reference-count":25,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2017,12,18]],"date-time":"2017-12-18T00:00:00Z","timestamp":1513555200000},"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":[[2018,9,30]]},"abstract":"<jats:p>\n            We propose a set of new Fortran reference implementations, based on an algorithm proposed by Kahan, for the Level 1 BLAS routines\n            <jats:italic>*NRM2<\/jats:italic>\n            that compute the Euclidean norm of a real or complex input vector. The principal advantage of these routines over the current offerings is that, rather than losing accuracy as the length of the vector increases, they generate results that are accurate to almost machine precision for vectors of length\n            <jats:italic>N<\/jats:italic>\n            &lt;\n            <jats:italic>N<\/jats:italic>\n            <jats:sub>\n              <jats:italic>max<\/jats:italic>\n            <\/jats:sub>\n            where\n            <jats:italic>N<\/jats:italic>\n            <jats:sub>\n              <jats:italic>max<\/jats:italic>\n            <\/jats:sub>\n            depends upon the precision of the floating point arithmetic being used. In addition, we make use of intrinsic modules, introduced in the latest Fortran standards, to detect occurrences of non-finite numbers in the input data and return suitable values as well as setting IEEE floating point status flags as appropriate. A set of C interface routines is also provided to allow simple, portable access to the new routines.\n          <\/jats:p>\n          <jats:p>To improve execution speed, we advocate a hybrid algorithm; a simple loop is used first and, only if IEEE floating point exception flags signal, do we fall back on Kahan\u2019s algorithm. Since most input vectors are \u201ceasy,\u201d i.e., they do not require the sophistication of Kahan\u2019s algorithm, the simple loop improves performance while the use of compensated summation ensures high accuracy.<\/jats:p>\n          <jats:p>We also report on a comprehensive suite of test problems that has been developed to test both our new implementation and existing codes for both accuracy and the appropriate settings of the IEEE arithmetic status flags.<\/jats:p>","DOI":"10.1145\/3134441","type":"journal-article","created":{"date-parts":[[2017,12,20]],"date-time":"2017-12-20T14:54:00Z","timestamp":1513781640000},"page":"1-23","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Remark on Algorithm 539"],"prefix":"10.1145","volume":"44","author":[{"given":"Richard J.","family":"Hanson","sequence":"first","affiliation":[{"name":"Retired"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6730-7398","authenticated-orcid":false,"given":"Tim","family":"Hopkins","sequence":"additional","affiliation":[{"name":"University of Kent, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,12,18]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1137\/1.9780898719604"},{"volume-title":"Programming Language Fortran X3.9-1966","author":"SI.","key":"e_1_2_1_2_1"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/212066.212075"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/355769.355771"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/77626.77627"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/42288.42292"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/22899.22904"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1137\/1.9781611971811"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2699469"},{"key":"e_1_2_1_10_1","unstructured":"R. J. Hanson and T. R. Hopkins. 2015. Remark on Algorithm 539: A Modern Fortran Implementation for Carefully Computing the Euclidean Norm\u2014User Manual. (2015). Manual accompanying the software component of this publication.  R. J. Hanson and T. R. Hopkins. 2015. Remark on Algorithm 539: A Modern Fortran Implementation for Carefully Computing the Euclidean Norm\u2014User Manual. (2015). Manual accompanying the software component of this publication."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/29380.214346"},{"key":"e_1_2_1_12_1","unstructured":"Y. Hida X. S. Li and D. H. Bailey. 2007. Library for Double-Double and Quad-Double Arithmetic. Retrieved from http:\/\/crd-legacy.lbl.gov\/&sim;dhbailey\/mpdist\/qd-2.3.17.tar.gz.  Y. Hida X. S. Li and D. H. Bailey. 2007. Library for Double-Double and Quad-Double Arithmetic. Retrieved from http:\/\/crd-legacy.lbl.gov\/&sim;dhbailey\/mpdist\/qd-2.3.17.tar.gz."},{"edition":"2","volume-title":"Accuracy and Stability of Numerical Algorithms","author":"Higham N. J.","key":"e_1_2_1_13_1"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199608)26:8%3C967::AID-SPE41%3E3.3.CO;2-7"},{"volume-title":"Information Technology\u2014Programming Languages\u2014FORTRAN (ISO\/IEC 1539:1991). ISO\/IEC Copyright Office","author":"EC.","key":"e_1_2_1_15_1"},{"volume-title":"Information Technology\u2014Programming Languages\u2014Fortran\u2014Part 1: Base Language (ISO\/IEC 1539-1:1997). ISO\/IEC Copyright Office","author":"EC.","key":"e_1_2_1_16_1"},{"volume-title":"Information Technology\u2014Programming Languages\u2014Fortran\u2014Part 1: Base Language (ISO\/IEC 1539-1:2004). ISO\/IEC Copyright Office","author":"EC.","key":"e_1_2_1_17_1"},{"volume-title":"Information Technology\u2014Programming Languages\u2014Fortran\u2014Part 1: Base Language (ISO\/IEC 1539-1:2010). ISO\/IEC Copyright Office","author":"EC.","key":"e_1_2_1_18_1"},{"volume-title":"Private communication","year":"2012","author":"Kahan W.","key":"e_1_2_1_20_1"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355848"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/355841.355847"},{"key":"e_1_2_1_23_1","unstructured":"M. Metcalf J. Reid and M. Cohen. 2011. Modern Fortran Explained. Oxford University Press Oxford UK.   M. Metcalf J. Reid and M. Cohen. 2011. Modern Fortran Explained. Oxford University Press Oxford UK."},{"volume-title":"The GNU MPFR","author":"FR.","key":"e_1_2_1_24_1"},{"volume-title":"Standard for Binary Floating-Point Arithmetic","author":"IEEE","key":"e_1_2_1_25_1"},{"key":"e_1_2_1_26_1","unstructured":"LAPACK Project. 2015. LAPACK Official Download Site. Retrieved from http:\/\/www.netlib.org\/lapack\/. (Accessed: 2017-09-06).  LAPACK Project. 2015. LAPACK Official Download Site. Retrieved from http:\/\/www.netlib.org\/lapack\/. (Accessed: 2017-09-06)."}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3134441","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3134441","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T03:30:10Z","timestamp":1750217410000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3134441"}},"subtitle":["A Modern Fortran Reference Implementation for Carefully Computing the Euclidean Norm"],"short-title":[],"issued":{"date-parts":[[2017,12,18]]},"references-count":25,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2018,9,30]]}},"alternative-id":["10.1145\/3134441"],"URL":"https:\/\/doi.org\/10.1145\/3134441","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2017,12,18]]},"assertion":[{"value":"2016-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-12-18","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}