s = sinf(x) as f64; if y1 {
s = -s;
}
c = cosf(x) as f64;
cc = s - c; if ix < 0x7f000000 {
ss = -s - c;
z = cosf(2.0 * x) as f64; if s * c > 0.0 {
cc = z / ss;
} else {
ss = z / cc;
} if ix < 0x58800000 { if y1 {
ss = -ss;
}
cc = (ponef(x) as f64) * cc - (qonef(x) as f64) * ss;
}
} if sign {
cc = -cc;
} return (((INVSQRTPI as f64) * cc) / (sqrtf(x) as f64)) as f32;
}
pubfn j1f(x: f32) -> f32 { letmut z: f32; let r: f32; let s: f32; letmut ix: u32; let sign: bool;
ix = x.to_bits();
sign = (ix >> 31) != 0;
ix &= 0x7fffffff; if ix >= 0x7f800000 { return1.0 / (x * x);
} if ix >= 0x40000000 { /* |x| >= 2 */ return common(ix, fabsf(x), false, sign);
} if ix >= 0x39000000 { /* |x| >= 2**-13 */
z = x * x;
r = z * (R00 + z * (R01 + z * (R02 + z * R03)));
s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * (S04 + z * S05))));
z = 0.5 + r / s;
} else {
z = 0.5;
} return z * x;
}
pubfn y1f(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 */ return common(ix, x, true, false);
} if ix < 0x33000000 { /* x < 2**-25 */ return -TPI / x;
}
z = x * x;
u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4])));
v = 1.0 + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4])))); return x * (u / v) + TPI * (j1f(x) * logf(x) - 1.0 / x);
}
/* For x >= 8, the asymptotic expansions of pone is *1+15/128s^2-4725/2^15s^4-...,wheres=1/x. *Weapproximateponeby *pone(x)=1+(R/S) *whereR=pr0+pr1*s^2+pr2*s^4+...+pr5*s^10 *S=1+ps0*s^2+...+ps4*s^10 *and *|pone(x)-1-R/S|<=2**(-60.06)
*/
fn ponef(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;
}
/* For x >= 8, the asymptotic expansions of qone is *3/8s-105/1024s^3-...,wheres=1/x. *Weapproximateponeby *qone(x)=s*(0.375+(R/S)) *whereR=qr1*s^2+qr2*s^4+...+qr5*s^10 *S=1+qs1*s^2+...+qs6*s^12 *and *|qone(x)/s-0.375-R/S|<=2**(-61.13)
*/
fn qonef(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.375 + r / s) / x;
}
// PowerPC tests are failing on LLVM 13: https://github.com/rust-lang/rust/issues/88520 #[cfg(not(target_arch = "powerpc64"))] #[cfg(test)] mod tests { usesuper::{j1f, y1f}; #[test] fn test_j1f_2488() { // 0x401F3E49
assert_eq!(j1f(2.4881766_f32), 0.49999475_f32);
} #[test] fn test_y1f_2002() { //allow slightly different result on x87 let res = y1f(2.0000002_f32); if cfg!(all(target_arch = "x86", not(target_feature = "sse2"))) && (res == -0.10703231_f32)
{ return;
}
assert_eq!(res, -0.10703229_f32);
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 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.