Merge pull request rust-lang/libm#264 from ankane/tgamma_no_panic

This commit is contained in:
Amanieu d'Antras 2022-07-30 02:26:18 +02:00 committed by GitHub
commit 92c5a41888
2 changed files with 8 additions and 6 deletions

View file

@ -38,7 +38,7 @@ fn sinpi(mut x: f64) -> f64 {
/* reduce x into [-.25,.25] */
n = (4.0 * x) as isize;
n = (n + 1) / 2;
n = div!(n + 1, 2);
x -= (n as f64) * 0.5;
x *= PI;
@ -118,18 +118,19 @@ fn s(x: f64) -> f64 {
/* to avoid overflow handle large x differently */
if x < 8.0 {
for i in (0..=N).rev() {
num = num * x + SNUM[i];
den = den * x + SDEN[i];
num = num * x + i!(SNUM, i);
den = den * x + i!(SDEN, i);
}
} else {
for i in 0..=N {
num = num / x + SNUM[i];
den = den / x + SDEN[i];
num = num / x + i!(SNUM, i);
den = den / x + i!(SDEN, i);
}
}
return num / den;
}
#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn tgamma(mut x: f64) -> f64 {
let u: u64 = x.to_bits();
let absx: f64;
@ -157,7 +158,7 @@ pub fn tgamma(mut x: f64) -> f64 {
return 0.0 / 0.0;
}
if x <= FACT.len() as f64 {
return FACT[(x as usize) - 1];
return i!(FACT, (x as usize) - 1);
}
}

View file

@ -1,5 +1,6 @@
use super::tgamma;
#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn tgammaf(x: f32) -> f32 {
tgamma(x as f64) as f32
}