<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>