{"id":2930,"date":"2018-01-02T14:22:21","date_gmt":"2018-01-02T19:22:21","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=2930"},"modified":"2018-01-04T16:35:15","modified_gmt":"2018-01-04T21:35:15","slug":"eispack-matrix-eigensystem-routines","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2018\/01\/02\/eispack-matrix-eigensystem-routines\/","title":{"rendered":"EISPACK, Matrix Eigensystem Routines"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>The ACM Special Interest Group on Programming Languages, SIGPLAN, expects to hold the fourth in a series of conferences on the History of Programming Languages in 2020, see <a href=\"https:\/\/hopl4.sigplan.org\/\">HOPL-IV<\/a>.  The first drafts of papers are to be submitted by August, 2018.  That long lead time gives me the opportunity to write a detailed history of MATLAB. I plan to write the paper in sections, which I'll post in this blog as they are available.  This is the second such installment.<\/p><p>LINPACK and EISPACK are Fortran subroutine packages for matrix computation developed in the 1970's.  They are a follow up to the Algol 60 procedures that I described in my previous blog post about the <a href=\"https:\/\/blogs.mathworks.com\/cleve\/2017\/12\/04\/wilkinson-and-reinsch-handbook-on-linear-algebra\/\">Wilkinson and Reinsch Handbook<\/a>.  They led to the first version of MATLAB.  This post is about EISPACK.  A post about LINPACK will follow.<\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#d6dd7b2d-c410-4ab8-bce9-0695e9289c42\">Argonne<\/a><\/li><li><a href=\"#266c74bb-dead-4978-bc1f-e3078b5c1d99\">First Release<\/a><\/li><li><a href=\"#f85211c5-350a-4a0a-be5d-9dc0568f6a0c\">Second Release<\/a><\/li><li><a href=\"#e8cf0ef8-8e72-4bc9-b0e7-b6bfc70e0f37\">Floating Point<\/a><\/li><li><a href=\"#ee53f541-e6ba-479d-9ab4-1749a1aa9ea3\">Complex Arithmetic<\/a><\/li><li><a href=\"#b43c75e3-95dd-40d2-a95e-896b8be70b27\">Certification<\/a><\/li><li><a href=\"#a60aaaac-9b3b-4759-b1ca-c6f2e2184687\">References<\/a><\/li><\/ul><\/div><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/cleve\/files\/eispackb.jpg\" alt=\"\"> <\/p><h4>Argonne<a name=\"d6dd7b2d-c410-4ab8-bce9-0695e9289c42\"><\/a><\/h4><p>In 1970, even before the <i>Handbook<\/i> was published, a group at Argonne National Laboratory proposed to the U.S. National Science Foundation (NSF) to \"explore the methodology, costs, and resources required to produce, test, and disseminate high-quality mathematical software and to test, certify, disseminate, and support packages of mathematical software in certain problem areas.\"<\/p><p>Argonne is a national research laboratory west of Chicago that has origins in the University of Chicago's work on the Manhattan project in the 1940s.  In 1970 it was under the auspices of what was then called the Atomic Energy Commission (now the Department of Energy).  As far as I know, this was the first time anybody at Argonne proposed a research project to the NSF.<\/p><p>At the time I was a summer consultant at Argonne and was spending a sabbatical year at Stanford.  Yoshiko Ikebe, from the University of Texas, was also a participant. So initially we called the project NATS, for NSF, Argonne, Texas and Stanford,  but that was soon changed to National Activity to Test Software.<\/p><p>NATS took on two projects.  EISPACK, Matrix Eigensystem Package, translated the Algol procedures for eigenvalues from the second part of the <i>Handbook<\/i> to Fortran and worked extensively on testing and portability.  FUNPACK, led by Jim Cody, developed rational approximations and software to compute special mathematical functions, including Bessel functions, gamma functions and the error function.<\/p><h4>First Release<a name=\"266c74bb-dead-4978-bc1f-e3078b5c1d99\"><\/a><\/h4><p>The Algol 60 procedures in the Wilkinson and Reinsch <i>Handbook<\/i> provide an excellent reference for the algorithms of matrix computation, but it was difficult to actually run the code because Algol compilers were not readily available.<\/p><p>In the 1970's the clear choice of a language for technical computation was Fortran.  The EISPACK team rewrote the Algol in Fortran, being careful to retain the structure and the numerical properties. Wilkinson visited Argonne for a few weeks every summer. He didn't do any Fortran programming, but he provided advice about numerical behavior and testing procedures.<\/p><p>In 1971 the first release of the collection was ready to be sent to about two dozen universities and national laboratories where individuals had shown an interest in the project and agreed to test the software.<\/p><p>The Fortran subroutines in the first release were all derived from the Algol procedures in the second section of the <i>Handbook<\/i>, so the contents of the package was essentially the same as the contents I listed in <a href=\"https:\/\/blogs.mathworks.com\/cleve\/2017\/12\/04\/wilkinson-and-reinsch-handbook-on-linear-algebra\/\">my previous blog<\/a>.  Most of the subroutine names describe the underlying algorithm, not the problem being addressed.  It is hard to tell from names like TRED1 and HQR2 what the subroutine actually does.  There were 34 subroutines in the first release.<\/p><p>With seven authors of the users' guide for the first release, it took almost three years, until 1974, to complete the documentation. Since the project was considered to be language translation, the <i>EISPACK Guide<\/i> was published by Spring-Verlag, the publisher of the <i>Handbook<\/i>.<\/p><h4>Second Release<a name=\"f85211c5-350a-4a0a-be5d-9dc0568f6a0c\"><\/a><\/h4><p>By 1976 a second release was ready for public distribution. The number of subroutines nearly doubled, to 70. The additional capabilities included<\/p><div><ul><li>The SVD algorithm of Golub, Kahan, and Reinsch for factoring rectangular matrices and solving overdetermined linear systems. The Algol procedures are in the first section of the <i>Handbook<\/i>.<\/li><\/ul><\/div><div><ul><li>The QZ algorithm of Moler and Stewart for the generalized eigenvalue problem, $Ax = \\lambda Bx$.  We developed this in Fortran at the same time as the rest of EISPACK, so there was never any Algol version.<\/li><\/ul><\/div><div><ul><li>A set of \"driver routines\" with names like RS, for real symmetric, and RSG, for real symmetric generalized, that reflect the problem being solved.  These drivers collect the recommended subroutines from the underlying collection into one call.<\/li><\/ul><\/div><p>A second Springer book, called the <i>EISPACK Guide Extension<\/i>, was published in 1976 to document the additional subroutines.<\/p><h4>Floating Point<a name=\"e8cf0ef8-8e72-4bc9-b0e7-b6bfc70e0f37\"><\/a><\/h4><p>The hardware landscape that EISPACK faced initially was a diverse collection of mainframes from different manufacturers.  The early 1970s was before the age of minicomputers. (The DEC VAX-11\/780 was introduced in October, 1975.)  It was also long before the IEEE 784 standard for floating point arithmetic.  Each manufacturer had different word length and floating point format.<\/p><p>The most prevalent machines were from the IBM 360-370 family.  These offered two floating point options.  The 32-bit word with four bytes was designated REAL*4 and the 64-bit word was REAL*8.  In contrast to today's floating point with the same word length, the 360 employed base 16.  So all numbers between powers of 16, not powers of 2, were equally spaced.  Jim Cody referred to this as \"wobbling precision\".<\/p><p>The Fortran distribution was available in several versions that differed in the setting of the machine accuracy parameter, MACHEP. Here are the different machines and corresponding values of MACHEP.<\/p><p><table border=1 style=\"width:50%\">\r\n<tr><td>MACHINE<\/td><td>MACHEP<\/td><\/tr>\r\n<tr><td>Burroughs 6700<\/td><td>  2.**(-37)<\/td><\/tr>\r\n<tr><td>CDC 6000-7000<\/td><td>  2.**(-47)<\/td><\/tr>\r\n<tr><td>DEC PDP-10<\/td><td>  2.**(-26)<\/td><\/tr>\r\n<tr><td>Honeywell 6070<\/td><td>  2.**(-26)<\/td><\/tr>\r\n<tr><td>Univac<\/td><td>  2.**(-26)<\/td><\/tr>\r\n<tr><td>IBM 360-370, REAL*4<\/td><td>  16.**(-5)<\/td><\/tr>\r\n<tr><td>IBM 360-370, REAL*8<\/td><td>  16.D0**(-13)<\/td><\/tr>\r\n<\/table><\/p><h4>Complex Arithmetic<a name=\"ee53f541-e6ba-479d-9ab4-1749a1aa9ea3\"><\/a><\/h4><p>Algol does not have a complex data type, so the derived subroutines do not use Fortran complex arithmetic .  Real and imaginary parts of complex quantities are stored in separate arrays.<\/p><h4>Certification<a name=\"b43c75e3-95dd-40d2-a95e-896b8be70b27\"><\/a><\/h4><p>The distributed software does not have a copyright notice or involve any kind of license.  The term \"open source\" was not yet widely used. The closest we came to a license agreement was a statement about \"certification\". Both guides listed the machines, operating systems, and compilers of the 15 test sites.  About half of the sites were universities and half were government labs.  One was from Canada and one from Sweden. Various models from six different manufactures were involved.<\/p><p>This list of test sites was followed by the following statement about support.<\/p><p>\r\n<p style=\"margin-left:3ex;\">\r\nCertification implies the full support of the NATS project in the\r\nsense that reports of poor or incorrect performance on at least the\r\ncomputer systems listed above  will be examined and any necessary\r\ncorrections made.  This support holds only when the software is\r\nobtained through the channels indicated below and has not been\r\nmodified; it will continue to hold throughout the useful life\r\nof EISPACK or until, in the estimation of the developers, the\r\npackage is superseded or incorporated into other supported,\r\nwidely-available program libraries.  The following individual serves\r\nas a contact about EISPACK, accepting reports from users concerning\r\nperformance:\r\n<\/p>\r\n<\/p><p>This was followed by Burt Garbow's mailing address and phone number at Argonne.  As far as I know, Burt never received any serious bug reports or complaints.<\/p><h4>References<a name=\"a60aaaac-9b3b-4759-b1ca-c6f2e2184687\"><\/a><\/h4><p>J. Dongarra and C. Moler, \"EISPACK, A Package for Solving Matrix Eigenvalue Problems\", chapter 4 in W. Cowell, <i>Sources and Development of Mathematical Software<\/i>, Prentice Hall, 1984, 10 pages, <a href=\"http:\/\/www.netlib.org\/utk\/people\/JackDongarra\/PAPERS\/1984_EISPACK-A-Package-for-Solving-Eigenvalue-Problems-ch4.pdf\">PDF available<\/a>.<\/p><p>B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe, V. C. Klema,  and C. B. Moler, <i>Matrix Eigensystem Routines - EISPACK Guide, 2nd Edition<\/i>, vol. 6 in Lecture Notes in Computer Science, Springer, 1974, 551 pages, <a href=\"http:\/\/www.springer.com\/us\/book\/9783540380047\">EISPACK Guide<\/a>.<\/p><p>B. S. Garbow, J. M. Boyle, J. J. Dongarra and C. B. Moler, <i>Matrix Eigensystem Routines - EISPACK Guide Extension<\/i>, vol. 51 in Lecture Notes in Computer Science, Springer, 1977, 343 pages, <a href=\"http:\/\/www.springer.com\/us\/book\/9783540082545\">EISPACK Guide Extension<\/a>.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_dec80a0ea4c64d958d1852f1a699360f() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='dec80a0ea4c64d958d1852f1a699360f ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' dec80a0ea4c64d958d1852f1a699360f';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2018 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_dec80a0ea4c64d958d1852f1a699360f()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2017a<br><\/p><\/div><!--\r\ndec80a0ea4c64d958d1852f1a699360f ##### SOURCE BEGIN #####\r\n%% EISPACK, Matrix Eigensystem Routines\r\n% The ACM Special Interest Group on Programming Languages, SIGPLAN,\r\n% expects to hold the fourth in a series of conferences on\r\n% the History of Programming Languages in 2020, see\r\n% <https:\/\/hopl4.sigplan.org\/ HOPL-IV>.  The first drafts of\r\n% papers are to be submitted by August, 2018.  That long lead time\r\n% gives me the opportunity to write a detailed history of MATLAB.\r\n% I plan to write the paper in sections, which I'll post in\r\n% this blog as they are available.  This is the second such installment.\r\n%\r\n% LINPACK and EISPACK are Fortran subroutine packages for matrix\r\n% computation developed in the 1970's.  They are a follow up to\r\n% the Algol 60 procedures that I described in my previous blog post\r\n% about the\r\n% <https:\/\/blogs.mathworks.com\/cleve\/2017\/12\/04\/wilkinson-and-reinsch-handbook-on-linear-algebra\/\r\n% Wilkinson and Reinsch Handbook>.  They led to the first version\r\n% of MATLAB.  This post is about EISPACK.  A post about LINPACK\r\n% will follow.\r\n\r\n%%\r\n%\r\n% <<eispackb.jpg>>\r\n\r\n%% Argonne\r\n% In 1970, even before the _Handbook_ was published, a group\r\n% at Argonne National Laboratory proposed to the U.S. National\r\n% Science Foundation (NSF) to \"explore the methodology, costs, and\r\n% resources required to produce, test, and disseminate high-quality\r\n% mathematical software and to test, certify, disseminate, and\r\n% support packages of mathematical software in certain problem\r\n% areas.\"  \r\n%\r\n% Argonne is a national research laboratory west of Chicago\r\n% that has origins in the University of Chicago's work on the\r\n% Manhattan project in the 1940s.  In 1970 it was under the\r\n% auspices of what was then called the Atomic Energy Commission\r\n% (now the Department of Energy).  As far as I know, this was the\r\n% first time anybody at Argonne proposed a research project to the\r\n% NSF.\r\n%\r\n% At the time I was a summer consultant at Argonne and was spending\r\n% a sabbatical year at Stanford.  Yoshiko Ikebe, from the University\r\n% of Texas, was also a participant. So initially we called the project\r\n% NATS, for NSF, Argonne, Texas and Stanford,  but that was soon\r\n% changed to National Activity to Test Software.\r\n%\r\n% NATS took on two projects.  EISPACK, Matrix Eigensystem Package,\r\n% translated the Algol procedures for eigenvalues from the second part\r\n% of the _Handbook_ to Fortran and worked extensively on testing and \r\n% portability.  FUNPACK, led by Jim Cody, developed rational \r\n% approximations and software to compute special mathematical functions,\r\n% including Bessel functions, gamma functions and the error function.\r\n\r\n%% First Release\r\n% The Algol 60 procedures in the \r\n% Wilkinson and Reinsch _Handbook_ provide an excellent reference for\r\n% the algorithms of matrix computation, but it was difficult\r\n% to actually run the code because Algol compilers were not readily\r\n% available.\r\n%\r\n% In the 1970's the clear choice of a language for technical computation\r\n% was Fortran.  The EISPACK team rewrote the Algol in Fortran, being\r\n% careful to retain the structure and the numerical properties.\r\n% Wilkinson visited Argonne for a few weeks every summer.\r\n% He didn't do any Fortran programming, but he provided advice about\r\n% numerical behavior and testing procedures.\r\n%\r\n% In 1971 the first release of the collection was ready to be sent to\r\n% about two dozen universities and national laboratories where individuals\r\n% had shown an interest in the project and agreed to test the software.\r\n%\r\n% The Fortran subroutines in the first release were all derived from\r\n% the Algol procedures in the second section of the _Handbook_,\r\n% so the contents\r\n% of the package was essentially the same as the contents I listed in\r\n% <https:\/\/blogs.mathworks.com\/cleve\/2017\/12\/04\/wilkinson-and-reinsch-handbook-on-linear-algebra\/\r\n% my previous blog>.  Most of the subroutine names describe the\r\n% underlying algorithm, not the problem being addressed.  It is hard\r\n% to tell from names like TRED1 and HQR2 what the subroutine actually\r\n% does.  There were 34 subroutines in the first release.\r\n% \r\n% With seven authors of the users' guide for the first release,\r\n% it took almost three years, until 1974, to complete the documentation.\r\n% Since the project was considered to be language translation,\r\n% the _EISPACK Guide_ was published by Spring-Verlag,\r\n% the publisher of the _Handbook_.\r\n\r\n%% Second Release\r\n% By 1976 a second release was ready for public distribution.\r\n% The number of subroutines nearly doubled, to 70.\r\n% The additional capabilities included\r\n%\r\n% * The SVD algorithm of Golub, Kahan, and Reinsch for factoring\r\n% rectangular matrices and solving overdetermined linear systems.\r\n% The Algol procedures are in the first section of the _Handbook_.\r\n%\r\n% * The QZ algorithm of Moler and Stewart for the generalized\r\n% eigenvalue problem, $Ax = \\lambda Bx$.  We developed this in Fortran\r\n% at the same time as the rest of EISPACK, so there was never any Algol \r\n% version.\r\n%\r\n% * A set of \"driver routines\" with names like RS, for real symmetric,\r\n% and RSG, for real symmetric generalized, that reflect the\r\n% problem being solved.  These drivers collect the recommended\r\n% subroutines from the underlying collection into one call.\r\n\r\n%%\r\n% A second Springer book, called the _EISPACK Guide Extension_, was\r\n% published in 1976 to document the additional subroutines.\r\n\r\n%% Floating Point\r\n% The hardware landscape that EISPACK faced initially was a diverse\r\n% collection of mainframes from different manufacturers.  The early\r\n% 1970s was before the age of minicomputers. (The DEC VAX-11\/780 was\r\n% introduced in October, 1975.)  It was also long before the IEEE 784\r\n% standard for floating point arithmetic.  Each manufacturer had\r\n% different word length and floating point format.\r\n%\r\n% The most prevalent machines were from the IBM 360-370 family.  These\r\n% offered two floating point options.  The 32-bit word with four bytes\r\n% was designated REAL*4 and the 64-bit word was REAL*8.  In contrast to\r\n% today's floating point with the same word length, the 360 employed\r\n% base 16.  So all numbers between powers of 16, not powers of 2, were\r\n% equally spaced.  Jim Cody referred to this as \"wobbling precision\".\r\n%\r\n% The Fortran distribution was available in several versions that\r\n% differed in the setting of the machine accuracy parameter, MACHEP.\r\n% Here are the different machines and corresponding values of MACHEP.\r\n%\r\n% <html><table border=1 style=\"width:50%\">\r\n% <tr><td>MACHINE<\/td><td>MACHEP<\/td><\/tr>\r\n% <tr><td>Burroughs 6700<\/td><td>  2.**(-37)<\/td><\/tr>\r\n% <tr><td>CDC 6000-7000<\/td><td>  2.**(-47)<\/td><\/tr>\r\n% <tr><td>DEC PDP-10<\/td><td>  2.**(-26)<\/td><\/tr>\r\n% <tr><td>Honeywell 6070<\/td><td>  2.**(-26)<\/td><\/tr>\r\n% <tr><td>Univac<\/td><td>  2.**(-26)<\/td><\/tr>\r\n% <tr><td>IBM 360-370, REAL*4<\/td><td>  16.**(-5)<\/td><\/tr>\r\n% <tr><td>IBM 360-370, REAL*8<\/td><td>  16.D0**(-13)<\/td><\/tr>\r\n% <\/table><\/html>\r\n\r\n%% Complex Arithmetic\r\n% Algol does not have a complex data type, so the derived subroutines\r\n% do not use Fortran complex arithmetic .  Real and imaginary parts\r\n% of complex quantities are stored in separate arrays.\r\n\r\n%% Certification\r\n% The distributed software does not have a copyright notice or involve\r\n% any kind of license.  The term \"open source\" was not yet widely used.\r\n% The closest we came to a license agreement was a statement about\r\n% \"certification\".\r\n% Both guides listed the machines, operating systems, and compilers\r\n% of the 15 test sites.  About half of the sites were universities \r\n% and half were government labs.  One was from Canada and one from Sweden.\r\n% Various models from six different manufactures were involved.\r\n\r\n%%\r\n% This list of test sites was followed by the following statement about\r\n% support.\r\n%\r\n% <html>\r\n% <p style=\"margin-left:3ex;\">\r\n% Certification implies the full support of the NATS project in the\r\n% sense that reports of poor or incorrect performance on at least the\r\n% computer systems listed above  will be examined and any necessary\r\n% corrections made.  This support holds only when the software is\r\n% obtained through the channels indicated below and has not been\r\n% modified; it will continue to hold throughout the useful life\r\n% of EISPACK or until, in the estimation of the developers, the\r\n% package is superseded or incorporated into other supported, \r\n% widely-available program libraries.  The following individual serves\r\n% as a contact about EISPACK, accepting reports from users concerning\r\n% performance:\r\n% <\/p>\r\n% <\/html>\r\n%\r\n% This was followed by Burt Garbow's mailing address and phone number\r\n% at Argonne.  As far as I know, Burt never received any serious\r\n% bug reports or complaints.\r\n\r\n%% References\r\n% J. Dongarra and C. Moler, \r\n% \"EISPACK, A Package for Solving Matrix Eigenvalue Problems\",\r\n% chapter 4 in W. Cowell,\r\n% _Sources and Development of Mathematical Software_,\r\n% Prentice Hall, 1984, 10 pages,\r\n% <http:\/\/www.netlib.org\/utk\/people\/JackDongarra\/PAPERS\/1984_EISPACK-A-Package-for-Solving-Eigenvalue-Problems-ch4.pdf\r\n% PDF available>.\r\n%\r\n% B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe,\r\n% V. C. Klema,  and C. B. Moler,\r\n% _Matrix Eigensystem Routines - EISPACK Guide, 2nd Edition_,\r\n% vol. 6 in\r\n% Lecture Notes in Computer Science, Springer, 1974, 551 pages,\r\n% <http:\/\/www.springer.com\/us\/book\/9783540380047\r\n% EISPACK Guide>.\r\n%\r\n% B. S. Garbow, J. M. Boyle, J. J. Dongarra and C. B. Moler,\r\n% _Matrix Eigensystem Routines - EISPACK Guide Extension_,\r\n% vol. 51 in\r\n% Lecture Notes in Computer Science, Springer, 1977, 343 pages,\r\n% <http:\/\/www.springer.com\/us\/book\/9783540082545\r\n% EISPACK Guide Extension>.\r\n\r\n\r\n\r\n##### SOURCE END ##### dec80a0ea4c64d958d1852f1a699360f\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/cleve\/files\/eispackb.jpg\" onError=\"this.style.display ='none';\" \/><\/div><!--introduction--><p>The ACM Special Interest Group on Programming Languages, SIGPLAN, expects to hold the fourth in a series of conferences on the History of Programming Languages in 2020, see <a href=\"https:\/\/hopl4.sigplan.org\/\">HOPL-IV<\/a>.  The first drafts of papers are to be submitted by August, 2018.  That long lead time gives me the opportunity to write a detailed history of MATLAB. I plan to write the paper in sections, which I'll post in this blog as they are available.  This is the second such installment.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2018\/01\/02\/eispack-matrix-eigensystem-routines\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,4,6,16],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/2930"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=2930"}],"version-history":[{"count":3,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/2930\/revisions"}],"predecessor-version":[{"id":2946,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/2930\/revisions\/2946"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=2930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=2930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=2930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}