Consider solving for y in
   9y = 5 mod 7,  ie 
   2y = 5 mod 7

Brute force is one way:
   2 * 1 2 3 4 5 6 mod 7
2 4 6 1 3 5

So 6 is the answer,  and, incidentally, 4 is the mod 7 inverse of 2, 9, 16, etc

The (Extended) Chinese Remainder method is a better approach,  and Fermat’s 
Little 
Theorem and Euler’s Theorem also help.

Care is needed in the case of a composite modulus.  It looks as if Henry will 
arrange for 
a domain error for some operations a u (m. M) b for composite M

Mike

Sent from my iPad

On 18 Apr 2023, at 02:10, 'Pascal Jasmin' via Programming 
<[email protected]> wrote:

>>  Example: 5 % m. 7 (9) gives 5 *(mod 7) (inverse of 9(mod 7))
> example is not clear to me:
> is 5 % m. 7 (9)
> 
> 7 | 5 % 9  NB.?
> I don't understand % as a typical application of modular arithmetic.  
>    On Monday, April 17, 2023 at 02:56:28 p.m. EDT, Henry Rich 
> <[email protected]> wrote:  
> 
> In the next beta u m. n means 'u(mod n)' and will work for + - * % ^ .  
> %. coming soon.
> 
> The only specials I see with m&| are m&|@^ and m&|@(n&^) which can be 
> replaced by [n] (^ m. m) y.
> 
> Example: 5 % m. 7 (9) gives 5 *(mod 7) (inverse of 9(mod 7))
> 
> Henry Rich
> 
>> On 4/17/2023 2:07 PM, 'Michael Day' via Programming wrote:
>> u m. n ?  I thought m. disappeared many versions ago, along with x. y. 
>> etc !
>> Could you provide an example?    And is m&|@u deprecated for other 
>> verbs u ?
>> 
>> Float results would be helpful.  Presumably an array would be returned 
>> as float
>> if at least one element needed to float,  as usual.
>> 
>> Thanks again,
>> 
>> Mike
>> 
>>> On 16/04/2023 17:15, Henry Rich wrote:
>>> I think I have figured out a way to return float when the result has 
>>> been
>>> made inaccurate.
>>> 
>>> We had no choice about m&|@^ for negative y: the behavior of that is
>>> defined by the language, and it isn't modular.
>>> 
>>> u m. n is a much cleaner solution, and faster. m&|@^ is deprecated.
>>> 
>>> Henry Rich
>>> 
>>> On Sun, Apr 16, 2023, 11:51 AM 'Michael Day' via Programming <
>>> [email protected]> wrote:
>>> 
>>>> Thanks for this and your previous comment re  (-:<.@*<:)
>>>> I'm afraid I've only just noticed this later reply in my J mail folder.
>>>> 
>>>> I was going to grumble about x!y remaining integer even when the value
>>>> might be wrong.
>>>> Perhaps you or others might think of a suitable warning comment in 
>>>> NuVoc
>>>> about dyadic !  .
>>>> 2!y could perhaps be treated as special case,  being a triangular
>>>> number,  y(y+1)/2 where
>>>> one could right shift whichever of y, y+1 is even, but presumably that
>>>> would involve too
>>>> much overhead.   Caveat Calculator,  I suppose.
>>>> 
>>>> BTW,  I see you've decided against implementing x m&|@^ y for negative
>>>> integer y, integer x,
>>>> and extended m.   (Though I don't remember m needing to be extended in
>>>> earlier discussions!)
>>>> A pity,  but it's been useful to learn that the idiom is well supported
>>>> for positive y.
>>>> 
>>>> Cheers,
>>>> 
>>>> Mike
>>>> 
>>>>> On 14/04/2023 14:22, Henry Rich wrote:
>>>>> As (x!y) is coded, the calculation is done in floating-point and then
>>>>> converted to integer if the result will fit.  Loss of significance
>>>>> during the calculation will make the result inaccurate.
>>>>> 
>>>>> I think it's a JE error to return an integer value when that value
>>>>> might be wrong.  Unfortunately, the way the internal interfaces are,
>>>>> it's difficult to leave the value as floating-point, so you cannot use
>>>>> the fact that an integer was returned as a guarantee of accuracy.
>>>>> 
>>>>> Henry Rich
>>>>> 
>>>>>> On 4/13/2023 11:34 AM, 'Michael Day' via Programming wrote:
>>>>>> Yet again I found myself resorting to Pari GP for a calculation;  my
>>>>>> J function had been giving
>>>>>> correct answers to a problem for lowish inputs,  but apparently gave
>>>>>> up at some stage for
>>>>>> higher values;  I then coded the calculation in Pari GP which gave
>>>>>> the same results for low
>>>>>> inputs,  but diverged from J at the business end.
>>>>>> 
>>>>>> Looking for inconsistencies between the two functions, the
>>>>>> divergence seems to appear
>>>>>> around this case:
>>>>>> 
>>>>>> m =. 134235395
>>>>>>     2^.m     NB. plenty of room for multiplication in 64-bits???
>>>>>> 27.0002
>>>>>> 
>>>>>>     2!m
>>>>>> 9009570568285316
>>>>>>     datatype 2!m
>>>>>> integer
>>>>>> 
>>>>>>     (-:<.@*<:)m
>>>>>> 9009570568285316
>>>>>>     ((*<:)m)<.@%2
>>>>>> 9009570568285315
>>>>>>     _1 (33 b.) (*<:)m
>>>>>> 9009570568285315
>>>>>> 
>>>>>>     datatype (*<:)m
>>>>>> integer
>>>>>> 
>>>>>> So - why am I getting 2!m returned as integer but wrong? If there's
>>>>>> overflow,
>>>>>> why isn't it a float?  Why does    (-:<.@*<:)m return the wrong
>>>>>> integer when
>>>>>>     ((*<:)m)<.@%2   yields the correct integer?
>>>>>> 
>>>>>> This was in J.04,
>>>>>> Engine: j9.4.2/j64avx2/windows
>>>>>> Build: commercial/2023-04-10T01:19:53/clang-15-0-7/SLEEF=1
>>>>>> 
>>>>>> I haven't checked behaviour in earlier releases.  I didn't try
>>>>>> extended integers
>>>>>> for this problem.
>>>>>> 
>>>>>> 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
>>>> 
>>> ----------------------------------------------------------------------
>>> 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
> 
> ----------------------------------------------------------------------
> 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