oliverthered

float_cp

Nov 2nd, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.19 KB | None | 0 0
  1. #!/bin/bash
  2. # Floating point comparison
  3. f1=0.01
  4. f2=0.02
  5. float_cp () {
  6.     IFS="."
  7.     read -ra float1 <<< "$1"
  8.     IFS="."
  9.     read -ra float2 <<< "$2"
  10.     if [[ ${float1[0]} -gt ${float2[0]} || (${float1[0]} -eq ${float2[0]} && ${float1[1]} -gt ${float2[1]}) ]]; then
  11.         echo 1
  12.     elif [[ ${float1[0]} -eq ${float2[0]} && ${float1[1]} -eq ${float2[1]} ]]; then
  13.         echo 0
  14.     else
  15.         echo -1
  16.     fi
  17. }
  18.  
  19.  
  20.  
  21. if [[ "$(float_cp $f1 $f2)" -eq 0 ]]; then
  22.     echo "yay eq"
  23. elif  [[ "$(float_cp $f1 $f2)" -gt 0 ]]; then
  24.     echo "may gt"
  25. elif  [[ "$(float_cp $f1 $f2)" -lt 0 ]]; then
  26.     echo "nay lt"
  27. fi
  28.  
  29. tests ()
  30. {
  31.     echo "float_cp tests"
  32.     echo "eq"
  33.     if [[ "$(float_cp 0.1 0.1)" -eq 0 ]]; then
  34.         echo "pass"
  35.     else
  36.         echo "fail"
  37.     fi
  38.     if [[ "$(float_cp 10.11 10.11)" -eq 0 ]]; then
  39.         echo "pass"
  40.     else
  41.         echo "fail"
  42.     fi
  43.     if [[ "$(float_cp .11 0.11)" -eq 0 ]]; then
  44.         echo "pass"
  45.     else
  46.         echo "fail"
  47.     fi
  48.     if [[ "$(float_cp 0.11 .11)" -eq 0 ]]; then
  49.         echo "pass"
  50.     else
  51.         echo "fail"
  52.     fi
  53.     echo "training 0s currently fails"
  54.     if [[ "$(float_cp 0.110 .11)" -eq 0 ]]; then
  55.         echo "pass"
  56.     else
  57.         echo "fail"
  58.     fi
  59.     if [[ "$(float_cp 0.11 .110)" -eq 0 ]]; then
  60.         echo "pass"
  61.     else
  62.         echo "fail"
  63.     fi
  64.     echo "gt"
  65.     if [[ "$(float_cp 0.2 0.1)" -gt 0 ]]; then
  66.         echo "pass"
  67.     else
  68.         echo "fail"
  69.     fi
  70.     if [[ "$(float_cp 2.1 0.1)" -gt 0 ]]; then
  71.         echo "pass"
  72.     else
  73.         echo "fail"
  74.     fi
  75.     if [[ "$(float_cp 20.11 10.11)" -gt 0 ]]; then
  76.         echo "pass"
  77.     else
  78.         echo "fail"
  79.     fi
  80.     if [[ "$(float_cp 10.21 10.11)" -gt 0 ]]; then
  81.         echo "pass"
  82.     else
  83.         echo "fail"
  84.     fi
  85.     if [[ "$(float_cp .12 0.11)" -gt 0 ]]; then
  86.         echo "pass"
  87.     else
  88.         echo "fail"
  89.     fi
  90.     if [[ "$(float_cp 0.12 .11)" -eq 0 ]]; then
  91.         echo "pass"
  92.     else
  93.         echo "fail"
  94.     fi
  95.     echo "training 0s currently fails"
  96.     if [[ "$(float_cp 0.120 .11)" -eq 0 ]]; then
  97.         echo "pass"
  98.     else
  99.         echo "fail"
  100.     fi
  101.     if [[ "$(float_cp 0.12 .110)" -eq 0 ]]; then
  102.         echo "pass"
  103.     else
  104.         echo "fail"
  105.     fi
  106.     echo "lt"
  107.     if [[ "$(float_cp 0.1 0.2)" -lt 0 ]]; then
  108.         echo "pass"
  109.     else
  110.         echo "fail"
  111.     fi
  112.     if [[ "$(float_cp 0.1 21)" -lt 0 ]]; then
  113.         echo "pass"
  114.     else
  115.         echo "fail"
  116.     fi
  117.     if [[ "$(float_cp 10.11 20.11)" -lt 0 ]]; then
  118.         echo "pass"
  119.     else
  120.         echo "fail"
  121.     fi
  122.     if [[ "$(float_cp 10.11 10.21)" -lt 0 ]]; then
  123.         echo "pass"
  124.     else
  125.         echo "fail"
  126.     fi
  127.     if [[ "$(float_cp .11 0.12)" -lt 0 ]]; then
  128.         echo "pass"
  129.     else
  130.         echo "fail"
  131.     fi
  132.     if [[ "$(float_cp 0.11 .12)" -lt 0 ]]; then
  133.         echo "pass"
  134.     else
  135.         echo "fail"
  136.     fi
  137.     echo "training 0s currently fails"
  138.     if [[ "$(float_cp 0.11 .120)" -lt 0 ]]; then
  139.         echo "pass"
  140.     else
  141.         echo "fail"
  142.     fi
  143.     if [[ "$(float_cp 0.110 .12)" -lt 0 ]]; then
  144.         echo "pass"
  145.     else
  146.         echo "fail"
  147.     fi
  148.    
  149. }
  150.  
Advertisement
Add Comment
Please, Sign In to add comment