aboutsummaryrefslogtreecommitdiff
path: root/src/Util/ZUtil/CPS.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jagro@google.com>2018-06-26 13:23:40 -0400
committerGravatar Jason Gross <jagro@google.com>2018-06-26 13:23:40 -0400
commit6d3702edad1a69a08565a288f1153b4853ba3b25 (patch)
tree2bd599356721995432c4edf5f803f425024cf668 /src/Util/ZUtil/CPS.v
parentbaa585b4fce11c7ce4eb4493c98137fd87e74c0c (diff)
Slightly better definitions of some ZUtil functions
This way we can just directly reify most of the primitives we care about.
Diffstat (limited to 'src/Util/ZUtil/CPS.v')
-rw-r--r--src/Util/ZUtil/CPS.v14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/Util/ZUtil/CPS.v b/src/Util/ZUtil/CPS.v
index 3c0007c88..e2b21933b 100644
--- a/src/Util/ZUtil/CPS.v
+++ b/src/Util/ZUtil/CPS.v
@@ -121,14 +121,12 @@ Module Z.
Definition mul_split_at_bitwidth_cps {T} (bitwidth : Z) (x y : Z) (f : Z * Z -> T) : T
:= dlet xy := x * y in
- f (match bitwidth with
- | Z.pos _ | Z0 => Z.land xy (Z.ones bitwidth)
- | Z.neg _ => xy mod 2^bitwidth
- end,
- match bitwidth with
- | Z.pos _ | Z0 => Z.shiftr xy bitwidth
- | Z.neg _ => xy / 2^bitwidth
- end).
+ f (if Z.geb bitwidth 0
+ then Z.land xy (Z.ones bitwidth)
+ else xy mod 2^bitwidth,
+ if Z.geb bitwidth 0
+ then Z.shiftr xy bitwidth
+ else xy / 2^bitwidth).
Definition mul_split_at_bitwidth_cps_correct {T} (bitwidth : Z) (x y : Z) (f : Z * Z -> T)
: @mul_split_at_bitwidth_cps T bitwidth x y f = f (Z.mul_split_at_bitwidth bitwidth x y)
:= eq_refl.