| Peter Bruin on Sat, 10 Oct 2015 09:28:57 +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 |
Bonjour, Peter Bruin <P.J.Bruin@math.leidenuniv.nl> wrote: > The functions digits(x,b) and fromdigits(x,b) are currently not very > fast when b is a power of 2. I am attaching a patch (digits_2k.patch) > that contains > > - reimplementations of binary_2k, binary_2k_zv > - new functions fromdigits_2k, fromdigits_2k_zv > - a 2-line addition to fromdigits to use the new fromdigits_2k [...] > The only thing that is still missing is the documentation for the new > functions fromdigits_2k and fromdigits_2k_zv. The documentation for the new functions is in the attached file doc_fromdigits.patch. In the process I found a few typos, which are fixed in doc_typos.patch. Thanks, Peter
commit 925a49c3139f115ce41849567a00c4da8da16396
Author: Peter Bruin <P.J.Bruin@math.leidenuniv.nl>
Date: Sat Oct 10 09:20:55 2015 +0200
document fromdigits_2k, fromdigits_2k_zv
diff --git a/doc/usersch5.tex b/doc/usersch5.tex
index 46637f3..a7801c5 100644
--- a/doc/usersch5.tex
+++ b/doc/usersch5.tex
@@ -2347,7 +2347,7 @@ shifts the mantissa
$$f, s[m], s[m+1],\ldots s[M]$$
right by $n$ bits.
-\subsec{From \typ{INT} to bits}
+\subsec{From \typ{INT} to bits or digits in base $2^k$ and back}
\fun{GEN}{binary_zv}{GEN x} given a \typ{INT} $x$, return a \typ{VECSMALL} of
bits, from most significant to least significant.
@@ -2368,6 +2368,15 @@ proper \kbd{GEN}), return the integer $\sum_{i = 1}^l x[i] 2^{l-i}$, as a
\fun{ulong}{bits_to_u}{GEN v, long l} same as \tet{bits_to_int}, where
$l < \tet{BITS_IN_LONG}$, so we can return an \kbd{ulong}.
+\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$.
commit dd0de7650c09310dff719360ee0c8ef92818e621
Author: Peter Bruin <P.J.Bruin@math.leidenuniv.nl>
Date: Sat Oct 10 09:21:07 2015 +0200
typos in doc
diff --git a/doc/usersch5.tex b/doc/usersch5.tex
index a7801c5..003fd5f 100644
--- a/doc/usersch5.tex
+++ b/doc/usersch5.tex
@@ -2358,7 +2358,7 @@ most significant to least significant.
\fun{GEN}{binary_2k_zv}{GEN x, long k} given a \typ{INT} $x$, and $0 < k <
\tet{BITS_IN_LONG}$, return a \typ{VECSMALL} of digits of $x$ in base $2^k$, as
-\typ{ulong}s, from most significant to least significant.
+\kbd{long}s, from most significant to least significant.
\fun{GEN}{bits_to_int}{GEN x, long l} given a vector $x$ of $l$ bits (as a
\typ{VECSMALL} or even a pointer to a part of a larger vector, so not a
@@ -2910,11 +2910,11 @@ computes the Euclidean quotient and remainder of $x$ by $y$. As
\kbd{sdivss\_rem} otherwise.
\fun{GEN}{divsi_rem}{long s, GEN y, long *r} computes the Euclidean quotient
-and remainder of the \typ{long}~\kbd{s} by the \kbd{GEN}~\kbd{y}. As
+and remainder of the \kbd{long}~\kbd{s} by the \kbd{GEN}~\kbd{y}. As
\kbd{sdivss\_rem} otherwise.
\fun{GEN}{divss_rem}{long x, long y, long *r} computes the Euclidean quotient
-and remainder of the \typ{long}~\kbd{x} by the \kbd{long}~\kbd{y}. As
+and remainder of the \kbd{long}~\kbd{x} by the \kbd{long}~\kbd{y}. As
\kbd{sdivss\_rem} otherwise.
\smallskip
\fun{GEN}{truedvmdii}{GEN x, GEN y, GEN *r}, as \kbd{dvmdii} but with a