use core::cmp::max;
-use core::fmt::{Debug, Formatter};
+use core::fmt::{Debug, Display, Formatter};
use core::ops::{Add, Sub, Mul};
type Word = u64; // element type of the vectors we use
}
}
+impl Display for FiniteNimber {
+ fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), core::fmt::Error> {
+ if self.to_ref().level() < WORDLEVELS && self.0[0] < 10 {
+ write!(f, "*{}", self.0[0])
+ } else {
+ write!(f, "*0x")?;
+ let mut started = false;
+ for v in self.0.iter().rev() {
+ if started {
+ write!(f, "{:016x}", v)?;
+ } else if *v != 0 {
+ write!(f, "{:x}", v)?;
+ started = true;
+ }
+ }
+ if !started {
+ write!(f, "0")?;
+ }
+ Ok(())
+ }
+ }
+}
+
impl<'a> FiniteNimberRef<'a> {
fn zero() -> Self {
OneWord(0)