File: gen_compare.sh

package info (click to toggle)
coq 9.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 35,968 kB
  • sloc: ml: 239,908; sh: 4,355; python: 2,985; ansic: 2,644; makefile: 874; lisp: 171; javascript: 63; xml: 24; sed: 2
file content (62 lines) | stat: -rwxr-xr-x 1,612 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/bash
# -*- compile-command: "mv -f compare.v{,~} && ./gen_compare.sh" -*-
set -e

exec > compare.v

cat <<EOF
(* DO NOT EDIT THIS FILE: automatically generated by ./gen_compare.sh *)
Require Import PrimFloat.
Local Open Scope float_scope.

Definition min_denorm := 0x0.0000000000001p-1022%float.  (* Z.ldexp one (-1074)%Z *)

Definition min_norm := 0x0.4p-1022%float.  (* Z.ldexp_one (-1024)%Z *)

EOF

genTest() {
    if [ $# -ne 10 ]; then
        echo >&2 "genTest expects 10 arguments"
    fi
    OPS=("=?" "<?" "<=?" "?=")
    x="$1"
    y="$2"
    OPS1=("$3" "$4" "$5" "$6")  # for x y
    OPS2=("$7" "$8" "$9" "${10}") # for y x
    for i in {0..3}; do
        op="${OPS[$i]}"
        op1="${OPS1[$i]}"
        op2="${OPS2[$i]}"
        echo "Check (eq_refl : $x $op $y = $op1)."
        echo "Check (eq_refl : $y $op $x = $op2)."
        echo
    done
}

genTest nan nan \
        false false false FNotComparable \
        false false false FNotComparable
genTest nan "- nan" \
        false false false FNotComparable \
        false false false FNotComparable

EQ=(true false true FEq \
    true false true FEq)

genTest one one "${EQ[@]}"
genTest zero zero "${EQ[@]}"
genTest zero "- zero" "${EQ[@]}"
genTest "- zero" "- zero" "${EQ[@]}"
genTest infinity infinity "${EQ[@]}"
genTest "- infinity" "- infinity" "${EQ[@]}"

LT=(false true true FLt \
    false false false FGt)

genTest min_denorm min_norm "${LT[@]}"
genTest min_denorm one "${LT[@]}"
genTest min_norm one "${LT[@]}"
genTest one infinity "${LT[@]}"
genTest "- infinity" infinity "${LT[@]}"
genTest "- infinity" one "${LT[@]}"