use num_complex::Complex;
use num_traits::{Float, FloatConst, FromPrimitive, One, Signed, Zero};
use rustdct::DctNum;
use std::fmt::Debug;
use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Sub, SubAssign};
pub trait FloatNum: Float
+ FloatConst
+ Debug
+ Send
+ Sync
+ Signed
+ FromPrimitive
+ DctNum
+ MulAssign
+ DivAssign
+ AddAssign
+ SubAssign
{
}
impl FloatNum for f32 {}
impl FloatNum for f64 {}
pub trait ScalarNum:
'static
+ Copy
+ Zero
+ One
+ Debug
+ Send
+ Sync
+ FromPrimitive
+ Add<Output = Self>
+ Sub<Output = Self>
+ Mul<Output = Self>
+ Div<Output = Self>
+ MulAssign
+ DivAssign
+ AddAssign
+ SubAssign
{
}
impl ScalarNum for f32 {}
impl ScalarNum for f64 {}
impl ScalarNum for Complex<f32> {}
impl ScalarNum for Complex<f64> {}