/* * Kahan challenge */ #include #include typedef long double real; #include "kahan-challenge1.h" real e (real x) { if (x == 0.) { return 1.; } else { return (expl(x) - 1.)/x; } } real q (real x) { return -x + sqrtl(x*x + 1.) - 1./(x + sqrtl(x*x + 1.)); } real h (real x) { return e( powl(q(x), 2.)); } int main (void) { for (real i = 15.; i < 18.; i += 1.) { printf("%20.14Lf %20.14Lf\n", i, h(i)); } return 0; }