From bdb73e3541400f7197fb683eb5f140c62d749ad8 Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Tue, 26 Jun 2018 14:11:49 -0400 Subject: Add Z.bneg, Z.lneg --- src/Util/ZUtil/Definitions.v | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/Util/ZUtil') 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. -- cgit v1.2.3