#![allow(dead_code)]
use crate::iso::witness::Iso;
use crate::utils_tests::utils_iso_tests::FloatWrap;
pub struct IdWitness;
impl Iso<FloatWrap, f64> for IdWitness {
fn to_target(s: FloatWrap) -> f64 {
f64::from(s)
}
fn to_source(t: f64) -> FloatWrap {
FloatWrap::from(t)
}
}
impl crate::iso::witness::GroupIso<FloatWrap, f64> for IdWitness {}
impl crate::iso::witness::RingIso<FloatWrap, f64> for IdWitness {}
impl crate::iso::witness::FieldIso<FloatWrap, f64> for IdWitness {}
impl crate::iso::witness::AlgebraIso<FloatWrap, f64, f64> for IdWitness {}
impl crate::iso::witness::DivisionAlgebraIso<FloatWrap, f64, f64> for IdWitness {}
pub struct BadWitness;
impl Iso<FloatWrap, f64> for BadWitness {
fn to_target(s: FloatWrap) -> f64 {
s.0 + 1.0
}
fn to_source(t: f64) -> FloatWrap {
FloatWrap(t - 1.0)
}
}
impl crate::iso::witness::GroupIso<FloatWrap, f64> for BadWitness {}
impl crate::iso::witness::RingIso<FloatWrap, f64> for BadWitness {}
impl crate::iso::witness::FieldIso<FloatWrap, f64> for BadWitness {}
impl crate::iso::witness::AlgebraIso<FloatWrap, f64, f64> for BadWitness {}
impl crate::iso::witness::DivisionAlgebraIso<FloatWrap, f64, f64> for BadWitness {}
pub struct BadReverseWitness;
impl Iso<FloatWrap, f64> for BadReverseWitness {
fn to_target(s: FloatWrap) -> f64 {
s.0
}
fn to_source(_: f64) -> FloatWrap {
FloatWrap(0.0)
}
}
pub struct AbsReverseWitness;
impl Iso<FloatWrap, f64> for AbsReverseWitness {
fn to_target(s: FloatWrap) -> f64 {
s.0
}
fn to_source(t: f64) -> FloatWrap {
FloatWrap(t.abs())
}
}
pub struct DoubleWitness;
impl Iso<FloatWrap, f64> for DoubleWitness {
fn to_target(s: FloatWrap) -> f64 {
s.0 * 2.0
}
fn to_source(t: f64) -> FloatWrap {
FloatWrap(t / 2.0)
}
}
impl crate::iso::witness::GroupIso<FloatWrap, f64> for DoubleWitness {}
impl crate::iso::witness::RingIso<FloatWrap, f64> for DoubleWitness {}