1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use libc; extern "C" { pub fn incbet(aa: libc::c_double, bb: libc::c_double, xx: libc::c_double) -> libc::c_double; pub fn stdtr(k: libc::c_int, t: libc::c_double) -> libc::c_double; } #[cfg(test)] mod tests { use super::*; fn assert_almost_equal(a: f64, b: f64) { if (a - b).abs() > 1.0E-14 { panic!("{:?} vs {:?}", a, b); } } #[test] fn test_inc_bet() { assert_eq!(unsafe { incbet(1.0, 2.0, 0.0) }, 0.0); assert_eq!(unsafe { incbet(1.0, 2.0, 1.0) }, 1.0); assert_almost_equal(unsafe { incbet(1.0, 2.0, 0.2) }, 0.36); assert_almost_equal(unsafe { incbet(5.0, 2.0, 0.5) }, 0.109375); assert_almost_equal(unsafe { incbet(1.0, 3.0, 0.6) }, 0.9359999999999999); assert_almost_equal(unsafe { incbet(4.0, 3.0, 0.6) }, 0.54432); assert_almost_equal(unsafe { incbet(2.0, 3.0, 0.5) }, 0.6875); } }