Department of Mathematics - University of Utah

HomeComputingCourse SchedulesCSMECurrent PositionsFAQ (Computing)FormsGraduateHigh SchoolLecture VideosMailbox AccessMath BiologyMath EducationNewsletterPeopleResearchRTG GrantsSeminars

LINPACK: numerical subroutine library for linear equation solution

LINPACK is a numerical subroutine library for solving linear equations, least-squares problems, and for finding singular values.

Last update: Sat Nov 17 16:21:44 2001

Comments, and reports of errata or bugs, are welcome via e-mail to the author, Nelson H. F. Beebe <>. In your report, please supply the full document URL, and the title and Last update time stamp recorded near the top of the document.

Table of contents

Documentation for LINPACK

There is locally-provided online documentation for LINPACK inside the GNU Emacs info system. In emacs , type C-h i to enter the info system, then type MLocal and MLINPACK. You can do the same thing in the standalone xinfo viewer. That documentation is also available in HTML form for Web browsers.

The standard reference manual for LINPACK is this book:

@String{pub-SIAM      = "Society for Industrial and 
                        Applied Mathematics"}
@String{pub-SIAM:adr  = "Philadelphia, PA, USA"}

  author =       "J. J. Dongarra and C. B. Moler and 
                 J. R. Bunch and G.W. Stewart",
  title =        "{LINPACK} Users' Guide",
  publisher =    pub-SIAM,
  address =      pub-SIAM:adr,
  pages =        "320",
  year =         "1979",
  ISBN =         "0-89871-172-X (paperback)",
  LCCN =         "QA76.73 .L22 L5 1979, QA214 .L56 1979",
  bibdate =      "Mon Dec 13 15:18:20 1993",

The development of LINPACK is chronicled in Chapter 2 of this book:

@String{pub-PH        = "Pren{\-}tice-Hall"}
@String{pub-PH:adr    = "Upper Saddle River, NJ 07458, USA"}

  editor =       "Wayne R. Cowell",
  title =        "Sources and Development of Mathematical 
  publisher =    pub-PH,
  address =      pub-PH:adr,
  pages =        "xii + 404",
  year =         "1984",
  ISBN =         "0-13-823501-5",
  LCCN =         "QA76.95 .S68 1984",
  bibdate =      "Tue Dec 14 22:44:45 1993",
  series =       "Prentice-Hall Series in Computational 
                 Mathematics, Cleve Moler, Advisor",

LINPACK, and its predecessor EISPACK, grew out of early work published in the journal Numerische Mathematik that was later collected and republished in this single book:

@String{pub-SV        = "Spring{\-}er-Ver{\-}lag"}
@String{pub-SV:adr    = "Berlin, Germany~/ Heidelberg,
                        Germany~/ London, UK~/ etc."}

  editor =       "James H. Wilkinson and Christian Reinsch",
  booktitle =    "Linear Algebra",
  title =        "Linear Algebra",
  volume =       "II",
  publisher =    pub-SV,
  address =      pub-SV:adr,
  pages =        "viii + 439",
  year =         "1971",
  ISBN =         "0-387-05414-6, 3-540-05414-6",
  LCCN =         "QA251 .W67",
  bibdate =      "Wed Dec 15 18:44:50 1993",
  series =       "Handbook for Automatic Computation, Editors:
                 F. L. Bauer, A. S. Householder, F. W. J. Olver,
                 H. Rutishauser, K. Samelson and E. Stiefel",

Linking with locally-installed libraries

Fortran code can be linked with the LINPACK library like this:

    f77 -o fcode fcode.f -L/usr/local/lib -llinpack

Related libraries: EISPACK, MINPACK, and LAPACK

LINPACK is one of several other xxxpack projects, among them, EISPACK (for matrix eigenvalues and eigenvectors, and singular-value decompositions), MINPACK (for function minimization and least-squares solutions), and LAPACK (for linear equations, least-squares, singular-value decomposition, and eigenvalue/eigenvector solution).

LINPACK benchmarks

The LINPACK library has been used extensively in the computing industry as a performance benchmark, and results have been tabulated for a very large number of computers in a report that is updated approximately twice a year. The report is available in PostScript ( and PDF form (performance.pdf).

The LINPACK benchmark is used to compare high-performance computers: the ranking of the world's top 500 supercomputers is frequently cited.

There are two categories of LINPACK benchmarks: solution of a particular linear equation system of order 100, using the original LINPACK software, and documented compilation options, and a `towards peak performance' benchmark of order 1000, where competitors are permitted to rewrite, or even replace, the LINPACK code with highly optimized code that might even use a different algorithm, provided it gets the correct answer.

Since linear equation solutions for matrices of O(N) rows and O(N) columns take O(N^3) operations, when N = 100, about a million floating-point operations (flops) are needed. This was a modest benchmark in the 1970s, but takes only a fraction of a second on machines manufactured in the 1990s and later. Also, O(N^2) storage is needed, so with N = 100, less than 100KB of memory suffices. That is smaller than the size of the high-speed cache memory of most machines of the 1990s or later, so the code runs faster than it would if the data were not in cache. Compilers have sometimes been modified to recognize LINPACK-type inner loops and handle them with utmost efficiency, so as to obtain good LINPACK benchmark numbers for marketing hype. Thus, the N = 100 LINPACK benchmark tends to over-estimate performance.

The N = 1000 LINPACK benchmark takes of the order of a billion flops, and more memory than is available in the caches of most machines, so it is somewhat better as a performance measurement, but it too gives unfair weight to certain architecture classes, such as vector computers.

Thus, you should consider LINPACK benchmark numbers as performance that your program probably will not achieve!

Dept Info Outreach College of Science Newsletter

Department of Mathematics
University of Utah
155 South 1400 East, JWB 233
Salt Lake City, Utah 84112-0090
Tel: 801 581 6851, Fax: 801 581 4148

Entire Web                     Only