add multiple of a mod m Matrix or Vector to another
AddMultiple(m, mult, A, B, order, 'sparse')
AddMultiple(m, mult, A, B, C, 'sparse')
Matrix or Vector, including subspec
ordering of output object
(optional) controls behavior of operation
(optional) multiplier, default is 1
output Matrix or Vector, including subspec
The AddMultiple function performs the operation mult⁢B+A placing the output in a new object, or in C, depending on calling sequence. All of A, B, and C must be mod m Matrices or Vectors, and mult must be a scalar.
The first calling sequence returns a new mod m Matrix or Vector for the result with the specified ordering, order, or the ordering of the input objects A and B.
Note: If A and B have different ordering, order must be specified.
The second calling sequence places the output of the computation into C, returning NULL.
Note: The parameter C can be the same Matrix or Vector as A or B as long as the operation is performed with direct overlap. For example, if A and C are the same Matrix, the operation involving the entry Ai,j must have the result going to Ci,j.
The multiplier, mult, is an optional parameter. However, if it is not specified, it is assumed to be 1. The multiplier must be in the range 0..m−1. This function can be used to perform Matrix or Vector subtraction by the selection of mult=m−1. This is coded efficiently, that is, without multiplication.
If specified, the optional keyword 'sparse', is only applicable if the multiplier is not 1 or m−1 and the datatype is a hardware datatype. It indicates that the algorithm checks for zero entries before performing multiplications. This typically provides an efficiency gain if matrices have 10% or more entries in B equal to zero. This is not implemented for the integer datatype, as it typically provides very little gain.
Note: In cases for which sparse does not apply but has been specified, the option is ignored.
The AddMultiple function allows the use of sub-Matrix and sub-Vector specifications for both input and output Matrices or Vectors. For example, the function can be used to add a row of a Matrix to a row Vector, placing the result in the column of another Matrix.
Note: If the used portion of A or B, and C overlap, but not directly, the behavior of AddMultiple is undefined.
This command is part of the LinearAlgebra[Modular] package, so it can be used in the form AddMultiple(..) only after executing the command with(LinearAlgebra[Modular]). However, it can always be used in the form LinearAlgebra[Modular][AddMultiple](..).
A ≔ Mod⁡13,Matrix⁡4,4,i,j→rand⁡,integer
B ≔ Mod⁡13,Matrix⁡4,4,i,j→ifi=jthen1else0end if,integer
Default multiplier and new output Matrix (A+B).
Chosen multiplier of 2 (A+2*B).
Replace A with the result.
Add row 3 of A to row 2 of A, with output in column 1 of B.
Construct a larger Matrix and identity Matrix, using larger modulus.
N ≔ 100:
p ≔ 65535:
A ≔ Mod⁡p,Matrix⁡N,N,i,j→rand⁡,float8
B ≔ Mod⁡p,Matrix⁡N,N,i,j→ifi=jthen1else0end if,float8
Time addition of 327*B to A 2000 times.
t ≔ time⁡:
Time addition of 327*B to A 2000 times using sparse.
Download Help Document