/* common method when |x|>=2 */ fn common(ix: u32, x: f64, y0: bool) -> f64 { let s: f64; letmut c: f64; letmut ss: f64; letmut cc: f64; let z: f64;
/* *j0(x)=sqrt(2/(pi*x))*(p0(x)*cos(x-pi/4)-q0(x)*sin(x-pi/4)) *y0(x)=sqrt(2/(pi*x))*(p0(x)*sin(x-pi/4)+q0(x)*cos(x-pi/4)) * *sin(x-pi/4)=(sin(x)-cos(x))/sqrt(2) *cos(x-pi/4)=(sin(x)+cos(x))/sqrt(2) *sin(x)+-cos(x)=-cos(2x)/(sin(x)-+cos(x))
*/
s = sin(x);
c = cos(x); if y0 {
c = -c;
}
cc = s + c; /* avoid overflow in 2*x, big ulp error when x>=0x1p1023 */ if ix < 0x7fe00000 {
ss = s - c;
z = -cos(2.0 * x); if s * c < 0.0 {
cc = z / ss;
} else {
ss = z / cc;
} if ix < 0x48000000 { if y0 {
ss = -ss;
}
cc = pzero(x) * cc - qzero(x) * ss;
}
} return INVSQRTPI * cc / sqrt(x);
}
pubfn j0(mut x: f64) -> f64 { let z: f64; let r: f64; let s: f64; letmut ix: u32;
ix = get_high_word(x);
ix &= 0x7fffffff;
/* j0(+-inf)=0, j0(nan)=nan */ if ix >= 0x7ff00000 { return1.0 / (x * x);
}
x = fabs(x);
if ix >= 0x40000000 { /* |x| >= 2 */ /* large ulp error near zeros: 2.4, 5.52, 8.6537,.. */ return common(ix, x, false);
}
/* 1 - x*x/4 + x*x*R(x^2)/S(x^2) */ if ix >= 0x3f200000 { /* |x| >= 2**-13 */ /* up to 4ulp error close to 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);
}
/* 1 - x*x/4 */ /* prevent underflow */ /* inexact should be raised when x!=0, this is not done correctly */ if ix >= 0x38000000 { /* |x| >= 2**-127 */
x = 0.25 * x * x;
} return1.0 - x;
}
pubfn y0(x: f64) -> f64 { let z: f64; let u: f64; let v: f64; let ix: u32; let lx: u32;
ix = get_high_word(x);
lx = get_low_word(x);
/* y0(nan)=nan, y0(<0)=nan, y0(0)=-inf, y0(inf)=0 */ if ((ix << 1) | lx) == 0 { return -1.0 / 0.0;
} if (ix >> 31) != 0 { return0.0 / 0.0;
} if ix >= 0x7ff00000 { return1.0 / x;
}
if ix >= 0x40000000 { /* x >= 2 */ /* large ulp errors near zeros: 3.958, 7.086,.. */ return common(ix, x, true);
}
/* U(x^2)/V(x^2) + (2/pi)*j0(x)*log(x) */ if ix >= 0x3e400000 { /* x >= 2**-27 */ /* large ulp error near the first zero, 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 * (j0(x) * log(x));
} return U00 + TPI * log(x);
}
fn pzero(x: f64) -> f64 { let p: &[f64; 6]; let q: &[f64; 5]; let z: f64; let r: f64; let s: f64; letmut ix: u32;
ix = get_high_word(x);
ix &= 0x7fffffff; if ix >= 0x40200000 {
p = &PR8;
q = &PS8;
} elseif ix >= 0x40122E8B {
p = &PR5;
q = &PS5;
} elseif ix >= 0x4006DB6D {
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 qzero(x: f64) -> f64 { let p: &[f64; 6]; let q: &[f64; 6]; let s: f64; let r: f64; let z: f64; letmut ix: u32;
ix = get_high_word(x);
ix &= 0x7fffffff; if ix >= 0x40200000 {
p = &QR8;
q = &QS8;
} elseif ix >= 0x40122E8B {
p = &QR5;
q = &QS5;
} elseif ix >= 0x4006DB6D {
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.15 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.