xtimes←{⎕IO←0 ⍝ Fast multi-digit product using FFT. roots←{×\1,1↓(1⌈⍵÷2)⍴¯1*2÷⍵} cube←{⍵⍴⍨2⍴⍨2⍟≢⍵} extend←{(2*⌈2⍟¯1+(≢⍺)+≢⍵)↑¨⍺ ⍵} floop←{(⊣/⍺)∇⍣(×m)⊢(+⌿⍵),[m-0.5]⍺×[⍳m←≢⍴⍺]-⌿⍵} FFT←{,(cube roots≢⍵)floop cube ⍵} iFFT←{(≢⍵)÷⍨,(cube+roots≢⍵)floop cube ⍵} rconvolve←{(¯1+(≢⍺)+≢⍵)↑iFFT⊃×/FFT¨⍺ extend ⍵} carry←{((∧/b)-⍨+/∧\b←0=t)↓t←{1↓+⌿1 0⌽0,0 10⊤⍵}⍣≡0,⍵} carry 0,⌊0.5+9○⍺ rconvolve ⍵ } code_colours test script Back to: notes Back to: Workspaces