aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/fftease/src/leanunconvert.c
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/fftease/src/leanunconvert.c')
-rw-r--r--externals/grill/fftease/src/leanunconvert.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/externals/grill/fftease/src/leanunconvert.c b/externals/grill/fftease/src/leanunconvert.c
new file mode 100644
index 00000000..f8575168
--- /dev/null
+++ b/externals/grill/fftease/src/leanunconvert.c
@@ -0,0 +1,23 @@
+#include "pv.h"
+
+/* unconvert essentially undoes what convert does, i.e., it
+ turns N2+1 PAIRS of amplitude and frequency values in
+ C into N2 PAIR of complex spectrum data (in rfft format)
+ in output array S; sampling rate R and interpolation factor
+ I are used to recompute phase values from frequencies */
+
+void leanunconvert( float *C, float *S, int N2 )
+{
+ int real, imag,
+ amp, phase;
+ float a, b;
+ register int i;
+
+ for ( i = 0; i <= N2; i++ ) {
+ imag = phase = ( real = amp = i<<1 ) + 1;
+ S[real] = *(C+amp) * cos( *(C+phase) );
+ if ( i != N2 )
+ S[imag] = -*(C+amp) * sin( *(C+phase) );
+ }
+}
+