[Prime CAS] ichinrem negative results
|
03-07-2014, 08:25 AM
Post: #1
|
|||
|
|||
[Prime CAS] ichinrem negative results
The CAS ichinrem function (Integer Chinese Remainder) returns often negative results.
For example: ichinrem([4 7],[1 9]) = [-17 63] ichinrem([4 11],[1 13]) = [-51 143] ichinrem([-17 63],[-51 143]) = [235 9009] and: ichinrem([4 7],[1 9],[4 11],[1 13]) = [-8774 9009] While both results [235 9009] and [-8774 9009] are valid and equivalent, I would prefer to have always the same result a modulo b with a in the interval [0,b[ |
|||
03-07-2014, 09:31 AM
(This post was last modified: 03-07-2014 09:32 AM by Dominik Holenstein.)
Post: #2
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
An option could be the chinrem() function:
Code:
You can find more information on chinrem() and ichinrem() here: http://www-fourier.ujf-grenoble.fr/~pari...tml#htoc48 Dominik |
|||
03-07-2014, 11:54 PM
Post: #3
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
(03-07-2014 08:25 AM)Didier Lachieze Wrote: The CAS ichinrem function (Integer Chinese Remainder) returns often negative results. ... While both results [235 9009] and [-8774 9009] are valid and equivalent, I would prefer to have always the same result a modulo b with a in the interval [0,b[ The same problem drives me crazy on the HP 50g. Like the Prime, its CAS modulo functions (not MOD itself) sometimes return negative results. I think your only hope is to create a user-defined function or program which uses the old MOD function to rectify the result. Here's a tiny program that takes the matrix input for ichinrem and returns the smallest positive result: Code: EXPORT chin(M0) ichinrem([[12,23],[123,234]]) --> [-5025, 5382] chin([[12,23],[123,234]]) --> 357 If you want the modulus also, change "RETURN m(1) MOD m(2)" in the program to "RETURN [m(1) MOD m(2),m(2)]". Then the program would return [357, 5382] for the above example. I really wish there were a more elegant way to do this, but that's how I've handled it on the 50g for many years. <0|ɸ|0> -Joe- |
|||
03-09-2014, 08:49 AM
Post: #4
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
Joe, thanks, your solution works fine. I was not aware ichinrem would work on a matrix.
However it would be better if the "RETURN [m(1) MOD m(2),m(2)]" was done by the ichinrem function itself. |
|||
03-09-2014, 04:34 PM
Post: #5
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
(03-09-2014 08:49 AM)Didier Lachieze Wrote: I was not aware ichinrem would work on a matrix. It even works if the matrix contains more than two rows. Example: What number is congruent to 1 (mod 2), 3 (mod 4), and 1 (mod 6)? ichinrem([[1,2], [3,4], [1,6]]) --> [7,12] Answer: 7 (mod 12). <0|ɸ|0> -Joe- |
|||
03-09-2014, 05:11 PM
Post: #6
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
(03-09-2014 08:49 AM)Didier Lachieze Wrote: However it would be better if the "RETURN [m(1) MOD m(2),m(2)]" was done by the ichinrem function itself. Same goes for the %% operator. It also usually spits out negative values. While correct I also would find it nicer when it would output the positive values. |
|||
05-28-2014, 06:39 AM
Post: #7
|
|||
|
|||
RE: [Prime CAS] ichinrem negative results
(03-09-2014 08:49 AM)Didier Lachieze Wrote: Joe, thanks, your solution works fine. I was not aware ichinrem would work on a matrix. Great, this is fixed in the new firmware 2014.0331 (even if I don't find it in the list of Resolved issues and changes in CAS). |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 2 Guest(s)