use crate::algebra::operator::{Additive, Multiplicative, Operator};
use crate::{BFloat16, Float106};
pub trait Commutative<O: Operator> {}
impl Commutative<Multiplicative> for f32 {}
impl Commutative<Multiplicative> for f64 {}
impl Commutative<Multiplicative> for Float106 {}
impl Commutative<Multiplicative> for BFloat16 {}
impl Commutative<Multiplicative> for i8 {}
impl Commutative<Multiplicative> for i16 {}
impl Commutative<Multiplicative> for i32 {}
impl Commutative<Multiplicative> for i64 {}
impl Commutative<Multiplicative> for i128 {}
impl Commutative<Multiplicative> for isize {}
impl Commutative<Multiplicative> for u8 {}
impl Commutative<Multiplicative> for u16 {}
impl Commutative<Multiplicative> for u32 {}
impl Commutative<Multiplicative> for u64 {}
impl Commutative<Multiplicative> for u128 {}
impl Commutative<Multiplicative> for usize {}
impl Commutative<Additive> for f32 {}
impl Commutative<Additive> for f64 {}
impl Commutative<Additive> for Float106 {}
impl Commutative<Additive> for BFloat16 {}
impl Commutative<Additive> for i8 {}
impl Commutative<Additive> for i16 {}
impl Commutative<Additive> for i32 {}
impl Commutative<Additive> for i64 {}
impl Commutative<Additive> for i128 {}
impl Commutative<Additive> for isize {}
impl Commutative<Additive> for u8 {}
impl Commutative<Additive> for u16 {}
impl Commutative<Additive> for u32 {}
impl Commutative<Additive> for u64 {}
impl Commutative<Additive> for u128 {}
impl Commutative<Additive> for usize {}
impl Commutative<Additive> for deep_causality_num::Gf2 {}
impl Commutative<Multiplicative> for deep_causality_num::Gf2 {}