pub fn kernel<E>() -> String
where
    E: Engine,
{
    return String::from(format!(
        "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}",
        DEFS_SRC,
        field::<E::Fr>("Fr"),
        fft("Fr"),
        exponent::<E::Fr>("Exp"),
        field::<E::Fq>("Fq"),
        ec("Fq", "G1"),
        multiexp("G1", "Exp"),
        field2("Fq2", "Fq"),
        ec("Fq2", "G2"),
        multiexp("G2", "Exp")
    ));
}
// WARNING: This function works only with Short Weierstrass Jacobian curves with Fq2 extension field.
This function works only with Short Weierstrass Jacobian curves with Fq2 extension field.
This function works only with Short Weierstrass Jacobian curves with Fq2 extension field .
pub fn kernel<E>() -> String
where
    E: Engine,
{
    return String::from(format!(
        "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}",
        DEFS_SRC,
        field::<E::Fr>("Fr"),
        fft("Fr"),
        exponent::<E::Fr>("Exp"),
        field::<E::Fq>("Fq"),
        ec("Fq", "G1"),
        multiexp("G1", "Exp"),
        field2("Fq2", "Fq"),
        ec("Fq2", "G2"),
        multiexp("G2", "Exp")
    ));
}
pub fn kernel < E > ( ) -> String where E : Engine , { return String :: from ( format ! ( " \n \n \n \n \n \n \n \n \n " DEFS_SRC field E Fr ( " " ) fft ( " " ) exponent E Fr ( " " ) field E Fq ( " " ) ec ( " " " " ) multiexp ( " " " " ) field2 ( " " " " ) ec ( " " " " ) multiexp ( " " " " ) ) ) ; }
WARNING: This function works only with Short Weierstrass Jacobian curves with Fq2 extension field.
WARNING : This function works only with Short Weierstrass Jacobian curves with Fq2 extension field .