cryptol/tests/issues/issue289.cry

31 lines
823 B
Plaintext
Raw Normal View History

2014-04-18 02:34:25 +04:00
average33 : [32] -> [32] -> [32]
average33 x y = drop`{1}(z'/2)
2016-02-19 21:08:20 +03:00
where
2014-04-18 02:34:25 +04:00
z' : [33]
z' = (0b0 # x) + (0b0 # y)
average1 : [32] -> [32] -> [32]
average1 x y = (x + y)/2
average2 : [32] -> [32] -> [32]
average2 x y = x/2 + y/2 + (x%2 && y%2)
average3 : [32] -> [32] -> [32]
average3 x y = (x + y) >> 1
average4 : [32] -> [32] -> [32]
average4 x y = (x >> 1) + (y >> 1) + (x && y && 1)
average5 : [32] -> [32] -> [32]
average5 x y = lo + ((hi - lo)>>1) where
lo = min x y
hi = max x y
property av1 x y = average33 x y == average1 x y
property av2 x y = average33 x y == average2 x y
property av3 x y = average33 x y == average3 x y
property av4 x y = average33 x y == average4 x y
property av5 x y = average33 x y == average5 x y
property applesOranges x y = average4 x y == average5 x y