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

  1. extern crate assert;
  2. extern crate fft;
  3. mod fixtures;
  4. #[test]
  5. fn forward() {
  6. let mut data = fixtures::TIME_DATA.to_vec();
  7. fft::forward(reinterpret(&mut data));
  8. assert::close(&data, &fixtures::FREQUENCY_DATA[..], 1e-14);
  9. }
  10. #[test]
  11. fn inverse() {
  12. let mut data = fixtures::FREQUENCY_DATA.to_vec();
  13. fft::inverse(reinterpret(&mut data), true);
  14. assert::close(&data, &fixtures::TIME_DATA[..], 1e-14);
  15. }
  16. fn reinterpret<'l>(slice: &'l mut [f64]) -> &'l mut [fft::c64] {
  17. unsafe {
  18. let length = slice.len();
  19. assert!(length % 2 == 0, "the number of elements should be even");
  20. std::slice::from_raw_parts_mut(slice.as_mut_ptr() as *mut _, length / 2)
  21. }
  22. }