#[allow(dead_code)]
fn main() {
use scirs2_special::j0;
let mut low = 2.3f64;
let mut high = 2.5f64;
let mut mid;
let mut j0_mid;
let tolerance = 1e-10;
println!("Searching for the first zero of J0...");
let max_iterations = 100;
let mut iteration = 0;
while high - low > tolerance && iteration < max_iterations {
mid = (low + high) / 2.0;
j0_mid = j0(mid);
println!("Iteration {}: x = {}, J0(x) = {}", iteration, mid, j0_mid);
if j0_mid.abs() < tolerance {
println!("Found zero at x = {} with J0(x) = {}", mid, j0_mid);
break;
}
if j0_mid > 0.0 {
low = mid;
} else {
high = mid;
}
iteration += 1;
}
if iteration == max_iterations {
println!("Did not converge after {} iterations", max_iterations);
println!(
"Current best estimate: x = {}, J0(x) = {}",
(low + high) / 2.0,
j0((low + high) / 2.0)
);
}
}