Canonical coset:
odd coset setup
CirclePointIndex is just a wrapper of usize, which represent actually the order of the coset generator.
when creating a new coset, we need a generator and shiftoffset, the shiftoffset mostly be the generator of the subgroup of one log size bigger
so here, CirclePointIndex::subgroup_gen is a domain of size one log bigger. it shift the generator of subgroup of log_size.
Talking about the structure of the coset
use group of 8 as example, the initial point is shifted by the group generator of size 16 group
\([w^0,w^1,w^2,w^3,w^4,w^5,w^6,w^7,w^8,\)
\(w^9,w^{10},w^{11},w^{12},w^{13},w^{14},w^{15}]\)
us \(w\) to shift the group that is created by \(w^2\)
group that is created by \([w^0, w^2,w^4,w^6,w^8,w^{10},w^{12},w^{14}]\)
then shift:
\([w^1,w^3,w^5,w^7,w^9,w^{11},w^{13},w^{15}]\)
Initial_index is the shifted generator
Now again look at what all these parameters means:
initial_index ——–> is the shiftoffset
initial ————-> the actual point
step_size ————–>non shifted group generator Index
step —————-> non shifted group generator point
log_size ——–> the size of the shifted set.