Lis (linear algebra library)

Lis (Library of Iterative Solvers for linear systems, pronounced [lis]) is a scalable parallel software library for solving discretized linear equations and eigenvalue problems that mainly arise in the numerical solution of partial differential equations by using iterative methods. Although it is designed for parallel computers, the library can be used without being conscious of parallel processing.
Features.
Lis provides facilities for:
Example.
A C program to solve the linear equation formula_1 is written as follows:
LIS_INT main(LIS_INT argc, char* argv[])
 LIS_MATRIX A;
 LIS_VECTOR b, x;
 LIS_SOLVER solver;
 LIS_INT iter;
 double time;
 lis_initialize(&argc, &argv);
 lis_matrix_create(LIS_COMM_WORLD, &A);
 lis_vector_create(LIS_COMM_WORLD, &b);
 lis_vector_create(LIS_COMM_WORLD, &x);
 lis_input_matrix(A, argv[1]);
 lis_input_vector(b, argv[2]);
 lis_vector_duplicate(A, &x);
 lis_solver_create(&solver);
 lis_solver_set_optionC(solver);
 lis_solve(A, b, x, solver);
 lis_solver_get_iter(solver, &iter);
 lis_solver_get_time(solver, &time);
 printf("number of iterations = %d\n", iter);
 printf("elapsed time = %e\n", time);
 lis_output_vector(x, LIS_FMT_MM, argv[3]);
 lis_solver_destroy(solver);
 lis_matrix_destroy(A);
 lis_vector_destroy(b);
 lis_vector_destroy(x);
 lis_finalize();
 return 0;
System requirements.
The installation of Lis requires a C compiler. The Fortran interface requires a Fortran compiler, and the algebraic multigrid preconditioner requires a Fortran 90 compiler. 
For parallel computing environments, an OpenMP or MPI library is required. Both the Matrix Market and Harwell-Boeing formats are supported to import and export user data.