RosettaCodeData/Task/Fibonacci-sequence/Fortran/fibonacci-sequence-2.f
2026-02-01 16:33:20 -08:00

51 lines
1.1 KiB
Fortran

function fibfc(n) result(f) ! integer forward count using 128 bit integers.
! DOMAIN: up to 184
! uses 16 byte integers
integer(16), intent (in) :: n ! input
integer(16) :: f ! output
integer(16) :: i, fm2, fm1
if (n>184) then
PRINT *, "ERROR: 'a' must be in the domain 0 <= n <= 184 !"
STOP
end if
f=0
fm2=0
fm1=1
IF ( n > 0 ) f = 1
IF ( n < 3 ) return
do i = 2, n
f=fm2+fm1
fm2=fm1
fm1=f
enddo
end function
</syntaxhighlight lang="fortran">
===FORTRAN 77===
<syntaxhighlight lang="fortran">
FUNCTION IFIB(N)
IF (N.EQ.0) THEN
ITEMP0=0
ELSE IF (N.EQ.1) THEN
ITEMP0=1
ELSE IF (N.GT.1) THEN
ITEMP1=0
ITEMP0=1
DO 1 I=2,N
ITEMP2=ITEMP1
ITEMP1=ITEMP0
ITEMP0=ITEMP1+ITEMP2
1 CONTINUE
ELSE
ITEMP1=1
ITEMP0=0
DO 2 I=-1,N,-1
ITEMP2=ITEMP1
ITEMP1=ITEMP0
ITEMP0=ITEMP2-ITEMP1
2 CONTINUE
END IF
IFIB=ITEMP0
END