allora io ho provato cosí:

codice:
      FUNCTION fattoriale(n)

      INTEGER i
      INTEGER l,n

      l=n

      do i=1,n-1
           l=l*i
      enddo

      fattoriale=l

      RETURN

      END FUNCTION

      PROGRAM main

      DOUBLE PRECISION h
      INTEGER m

      do m=1,15

       h=fattoriale(m)
       print *,h
      
      enddo

      END
ma come output ottengo questo:
1.00000000000000000
2.00000000000000000
6.00000000000000000
24.0000000000000000
120.000000000000000
720.000000000000000
5040.00000000000000
40320.0000000000000
362880.000000000000
3628800.00000000000
39916800.0000000000
479001600.000000000
1932053504.00000000
1278945280.00000000
2004310016.00000000
1932053504.00000000

i numeri fino a 12 vengono calcolati correttamente ma 13,14 e 15 hanno risultati che non coincidono con quelli che dovrebbero essere.....non so cosa pensare....forse é un probleme di approssimazione???