# py_ecc.bn128 package

## Submodules

## py_ecc.bn128.bn128_curve module

py_ecc.bn128.bn128_curve.add(p1: Tuple[Field, Field] | None, p2: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bn128.bn128_curve.double(pt: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bn128.bn128_curve.eq(p1: Tuple[Field, Field] | None | Tuple[Field, Field, Field], p2: Tuple[Field, Field] | None | Tuple[Field, Field, Field]) → bool

py_ecc.bn128.bn128_curve.is_inf(pt: Tuple[Field, Field] | None | Tuple[Field, Field, Field]) → bool

py_ecc.bn128.bn128_curve.is_on_curve(pt: Tuple[Field, Field] | None, b: Field) → bool

py_ecc.bn128.bn128_curve.multiply(pt: Tuple[Field, Field] | None, n: int) → Tuple[Field, Field] | None

py_ecc.bn128.bn128_curve.neg(pt: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bn128.bn128_curve.twist(pt: Tuple[bn128_FQP, bn128_FQP] | None) → Tuple[bn128_FQ12, bn128_FQ12] | None

## py_ecc.bn128.bn128_pairing module

py_ecc.bn128.bn128_pairing.cast_point_to_fq12(pt: Tuple[bn128_FQ, bn128_FQ] | None) → Tuple[bn128_FQ12, bn128_FQ12] | None

py_ecc.bn128.bn128_pairing.final_exponentiate(p: Field) → Field

py_ecc.bn128.bn128_pairing.linefunc(P1: Tuple[Field, Field] | None, P2: Tuple[Field, Field] | None, T: Tuple[Field, Field] | None) → Field

py_ecc.bn128.bn128_pairing.miller_loop(Q: Tuple[bn128_FQ12, bn128_FQ12] | None, P: Tuple[bn128_FQ12, bn128_FQ12] | None) → bn128_FQ12

py_ecc.bn128.bn128_pairing.pairing(Q: Tuple[bn128_FQ2, bn128_FQ2] | None, P: Tuple[bn128_FQ, bn128_FQ] | None) → bn128_FQ12

## Module contents