読者です 読者をやめる 読者になる 読者になる

LAPACKで連立一次方程式を解く

LAPACK : DGESVの例題のサンプルをf90っぽく書き換えました。

program main
  implicit none
  integer, parameter :: SP = kind(1.0)
  integer, parameter :: DP = selected_real_kind(2*precision(1.0_SP))

  integer :: i
  integer, parameter :: n = 4, m = 4
  real(DP), dimension(n,m) :: a
  real(DP), dimension(n) :: b
  integer, dimension(n) :: ipiv
  integer :: info

  a = reshape( (/1.80_DP, 5.25_DP, 1.58_DP,-1.11_DP, &
                 2.88_DP,-2.95_DP,-2.69_DP,-0.66_DP, &
                 2.05_DP,-0.95_DP,-2.90_DP,-0.59_DP, &
                -0.89_DP,-3.80_DP,-1.04_DP, 0.80_DP/), &
              (/4,4/) )
  b = (/ 9.52_DP, 24.35_DP, 0.77_DP, -6.22_DP /)

  call dgesv(n, 1, a, n, ipiv, b, n, info)

  do i = 1, 4
    write(*,*) i, b(i) ! answer 
  enddo

end program main