double threef0(a, b, c, x, err) double a, b, c, x; double *err;
{ double n, a0, sum, t, conv, conv1; double an, bn, cn, max, z;
an = a;
bn = b;
cn = c;
a0 = 1.0;
sum = 1.0;
n = 1.0;
t = 1.0;
max = 0.0;
conv = 1.0e38;
conv1 = conv;
do { if (an == 0.0) goto done; if (bn == 0.0) goto done; if (cn == 0.0) goto done; if ((a0 > 1.0e34) || (n > 200)) goto error;
a0 *= (an * bn * cn * x) / n;
an += 1.0;
bn += 1.0;
cn += 1.0;
n += 1.0;
z = fabs(a0); if (z > max)
max = z; if (z >= conv) { if ((z < max) && (z > conv1)) goto done;
}
conv1 = conv;
conv = z;
sum += a0; if (sum != 0)
t = fabs(a0 / sum); else
t = z;
} while (t > stop);
done:
t = fabs(MACHEP * max / sum); #if DEBUG
printf(" threef0 cancellation error %.5E\n", t); #endif
max = fabs(conv / sum); if (max > t)
t = max; #if DEBUG
printf(" threef0 convergence %.5E\n", max); #endif
goto xit;
error: #if DEBUG
printf("threef0 does not converge\n"); #endif
t = 1.0e38;
xit:
#if DEBUG
printf("threef0( %.2E %.2E %.2E %.5E ) = %.3E %.6E\n", a, b, c, x, n, sum); #endif
*err = t; return (sum);
}
externdouble PI;
double struve(v, x) double v, x;
{ double y, ya, f, g, h, t; double onef2err, threef0err;
f = floor(v); if ((v < 0) && (v - f == 0.5)) {
y = jv(-v, x);
f = 1.0 - f;
g = 2.0 * floor(f / 2.0); if (g != f)
y = -y; return (y);
}
t = 0.25 * x * x;
f = fabs(x);
g = 1.5 * fabs(v); if ((f > 30.0) && (f > g)) {
onef2err = 1.0e38;
y = 0.0;
} else {
y = onef2(1.0, 1.5, 1.5 + v, -t, &onef2err);
}
if ((f < 18.0) || (x < 0.0)) {
threef0err = 1.0e38;
ya = 0.0;
} else {
ya = threef0(1.0, 0.5, 0.5 - v, -1.0 / t, &threef0err);
}
f = sqrt(PI);
h = pow(0.5 * x, v - 1.0);
if (onef2err <= threef0err) {
g = gamma(v + 1.5);
y = y * h * t / (0.5 * f * g); return (y);
} else {
g = gamma(v + 0.5);
ya = ya * h / (f * g);
ya = ya + yv(v, x); return (ya);
}
}
/* Bessel function of noninteger order
*/
double yv(v, x) double v, x;
{ double y, t; int n;
y = floor(v); if (y == v) {
n = v;
y = yn(n, x); return (y);
}
t = PI * v;
y = (cos(t) * jv(v, x) - jv(-v, x)) / sin(t); return (y);
}
/* Crossover points between ascending series and asymptotic series *forStruvefunction * *vx * *019.2 *118.95 *219.15 *319.3 *519.7 *1021.35 *2026.35 *3032.31 *4040.0
*/
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.