LinearAlgebra[Modular]
ChineseRemainder
apply Garner's algorithm to reconstruct from mod m Matrix or Vector images
Calling Sequence
Parameters
Description
Examples
ChineseRemainder(A, m, img, prm, sto)
A
-
current reconstruction
m
assigned name for prime product for reconstruction
img
new image, or list of new images, mod m Matrices or Vectors)
prm
new prime or list of primes
sto
(optional) temporary storage (efficiency)
The ChineseRemainder function applies an incremental version of Garner's algorithm, updating the current image A and modulus m with the image or images specified by img and prm.
Upon successful completion, the reconstructed image is returned, and m which must be a name, is updated.
The A and m parameters represent the current reconstruction, and name corresponding to the current prime product.
If no reconstruction has been performed, that is, this is the first call to ChineseRemainder for this reconstruction, A and m have the values A=0 and m=n, where n is assigned the value 1.
If the current reconstruction is to be updated with new images, A should be the Matrix or Vector returned from the prior call to ChineseRemainder, and m should be the name used in the prior call.
In all cases the reconstruction is returned, even though for updates to the reconstruction ChineseRemainder works on A in-place.
The img and prm parameters represent the new images to be used to update the reconstruction, and the corresponding primes. For updating with a single image, these can be specified as the image and prime. For updating with multiple images, these are specified as a list of the images, and a list of the corresponding primes.
Regardless of the datatype of the image, the output is always datatype 'integer'.
Note: The reconstructed image is not a mod m Matrix or Vector, as it stores the entries in the symmetric range, while the input images from img are mod m Matrices or Vectors with entries in the positive range.
The ChineseRemainder command requires additional storage when reconstructing a result with multiple images. The ability to pre-allocate this storage and utilize it in ChineseRemainder is made available by the optional fifth argument sto. If specified, sto must be a mod m Matrix or Vector with the same datatype and dimensions as the images from img.
This command is part of the LinearAlgebra[Modular] package, so it can be used in the form ChineseRemainder(..) only after executing the command with(LinearAlgebra[Modular]). However, it can always be used in the form LinearAlgebra[Modular][ChineseRemainder](..).
Apply Chinese remainder algorithm to a Matrix, one step at a time.
with⁡LinearAlgebraModular:
A≔Matrix⁡3,4,i,j↦rand⁡
A≔39571886053419313981641522424170465800187484459427552056869842622684442412286285840996417214180386408307450694607189265773012980023730616292946
Now reconstruct A from images.
p1≔ithprime⁡4600
p1≔44201
I1≔Mod⁡p1,A,integer
I1≔374221083530743292802716515012439083831527179107263443818340
m≔1
A2≔ChineseRemainder⁡0,m,I1,p1
A2≔−677910835−13458−14921−1703615012−293−5886−1702210726−976318340
p2≔prevprime⁡p1
p2≔44189
I2≔Mod⁡p2,A,integer
I2≔231837641205253670417510971943555276372734533131438976791
ChineseRemainder⁡A2,m,I2,p2
−780331233−226784496938992586−623691031−198302722794351183161510161286239790−324894372−731294819−453423621120245060
p3≔prevprime⁡p2
p3≔44179
I3≔Mod⁡p3,A,integer
I3≔2925809114540299332081019225381572789141554343092839727923
ChineseRemainder⁡A2,m,I3,p3
39571886053419313981641522424170465800187484459427552056869842622684442412286285840996417214180386408307450694607189265773012980023730616292946
A2−A,m
000000000000,86290333956031
You can do the reconstruction all at once.
A2≔ChineseRemainder⁡0,m,I1,I2,I3,p1,p2,p3
A2≔39571886053419313981641522424170465800187484459427552056869842622684442412286285840996417214180386408307450694607189265773012980023730616292946
Incremental reconstruction with storage (not required for first step).
p1≔prevprime⁡225−1
p1≔33554393
I1≔Mod⁡p1,A,float8
I1≔1.1903885×107730307.9.835941×1061.5874588×1071.981263×1064.767426×1063.459049×1061.9514045×1072.9472055×1073.1254165×1072.0428482×1072.939764×106
A2≔11903885730307983594115874588198126347674263459049−14040348−4082338−2300228−131259112939764
Now use I1 as temp storage.
p2≔33554383
I2≔Mod⁡p2,A,float8
I2≔1.2021815×107787867.9.842621×1061.6113058×1072.108683×1065.018546×1063.581919×1061.9810995×1072.9587205×1073.1461165×1072.0658852×1073.157504×106
ChineseRemainder⁡A2,m,I2,p2,I1
000000000000,1125896954054519
See Also
LinearAlgebra/Details
LinearAlgebra[Modular][Mod]
Download Help Document