fn comp_r(z: f64) -> f64 { let p = z * (P_S0 + z * (P_S1 + z * (P_S2 + z * (P_S3 + z * (P_S4 + z * P_S5))))); let q = 1.0 + z * (Q_S1 + z * (Q_S2 + z * (Q_S3 + z * Q_S4)));
p / q
}
/// Arcsine (f64) /// /// Computes the inverse sine (arc sine) of the argument `x`. /// Arguments to asin must be in the range -1 to 1. /// Returns values in radians, in the range of -pi/2 to pi/2. #[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)] pubfn asin(mut x: f64) -> f64 { let z: f64; let r: f64; let s: f64; let hx: u32; let ix: u32;
hx = get_high_word(x);
ix = hx & 0x7fffffff; /* |x| >= 1 or nan */ if ix >= 0x3ff00000 { let lx: u32;
lx = get_low_word(x); if ((ix - 0x3ff00000) | lx) == 0 { /* asin(1) = +-pi/2 with inexact */ return x * PIO2_HI + f64::from_bits(0x3870000000000000);
} else { return0.0 / (x - x);
}
} /* |x| < 0.5 */ if ix < 0x3fe00000 { /* if 0x1p-1022 <= |x| < 0x1p-26, avoid raising underflow */ if ix < 0x3e500000 && ix >= 0x00100000 { return x;
} else { return x + x * comp_r(x * x);
}
} /* 1 > |x| >= 0.5 */
z = (1.0 - fabs(x)) * 0.5;
s = sqrt(z);
r = comp_r(z); if ix >= 0x3fef3333 { /* if |x| > 0.975 */
x = PIO2_HI - (2. * (s + s * r) - PIO2_LO);
} else { let f: f64; let c: f64; /* f+c = sqrt(z) */
f = with_set_low_word(s, 0);
c = (z - f * f) / (s + f);
x = 0.5 * PIO2_HI - (2.0 * s * r - (PIO2_LO - 2.0 * c) - (0.5 * PIO2_HI - 2.0 * f));
} if hx >> 31 != 0 {
-x
} else {
x
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-18)
¤
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.