#include "lib.h" #include #define ZEROIN_MAX_ITERATIONS 1000 size_t fibo(size_t n) { size_t prev = 0, cur = 1, tmp = 0; for (size_t i = 0; i < n; i++) { tmp = cur; cur = cur + prev; prev = tmp; } return cur; } double zeroin(double (*f)(double), double err, double a, double b) { double left = f(a); if (fabs(left) < err) return left; double right = f(b); if (fabs(right) < err) return right; if (left * right > 0) { return NAN; } double x = NAN; double cur = NAN; size_t n = 0; do { x = (a + b) / 2; cur = f(x); if (cur * left > 0) { left = cur; a = x; } else { right = cur; b = x; } n++; } while (fabs(cur) > err || n < ZEROIN_MAX_ITERATIONS); return x; }