Cliff There are some mod functions in the math/misc addon, e.g. this gives Mike Day's table
load 'math/misc/primutil' f=: (17 timesmod) (17&inversep) 2 3 4 f"0 table >:i.8 +---+---------------------+ |f"0|1 2 3 4 5 6 7 8| +---+---------------------+ |2 |2 1 12 9 14 6 10 13| |3 |3 10 1 5 4 9 15 11| |4 |4 2 7 1 11 12 3 9| +---+---------------------+ Any improvements welcome, thanks. Chris On Mon, Apr 3, 2023 at 5:49 AM Clifford Reiter <[email protected]> wrote: > > I dug up an old extended gcd to build an adverb for modular divide > > NB. Find the gcd of two numbers > > NB. and coef giving gcd as a linear combination of y > > gcd2x=: 3 : 0 > > 'r0 r1'=.y > > 's0 s1'=.1 0x > > 't0 t1'=.0 1x > > while. r1 ~: 0 do. > > q=. r0 <.@% r1 > > 'r0 r1'=. r1,r0-q*r1 > > 's0 s1'=. s1,s0-q*s1 > > 't0 t1'=. t1,t0-q*t1 > > end. > > r0,s0,t0 > > ) > > gcd2x 51 119 > > 17 _2 1 > > _2 1 +/ . * 51 119 > > 17 > > NB. adverb giving divide (inverse) mod m > > mi=:1 : 0"0 > > 'r0 s0 t0'=:gcd2x m,y > > if. r0=1 do. m|t0 else. 1r0 end. > > : > > m|x*m mi y > > ) > > 17 mi 6 > > 3 > > NB. Mike Day's Table > > 2 3 4 (17 mi)table >:i.8 > > +-+---------------------+ > > | |1 2 3 4 5 6 7 8| > > +-+---------------------+ > > |2|2 1 12 9 14 6 10 13| > > |3|3 10 1 5 4 9 15 11| > > |4|4 2 7 1 11 12 3 9| > > +-+---------------------+ > > > I have some questions regarding system solving modulo m that I will offer > in a new thread in a few days. > > Best, Cliff > > On Thu, Mar 30, 2023 at 12:11 PM Clifford Reiter <[email protected]> > wrote: > > > I think I recall a conversation, some decades ago, with Roger about > > whether specifying a modulus for system solving makes sense for J. I > > thought maybe that was a use for the fit conjunction but now think that > > would be a poor choice for such a numeric function. I have vague memories > > of J essays on guass-jordan row reduction and extended gcds but didn't find > > them poking around J help. > > They could be useful for what I had in mind and modular inverses would be > > part of that. Perhaps someone has those handy and could offer an addon? New > > adverbs giving b m %.: a and m %.: a anyone? > > Best, Cliff > > > > On Wed, Mar 29, 2023 at 5:02 PM 'Michael Day' via Programming < > > [email protected]> wrote: > > > >> While this primitve works nicely in an example: > >> > >> (2 3 4) (17&|@*)/ table >:i.8 > >> +-------+---------------------+ > >> |17&|@*/|1 2 3 4 5 6 7 8| > >> +-------+---------------------+ > >> |2 |2 4 6 8 10 12 14 16| > >> |3 |3 6 9 12 15 1 4 7| > >> |4 |4 8 12 16 3 7 11 15| > >> +-------+---------------------+ > >> > >> I find this less satisfying: > >> (2 3 4) (17&|@%)/ table >:i.8 > >> +-------+-----------------------------------------------+ > >> |17&|@%/|1 2 3 4 5 6 7 8| > >> +-------+-----------------------------------------------+ > >> |2 |2 1 0.666667 0.5 0.4 0.333333 0.285714 0.25| > >> |3 |3 1.5 1 0.75 0.6 0.5 0.428571 0.375| > >> |4 |4 2 1.33333 1 0.8 0.666667 0.571429 0.5| > >> +-------+-----------------------------------------------+ > >> > >> I have a function which does what one would expect. I'll rename it as > >> m17div here, details unimportant for this discussion: > >> (2 3 4) m17div/ table >:i.8 > >> +-------+---------------------+ > >> |m17div/|1 2 3 4 5 6 7 8| > >> +-------+---------------------+ > >> |2 |2 1 12 9 14 6 10 13| > >> |3 |3 10 1 5 4 9 15 11| > >> |4 |4 2 7 1 11 12 3 9| > >> +-------+---------------------+ > >> ( eg 3 % 2 == 10 mod 17 because 3 = 17 | 2 * 10 ) > >> > >> Would anyone else find this return of integer results useful or is it > >> better > >> to force a floating output? > >> > >> (Henry tells me that m&|@^ returns integer results, working ok when m^2 > >> can be represented as a non-extended integer.) > >> > >> Thanks, > >> > >> Mike > >> > >> ---------------------------------------------------------------------- > >> 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
