Выходит целое число вместо дробного

При введении данных должна выскакивать дробь, но выходит целое число. Не понимаю, что не так.

Данные, необходимые для ввода: a=0, b=1, eps= 0.001.
Должно получиться x = 0.000976562.

#include <iostream>
#include <cmath>
using namespace std;

double f (double x) {
  double (sin(0.5 + x) - 2 * x + 0.5);
}

double horda(double (*f)(double), double a, double b, double eps)
{
  double fa = f(a), fb = f(b), c;
  if ((fa * fb) > 0) throw runtime_error("Нет корней");
  double x = a;
  while (fabs(f(b) - f(a)) > eps) 
  {
      c = (f(b) * a - f(a) * b) / (f(b) - f(a));
      if ((f(a) * f(c)) > 0) a = c;
      else b = c;
  }
return c;
}

int main() {
  double a, b, eps, x;
  cout << "Напишите значение a: ";
  cin >> a;
  cout << "Напишите значение b: ";
  cin >> b;
  cout << "Напишите точность е: ";
  cin >> eps;
  cin.get();
  try
  {
    x = horda(f, a, b, eps);
    cout << "x = " << x << endl;
  }
  catch (runtime_error r)
  {
    cout << r.what();
  }
  cin.get();
  return 0;
}

Ответы (1 шт):

Автор решения: ITBEGINER

Быть может я ошибаюсь но это похоже на аппроксимацию замените на это

double f (double x) {
  return sin(0.5 + x) - 2 * x + 0.5;
}
→ Ссылка