Guest User

Untitled

a guest
Jun 24th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #[macro_use]
  2. extern crate itertools;
  3.  
  4. #[allow(non_snake_case)]
  5.  
  6. fn compute(range_1: (f64, f64), range_2: (f64, f64), range_3: (f64, f64), range_4: (f64, f64), epsilon: f64, mult: i32) -> Option<(f64, f64, f64, f64)> {
  7.  
  8. let epsilon = (epsilon * mult as f64 * mult as f64) as i32;
  9.  
  10. let range_1 = ((range_1.0 * mult as f64) as i32, (range_1.1 * mult as f64) as i32);
  11. let range_2 = ((range_2.0 * mult as f64) as i32, (range_2.1 * mult as f64) as i32);
  12. let range_3 = ((range_3.0 * mult as f64) as i32, (range_3.1 * mult as f64) as i32);
  13. let range_4 = ((range_4.0 * mult as f64) as i32, (range_4.1 * mult as f64) as i32);
  14.  
  15. let A = 2 * mult * mult;
  16. let B = 3 * mult * mult;
  17. let C = 4 * mult * mult;
  18. let D = 5 * mult * mult;
  19. let E = 6 * mult * mult;
  20.  
  21. for (a, b, c, d) in iproduct!(range_1.0..range_1.1, range_2.0..range_2.1, range_3.0..range_3.1, range_4.0..range_4.1) {
  22.  
  23. if (A - a * b).abs() <= epsilon &&
  24. (B - a * c).abs() <= epsilon &&
  25. (C - a * d).abs() <= epsilon &&
  26. (D - b * c).abs() <= epsilon &&
  27. (E - b * d).abs() <= epsilon {
  28. return Some((a as f64 / mult as f64, b as f64 / mult as f64, c as f64 / mult as f64, d as f64 / mult as f64));
  29. }
  30.  
  31. }
  32.  
  33. None
  34. }
  35.  
  36. fn main() {
  37. println!("{:?}", compute((1.0, 1.3), (1.6, 2.0), (2.7, 3.1), (3.0, 3.9), 0.11, 10000));
  38. }
Add Comment
Please, Sign In to add comment