Как насчет
double r3 = pow(r2,1.5);
Если sqrt реализован как особый случай pow, это сэкономит вам умножение.Не так уж много в общем плане вещей!
Если вы действительно ищете большую эффективность, подумайте, действительно ли вам нужен ^ ^ 3.Если, например, вы только тестируете его (или что-то полученное из него), чтобы увидеть, превышает ли он определенный порог, то вместо этого тестируйте r2, например
const double r3_threshold = 9;
//don't do this
if (r3 > r3_threshold)
....
//do do this
const double r2_threshold = pow(r3_threshold,2./3.);
if (r2 > r2_threshold)
....
Таким образом pow
будет вызываться только один раз, может быть, даже во время компиляции.
EDIT Если вам нужно каждый раз пересчитывать пороговое значение, я думаю, что ответ относительно Q_rsqrt стоит посмотреть и, вероятно, заслуживает опередить этот