]> Pileus Git - ~andy/rhawk/commitdiff
Add fun operators
authorAndy Spencer <andy753421@gmail.com>
Fri, 11 Sep 2015 07:13:58 +0000 (07:13 +0000)
committerAndy Spencer <andy753421@gmail.com>
Fri, 11 Sep 2015 07:13:58 +0000 (07:13 +0000)
rhawk

diff --git a/rhawk b/rhawk
index f1478f67d74f64c6db025f533e25bdff303fdc06..88112734d6ffbd5d69fa873a6c58766870c68098 100755 (executable)
--- a/rhawk
+++ b/rhawk
@@ -429,6 +429,24 @@ DST != "#rhnoise" && DST != NICK &&
        say("#rhnoise", "(" DST ") " FROM ": " MSG);
 }
 
+# Fun operators
+function bang(a, b) {
+       if (a=="nan") return "nan";
+       if (b=="nan") return "nan";
+       if (a==b)     return "nan";
+       if (a==0)     return "+0";
+       if (b==0)     return "-0";
+       return 1/(1/a - 1/b);
+}
+
+/^ *[+-]?[0-9]*\.?[0-9]+( *\? *[+-]?[0-9]*\.?[0-9]+)+ *$/ {
+       gsub(/?/, " ");
+       _num = $1+0;
+       for (_i=2; _i<=NF; _i++)
+               _num = bang(_num, $_i+0);
+       reply(_num);
+}
+
 # Misc
 { fflush("") }