@@ -126,46 +126,6 @@ _fmpz_vec_scalar_addmul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c)
126126 fmpz_addmul_ui (vec1 + ix , vec2 + ix , c );
127127}
128128
129- void
130- _fmpz_vec_scalar_divexact_fmpz (fmpz * vec1 , const fmpz * vec2 ,
131- slong len2 , const fmpz_t x )
132- {
133- fmpz c = * x ;
134-
135- if (!COEFF_IS_MPZ (c ))
136- {
137- if (c == 1 )
138- _fmpz_vec_set (vec1 , vec2 , len2 );
139- else if (c == -1 )
140- _fmpz_vec_neg (vec1 , vec2 , len2 );
141- else
142- _fmpz_vec_scalar_divexact_si (vec1 , vec2 , len2 , c );
143- }
144- else
145- {
146- slong i ;
147- for (i = 0 ; i < len2 ; i ++ )
148- fmpz_divexact (vec1 + i , vec2 + i , x );
149- }
150- }
151-
152- void
153- _fmpz_vec_scalar_divexact_si (fmpz * vec1 , const fmpz * vec2 , slong len2 , slong c )
154- {
155- slong i ;
156- for (i = 0 ; i < len2 ; i ++ )
157- fmpz_divexact_si (vec1 + i , vec2 + i , c );
158- }
159-
160- void
161- _fmpz_vec_scalar_divexact_ui (fmpz * vec1 , const fmpz * vec2 ,
162- slong len2 , ulong c )
163- {
164- slong i ;
165- for (i = 0 ; i < len2 ; i ++ )
166- fmpz_divexact_ui (vec1 + i , vec2 + i , c );
167- }
168-
169129void
170130_fmpz_vec_scalar_fdiv_q_2exp (fmpz * vec1 , const fmpz * vec2 , slong len2 ,
171131 ulong exp )
@@ -209,6 +169,8 @@ _fmpz_vec_scalar_fdiv_r_2exp(fmpz * vec1, const fmpz * vec2, slong len2,
209169 fmpz_fdiv_r_2exp (vec1 + i , vec2 + i , exp );
210170}
211171
172+ /* todo: preinvert p when appropriate; or better, make sure we don't
173+ call this function in places where we have an fmpz_mod */
212174void _fmpz_vec_scalar_mod_fmpz (fmpz * res , const fmpz * vec , slong len , const fmpz_t p )
213175{
214176 slong i ;
@@ -267,6 +229,7 @@ _fmpz_vec_scalar_mul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c)
267229 fmpz_mul_ui (vec1 + i , vec2 + i , c );
268230}
269231
232+ /* todo: preinvert p when appropriate */
270233void _fmpz_vec_scalar_smod_fmpz (fmpz * res , const fmpz * vec , slong len , const fmpz_t p )
271234{
272235 slong i ;
0 commit comments