18 return std::numeric_limits<double>::quiet_NaN();
20 if (std::isinf(
y) && (
x == 1 ||
x == -1)) {
26 return std::numeric_limits<double>::quiet_NaN();
30 x = std::numeric_limits<double>::quiet_NaN();
38 }
else if (
y == 0.5) {
41 return std::numeric_limits<double>::infinity();
44 return std::sqrt(
x + 0);
48 return std::pow(
x,
y);