Во-первых, это не уравнение, а выражение.
Во-вторых, не пытайтесь за раз объять необъятное - дробите его на толики. Всё остальное зависит от Вашего школьного образования, которое позволяет строить доминанты в очерёдности вычислений.
В примеру, у Вас в примере есть такой сюжет: (ab+1) в квадрате. Кто по-толковии, тот зараз распишет эту шнягу. Тугодумам же следует объявить и описать промежуточные переменные, в коих поселятся результаты поочерёдных вычислений. В конкретном случае первой переменной будет присвоено перемножение "а" на "b", второй - с единицей, а третьей - от возведения в квадрат. Вот так идя последовательно, Вы сможете описать процессору формулу. Вашего же вопроса я напрочь не понял, ибо в нём нет логичного смысла.
double fn(const double a, const double b) {
static constexpr auto pi = 3.1415926535897932;
const auto ab = sqrt(a) + sqrt(b);
const auto sqr_ab = pow(ab, 2);
const auto ab1 = a * b + 1.0;
const auto sqr_ab1 = pow(ab1, 2);
const auto num = sqrt((sin(pow(ab / pi, 2)) + sqr_ab1) * (ab + 2.0 * sin(pow(ab1 / pi, 2))));
const auto den = sqrt(sqr_ab + ab1) * (sqr_ab + sqr_ab1);
return num / den;
}
int main() {
const auto a = parse("a: "
const auto b = parse("b: "
const auto x = fn(a, b);
if (isnan(x)) puts("Invalid argument"
else {
cout.setf(ios::fixed);
cout.precision(15);
cout << "x: " << x << '\n';
}
}