I searched Stack Overflow for the pros/cons of function-like macros v. inline functions.
I found the following discussion: Pros and Cons of Different macro function
If you random-pause this, what you're probably going to see is that 100% (minus epsilon) of the time is inside the pow function, so how it got there makes basically no difference.
Assuming you find that, the first thing to do is get rid of the calls to pow that you found on the stack.
(In general, what it does is take the log of the first argument, multiply it by the second argument, and exp of that, or something that does the same thing. The log and exp could well be done by some kind of series involving a lot of arithmetic. It looks for special cases, of course, but it's still going to take longer than you would.)
That alone should give you around an order of magnitude speedup.
Then do the random-pausing again. Now you're going to see something else taking a lot of the time. I can't guess what it will be, and neither can anyone else, but you can probably reduce that too. Just keep doing it until you can't any more.
It may happen along the way that you choose to use a macro, and it might be slightly faster than an inline function. That's for you to judge when you get there.