Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[macro_use]
- extern crate itertools;
- #[allow(non_snake_case)]
- 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)> {
- let epsilon = (epsilon * mult as f64 * mult as f64) as i32;
- let range_1 = ((range_1.0 * mult as f64) as i32, (range_1.1 * mult as f64) as i32);
- let range_2 = ((range_2.0 * mult as f64) as i32, (range_2.1 * mult as f64) as i32);
- let range_3 = ((range_3.0 * mult as f64) as i32, (range_3.1 * mult as f64) as i32);
- let range_4 = ((range_4.0 * mult as f64) as i32, (range_4.1 * mult as f64) as i32);
- let A = 2 * mult * mult;
- let B = 3 * mult * mult;
- let C = 4 * mult * mult;
- let D = 5 * mult * mult;
- let E = 6 * mult * mult;
- 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) {
- if (A - a * b).abs() <= epsilon &&
- (B - a * c).abs() <= epsilon &&
- (C - a * d).abs() <= epsilon &&
- (D - b * c).abs() <= epsilon &&
- (E - b * d).abs() <= epsilon {
- 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));
- }
- }
- None
- }
- fn main() {
- println!("{:?}", compute((1.0, 1.3), (1.6, 2.0), (2.7, 3.1), (3.0, 3.9), 0.11, 10000));
- }
Add Comment
Please, Sign In to add comment