I have come across some old code that computes
double y = 1 / std::sqrt(x);
constexpr double base16 = 16.0;
double log_base16 = std::log(base16);
double y = std::pow(base16, -0.5 * std::log(x) / log_base16);
double y = std::exp(-0.5 * std::log(x));
The original code is to be considered to be very naughty indeed, particularly in modern C++ standards and IEEE754 floating point:
std::sqrt is required by the IEEE standard be exact. [sic.]
std::pow has no such requirements.
Therefore I'd be tempted to rewrite it as
1 / std::sqrt(x), testing of course.