pub trait PairingIntrinsics {
type Fp: Field + IntMod;
type Fp2: Field + FieldExtension<Self::Fp> + ComplexConjugate;
type Fp12: FieldExtension<Self::Fp2> + ComplexConjugate;
const PAIRING_IDX: usize;
const XI: Self::Fp2;
const FROBENIUS_COEFFS: [[Self::Fp2; 5]; 12];
}
Required Associated Constants§
Sourceconst PAIRING_IDX: usize
const PAIRING_IDX: usize
Index for custom intrinsic opcode determination.
Sourceconst XI: Self::Fp2
const XI: Self::Fp2
The sextic extension Fp12
is Fp2[X] / (X^6 - \xi)
, where \xi
is a non-residue.
Sourceconst FROBENIUS_COEFFS: [[Self::Fp2; 5]; 12]
const FROBENIUS_COEFFS: [[Self::Fp2; 5]; 12]
Multiplication constants for the Frobenius map for coefficients in Fp2 c1..=c5 for powers 0..12 FROBENIUS_COEFFS[i][j] = \xi^{(j + 1) * (p^i - 1)/6} when p = 1 (mod 6)
Required Associated Types§
type Fp: Field + IntMod
type Fp2: Field + FieldExtension<Self::Fp> + ComplexConjugate
type Fp12: FieldExtension<Self::Fp2> + ComplexConjugate
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.