program XTON
implicit none
REAL :: x
INTEGER :: n
print *, "Enter x followed by n"
READ *, x, n
PRINT *, x, "power", n, " is: ", XpowerN(x,n)
CONTAINS
RECURSIVE FUNCTION XpowerN(x,n) RESULT(xn)
REAL :: xn
REAL, INTENT(IN) :: x
INTEGER, INTENT(IN) :: n
INTEGER :: m
m=abs(n)
IF (m==0) THEN
xn=1
ELSE
xn=x*XpowerN(x,m-1)
END IF
IF (n<0) THEN
xn=1.0/xn
END IF
END FUNCTION XpowerN
end program XTON