#include "AnyFFT.H" namespace AnyFFT { #ifdef AMREX_USE_FLOAT const auto VendorCreatePlanR2C3D = fftwf_plan_dft_r2c_3d; const auto VendorCreatePlanC2R3D = fftwf_plan_dft_c2r_3d; const auto VendorCreatePlanR2C2D = fftwf_plan_dft_r2c_2d; const auto VendorCreatePlanC2R2D = fftwf_plan_dft_c2r_2d; #else const auto VendorCreatePlanR2C3D = fftw_plan_dft_r2c_3d; const auto VendorCreatePlanC2R3D = fftw_plan_dft_c2r_3d; const auto VendorCreatePlanR2C2D = fftw_plan_dft_r2c_2d; const auto VendorCreatePlanC2R2D = fftw_plan_dft_c2r_2d; #endif FFTplan CreatePlan(const amrex::IntVect& real_size, amrex::Real * const real_array, Complex * const complex_array, const direction dir, const int dim) { FFTplan fft_plan; // Initialize fft_plan.m_plan with the vendor fft plan. // Swap dimensions: AMReX FAB are Fortran-order but FFTW is C-order if (dir == direction::R2C){ if (dim == 3) { fft_plan.m_plan = VendorCreatePlanR2C3D( real_size[2], real_size[1], real_size[0], real_array, complex_array, FFTW_ESTIMATE); } else if (dim == 2) { fft_plan.m_plan = VendorCreatePlanR2C2D( real_size[1], real_size[0], real_array, complex_array, FFTW_ESTIMATE); } else { amrex::Abort("only dim=2 and dim=3 have been implemented"); } } else if (dir == direction::C2R){ if (dim == 3) { fft_plan.m_plan = VendorCreatePlanC2R3D( real_size[2], real_size[1], real_size[0], complex_array, real_array, FFTW_ESTIMATE); } else if (dim == 2) { fft_plan.m_plan = VendorCreatePlanC2R2D( real_size[1], real_size[0], complex_array, real_array, FFTW_ESTIMATE); } else { amrex::Abort("only dim=2 and dim=3 have been implemented. Should be easy to add dim=1."); } } // Store meta-data in fft_plan fft_plan.m_real_array = real_array; fft_plan.m_complex_array = complex_array; fft_plan.m_dir = dir; fft_plan.m_dim = dim; return fft_plan; } void DestroyPlan(FFTplan& fft_plan) { # ifdef AMREX_USE_FLOAT fftwf_destroy_plan( fft_plan.m_plan ); # else fftw_destroy_plan( fft_plan.m_plan ); # endif } void Execute(FFTplan& fft_plan){ # ifdef AMREX_USE_FLOAT fftwf_execute( fft_plan.m_plan ); # else fftw_execute( fft_plan.m_plan ); # endif } } ion> Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/URLDecomposition.h (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-05-18[node:vm] Propagate global properties defined on the new context objectGravatar Jarred Sumner 2-16/+26
2023-05-18clang-formatGravatar Jarred Sumner 1-14/+15
2023-05-18Implement `node:vm` (#2785)Gravatar Silver 7-46/+482
2023-05-18Fixes #2924Gravatar Jarred Sumner 1-0/+8
2023-05-18handle when cwd is not writable, attempt to use tmp dir explicitlyGravatar Jarred Sumner 2-2/+32
2023-05-18BumpGravatar Jarred Sumner 1-1/+1
2023-05-18Fixes #2946 (#2949)Gravatar Jarred Sumner 3-2/+57
2023-05-18Fixes #2942 (#2947)Gravatar Jarred Sumner 2-1/+154
2023-05-18Implement `expect().toBeCloseTo()` (#2870)Gravatar Degreat 4-3/+167
2023-05-18use raw template contents for tagged templates (#2937)Gravatar Dylan Conway 4-33/+67
2023-05-18Fixes #2928 (#2939)Gravatar Jarred Sumner 4-43/+113
2023-05-17Update fs.test.tsGravatar Jarred Sumner 1-7/+10
2023-05-17Mention setting `target` to `"node"` or `"bun"` when a ResolveMessage occurs ...Gravatar Jarred Sumner 1-2/+2
2023-05-17Fixes https://github.com/oven-sh/bun/issues/2931Gravatar Jarred Sumner 2-1/+30
2023-05-17Update benchmarking.mdGravatar Jarred Sumner 1-1/+1
2023-05-17Support static string values in our class bindings generatorGravatar Jarred Sumner 2-2/+26
2023-05-17Make `BuildError` and `ResolveError` use C++ instead of JSC C APIGravatar Jarred Sumner 23-515/+2067
2023-05-17Update json-parse-stringify.mjsbun-v0.6.2Gravatar Jarred Sumner 1-2/+2