macro_rules! assert_flt_eq {
($left:expr, $right:expr) => {
match (format!("{:.8}", &$left), format!("{:.8}", &$right)) {
(left_val, right_val) => {
assert_eq!(left_val, right_val)
}
}
};
($left:expr, $right:expr, precision = $precision:expr) => {
match (format!("{:.1$}", &$left, $precision), format!("{:.1$}", &$right, $precision)) {
(left_val, right_val) => {
assert_eq!(left_val, right_val);
}
}
};
($left:expr, $right:expr, $($arg:tt)+) => {
match (format!("{:.8}", &$left), format!("{:.8}", &$right)) {
(left_val, right_val) => {
assert_eq!(left_val, right_val, format_args!($($arg)+));
}
}
};
($left:expr, $right:expr, precision = $precision:expr, $($arg:tt)+) => {
match (format!("{:.1$}", &$left, $precision), format!("{:.1$}", &$right, $precision)) {
(left_val, right_val) => {
assert_eq!(left_val, right_val, format_args!($($arg)+));
}
}
};
}
macro_rules! assert_flt_ne {
($left:expr, $right:expr) => {
match (format!("{:.8}", &$left), format!("{:.8}", &$right)) {
(left_val, right_val) => {
assert_ne!(left_val, right_val)
}
}
};
($left:expr, $right:expr, precision = $precision:expr) => {
match (format!("{:.1$}", &$left, $precision), format!("{:.1$}", &$right, $precision)) {
(left_val, right_val) => {
assert_ne!(left_val, right_val);
}
}
};
($left:expr, $right:expr, $($arg:tt)+) => {
match (format!("{:.8}", &$left), format!("{:.8}", &$right)) {
(left_val, right_val) => {
assert_ne!(left_val, right_val, format_args!($($arg)+));
}
}
};
($left:expr, $right:expr, precision = $precision:expr, $($arg:tt)+) => {
match (format!("{:.1$}", &$left, $precision), format!("{:.1$}", &$right, $precision)) {
(left_val, right_val) => {
assert_ne!(left_val, right_val, format_args!($($arg)+));
}
}
};
}
pub(crate) use assert_flt_eq;
pub(crate) use assert_flt_ne;