! F = (9/5) C + 32

FUNCTION fahrenheit(t)
  IMPLICIT NONE
  DOUBLE PRECISION, INTENT (in) :: t   ! Celsius
  DOUBLE PRECISION :: fahrenheit

  fahrenheit = 9d0/5d0 * t + 32.0d0
END FUNCTION fahrenheit


FUNCTION celsius(t)
  IMPLICIT NONE
  DOUBLE PRECISION, INTENT (in) :: t   ! Fahrenheit
  DOUBLE PRECISION :: celsius

  celsius = (t - 32.0d0) / (9d0/5d0)
END FUNCTION celsius


PROGRAM temperatures
  IMPLICIT NONE
  INTERFACE 
     FUNCTION fahrenheit(t)
       IMPLICIT NONE
       DOUBLE PRECISION, INTENT (in) :: t
       DOUBLE PRECISION :: fahrenheit
     END FUNCTION fahrenheit

     FUNCTION celsius(t)
       IMPLICIT NONE
       DOUBLE PRECISION, INTENT (in) :: t
       DOUBLE PRECISION :: celsius
     END FUNCTION celsius
  END INTERFACE

  PRINT *, fahrenheit(22.0d0), fahrenheit(-273.15d0), fahrenheit(6000.0d0)
  PRINT *, celsius(100.0d0)

END PROGRAM temperatures
