From 17622128c9de0fcf4fb1ee08319b69c5cf4fbb99 Mon Sep 17 00:00:00 2001 From: William Ball Date: Sun, 2 Aug 2020 12:38:09 -0700 Subject: [PATCH] added saving on disk --- fortran/fourthfree | Bin 17584 -> 18064 bytes fortran/fourthfree.f90 | 82 +++++++++++++++++++++++++---------------- 2 files changed, 50 insertions(+), 32 deletions(-) diff --git a/fortran/fourthfree b/fortran/fourthfree index 7ef5e9ec74bf3841197463da579c2ac89bfc3102..8e1535ab33bba07954ea7f90bf4d662db5b1d12a 100755 GIT binary patch literal 18064 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 Z@#sYM%d&LbP)OgnR!NlRDde%@zW^l#2>Sp4 delta 4422 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 diff --git a/fortran/fourthfree.f90 b/fortran/fourthfree.f90 index 6c6ef5d..6a913ea 100644 --- a/fortran/fourthfree.f90 +++ b/fortran/fourthfree.f90 @@ -1,27 +1,26 @@ program test implicit none - 1 format(20i10) + 1 format(1i10) - integer (kind = 8), parameter :: base = 2 - integer (kind = 8), dimension (:), allocatable :: ls, temp1, temp2 + integer (kind = 8), parameter :: base = 2, chunk = 10 double precision :: S - integer (kind = 8) :: i + integer (kind = 8) :: i, len - allocate(ls(1)) - ls = (/1/) - S = 0 + open(1, file = "prev.txt") + write(1,1) 1 + close(1) - do i = 1, 63 - S = S + (real(size(ls)) / real(2 ** i)) + S = 0.5 + + do i = 2, 63 + len = next() + call rename("array.txt", "prev.txt") + S = S + (real(len) / 2.0 ** i) print *, "ITERATION", i - print *, "NUMBER ", size(ls) + print *, "NUMBER ", len print *, "SUM ", S print *, "" call flush() - temp1 = next(ls) - temp2 = ls - ls = temp1 - deallocate(temp2) end do @@ -112,33 +111,52 @@ implicit none end function step -function next (ls) - 1 format(20i10) +function next() +implicit none + 1 format(1i10) - integer (kind = 8), dimension (:), allocatable, intent (in) :: ls - integer (kind = 8), dimension (:), allocatable :: temp, temp2, next - integer :: s, i, j, count + integer (kind = 8), dimension (:), allocatable :: temp, temp2 + integer (kind = 8) :: current, next + integer :: i, j, templen, ios + logical :: done - count = 0 - s = size(ls) - allocate(temp(s * base)) + templen = 0 + next = 0 + done = .false. + allocate(temp(chunk)) - do i = 1, s - temp2 = step(ls(i)) - do j = 1, size(temp2) - temp(j + count) = temp2(j) + open(1, file = "array.txt") + open(2, file = "prev.txt") + + do while (.not. done) + read(2, 1, iostat = ios) current + if (ios .ne. 0) then + done = .true. + exit + end if + + temp2 = step(current) + do i = 1, size(temp2) + templen = templen + 1 + temp(templen) = temp2(i) + next = next + 1 + if (templen >= chunk) then + write(1,1) temp + call flush(1) + deallocate(temp) + allocate(temp(chunk)) + templen = 0 + end if end do - count = count + size(temp2) deallocate(temp2) end do - allocate(next(count)) - do i = 1, count - next(i) = temp(i) - end do - + write(1,1) temp(:templen) deallocate(temp) + close(1) + close(2) + end function next end program test