From the hip.

cyclotomic=:{{{."1 [0.01 round +. p. 1;^j.+:pi* y%~ >:I.1=y +. >:i.y}}
taskfmt=:{{rplc&'_-' rplc&('^1';'';'x^0';'1') ' 
'-.~}:,|.')+',~"1'(',"1('1'-.~"1 ":,.0-.~y),"1 'x^',"1":,.I.|y}}
      ([: taskfmt cyclotomic)"0 >:i.30
(x)+(-1)                                                                        
                                                                                
        
(x)+(1)                                                                         
                                                                                
        
(x^2)+(x)+(1)                                                                   
                                                                                
        
(x^2)+(1)                                                                       
                                                                                
        
(x^4)+(x^3)+(x^2)+(x)+(1)                                                       
                                                                                
        
(x^2)+(-x)+(1)                                                                  
                                                                                
        
(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)                                           
                                                                                
        
(x^4)+(1)                                                                       
                                                                                
        
(x^6)+(x^3)+(1)                                                                 
                                                                                
        
(x^4)+(-x^3)+(x^2)+(-x)+(1)                                                     
                                                                                
        
(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)                    
                                                                                
        
(x^4)+(-x^2)+(1)                                                                
                                                                                
        
(x2)+(x1)+(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)          
                                                                                
        
(x^6)+(-x^5)+(x^4)+(-x^3)+(x^2)+(-x)+(1)                                        
                                                                                
        
(x^8)+(-x^7)+(x^5)+(-x^4)+(x^3)+(-x)+(1)                                        
                                                                                
        
(x^8)+(1)                                                                       
                                                                                
        
(x6)+(x5)+(x4)+(x3)+(x2)+(x1)+(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)
                                                                              
(x^6)+(-x^3)+(1)                                                                
                                                                                
        
(x8)+(x7)+(x6)+(x5)+(x4)+(x3)+(x2)+(x1)+(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)
                                                                    
(x^8)+(-x^6)+(x^4)+(-x^2)+(1)                                                   
                                                                                
        
(x2)+(-x1)+(x^9)+(-x^8)+(x^6)+(-x^4)+(x^3)+(-x)+(1)                             
                                                                                
        
(x0)+(-x^9)+(x^8)+(-x^7)+(x^6)+(-x^5)+(x^4)+(-x^3)+(x^2)+(-x)+(1)               
                                                                                
        
(x^22)+(x^21)+(x^20)+(x9)+(x8)+(x7)+(x6)+(x5)+(x4)+(x3)+(x2)+(x1)+(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)
                                          
(x^8)+(-x^4)+(1)                                                                
                                                                                
        
(x^20)+(x5)+(x0)+(x^5)+(1)                                                      
                                                                                
        
(x2)+(-x1)+(x0)+(-x^9)+(x^8)+(-x^7)+(x^6)+(-x^5)+(x^4)+(-x^3)+(x^2)+(-x)+(1)    
                                                                                
        
(x8)+(x^9)+(1)                                                                  
                                                                                
        
(x2)+(-x0)+(x^8)+(-x^6)+(x^4)+(-x^2)+(1)                                        
                                                                                
        
(x^28)+(x^27)+(x^26)+(x^25)+(x^24)+(x^23)+(x^22)+(x^21)+(x^20)+(x9)+(x8)+(x7)+(x6)+(x5)+(x4)+(x3)+(x2)+(x1)+(x0)+(x^9)+(x^8)+(x^7)+(x^6)+(x^5)+(x^4)+(x^3)+(x^2)+(x)+(1)
(x^8)+(x^7)+(-x^5)+(-x^4)+(-x^3)+(x)+(1)                                        
                                                                                
        
   

R.E. Boss

-----Original Message-----
From: Programming <programming-boun...@forums.jsoftware.com> On Behalf Of Raul 
Miller
Sent: zondag 20 februari 2022 17:35
To: Programming forum <programm...@jsoftware.com>
Subject: Re: [Jprogramming] polynomial division

For what it's worth, here's what I was focusing on:

http://rosettacode.org/wiki/Cyclotomic_polynomial#J

As you can see, I altered your polynomial division algorithm -- there's enough 
zeros in the polynomials I was working with, there, that iterating through them 
seemed unwise.

If there's any other significant improvements that you notice -- or any errors 
which I overlooked, of course, please let me know!

Thanks,

--
Raul

On Sun, Feb 20, 2022 at 11:27 AM 'Michael Day' via Programming 
<programm...@jsoftware.com> wrote:
>
> I wrote binc as a monad,  just as a quick way of conjuring up sets of 
> binomial coefficients:
>
>     binc 5
> 1 5 10 10 5 1
>
>     3 binc 5 NB. does work, but not as intended!
> 1 3 3 1 0 0
> NB. as does its commute:
>     5 binc 3
> 1 5 10 10
> ... but again, not as I intended.
>
> div is what does the division;  div&binc a,b just does (binc a) div 
> binc b
>
>
> I wasn't particularly interested in the performance of binc, as Raul 
> was seeking a division algortithm,  and binc was just easier than 
> typing 1 5 10 10 5 1 or whatever.
>
> I do agree that your definition improves on mine when it matters,  eg
>     ts'binc 500x'
> 0.0392271 460640
>     ts'1, */\ 500x (- % >:@]) i.500x' NB. x=y for my examples
> 0.001463 504032
>
> I suppose it's now worth investigating the performance of div cf dbho 
> and divlo cf dblo excluding the overhead of binc:
>
>     'a b' =: binc 50 20
>     a (dbho-:div) b
> 1
>     ts'a div b'
> 1.21e_5 5952
>     ts'a dbho b'
> 2.63e_5 6496
>     a (dblo-:divlo) b
> 1
>     ts'a divlo b'
> 1.06e_5 6976
>     ts'a dblo b'
> 1.75e_5 6496
>
> Thanks for pointing out the overheads imposed by binc,
>
> Mike
>
> On 20/02/2022 16:01, Hauke Rehr wrote:
> > On my machine, I get
> >
> >    100 timespacex '1000x binc 500x'
> > 0.101916 957376
> >    100 timespacex '1, */\ 1000x (- % >:@]) i.500x'
> > 0.00247977 680320
> >
> >
> > Am 20.02.22 um 13:30 schrieb 'Michael Day' via Programming:
> >>     ts'1000x div&binc 500x'
> >> 2.1598005 4815264
> >
>
>
> --
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to