1#[macro_export]
26macro_rules! assert_ne_float {
27 (@standard $left:ident, $right:ident, $error:ident) => {
28 {
29 use $crate::FloatExt as _;
30
31 let d_abs = ($left - $right).abs();
32
33 if $left == $right || d_abs < $error {
34 panic!(
35 "assertion failed: `(left != right)`\n left: `{:?}`,\n right: `{:?}`\n diff: `{:?}`\n error: `{:?}`",
36 $left,
37 $right,
38 d_abs,
39 $error,
40 );
41 }
42 }
43 };
44 (@custom $left:ident, $right:ident, $error:ident; $($arg:tt)+) => {
45 {
46 use $crate::FloatExt as _;
47
48 let d_abs = ($left - $right).abs();
49
50 if $left == $right || d_abs < $error {
51 panic!($($arg)+);
52 }
53 }
54 };
55 ($left:expr, $right:expr $(,)?) => {{
56 let left = $left;
57 let right = $right;
58 let error = $crate::get_error(left, right);
59
60 $crate::assert_ne_float!(@standard left, right, error);
61 }};
62 ($left:expr, $right:expr; $($arg:tt)+) => {{
63 let left = $left;
64 let right = $right;
65 let error = $crate::get_error(left, right);
66
67 $crate::assert_ne_float!(@custom left, right, error; $($arg)+);
68 }};
69 ($left:expr, $right:expr, $error:expr $(,)?) => {{
70 let left = $left;
71 let right = $right;
72 let error = $error;
73
74 $crate::assert_ne_float!(@standard left, right, error);
75 }};
76 ($left:expr, $right:expr, $error:expr; $($arg:tt)+) => {{
77 let left = $left;
78 let right = $right;
79 let error = $error;
80
81 $crate::assert_ne_float!(@custom left, right, error; $($arg)+);
82 }};
83}
84
85#[macro_export]
94macro_rules! debug_assert_ne_float {
95 ($left:expr, $right:expr $(,)?) => {
96 #[cfg(debug_assertions)]
97 $crate::assert_ne_float!($left, $right);
98 };
99 ($left:expr, $right:expr; $($arg:tt)+) => {
100 #[cfg(debug_assertions)]
101 $crate::assert_ne_float!($left, $right; $($arg)+);
102 };
103 ($left:expr, $right:expr, $error:expr $(,)?) => {
104 #[cfg(debug_assertions)]
105 $crate::assert_ne_float!($left, $right, $error);
106 };
107 ($left:expr, $right:expr, $error:expr; $($arg:tt)+) => {
108 #[cfg(debug_assertions)]
109 $crate::assert_ne_float!($left, $right, $error; $($arg)+);
110 };
111}