mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-09-21 02:48:14 +03:00
33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
module FloatTests where
|
|
|
|
import Float
|
|
|
|
section : {n} fin n => [n][8] -> [78][8]
|
|
section x = "-- " # take`{min 60 n} x # repeat '-'
|
|
|
|
type Small = Float 3 2
|
|
type Medium = Float64
|
|
type Large = Float 60 5000
|
|
|
|
property roundTrip x = fpFromBits (fpToBits x) =.= x
|
|
|
|
roundTrip2 : {e : #, p : #} (fin e, fin p, ValidFloat e p) => [e + p] -> Bool
|
|
property roundTrip2 x = fpToBits num == x \/ num =.= fpNaN
|
|
where num = fpFromBits x : Float e p
|
|
property eqRefl1 x = x =.= x
|
|
property eqRefl2 x = x == x \/ x =.= fpNaN
|
|
property eqProp x y = ~(x == y) \/
|
|
(x =.= y \/ x =.= fpNaN
|
|
\/ y =.= fpNaN
|
|
\/ (x =.= 0.0 /\ y =.= -0.0)
|
|
\/ (x =.= -0.0 /\ y =.= 0.0)
|
|
)
|
|
property leqRefl x = x <= x \/ x =.= fpNaN
|
|
|
|
|
|
roundTripRational : {e,p} (fin e, fin p, ValidFloat e p) => Float e p -> Bool
|
|
property roundTripRational x =
|
|
~(fpIsFinite x) \/
|
|
(fpFromRational rne (fpToRational x) =.= x) \/
|
|
(x =.= fpNegZero)
|