betacf_ function
Evaluates the continued fraction for incomplete beta function by modified Lentz's method.
Implementation
double betacf_(num x, num a, num b) {
const fpmin = 1.0e-30;
// These q's will be used in factors that occur in the coefficients
final qab = a + b + 0.0;
final qap = a + 1.0;
final qam = a - 1.0;
var c = 1.0;
var d = 1.0 - qab * x / qap;
if (d.abs() < fpmin) {
d = fpmin;
}
d = 1.0 / d;
var h = d;
for (var m = 1; m <= 100; m++) {
final m2 = 2.0 * m;
var aa = m * (b - m) * x / ((qam + m2) * (a + m2));
// One step (the even one) of the recurrence
d = 1.0 + aa * d;
if (d.abs() < fpmin) {
d = fpmin;
}
c = 1.0 + aa / c;
if (c.abs() < fpmin) {
c = fpmin;
}
d = 1.0 / d;
h *= d * c;
aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));
// Next step of the recurrence (the odd one)
d = 1.0 + aa * d;
if (d.abs() < fpmin) {
d = fpmin;
}
c = 1.0 + aa / c;
if (c.abs() < fpmin) {
c = fpmin;
}
d = 1.0 / d;
final del = d * c;
h *= del;
if ((del - 1.0).abs() < 3.0e-7) {
break;
}
}
return h;
}