Home | History | Annotate | Download | only in generic

Lines Matching refs:M1

128 /* Multiply M by M1 from the right. Since the M1 elements fit in
132 mpn_hgcd_matrix_mul_1 (struct hgcd_matrix *M, const struct hgcd_matrix1 *M1,
139 n0 = mpn_hgcd_mul_matrix1_vector (M1, M->p[0][0], tp, M->p[0][1], M->n);
141 n1 = mpn_hgcd_mul_matrix1_vector (M1, M->p[1][0], tp, M->p[1][1], M->n);
148 /* Multiply M by M1 from the right. Needs 3*(M->n + M1->n) + 5 limbs
151 mpn_hgcd_matrix_mul (struct hgcd_matrix *M, const struct hgcd_matrix *M1,
156 /* About the new size of M:s elements. Since M1's diagonal elements
158 M->n + M1->n, one limb more or less. The computation of the
159 matrix product produces elements of size M->n + M1->n + 1. But
162 The reason that the product has normalized size >= M->n + M1->n -
163 2 is subtle. It depends on the fact that M and M1 can be factored
165 M ending with a large power and M1 starting with a large power of
171 ASSERT (M->n + M1->n < M->alloc);
176 ASSERT ((M1->p[0][0][M1->n-1] | M1->p[0][1][M1->n-1]
177 | M1->p[1][0][M1->n-1] | M1->p[1][1][M1->n-1]) > 0);
181 M1->p[0][0], M1->p[0][1],
182 M1->p[1][0], M1->p[1][1], M1->n, tp);
185 n = M->n + M1->n;