This measures times for nmod dot product, in three variants:
nmod_vec_dot itself, sum_i u[i] * v[i]
nmod_vec_dot_rev which does a convolution sum_i u[i] * v[n-1-i]
the macro NMOD_VEC_DOT which allows for more general expressions.
Making changes in the dot product can have impacts that are not easily measured through the above functions. So this also measures times for functions with intensive use of dot products:
matrix-matrix product (classical algorithm) and matrix-vector product
matrix triangular solve
polynomial multiplication, truncated inversion, and exponential.
For each function, this shows benchmark results for a dozen of relevant lengths, this for a dozen of relevant modulus sizes. Depending on the number of parameters one can launch all; or pick the function; or the function and the bitsize; or the function and the bitsize and the length.
This measures times for nmod dot product, in three variants:
nmod_vec_dot
itself,sum_i u[i] * v[i]
nmod_vec_dot_rev
which does a convolutionsum_i u[i] * v[n-1-i]
NMOD_VEC_DOT
which allows for more general expressions.Making changes in the dot product can have impacts that are not easily measured through the above functions. So this also measures times for functions with intensive use of dot products:
For each function, this shows benchmark results for a dozen of relevant lengths, this for a dozen of relevant modulus sizes. Depending on the number of parameters one can launch all; or pick the function; or the function and the bitsize; or the function and the bitsize and the length.