This is an element of $\mathbb{G}_1$ represented in the affine coordinate space.
It is ideal to keep elements in this representation to reduce memory usage and
improve performance through the use of mixed curve model arithmetic.

This is an element of $\mathbb{G}_2$ represented in the affine coordinate space.
It is ideal to keep elements in this representation to reduce memory usage and
improve performance through the use of mixed curve model arithmetic.

This structure contains cached computations pertaining to a $\mathbb{G}_2$
element as part of the pairing function (specifically, the Miller loop) and
so should be computed whenever a $\mathbb{G}_2$ element is being used in
multiple pairings or is otherwise known in advance. This should be used in
conjunction with the multi_miller_loop
function provided by this crate.

Represents results of a Miller loop, one of the most expensive portions
of the pairing function. MillerLoopResults cannot be compared with each
other until .final_exponentiation() is called, which is also expensive.