[CSC 335] Fortran Example

Andrew J. Pounds pounds_aj at mercer.edu
Tue Nov 14 10:14:27 EST 2023


And here is a way to solve problem 2 on the homework using Fortran and 
the LAPACK library.

      program ztest

       parameter (N=10)

       double complex A(N,N), B(N,N), C(N,N)

       double precision pi
       integer ipiv(N), info
       double complex work(64*N), sum
       double complex alpha, beta
       double precision gamma

       alpha = dcmplx(1.0D0,0.0D0)
       beta  = dcmplx(0.0D0,0.0D0)

       pi = dacos(-1.0D0)

       do 10 i = 1, N
          do 20 j = 1, N
            gamma = dsqrt(dcos(dble(i**2*j)*pi/dble(N**3))**2+
      + dsin(2.0D0*dble(i**2*j)*pi/dble(N**3))**2)
            A(j,i) = dcmplx(
      +                     dcos(dble(i**2*j)*pi/dble(N**3))/gamma,
      + dsin(2.0D0*dble(i**2*j)*pi/dble(N**3))/gamma)
            B(j,i) = A(j,i)
20       continue
10    continue

       call ZGETRF( N, N, B, N, IPIV, INFO )
       call ZGETRI( N, B, N, IPIV, WORK, -1, INFO )
       LWORK = int(dble(work(1)))
       call ZGETRI( N, B, N, IPIV, WORK, LWORK, INFO )

       call ZGEMM ( 'N', 'N',  N, N, N,  alpha,  A,  N,
      +              B,  N, beta, C, N)

       sum = dcmplx(0.0D0,0.0D0)
       do 30 i = 1, N
           sum = sum + c(i,i)
30    continue

       print *, sum


       end



-- 
*Andrew J. Pounds, Ph.D.*
/Professor of Chemistry and Computer Science/
/Director of the Computational Science Program/
/Mercer University, Macon, GA, 31207 (478) 301-5627 /
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://theochem.mercer.edu/pipermail/csc335/attachments/20231114/748b07c7/attachment.html>


More information about the csc335 mailing list