pub trait Scalar: Copy {
const ZERO: Self;
const NEARLY_ZERO: Self;
const ONE: Self;
const HALF: Self;
// Required methods
fn nearly_equal(
x: scalar,
y: scalar,
tolerance: impl Into<Option<scalar>>
) -> bool;
fn nearly_zero(&self, tolerance: impl Into<Option<scalar>>) -> bool;
}