From fd89df9eab430206d934f7c6572cbf83c031b1f4 Mon Sep 17 00:00:00 2001 From: Ivan Ukhov Date: Thu, 25 Jun 2015 16:30:36 -0400 Subject: [PATCH] Split inverse into backward and inverse --- src/complex.rs | 15 +++++++++++---- src/real.rs | 14 ++++++++++++-- tests/lib.rs | 4 ++-- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/complex.rs b/src/complex.rs index 7baf535..ddc2a0d 100644 --- a/src/complex.rs +++ b/src/complex.rs @@ -14,16 +14,23 @@ pub fn forward(data: &mut [c64]) { perform(data, n, false); } +/// Perform the backward transform. +/// +/// The number of points should be a power of two. +pub fn backward(data: &mut [c64]) { + let n = power_of_two!(data); + rearrange(data, n); + perform(data, n, true); +} + /// Perform the inverse transform. /// /// The number of points should be a power of two. -pub fn inverse(data: &mut [c64], scaling: bool) { +pub fn inverse(data: &mut [c64]) { let n = power_of_two!(data); rearrange(data, n); perform(data, n, true); - if scaling { - scale(data, n); - } + scale(data, n); } fn rearrange(data: &mut [c64], n: usize) { diff --git a/src/real.rs b/src/real.rs index 5e8f625..b08865d 100644 --- a/src/real.rs +++ b/src/real.rs @@ -28,14 +28,24 @@ pub fn forward(data: &mut [f64]) { compose(data, n, false); } +/// Perform the backward transform. +/// +/// The number of points should be a power of two. The data should be packed as +/// described in `real::forward`. +pub fn backward(data: &mut [f64]) { + let (data, n) = reinterpret!(data); + compose(data, n, true); + ::complex::backward(data); +} + /// Perform the inverse transform. /// /// The number of points should be a power of two. The data should be packed as /// described in `real::forward`. -pub fn inverse(data: &mut [f64], scaling: bool) { +pub fn inverse(data: &mut [f64]) { let (data, n) = reinterpret!(data); compose(data, n, true); - ::complex::inverse(data, scaling); + ::complex::inverse(data); } /// Unpack a compressed representation produced by `real::forward`. diff --git a/tests/lib.rs b/tests/lib.rs index 9f6fe3f..619aa95 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -16,7 +16,7 @@ fn complex_forward() { #[test] fn complex_inverse() { let mut data = fixtures::FREQUENCY_DATA_FOR_COMPLEX.to_vec(); - fft::complex::inverse(as_c64_mut(&mut data), true); + fft::complex::inverse(as_c64_mut(&mut data)); assert::close(&data, &fixtures::TIME_DATA[..], 1e-14); } @@ -39,7 +39,7 @@ fn real_forward() { #[test] fn real_inverse() { let mut data = fixtures::FREQUENCY_DATA_FOR_REAL.to_vec(); - fft::real::inverse(&mut data, true); + fft::real::inverse(&mut data); assert::close(&data, &fixtures::TIME_DATA[..], 1e-14); }