flag = 0; if( (bb * xx) <= 1.0L && xx <= 0.95L)
{
t = pseriesl(aa, bb, xx); goto done;
}
w = 1.0L - xx;
/* Reverse a and b if x is greater than the mean. */ if( xx > (aa/(aa+bb)) )
{
flag = 1;
a = bb;
b = aa;
xc = xx;
x = w;
} else
{
a = aa;
b = bb;
xc = w;
x = xx;
}
if( flag == 1 && (b * x) <= 1.0L && x <= 0.95L)
{
t = pseriesl(a, b, x); goto done;
}
/* Choose expansion for optimal convergence */
y = x * (a+b-2.0L) - (a-1.0L); if( y < 0.0L )
w = incbcfl( a, b, x ); else
w = incbdl( a, b, x ) / xc;
/* Multiply w by the factor ab___
x (1-x) | (a+b) / ( a | (a) | (b) ) . */
y = a * logl(x);
t = b * logl(xc); if( (a+b) < MAXGAML && fabsl(y) < MAXLOGL && fabsl(t) < MAXLOGL )
{
t = powl(xc,b);
t *= powl(x,a);
t /= a;
t *= w;
t *= gammal(a+b) / (gammal(a) * gammal(b)); goto done;
} else
{ /* Resort to logarithms. */
y += t + lgaml(a+b) - lgaml(a) - lgaml(b);
y += logl(w/a); if( y < MINLOGL )
t = 0.0L; else
t = expl(y);
}
done:
if( flag == 1 )
{ if( t <= MACHEPL )
t = 1.0L - MACHEPL; else
t = 1.0L - t;
} return( t );
}
/* Continued fraction expansion #1 *forincompletebetaintegral
*/
staticlongdouble incbcfl( a, b, x ) longdouble a, b, x;
{ longdouble xk, pk, pkm1, pkm2, qk, qkm1, qkm2; longdouble k1, k2, k3, k4, k5, k6, k7, k8; longdouble r, t, ans, thresh; int n;
k1 = a;
k2 = a + b;
k3 = a;
k4 = a + 1.0L;
k5 = 1.0L;
k6 = b - 1.0L;
k7 = k4;
k8 = a + 2.0L;
pkm2 = 0.0L;
qkm2 = 1.0L;
pkm1 = 1.0L;
qkm1 = 1.0L;
ans = 1.0L;
r = 1.0L;
n = 0;
thresh = 3.0L * MACHEPL; do
{
/* Power series for incomplete gamma integral.
Use when b*x is small. */
staticlongdouble pseriesl( a, b, x ) longdouble a, b, x;
{ longdouble s, t, u, v, n, t1, z, ai;
ai = 1.0L / a;
u = (1.0L - b) * x;
v = u / (a + 1.0L);
t1 = v;
t = u;
n = 2.0L;
s = 0.0L;
z = MACHEPL * ai; while( fabsl(v) > z )
{
u = (n - b) * x / n;
t *= u;
v = t / (a + n);
s += v;
n += 1.0L;
}
s += t1;
s += ai;
u = a * logl(x); if( (a+b) < MAXGAML && fabsl(u) < MAXLOGL )
{
t = gammal(a+b)/(gammal(a)*gammal(b));
s = s * t * powl(x,a);
} else
{
t = lgaml(a+b) - lgaml(a) - lgaml(b) + u + logl(s); if( t < MINLOGL )
s = 0.0L; else
s = expl(t);
} return(s);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-14)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.