Oh, bleah... of course.

y does not change. So that should be a test on {.x -- and that reveals
that I was using the wrong values throughout that section of code.

Here's a fixed version:

pDiv=: {{
  q=. $j=. 2 + x -&# y
  'x y'=. x,:y
  while. j=. j-1 do.
    if. 0={.x do. j=. j-<:i=. 0 i.~ 0=x
      q=. q,i#0
      x=. i |.!.0 x
    else.
      q=. q, r=. x %&{. y
      x=. 1 |.!.0 x - y*r
    end.
  end.q
}}

Thanks,

-- 
Raul

On Sun, Feb 20, 2022 at 1:05 PM 'Michael Day' via Programming
<programm...@jsoftware.com> wrote:
>
> I suppose dyad |. !0 is better than dyad }.  by keeping the result in
> place.
>
> Anyway,   although I agree that it seems attractive to ignore those zeros,
> your get-around doesn't seem to apply!!! - unless I'm missing something.
>
> I embedded an echo:
> ...
>      if. 0={.y do. j=. j-i=. 0 i.~ 0=y
> echo '0={.y';x;y
> ...
>
> I encountered an error in this mickey mouse test:
>     1 0 0 0 0 0 0 0 0 1 pDiv 0 0 0 1 0 1
> ┌─────┬───────────────────┬───────────────────┐
> │0={.y│1 0 0 0 0 0 0 0 0 1│0 0 0 1 0 1 0 0 0 0│
> └─────┴───────────────────┴───────────────────┘
> ┌─────┬───────────────────┬───────────────────┐
> │0={.y│0 0 0 0 0 0 0 1 0 0│0 0 0 1 0 1 0 0 0 0│
> └─────┴───────────────────┴───────────────────┘
> |domain error: pDiv
> |   q=.q,j    #0
> but maybe these arguments aren't like those for pDiv in the Rosetta Code
> task.
>
> This trick for my div is analogous to allowing for leading decimal zeros
> in 1234 % 0.0001 in "ordinary" long division.  I wonder if it's what you
> intended.
>
> NB. x % y
> div =: 3 : 0    NB. similar result to Ken's dbho
> :
> q =. ''
> NB. allow for leading zeros in quotient
> if. 0 = {. y do.
>     j =. 0 i.~ 0 = y
>     y =. j }. y
>     x =. x, 0#~ >: j
> end.
> yx=. y,:x
> assert. 2 <: n =. 2 + x -&# y
> while. n =. <: n do.
>     q  =. q, r =. %~/ {."1 yx
>     yx =. y,: }. -~/ yx * r,1
> end.
> q
> )
>
>     1 2 3 4 div 0 0 0 1
> 1 2 3 4 0 0 0 0
> 1234 % 0.0001
> 12340000
>
> Anyway, my extra echo reports nothing when running this:
>      cyclotomic >: i.1000
> so I suspect that the check is not necessary here.
>
> Mike
>
> On 20/02/2022 16:35, Raul Miller wrote:
> > 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,
> >
>
>
> --
> 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

Reply via email to