Yes, ... maybe I should replace my caching wrapper with M. That said, using the fft cyclotomic000 implementation and the caching wrapper from the rosettacode page (and the fftw implementation for fft and ifft):
taskorder=: {{ r=.$k=.0 while.y>#r do.k=.k+1 if.(1+#r) e.|u k do. r=. r,k k=. k-1 end. end.r }} timespacex 'cyclotomic taskorder 10 [ cache=: 2 {. cache' 8.17343 5.70164e8 vs. timespacex '(cyclotomic=:{{if.2>y do._1 1 else. unpad cyclotomic000 y end.}}M."0) taskorder 10' 15.1576 6.86114e8 I'm not sure that this is an improvement. -- Raul On Wed, Mar 2, 2022 at 7:01 PM 'Michael Day' via Programming <programm...@jsoftware.com> wrote: > > Interesting! I've got some thoughts on this, but it's getting late > here, so I'll > defer a fuller reply. > > Meanwhile, a quickie: since the memoisation does seem to work, might > it be better > to dispense with cache? A pity as you put some effort into its use, > but the code is > simpler without it. > > Thanks, > > Mike > > On 02/03/2022 19:57, Raul Miller wrote: > > I've updated the rosettacode page to include this implementation. And, > > I plan on updating the j wiki polynomial division essay, also, once I > > think through a bit how to describe this approach. (Descriptive > > phrases and sentences would be welcome. Documentation needs good > > perspectives, above all else.) > > > > For the purpose of the rosettacode page, I used a different phrasing of rou: > > > > rou =: {{(,j.) r,(%:0j1),j.+|.}.r=.^o.j.(i.@%&8 % -:) y}} NB. > > roots of unity > > > > This seems (to me) to be more concise, and straightforward, than the > > purely tacit expression. > > > > (That said, I'm not sure if this change in notation would be a good > > fit for the FFT essay.) > > > > Thanks, > > > > > -- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm