<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Here is the example I showed in class for finding the determinant
of a Hilbert matrix <br>
</p>
<p> program determinant<br>
<br>
parameter (NMAX=4)<br>
<br>
double precision A(NMAX,NMAX)<br>
double precision B(NMAX,NMAX)<br>
integer IPIV(NMAX), sumd<br>
<br>
double precision arg, prod, zero, one<br>
integer N<br>
<br>
zero = 0.0D0<br>
one = 1.0D0<br>
<br>
N = NMAX<br>
<br>
* Build the Hilbert Matrix<br>
do k = 1, N<br>
do j = 1, N<br>
A(j,k) = 1.0D0 / (dble(j+k-1))<br>
if ( j .ne. k ) then<br>
B(j,k) = zero<br>
else<br>
B(j,k) = one<br>
endif<br>
enddo<br>
enddo<br>
<br>
* Perform an PLU factorization. Use diagonal elements of U
(stored in A) and <br>
* the number of row interchanges (stored in IPIV) to calculate
determinant.<br>
<br>
call DGESV( N, N, A, N, IPIV, B, N, INFO )<br>
<br>
print *, 'Info = ', INFO<br>
<br>
sumd = one<br>
prod = one<br>
do i = 1, n<br>
if ( IPIV(i) .ne. i ) sumd = sumd * (-1.0D0)<br>
prod = prod * A(i,i)<br>
enddo<br>
<br>
print *, sumd, ' ', prod<br>
print *, 'The determinant is ', sumd*prod<br>
end<br>
<br>
</p>
<div class="moz-signature">-- <br>
<b>Andrew J. Pounds, Ph.D.</b><br>
<i>Professor of Chemistry and Computer Science</i><br>
<i>Director of the Computational Science Program</i><br>
<i>Mercer University, Macon, GA, 31207 (478) 301-5627 </i></div>
</body>
</html>