JWS C Library
C language utility library
|
00001 /* 00002 * This work is licensed under a Creative Commons 00003 * Attribution-Noncommercial-Share Alike 3.0 United States License. 00004 * 00005 * http://creativecommons.org/licenses/by-nc-sa/3.0/us/ 00006 * 00007 * You are free: 00008 * 00009 * to Share - to copy, distribute, display, and perform the work 00010 * to Remix - to make derivative works 00011 * 00012 * Under the following conditions: 00013 * 00014 * Attribution. You must attribute the work in the manner specified by the 00015 * author or licensor (but not in any way that suggests that they endorse you 00016 * or your use of the work). 00017 * 00018 * Noncommercial. You may not use this work for commercial purposes. 00019 * 00020 * Share Alike. If you alter, transform, or build upon this work, you may 00021 * distribute the resulting work only under the same or similar license to 00022 * this one. 00023 * 00024 * For any reuse or distribution, you must make clear to others the license 00025 * terms of this work. The best way to do this is by including this header. 00026 * 00027 * Any of the above conditions can be waived if you get permission from the 00028 * copyright holder. 00029 * 00030 * Apart from the remix rights granted under this license, nothing in this 00031 * license impairs or restricts the author's moral rights. 00032 */ 00033 00034 00050 #ifndef MATRIX_FFT_H 00051 #define MATRIX_FFT_H 00052 00053 00054 #include <jwsc/config.h> 00055 00056 #include <stdlib.h> 00057 00058 #include "jwsc/matrix/matrix.h" 00059 00060 00061 #ifdef __cplusplus 00062 namespace jwsc { 00063 extern "C" { 00064 #endif 00065 00066 00078 #ifdef JWSC_HAVE_FFTW3F 00079 void real_to_complex_matrix_dft_f 00080 ( 00081 Matrix_cf** m_out, 00082 const Matrix_f* m_in 00083 ); 00084 #endif 00085 00090 #ifdef JWSC_HAVE_FFTW3 00091 void real_to_complex_matrix_dft_d 00092 ( 00093 Matrix_cd** m_out, 00094 const Matrix_d* m_in 00095 ); 00096 #endif 00097 00114 #ifdef JWSC_HAVE_FFTW3F 00115 void complex_to_real_matrix_dft_f 00116 ( 00117 Matrix_f** m_out, 00118 const Matrix_cf* m_in, 00119 uint8_t ncols_even 00120 ); 00121 #endif 00122 00127 #ifdef JWSC_HAVE_FFTW3 00128 void complex_to_real_matrix_dft_d 00129 ( 00130 Matrix_d** m_out, 00131 const Matrix_cd* m_in, 00132 uint8_t ncols_even 00133 ); 00134 #endif 00135 00149 void expand_symmetric_matrix_dft_f 00150 ( 00151 Matrix_cf** m_out, 00152 const Matrix_cf* m_in, 00153 uint8_t ncols_even 00154 ); 00155 00157 void expand_symmetric_matrix_dft_d 00158 ( 00159 Matrix_cd** m_out, 00160 const Matrix_cd* m_in, 00161 uint8_t ncols_even 00162 ); 00163 00177 Error* shrink_symmetric_matrix_dft_f(Matrix_cf** m_out, const Matrix_cf* m_in); 00178 00182 Error* shrink_symmetric_matrix_dft_d(Matrix_cd** m_out, const Matrix_cd* m_in); 00183 00200 void scale_matrix_dft_f(Matrix_f** m_out, const Matrix_f* m_in); 00201 00206 void scale_matrix_dft_d(Matrix_d** m_out, const Matrix_d* m_in); 00207 00224 void shift_matrix_f 00225 ( 00226 Matrix_f** m_out, 00227 const Matrix_f* m_in 00228 ); 00229 00234 void shift_matrix_d 00235 ( 00236 Matrix_d** m_out, 00237 const Matrix_d* m_in 00238 ); 00239 00244 void shift_matrix_cf 00245 ( 00246 Matrix_cf** m_out, 00247 const Matrix_cf* m_in 00248 ); 00249 00254 void shift_matrix_cd 00255 ( 00256 Matrix_cd** m_out, 00257 const Matrix_cd* m_in 00258 ); 00259 00276 void unshift_matrix_f 00277 ( 00278 Matrix_f** m_out, 00279 const Matrix_f* m_in 00280 ); 00281 00286 void unshift_matrix_d 00287 ( 00288 Matrix_d** m_out, 00289 const Matrix_d* m_in 00290 ); 00291 00296 void unshift_matrix_cf 00297 ( 00298 Matrix_cf** m_out, 00299 const Matrix_cf* m_in 00300 ); 00301 00306 void unshift_matrix_cd 00307 ( 00308 Matrix_cd** m_out, 00309 const Matrix_cd* m_in 00310 ); 00311 00315 #ifdef __cplusplus 00316 } 00317 } 00318 #endif 00319 00320 00321 #endif