# Creating and computing functions

## Main Question or Discussion Point

for example:

f(x) = x^(x^x)

Firstly, is there already an inverse of this function that can be expressed in functions that exist?

And if there isn't, how would I go about computing it in code? Is there a better way than trial and error?

So you're looking for a function g such that g(x^(x^x)) = x?

y = x^(x^x)
ln y = x^x ln x

ln ln y = ln (x^x ln x) = x ln x ln ln x.

Call me crazy, but I don't know whether there exists an explicit expression for x in terms of elementary functions.

To approximate the function in code, several options exist. All of them will boil down to iteratively building up a solution, though. Newton's method could probably be used, or, more simply, just start with 0000000000.00000000000 and, starting at the left, increase a 10's place digit until the x^x^x gets too big, go back to the previous version, and go to a lower power of 10, and continue until you have as much precision as you want. Since x^x^x will grow pretty insanely quickly, you shouldn't have to check much higher than 10.

Call me crazy, but I don't know whether there exists an explicit expression for x in terms of elementary functions.
That is what I thought

To approximate the function in code... Newton's method could probably be used.
What is Newton's method? A quick Google search hasn't given me anything. A link would be good.

Ahh, found the Wikipedia page. I didn't know it was actually called "newtons method"!

I thought that was just what you called it as a general name.