Смею предположить, что переменную цикла следует инициализировать стандартным способом:
...
for (double x=xn; x <= xk; x += dx) {
if (x >= log(b)) {
y = pow(log(a * x), 3.0) / ((sqrt(b * x)) + 1.2);
cout << format(table_format, x, y, "x >= log(b)");
} else {
y = pow(tan(a * x), 2.0) + sqrt(exp(b * x));
cout << format(table_format, x, y, "x<log(b)");
}
}
...
п.с. В различных вычислениях необходимо напоминать машине, что она работает с
double, кроме того, лучше сразу указать
double константу, нежели полагаться на встроенные преобразования из
int в
double. При работе с
pow эмпирически обнаружил, что требование указывать степень в
double формате лучше удовлетворять сразу, иначе может неправильно посчитать почему-то.
п.п.с. лишние скобки не нужны никому, а
else смотрится эстетичней.
updated: ответ обнаружился на графике (см. в комментариях) - на интервале от 0 до ln(17.8) значения функции зашкаливают...