The fast search on byte-array masks #
Ratpoints.FastMask.fastPoints is Ratpoints.Fast.fastPoints with the bit masks and the rows of
the families held in byte arrays (Ratpoints.Mask) instead of natural numbers: the ANDs of a chunk
with the rows of a denominator are one call of the primitive Ratpoints.Mask.andRows, in place,
without the copies and allocations of an AND of two GMP integers, and the survivors come from the
primitive Ratpoints.Mask.nextSet. The reversal, the parameters, the families, the chunks, the
order of the loops and the exact check are those of Ratpoints.Fast.fastPoints; only the order of
the points in a chunk may differ. The shifts of the rows are multiples of 8 when the products of
the moduli are odd, as they are for every even step (Ratpoints.Fast.Family.shift), so that
Ratpoints.Mask.andRows reads whole bytes, and the rows of a denominator serve all its chunks in
turn. The data of the exact check is made once per denominator, when a chunk first leaves
candidates (Ratpoints.FastMask.pointsOfDenWith), and the mask of a part of a chunk is cut from
that of the chunk, in whole 64-bit words.
Main definitions #
Ratpoints.FastMask.fastPoints: the points, by the sieve on byte-array masks.
a repeated 2 ^ k times.
Equations
Instances For
Horner's rule by plain recursion (Ratpoints.BruteForce.horner with List.foldr, which
copies the list into an array at each call).
Equations
- Ratpoints.FastMask.hornerRec [] x✝ = 0
- Ratpoints.FastMask.hornerRec (a :: w) x✝ = a + x✝ * Ratpoints.FastMask.hornerRec w x✝
Instances For
The exact check of Ratpoints.BruteForce.pointsOfDen for the denominator z, with the scaled
coefficients w of z and the factor f (z for odd degree, else 1) made beforehand, and
Ratpoints.FastMask.hornerRec, and the gcd by Ratpoints.Fast.natGcd.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Ratpoints.BruteForce.pointsOfDen with Ratpoints.FastMask.hornerRec.
Equations
- Ratpoints.FastMask.pointsOfDen c d z xs = Ratpoints.FastMask.pointsOfDenWith (Ratpoints.BruteForce.scaledCoeffs c d z) (if d % 2 = 1 then z else 1) z xs
Instances For
The byte of the bits q[o], …, q[o + 7] (each 0 or 1).
Equations
Instances For
The bytes 1 or 0 of the entries T'[j g % m] for j from k to m + 7, pushed to acc,
where i = k g % m is the index of the first of them, stepped by g < m without a division.
Equations
Instances For
The bytes Ratpoints.FastMask.windowByte q o for i from i₀ to m - 1, with o = 8 i % m
carried along, pushed to acc.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The row of the modulus m for the residue r of the denominator, for the numerators
0, G, 2G, …, as a mask of nb bytes: bit j is set when the residues G j and r modulo m
allow a point (T = Ratpoints.Fast.admitTable c d m).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points with the denominator b in the chunk of the numerators a₀, a₀ + G, … with the
mask mask (one bit per numerator), by the sieve with the rows rs of b and the shifts sh
moved by o (Ratpoints.Mask.andRows), and the exact check with the scaled coefficients w of
b and the factor f (Ratpoints.FastMask.pointsOfDenWith), made when first needed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points with the denominator b in the part of the chunk of the len numerators
a₀, a₀ + G, … with the mask mask that holds those from lo to hi (as
Ratpoints.Fast.partPoints): the chunk with its mask when the part is the whole chunk, else the
part with the bytes of the mask from that of its first bit to the end of the 64-bit word of its
last.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points with the denominator b in the chunks sl, each with its mask (as
Ratpoints.Fast.denPoints: none when a row of b is zero); the scaled coefficients of b for the
exact check are made once, when first needed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points with the denominators dens, by the sieve with the region reg (as
Ratpoints.Fast.search); each chunk carries its mask of len bits, all set, padded to whole
64-bit words.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The parameters for the coefficients c of degree d, the height bound H and B
denominators (as Ratpoints.Fast.choose).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points of height at most H with their denominator in the range of bLow and bHigh,
each once, of the sieve on c itself (as Ratpoints.Fast.sievePoints).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The points of height at most H with their denominator in the range of bLow and
bHigh, each once (as Ratpoints.Fast.fastPoints, with the reversal of ratpoints
(Ratpoints.Fast.reversed): only such points in any case, and all of them assuming Sturm's
theorem).
Equations
- One or more equations did not get rendered due to their size.