1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#[derive(PartialEq, Clone, Debug)]
pub enum Sign {
    Positive,
    Negative,
}

impl Default for Sign {
    fn default() -> Self {
        Sign::Positive
    }
}

impl Sign {
    pub(crate) fn neg(&self) -> Sign {
        match self {
            Sign::Positive => Sign::Negative,
            Sign::Negative => Sign::Positive,
        }
    }

    pub(crate) fn mul(&self, other: &Sign) -> Sign {
        match (self, other) {
            (&Sign::Positive, &Sign::Negative) => Sign::Negative,
            (&Sign::Negative, &Sign::Positive) => Sign::Negative,
            _ => Sign::Positive,
        }
    }
     /*
    pub(crate) fn pow(&self, y: u64) -> Sign {
        if self == &Sign::Negative && y % 2 == 1 {
            Sign::Negative
        } else {
            Sign::Positive
        }
    }
    */
}