haar_lib/num/total_f64/
mod.rs

1//! 全順序を実装した`f64`
2
3use crate::impl_from;
4use crate::impl_one_zero;
5use crate::impl_ops;
6use crate::num::one_zero::*;
7
8use std::cmp::Ordering;
9
10/// 全順序を実装した`f64`
11#[derive(Clone, Copy, Debug, PartialEq, Default)]
12pub struct Totalf64(pub f64);
13
14impl PartialOrd for Totalf64 {
15    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
16        Some(self.cmp(other))
17    }
18}
19
20impl Eq for Totalf64 {}
21impl Ord for Totalf64 {
22    fn cmp(&self, other: &Self) -> Ordering {
23        self.0.partial_cmp(&other.0).unwrap()
24    }
25}
26
27impl_ops!(Add for Totalf64, |s: Self, rhs: Self| Self(s.0 + rhs.0));
28impl_ops!(Sub for Totalf64, |s: Self, rhs: Self| Self(s.0 - rhs.0));
29impl_ops!(Mul for Totalf64, |s: Self, rhs: Self| Self(s.0 * rhs.0));
30impl_ops!(Div for Totalf64, |s: Self, rhs: Self| Self(s.0 / rhs.0));
31
32impl_ops!(AddAssign for Totalf64, |s: &mut Self, rhs: Self| s.0 += rhs.0);
33impl_ops!(SubAssign for Totalf64, |s: &mut Self, rhs: Self| s.0 -= rhs.0);
34impl_ops!(MulAssign for Totalf64, |s: &mut Self, rhs: Self| s.0 *= rhs.0);
35impl_ops!(DivAssign for Totalf64, |s: &mut Self, rhs: Self| s.0 /= rhs.0);
36
37impl_ops!(Neg for Totalf64, |s: Self| Self(-s.0));
38
39impl_from!(f64 => Totalf64, Self);
40impl_from!(f32 => Totalf64, |value| Self(value as f64));
41impl_from!(Totalf64 => f64, |value: Totalf64| value.0);
42
43impl_one_zero!(Totalf64; one: Self(1.0); zero: Self(0.0););