{"id":117,"date":"2008-06-16T13:00:54","date_gmt":"2008-06-16T12:00:54","guid":{"rendered":"http:\/\/www.walkingrandomly.com\/?p=117"},"modified":"2008-09-24T12:03:21","modified_gmt":"2008-09-24T11:03:21","slug":"nist-digital-library-of-mathematical-functions","status":"publish","type":"post","link":"https:\/\/walkingrandomly.com\/?p=117","title":{"rendered":"NIST Digital Library of Mathematical Functions"},"content":{"rendered":"<p>A few years ago, while working through a degree in theoretical physics at <a href=\"http:\/\/www.sheffield.ac.uk\/\">Sheffield University<\/a>, I took a course on <a href=\"http:\/\/scitation.aip.org\/journals\/doc\/PHTOAD-ft\/vol_54\/iss_4\/11_1.shtml\">special functions<\/a> in physics that was given by the legendary lecturer Dr Stoddart (saviour of many a physics undergraduate, including me, during his many years there &#8211; please leave a comment if you studied at Sheffield and remember him).<\/p>\n<p>This course introduced me to the fascinating world of the so called &#8216;higher transcendental functions&#8217; of mathematical physics.  I remember that we covered topics such as Bessel functions, Laguerre polynomials, Hermite Polynomials and the Gamma function among others but in a one semester course we only really scratched the surface of the subject.<\/p>\n<p>Since then I have come across several other special functions during the course of my work such as the LambertW function, Mathieu functions, Chebyshev polynomials and more.  I used to be a physicist and so, despite the fact that the theory behind these functions can often be fascinating, all I had time to consider back then was how to evaluate them.<\/p>\n<p>In fact, as far as my professional life goes, the question of evaluation is still the only thing that I get asked about regarding special functions.  Questions such as &#8216;How can I evaluate the LambertW function in MATLAB?&#8217; (Answer &#8211; by using <a href=\"http:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/loadFile.do?objectType=file&amp;objectId=6909\">this user-defined function<\/a>) or &#8216;Do you know of a free, open source, implementation of Bessel&#8217;s function?&#8217; (Answer &#8211; the <a href=\"http:\/\/www.gnu.org\/software\/gsl\/\">GNU Scientific Library<\/a>).<\/p>\n<p>The idea for this post came to me while reading an article written in 1994 (and subsequently updated in 2000) where the authors discussed the <a href=\"http:\/\/math.nist.gov\/mcsd\/Reports\/2001\/nesf\/\">Numerical Evaluation of Special Functions<\/a>. One of the features of this document was a list of various special functions combined with a list of software packages that could evaluate them.  For example it lists <a href=\"http:\/\/mathworld.wolfram.com\/DawsonsIntegral.html\">Dawson&#8217;s integral<\/a> and tells us that if you need to evaluate this then you can use various software packages such as the <a href=\"http:\/\/www.nag.co.uk\">NAG libraries<\/a> or <a href=\"http:\/\/www.nr.com\/\">Numerical Recipes<\/a>.<\/p>\n<p>I thought that this was a very useful document but a major problem with it is that it is rather out of date!  Wouldn&#8217;t it be great if someone were to create an updated version that included all of the latest advances in software libraries and applications.  I even idly thought of attempting to do this myself and publish the results here but it turns out that I have (thankfully) been beaten to it.<\/p>\n<p>It&#8217;s not finished yet but the <a href=\"http:\/\/dlmf.nist.gov\/\">NIST Digital Library of Mathematical Functions<\/a> looks like it is going to be exactly what I need.  Apparently this project aims to be a sort of modern rewrite of Abramowitz and Stegun&#8217;s Handbook of Mathematical Functions, a book that almost every physicist I knew had a copy of.  The <a href=\"http:\/\/dlmf.nist.gov\/\">preview<\/a> looks very promising to say the least! For example, take the section on the <a href=\"http:\/\/dlmf.nist.gov\/5\/\">Gamma Function<\/a>. The library contains everything you might want to know about this function such as its <a href=\"\/\/http:\/\/dlmf.nist.gov\/5\/2\/\">definition<\/a>, <a href=\"http:\/\/dlmf.nist.gov\/5\/3\/\">2D and 3D plots of its graphs<\/a>, its <a href=\"http:\/\/dlmf.nist.gov\/5\/7\/\">series expansion<\/a> and, of course, a list of <a href=\"http:\/\/dlmf.nist.gov\/software\/\">software packages and libraries<\/a> that can be used to evaluate it.  I note that, for the Gamma function, one can choose from <a href=\"http:\/\/www.mathworks.com\/\">MATLAB<\/a>, <a href=\"http:\/\/www.wolfram.com\/\">Mathematica<\/a>, <a href=\"http:\/\/www.maplesoft.com\">MAPLE<\/a>, <a href=\"http:\/\/www.nag.co.uk\">NAG<\/a>, <a href=\"http:\/\/maxima.sourceforge.net\/\">Maxima<\/a>, <a href=\"http:\/\/pari.math.u-bordeaux.fr\/\">PARI-GP<\/a>, the <a href=\"http:\/\/www.gnu.org\/software\/gsl\/\">GSL<\/a>, <a href=\"http:\/\/www.nr.com\/\">Numerical Recipes<\/a> and several others &#8211; not exactly short of Gamma function implementations are we?<\/p>\n<p>When it&#8217;s finished, the work will be published as a book called &#8216;Handbook of Mathematical Functions&#8217; but will also be available freely online as a digital library &#8211; fabulous!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few years ago, while working through a degree in theoretical physics at Sheffield University, I took a course on special functions in physics that was given by the legendary lecturer Dr Stoddart (saviour of many a physics undergraduate, including me, during his many years there &#8211; please leave a comment if you studied at [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6,25,4,8,11,19,7],"tags":[],"class_list":["post-117","post","type-post","status-publish","format-standard","hentry","category-general-math","category-maple","category-math-software","category-mathematica","category-matlab","category-physics","category-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3swhs-1T","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=117"}],"version-history":[{"count":0,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/117\/revisions"}],"wp:attachment":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}