Meschach: matrix computations in C

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Most of numerical analysis relies on algorithms for perfoming calculations on matrices and vectors. The operations most needed are ones which solve systems of linear equations, numerically computing the maximum or minimum of a function, or solving differential equations. The Meschach library contains routines to address all of the basic operations for dealing with matrices and vectors, and a number of other issues as well. I do not claim that it contains every useful algorithm in numerical linear algebra, but it does provide a basis on which to build more advanced algorithms. The library is intended for people who know something of the 'C' programming language, something of how to solve the numerical problem they are faced with (which involves matrices and/or vectors) but don't want to have the hassle of building all the necessary operations from the ground up. I hope that researchers, mathematicians, engineers and programmers will find this library makes the task of developing and producing code for their numerical problems easier, and easier to maintain than would otherwise be possible. To this end the source code is available to be perused, used and passed on without cost, while ensuring that the quality of the software is not compromised. The software is copyrighted; however, the copyright agreement follows in the footsteps of the Free Software Foundation in preventing abuse that occurs with totally "public domain" software. This is not the first or only library of numerical routines in C. However, there are still a number of niches which have not been filled. Some of the currently available libraries are essentially translations of Fortran routines into C. Those that attempt to make use of C's features usually address a relatively small class of problems. There is a commercial package of C++ routines (and classes) for performing matrix computations, and NAG and IMSL are producing C versions of their libraries. None of these is "public domain". The Meschach library makes extensive use of C's special features (pointers, memory allocation/deallocation, structures/records, low level operations) to ease use and ensure good performance. In addition, Meschach addresses the need for both dense and sparse matrix operations within a single framework. There is another issue which needs to be addressed by a matrix library like this. At one end, libraries that are essentially translations from Fortran will make little use of memory allocation. At the other end, interactive matrix "calculators" such as MATLAB and MATCALC use memory allocation and garbage collection as a matter of course and have to interpret your "program". This latter approach is very flexible, but resource hungry. These matrix calculator programs were not designed to deal with large problems. This matrix library is intended to provide a "middle ground" between efficient but inflexible Fortran-style programs, and flexible but resource hungry calculator/interpreter programs. When and how memory is allocated in Meschach can be controlled by using the allocation/deallocation and resizing routines; result matrices and vectors can be created dynamically when needed, or allocated once, and then used as a static array. Unnecessary memory allocation is avoided where necessary. This means that prototyping can often be done on MATLAB or MATCALC, and final code can be written that is efficient and can be incorporated into other C programs and routines without having to re-write all the basic routines from scratch. This documentation describes Meschach 1.2 which has a number of improvements over previous versions of Meschach. Amongst these improvements are: * easier installation (at least on Unix machines). * complex numbers, vectors and matrices, including complex matrix factorisation. * band matrix structures, and band factorise and solve routines. * better control of static workspace arrays. * more iterative methods for large, sparse or structured matrices, and a comprehensive "iteration" data structure. * more consistent naming schemes. * matrix polynomials and exponentials. * extensible error handling.

Author(s): David Stewart, Zbigniew Leyk
Series: Proceedings of the Centre for Mathematics and its Applications, Australian National University 32
Edition: 1
Publisher: Centre for Mathematics and its Applications, Australian National University
Year: 1994

Language: English
Commentary: Made from the PDF at: http://maths.anu.edu.au/research/symposia-proceedings/meschach-matrix-computations-c
Pages: 254
City: Canberra

Preface......Page 7
Chapter 1 Tutorial......Page 13
Chapter 2 Data structures......Page 35
Chapter 3 Numerical Linear Algebra......Page 49
Chapter 4 Basic Dense Matrix Operations......Page 61
Chapter 5 Dense Matrix Factorisation Operations......Page 127
Chapter 6 Sparse Matrix Operations......Page 160
Chapter 7 Installation and copyright......Page 193
Chapter 8 Designing numerical libraries in C......Page 201
For Further Reading .........Page 232
Index......Page 233
Function index......Page 241