## [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 />