From: Simon Tatham Date: Fri, 11 Apr 2025 18:24:31 +0000 (+0100) Subject: Trivially implement subtraction. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=5ac0d16f2a5ad34a517b5bbee67e0b69209af39b;p=nimber.git Trivially implement subtraction. --- diff --git a/src/finitenimber.rs b/src/finitenimber.rs index 5ea19da..7805ed5 100644 --- a/src/finitenimber.rs +++ b/src/finitenimber.rs @@ -1,6 +1,6 @@ use core::cmp::max; use core::fmt::{Debug, Formatter}; -use core::ops::{Add, Mul}; +use core::ops::{Add, Sub, Mul}; type Word = u64; // element type of the vectors we use const WORDLEVELS: usize = 6; // 2^{2^6} = 64 = size of Word @@ -269,6 +269,11 @@ impl<'a, 'b> Add> for FiniteNimberRef<'b> { } } +impl<'a, 'b> Sub> for FiniteNimberRef<'b> { + type Output = FiniteNimber; + fn sub(self, other: FiniteNimberRef<'a>) -> FiniteNimber { self + other } +} + impl<'a> FiniteNimberRef<'a> { fn mul_by_h(self, level: usize) -> FiniteNimber { match level.checked_sub(1) { @@ -314,6 +319,7 @@ impl<'a, 'b> Mul> for FiniteNimberRef<'b> { } impl_binop_wrappers!(Add, add); +impl_binop_wrappers!(Sub, sub); impl_binop_wrappers!(Mul, mul); #[cfg(test)]