You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
699 B
26 lines
699 B
extern crate assert;
|
|
extern crate fft;
|
|
|
|
mod fixtures;
|
|
|
|
#[test]
|
|
fn forward() {
|
|
let mut data = fixtures::TIME_DATA.to_vec();
|
|
fft::forward(reinterpret(&mut data));
|
|
assert::close(&data, &fixtures::FREQUENCY_DATA[..], 1e-14);
|
|
}
|
|
|
|
#[test]
|
|
fn inverse() {
|
|
let mut data = fixtures::FREQUENCY_DATA.to_vec();
|
|
fft::inverse(reinterpret(&mut data), true);
|
|
assert::close(&data, &fixtures::TIME_DATA[..], 1e-14);
|
|
}
|
|
|
|
fn reinterpret<'l>(slice: &'l mut [f64]) -> &'l mut [fft::c64] {
|
|
unsafe {
|
|
let length = slice.len();
|
|
assert!(length % 2 == 0, "the number of elements should be even");
|
|
std::slice::from_raw_parts_mut(slice.as_mut_ptr() as *mut _, length / 2)
|
|
}
|
|
}
|