CirclePoint
is computed as:
CanonicCoset
represents the full coset , while CircleDomain
is represented with its half coset .
Thus to compute the CircleDomain
from the CanonicCoset
, first calculate the half coset , which will be used to initialize the CircleDomain
as shown below:
CircleDomain
is canonic by checking the step size of the half coset against the initial coset offset.
In the CircleDomain
implementation, only the half coset is explicitly stored.
If CircleDomain
is canonic, must be a generator of the subgroup , which has order i.e. .
Recall that the generator of the subgroup is .
Thus, the step size between consecutive elements in the half coset is , and the initial point is .
Therefore, the ratio between the step size and the initial coset offset is:
This means that in a canonic coset, the step size is exactly four times the initial coset offset.
This condition is used to check whether a CircleDomain
is canonic, as shown below: