Charged calls to Chan–He collision counting #
The prime searches keep their parameters outside the counting workspace. Each of the three set arrays has a fixed pair of base/length registers and its own result register. This module charges argument setup and result delivery as well as the complete native counting routine.
Main definitions #
CountCall.program: a counting call on one of the three input arrays.
Main results #
CountCall.exec: exact collision count, memory frame and preserved caller registers.
Counting workspace in a larger, fixed register file.
Instances For
Length register for the selected set.
Instances For
Base register for the selected set.
Instances For
Residue scratch base.
Instances For
Histogram base.
Instances For
Encoded positive modulus.
Instances For
Collision-count output register for the selected set.
Instances For
Counting input base register.
Instances For
Counting scratch base register.
Instances For
Counting input length register.
Instances For
Counting encoded-modulus register.
Instances For
Counting histogram base register.
Instances For
Counting result register.
Instances For
Five runtime register copies deliver the counting arguments.
Instances For
A complete native count call, including argument and result copies.
Instances For
A native count call costs 34n+5M+24, including five argument copies and one result copy.
The mathematical input is an injective array enumeration, as required by the existing set-based
Chan–He collision count. All registers outside the workspace, except its chosen result, survive.