diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-05-22 11:32:18 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-05-22 11:32:18 -0400 |
| commit | 18af8ef85a6b26dafeeab42c9f8b503af9586380 (patch) | |
| tree | ba785fff7ad428f8036fc86673a45ede10f3d8d1 | |
| parent | 6ee94f4962e7a1624385122d1e756896caced43a (diff) | |
FFTW-based Fourier transform with •FFI; currently unused
| -rw-r--r-- | fftw.bqn | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/fftw.bqn b/fftw.bqn new file mode 100644 index 0000000..40c900c --- /dev/null +++ b/fftw.bqn @@ -0,0 +1,23 @@ +# FFTW-based replacement for fft.bqn + +plan ← "*:i32" + +Fn ← "/usr/lib/libfftw3.so.3"⊸•FFI +createPlan ← Fn plan‿"fftw_plan_dft"‿"i32"‿"*i32"‿"*f64"‿"&f64"‿"i32"‿"i32" +destroyPlan ← Fn ""‿"fftw_destroy_plan"‿plan +executePlan ← Fn ""‿"fftw_execute"‿plan + +{ + 𝕨𝕊⁼𝕩: (-𝕨1⊘≢¯1)𝕊𝕩 ; + + "FFT argument must be a list or have two list cells" ! (3⌊=)◶⟨0,1,2=≠,0⟩𝕩 + Enc ← ⍉⌽ + 𝕩 ↩ (2↑≍)⍟(2>=) 𝕩 + dir ← -⟜¬ 𝕨≡¯1 + sh ← 1↓≢𝕩 + in ← ⥊ Enc 𝕩 + plan‿out ← CreatePlan ⟨≠sh,sh,in,0¨in,dir,2⋆6⟩ + ExecutePlan ⟨plan⟩ + DestroyPlan ⟨plan⟩ + ÷⟜(×´sh˙)⍟(1=dir) Enc⁼ (sh∾2) ⥊ out +} |
