Rustify some code.
This commit is contained in:
27
src/math.rs
27
src/math.rs
@@ -88,41 +88,38 @@ fn p1evl(x: f64, coef: &[f64], n: usize) -> f64 {
|
||||
}
|
||||
|
||||
fn ndtri(y0: f64) -> f64 {
|
||||
let mut code = 1;
|
||||
let mut y = y0;
|
||||
|
||||
if y > (1.0 - 0.13533528323661269189) {
|
||||
let code = if y > (1.0 - 0.13533528323661269189) {
|
||||
y = 1.0 - y;
|
||||
code = 0;
|
||||
}
|
||||
|
||||
false
|
||||
} else {
|
||||
true
|
||||
};
|
||||
|
||||
if y > 0.13533528323661269189 {
|
||||
y = y - 0.5;
|
||||
let y2 = y * y;
|
||||
let x = y + y * (y2 * polevl(y2, &P0, 4) / p1evl(y2, &Q0, 8));
|
||||
let x = x * S2PI;
|
||||
|
||||
return x;
|
||||
return (y + y * (y2 * polevl(y2, &P0, 4) / p1evl(y2, &Q0, 8))) * S2PI;
|
||||
}
|
||||
|
||||
let x = (-2.0 * y.ln()).sqrt();
|
||||
let x0 = x - x.ln() / x;
|
||||
|
||||
let z = 1.0 / x;
|
||||
|
||||
let x0 = x - x.ln() / x;
|
||||
let x1 = if x < 8.0 {
|
||||
z * polevl(z, &P1, 8) / p1evl(z, &Q1, 8)
|
||||
} else {
|
||||
z * polevl(z, &P2, 8) / p1evl(z, &Q2, 8)
|
||||
};
|
||||
|
||||
let mut x = x0 - x1;
|
||||
|
||||
if code != 0 {
|
||||
x = -x;
|
||||
if code {
|
||||
x1 - x0
|
||||
} else {
|
||||
x0 - x1
|
||||
}
|
||||
|
||||
x
|
||||
}
|
||||
|
||||
pub fn cdf(x: f64) -> f64 {
|
||||
|
||||
Reference in New Issue
Block a user