Bill Allombert on Sat, 24 Oct 2015 14:16:49 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Faster digits and fromdigits in base 2^k, and FlxqM_mul_Kronecker


On Sat, Oct 10, 2015 at 09:29:53AM +0200, Peter Bruin wrote:
> +\fun{GEN}{fromdigits_2k}{GEN x, long k} converse of \tet{binary_2k};
> +given a \typ{VEC} $x$ of length $l$ and a positive \kbd{long} $k$,
> +where each $x[i]$ is a \typ{INT} with $0\leq x[i] < 2^k$, return the
> +integer $\sum_{i = 1}^l x[i] 2^{k(l-i)}$, as a \typ{INT}.
> +
> +\fun{GEN}{fromdigits_2k_zv}{GEN x, long k} as \tet{fromdigits_2k}, but
> +with $x$ being a \typ{VECSMALL} and each $x[i]$ being a \kbd{long}
> +with $0\leq x[i] < 2^k$; here $k$ may be any positive \kbd{long}.
> +
>  \subsec{Integer valuation}
>  For integers $x$ and $p$, such that $x\neq 0$ and $|p| > 1$, we define
>  $v_p(x)$ to be the largest integer exponent $e$ such that $p^e$ divides $x$.

Hello Peter,

In the documentation of fromdigits_2k_zv:

as I understand, x[i] is treated as a ulong, and not as a long.
The meaning of "here $k$ may be any positive \kbd{long}." should be clarified
to be more explicit when k is equal or larger than BITS_IN_LONG

But more importantly, the fromdigits_2k_zv should be called zv_fromdigits_2k, because
the input is a zv and not the output.

And in fact, more accurately, it should be nv_fromdigits_2k because the entries
are treated as unsigned.
(the original functions binary_2k_zv and  binary_zv have the same problem)

Cheers,
Bill.