fn common(ix: u32, x: f32, y0: bool) -> f32 { let z: f32; let s: f32; letmut c: f32; letmut ss: f32; letmut cc: f32; /* *j0(x)=1/sqrt(pi)*(P(0,x)*cc-Q(0,x)*ss)/sqrt(x) *y0(x)=1/sqrt(pi)*(P(0,x)*ss+Q(0,x)*cc)/sqrt(x)
*/
s = sinf(x);
c = cosf(x); if y0 {
c = -c;
}
cc = s + c; if ix < 0x7f000000 {
ss = s - c;
z = -cosf(2.0 * x); if s * c < 0.0 {
cc = z / ss;
} else {
ss = z / cc;
} if ix < 0x58800000 { if y0 {
ss = -ss;
}
cc = pzerof(x) * cc - qzerof(x) * ss;
}
} return INVSQRTPI * cc / sqrtf(x);
}
pubfn j0f(mut x: f32) -> f32 { let z: f32; let r: f32; let s: f32; letmut ix: u32;
ix = x.to_bits();
ix &= 0x7fffffff; if ix >= 0x7f800000 { return1.0 / (x * x);
}
x = fabsf(x);
if ix >= 0x40000000 { /* |x| >= 2 */ /* large ulp error near zeros */ return common(ix, x, false);
} if ix >= 0x3a000000 { /* |x| >= 2**-11 */ /* up to 4ulp error near 2 */
z = x * x;
r = z * (R02 + z * (R03 + z * (R04 + z * R05)));
s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * S04))); return (1.0 + x / 2.0) * (1.0 - x / 2.0) + z * (r / s);
} if ix >= 0x21800000 { /* |x| >= 2**-60 */
x = 0.25 * x * x;
} return1.0 - x;
}
pubfn y0f(x: f32) -> f32 { let z: f32; let u: f32; let v: f32; let ix: u32;
ix = x.to_bits(); if (ix & 0x7fffffff) == 0 { return -1.0 / 0.0;
} if (ix >> 31) != 0 { return0.0 / 0.0;
} if ix >= 0x7f800000 { return1.0 / x;
} if ix >= 0x40000000 { /* |x| >= 2.0 */ /* large ulp error near zeros */ return common(ix, x, true);
} if ix >= 0x39000000 { /* x >= 2**-13 */ /* large ulp error at x ~= 0.89 */
z = x * x;
u = U00 + z * (U01 + z * (U02 + z * (U03 + z * (U04 + z * (U05 + z * U06)))));
v = 1.0 + z * (V01 + z * (V02 + z * (V03 + z * V04))); return u / v + TPI * (j0f(x) * logf(x));
} return U00 + TPI * logf(x);
}
fn pzerof(x: f32) -> f32 { let p: &[f32; 6]; let q: &[f32; 5]; let z: f32; let r: f32; let s: f32; letmut ix: u32;
ix = x.to_bits();
ix &= 0x7fffffff; if ix >= 0x41000000 {
p = &PR8;
q = &PS8;
} elseif ix >= 0x409173eb {
p = &PR5;
q = &PS5;
} elseif ix >= 0x4036d917 {
p = &PR3;
q = &PS3;
} else /*ix >= 0x40000000*/
{
p = &PR2;
q = &PS2;
}
z = 1.0 / (x * x);
r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4])))); return1.0 + r / s;
}
fn qzerof(x: f32) -> f32 { let p: &[f32; 6]; let q: &[f32; 6]; let s: f32; let r: f32; let z: f32; letmut ix: u32;
ix = x.to_bits();
ix &= 0x7fffffff; if ix >= 0x41000000 {
p = &QR8;
q = &QS8;
} elseif ix >= 0x409173eb {
p = &QR5;
q = &QS5;
} elseif ix >= 0x4036d917 {
p = &QR3;
q = &QS3;
} else /*ix >= 0x40000000*/
{
p = &QR2;
q = &QS2;
}
z = 1.0 / (x * x);
r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); return (-0.125 + r / s) / x;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-22)
¤
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.