It should be noticed that the number of equations can be less than the size of the array. A driver program for this subroutine is:
! Sample program for solve. ! program solve implicit none integer, parameter :: MAXROW = 10 double precision :: a(10,10),b(10),temp(10) integer :: flag,i,maxrow,neq ! ! Assign values for NEQ, and entries of A. ! NEQ = 3 A(1,1) = 3.D0 A(1,2) = 6.D0 A(1,3) = 9.D0 A(2,1) = 2.D0 A(2,2) = 5.D0 A(2,3) = -2.D0 A(3,1) = 1.D0 A(3,2) = 3.D0 A(3,3) = -1.D0 ! ! Define the right hand side vector B and solve the system. ! B(1) = 39.D0 B(2) = 3.D0 B(3) = 2.D0 call solve(a,maxrow,neq,pvtidx,b) if( flag .eq. 0 ) then print *,' Solution vector for the system:' print *,(b(i),i = 1,neq) else if (flag .eq. -1) then print *,'There is an input error with NEQ & MAXROW' else print *,'A Zero Pivot occurred at equation ',FLAG end if stop end