Section Arrays: Assumed

Section Arrays: Assumed#

Adapted from: gjbex/Fortran-MOOC

This program demonstrates a Fortran technique.#

program assumed
    implicit none
    integer :: i
    integer, dimension(5) :: array1d = [ 2, 3, 5, 7, 11 ]

    print *, array1d
    call factorial(array1d)
    print *, array1d
contains

    integer function fac(n)
        implicit none
        integer, value :: n
        integer :: i

        fac = 1
        do i = 2, n
            fac = fac*i
        end do
    end function fac

    subroutine factorial(A)
        implicit none
        integer, dimension(:), intent(inout) :: A
        integer :: i

        do i = 1, size(A)
            A(i) = fac(A(i))
        end do
    end subroutine factorial

end program assumed

The above program is compiled and run using Fortran Package Manager (fpm):

import os
root_dir = os.getcwd()
code_dir = root_dir + "/" + "Fortran_Code/Section_Arrays_Assumed"
os.chdir(code_dir)
build_status = os.system("fpm build 2>/dev/null")
exec_status = os.system("fpm run 2>/dev/null")
           2           3           5           7          11
           2           6         120        5040    39916800