diff --git a/src/main.rs b/src/main.rs index 5f7b415..6f48b8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,19 +18,17 @@ fn get_byte(id: i32) -> u8 { (first << 4) | second } - fn series(m: i32, id: i32) -> f64 { const EPS : f64 = 1e-17; let mut ak : f64; - let mut p : f64; let mut s : f64 = 0.0; let mut t : f64; for k in 0..id { ak = (8 * k + m) as f64; - p = (id - k) as f64; - t = expm(p, ak); + t = expm((id - k) as f64, ak); + s = s + t / ak; s = s - (s as i32) as f64; } @@ -55,9 +53,9 @@ fn expm(p: f64, ak: f64) -> f64 { let mut tp = vec![1f64; NTP]; let mut i : i32 = 0; - let mut p1 : f64; + let mut p1 : f64 = p; let mut pt : f64; - let mut r : f64; + let mut r : f64 = 1.0; for n in 1..NTP { tp[n] = 2.0 * tp[n - 1]; @@ -75,13 +73,12 @@ fn expm(p: f64, ak: f64) -> f64 { } pt = tp[(i - 1) as usize]; - p1 = p; - r = 1.0; for _ in 1..i + 1 { if p1 >= pt { r = 16.0 * r; r = r - ((r / ak) as i32) as f64 * ak; + p1 = p1 - pt; }