# py_ecc.optimized_bn128 package

## Submodules

## py_ecc.optimized_bn128.optimized_curve module

py_ecc.optimized_bn128.optimized_curve.add(p1: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], p2: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_curve.double(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_curve.eq(p1: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], p2: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → bool

py_ecc.optimized_bn128.optimized_curve.is_inf(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → bool

py_ecc.optimized_bn128.optimized_curve.is_on_curve(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], b: Optimized_Field) → bool

py_ecc.optimized_bn128.optimized_curve.multiply(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], n: int) → Tuple[Optimized_Field, Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_curve.neg(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_curve.normalize(pt: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_curve.twist(pt: Tuple[optimized_bn128_FQP, optimized_bn128_FQP, optimized_bn128_FQP]) → Tuple[optimized_bn128_FQ12, optimized_bn128_FQ12, optimized_bn128_FQ12]

## py_ecc.optimized_bn128.optimized_pairing module

py_ecc.optimized_bn128.optimized_pairing.cast_point_to_fq12(pt: Tuple[optimized_bn128_FQ, optimized_bn128_FQ, optimized_bn128_FQ]) → Tuple[optimized_bn128_FQ12, optimized_bn128_FQ12, optimized_bn128_FQ12]

py_ecc.optimized_bn128.optimized_pairing.final_exponentiate(p: Optimized_Field) → Optimized_Field

py_ecc.optimized_bn128.optimized_pairing.linefunc(P1: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], P2: Tuple[Optimized_Field, Optimized_Field, Optimized_Field], T: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_pairing.miller_loop(Q: Tuple[optimized_bn128_FQ12, optimized_bn128_FQ12, optimized_bn128_FQ12], P: Tuple[optimized_bn128_FQ12, optimized_bn128_FQ12, optimized_bn128_FQ12], final_exponentiate: bool = True) → optimized_bn128_FQ12

py_ecc.optimized_bn128.optimized_pairing.normalize1(p: Tuple[Optimized_Field, Optimized_Field, Optimized_Field]) → Tuple[Optimized_Field, Optimized_Field, Optimized_Field]

py_ecc.optimized_bn128.optimized_pairing.pairing(Q: Tuple[optimized_bn128_FQ2, optimized_bn128_FQ2, optimized_bn128_FQ2], P: Tuple[optimized_bn128_FQ, optimized_bn128_FQ, optimized_bn128_FQ], final_exponentiate: bool = True) → optimized_bn128_FQ12

## Module contents