## [arkworks benchmark] Precomputations Through Affine Coordinates
- [double_line](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/g2.rs#L54)
- input affine point $T$ (<span style="color:red">not just projective point anymore</span>)
- output doubled $T$, and two line parameters $(\alpha, \beta)$ satisfying $y = \alpha \cdot x + \beta$, where $\alpha = \frac{3 \cdot x^3}{2 \cdot y}$, and $\beta = y - \alpha \cdot x$
- [add_line](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/g2.rs#L73)
- input affine point $T$ and $Q$ (<span style="color:red">not just projective point anymore</span>)
- output added $T$, and two line parameters $(\alpha, \beta)$ satisfying $y = \alpha \cdot x + \beta$, where $\alpha = \frac{y_2 - y_1}{x_2 - x_1}$, and $\beta = y - \alpha \cdot x$
- [ell](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/mod.rs#L214)
- input accumulator $f$, line parameters $(\alpha, \beta)$, and precomputed point parameter $x_P', y_P'$ (<span style="color:red">not just point $P$ anymore</span>)
- output accumulated $f$
$$
f = f \cdot f'
$$
where it's compromised of two steps:
- further more specially for line function evaluation $f'$
$$
f' = y_P' \cdot g_{2T}(P) = 1 + \alpha \cdot x_P' \cdot \omega + \beta \cdot y_P' \cdot \omega^3
$$
where $x_P' = \frac{-x_P}{y_P}$, and $y_P' = \frac{1}{y_P}$ are precomputated in advance
- accumulate $f'$ uppon $f$
$$
f = f \cdot f'
$$
where $f$ is defined over $F_{p^{12}}$, $f'$ is defined over $F_{p^6}$
- [miller loop](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/mod.rs#L51)
transform $P$ into its precomputed variant parameters
<br />
## [bitvm fflonk verifier] Precomputations Through Affine Coordinates
change computation mode into verification mode
<br />
## [bitvm groth16 verifier] Add Non-fixed Support Based on fflonk verifier
assertion for non-fixed points
<br />