use itertools::Itertools;
pub trait FieldExtensionName {
fn get_name() -> String;
}
impl FieldExtensionName for crate::algebra::field::binary::Gf2 {
fn get_name() -> String {
"GF2".to_string()
}
}
impl<P: crate::algebra::field::binary::gf2_ext::Gf2ExtParams, const K: usize> FieldExtensionName
for crate::algebra::field::binary::Gf2Ext<P, K>
{
fn get_name() -> String {
let poly = P::POLY_MOD_ONES
.iter()
.map(|k| format!("X^{k}"))
.join(" + ");
format!("GF(2^{}, 1 + {poly})", K * 64).to_string()
}
}
impl FieldExtensionName
for crate::algebra::elliptic_curve::ScalarField<
crate::algebra::elliptic_curve::Curve25519Ristretto,
>
{
fn get_name() -> String {
"Curve25519Ristretto_ScalarField".to_string()
}
}
impl FieldExtensionName
for crate::algebra::elliptic_curve::BaseField<
crate::algebra::elliptic_curve::Curve25519Ristretto,
>
{
fn get_name() -> String {
"Curve25519Ristretto_BaseField".to_string()
}
}
impl FieldExtensionName for crate::algebra::field::mersenne::Mersenne107 {
fn get_name() -> String {
"Mersenne107".to_string()
}
}