Linear systems of equations are used in many areas of engineering, science, and business. These systems may have thousands, even millions, of equations, but usually only a very small number of unknowns are used in one equation. Solving such equations is computationally demanding, requiring a significant amount of memory and processing time. Many solvers have been proposed to approach the problem efficiently.
The authors develop a general solver designed to efficiently solve a system of up to 3,000 linear equations. The proposed solver uses six interrelated matrices: four two-dimensional matrices--one to store matrix elements, two to store nonzero element indices, and one to indicate whether a particular matrix cell stores a nonzero element--and two one-dimensional matrices to count the nonzero elements in rows and columns. Such a system of matrices requires almost 150 megabytes of memory to store information for about 3,000 equations. The authors provide C code for four functions, including a function to perform a sparse Gaussian factorization with threshold partial pivoting, which significantly reduces the number of operations by looping only over nonzero elements, and a function to find a pivoting row. The authors also briefly describe a multithreaded version of their solver.
Most of the paper is devoted to an extensive comparison of sample runs between the proposed solver and three solvers designed for sparse matrices with a large number of equations. The proposed solver is faster than other systems; however, a multithreaded version does not generally offer better timing for sparse matrix systems.