real gdisk(real r) { real x1 = 0.5 * alpha1 * r, x2 = 0.5 * alpha2 * r, a1, a2;; if (epsilon1 >= 0.0) /* compute smoothed accel. */ a1 = - mdisk1 * rqbe(alpha1) * simpson(dgdisk, r, alpha1, epsilon1, 0, KMAX*alpha1, STEP*alpha1); else /* use exact expression */ a1 = - mdisk1 * rqbe(alpha1) * r * (bessel_I0(x1) * bessel_K0(x1) - bessel_I1(x1) * bessel_K1(x1)) / 2; if (epsilon2 >= 0.0) a2 = - mdisk2 * rqbe(alpha2) * simpson(dgdisk, r, alpha2, epsilon2, 0, KMAX*alpha2, STEP*alpha2); else a2 = - mdisk2 * rqbe(alpha2) * r * (bessel_I0(x2) * bessel_K0(x2) - bessel_I1(x2) * bessel_K1(x2)) / 2; return (a1 + a2); }
void test_expi() { double b, r1, r2, r3, r4; int n; n = 1; for(b=1e-3; b<50; b+=0.01){ r1 = bessel_K0(b); r2 = gsl_sf_bessel_K0(b); //r3 = bessi1(b); printf("%5.3lf %12.10lf %12.10lf %12.10lf\n", b, r1, r2, r3); } }