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