This class provides facilities to compute multiplications of scalars, of vectors and of matrices modulo m. More...
Static Public Member Functions | |
Methods using <tt>double</tt> @{ | |
| static double | multModM (double a, double s, double c, double m) |
| Computes \((a \times s + c) \bmod m\). | |
| static void | matVecModM (double A[][], double s[], double v[], double m) |
| Computes the result of \(\mathtt{A} \times\mathtt{\mathbf{s}} \bmod m\) and puts the result in v. | |
| static void | matMatModM (double A[][], double B[][], double C[][], double m) |
| Computes \(\mathtt{A} \times\mathtt{B} \bmod m\) and puts the result in C. | |
| static void | matTwoPowModM (double A[][], double B[][], double m, int e) |
| Computes \(\mathtt{A}^{2^{\mathtt{e}}} \bmod m\) and puts the result in B. | |
| static void | matPowModM (double A[][], double B[][], double m, int c) |
| Computes \(\mathtt{A}^c \bmod m\) and puts the result in B. | |
Methods using <tt>int</tt> @{ | |
| static int | multModM (int a, int s, int c, int m) |
| Computes \((a \times s + c) \bmod m\). | |
| static void | matVecModM (int A[][], int s[], int v[], int m) |
| Exactly like matVecModM(double[][],double[],double[],double) using double, but with int instead of double. | |
| static void | matMatModM (int A[][], int B[][], int C[][], int m) |
| Exactly like matMatModM(double[][],double[][],double[][],double) using double, but with int instead of double. | |
| static void | matTwoPowModM (int A[][], int B[][], int m, int e) |
| Exactly like matTwoPowModM(double[][],double[][],double,int) using double, but with int instead of double. | |
| static void | matPowModM (int A[][], int B[][], int m, int c) |
| Exactly like matPowModM(double[][],double[][],double,int) using double, but with int instead of double. | |
Methods using <tt>long</tt> @{ | |
| static long | multModM (long a, long s, long c, long m) |
| Computes \((a \times s + c) \bmod m\). | |
| static void | matVecModM (long A[][], long s[], long v[], long m) |
| Exactly like matVecModM(double[][],double[],double[],double) using double, but with long instead of double. | |
| static void | matMatModM (long A[][], long B[][], long C[][], long m) |
| Exactly like matMatModM(double[][],double[][],double[][],double) using double, but with long instead of double. | |
| static void | matTwoPowModM (long A[][], long B[][], long m, int e) |
| Exactly like matTwoPowModM(double[][],double[][],double,int) using double, but with long instead of double. | |
| static void | matPowModM (long A[][], long B[][], long m, int c) |
| Exactly like matPowModM(double[][],double[][],double,int) using double, but with long instead of double. | |
This class provides facilities to compute multiplications of scalars, of vectors and of matrices modulo m.
All algorithms are present in three different versions. These allow operations on double, int and long. The int and long versions work exactly like the double ones.
Definition at line 35 of file ArithmeticMod.java.
|
static |
Computes \(\mathtt{A} \times\mathtt{B} \bmod m\) and puts the result in C.
Works even if A = C, B = C or A = B = C.
| A | the first factor of the multiplication |
| B | the second factor of the multiplication |
| C | the result of the multiplication |
| m | the modulus |
Definition at line 109 of file ArithmeticMod.java.
|
static |
Exactly like matMatModM(double[][],double[][],double[][],double) using double, but with int instead of double.
| A | the first factor of the multiplication |
| B | the second factor of the multiplication |
| C | the result of the multiplication |
| m | the modulus |
Definition at line 240 of file ArithmeticMod.java.
|
static |
Exactly like matMatModM(double[][],double[][],double[][],double) using double, but with long instead of double.
| A | the first factor of the multiplication |
| B | the second factor of the multiplication |
| C | the result of the multiplication |
| m | the modulus |
Definition at line 424 of file ArithmeticMod.java.
|
static |
Computes \(\mathtt{A}^c \bmod m\) and puts the result in B.
Works even if A = B.
| A | the matrix to raise to a power |
| B | the result of the exponentiation |
| m | the modulus |
| c | the exponent |
Definition at line 160 of file ArithmeticMod.java.
|
static |
Exactly like matPowModM(double[][],double[][],double,int) using double, but with int instead of double.
| A | the matrix to raise to a power |
| B | the result of the exponentiation |
| m | the modulus |
| c | the exponent |
Definition at line 291 of file ArithmeticMod.java.
|
static |
Exactly like matPowModM(double[][],double[][],double,int) using double, but with long instead of double.
| A | the matrix to raise to a power |
| B | the result of the exponentiation |
| m | the modulus |
| c | the exponent |
Definition at line 475 of file ArithmeticMod.java.
|
static |
Computes \(\mathtt{A}^{2^{\mathtt{e}}} \bmod m\) and puts the result in B.
Works even if A = B.
| A | the matrix to raise to a power |
| B | the result of exponentiation |
| m | the modulus |
| e | the \(\log_2\) of the exponent |
Definition at line 137 of file ArithmeticMod.java.
|
static |
Exactly like matTwoPowModM(double[][],double[][],double,int) using double, but with int instead of double.
| A | the matrix to raise to a power |
| B | the result of exponentiation |
| m | the modulus |
| e | the \(\log_2\) of the exponent |
Definition at line 268 of file ArithmeticMod.java.
|
static |
Exactly like matTwoPowModM(double[][],double[][],double,int) using double, but with long instead of double.
| A | the matrix to raise to a power |
| B | the result of exponentiation |
| m | the modulus |
| e | the \(\log_2\) of the exponent |
Definition at line 452 of file ArithmeticMod.java.
|
static |
Computes the result of \(\mathtt{A} \times\mathtt{\mathbf{s}} \bmod m\) and puts the result in v.
Where s and v are both column vectors. This method works even if s = v.
| A | the multiplication matrix |
| s | the multiplied vector |
| v | the result of the multiplication |
| m | the modulus |
Definition at line 88 of file ArithmeticMod.java.
|
static |
Exactly like matVecModM(double[][],double[],double[],double) using double, but with int instead of double.
| A | the multiplication matrix |
| s | the multiplied vector |
| v | the result of the multiplication |
| m | the modulus |
Definition at line 218 of file ArithmeticMod.java.
|
static |
Exactly like matVecModM(double[][],double[],double[],double) using double, but with long instead of double.
| A | the multiplication matrix |
| s | the multiplied vector |
| v | the result of the multiplication |
| m | the modulus |
Definition at line 402 of file ArithmeticMod.java.
|
static |
Computes \((a \times s + c) \bmod m\).
Where m must be smaller than \(2^{35}\). Works also if s or c are negative. The result is always positive (and thus always between 0 and m - 1).
| a | the first factor of the multiplication |
| s | the second factor of the multiplication |
| c | the second term of the addition |
| m | the modulus |
Definition at line 60 of file ArithmeticMod.java.
|
static |
Computes \((a \times s + c) \bmod m\).
Works also if s or c are negative. The result is always positive (and thus always between 0 and m - 1).
| a | the first factor of the multiplication |
| s | the second factor of the multiplication |
| c | the second term of the addition |
| m | the modulus |
Definition at line 204 of file ArithmeticMod.java.
|
static |
Computes \((a \times s + c) \bmod m\).
Works also if s or c are negative. The result is always positive (and thus always between 0 and m - 1).
| a | the first factor of the multiplication |
| s | the second factor of the multiplication |
| c | the second term of the addition |
| m | the modulus |
Definition at line 335 of file ArithmeticMod.java.