diff options
author | Jason Gross <jagro@google.com> | 2018-06-26 14:11:49 -0400 |
---|---|---|
committer | Jason Gross <jagro@google.com> | 2018-06-26 14:11:49 -0400 |
commit | bdb73e3541400f7197fb683eb5f140c62d749ad8 (patch) | |
tree | fc85b2b27e927d97f9d97e2e58c5fcef4215f8ad /src/Util/ZUtil | |
parent | 6d3702edad1a69a08565a288f1153b4853ba3b25 (diff) |
Add Z.bneg, Z.lneg
Diffstat (limited to 'src/Util/ZUtil')
-rw-r--r-- | src/Util/ZUtil/Definitions.v | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Util/ZUtil/Definitions.v b/src/Util/ZUtil/Definitions.v index 373c71763..82b065394 100644 --- a/src/Util/ZUtil/Definitions.v +++ b/src/Util/ZUtil/Definitions.v @@ -76,4 +76,16 @@ Module Z. := if s =? 2^Z.log2 s then mul_split_at_bitwidth (Z.log2 s) x y else ((x * y) mod s, (x * y) / s). + + (** Boolean negation *) + Definition bneg (v : Z) : Z + := if dec (v = 0) then 1 else 0. + + (** Logical negation, modulo a bitwidth *) + Definition lneg (bitwidth : Z) (v : Z) : Z + := (-v) mod 2^bitwidth. + Definition lneg_full (s : Z) (v : Z) : Z + := if s =? 2^Z.log2 s + then lneg (Z.log2 s) v + else (-v) mod s. End Z. |