about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael McConville <mmcco@mykolab.com>2015-12-17 22:43:48 -0500
committerMichael McConville <mmcco@mykolab.com>2015-12-17 22:43:48 -0500
commitb76cebdc8a7d26bd108a50abc81a51d0f27d621d (patch)
treebb1fb4da6fe775b00b54f8a161803e8e43ce523b
parent9687a8a96978280824a557d32b30e619f857e6a7 (diff)
downloadrust-b76cebdc8a7d26bd108a50abc81a51d0f27d621d.tar.gz
rust-b76cebdc8a7d26bd108a50abc81a51d0f27d621d.zip
Beautify ISAAC's mixing arithmetic
Call me verbose, but the existing logic was hideously formatted. The
result still fits in a small terminal. No functional change.
-rw-r--r--src/librand/isaac.rs78
1 files changed, 62 insertions, 16 deletions
diff --git a/src/librand/isaac.rs b/src/librand/isaac.rs
index dd99bc93ef3..28eff87bde3 100644
--- a/src/librand/isaac.rs
+++ b/src/librand/isaac.rs
@@ -77,14 +77,37 @@ impl IsaacRng {
 
         macro_rules! mix {
             () => {{
-                a=a^(b<<11); d=d+a; b=b+c;
-                b=b^(c>>2);  e=e+b; c=c+d;
-                c=c^(d<<8);  f=f+c; d=d+e;
-                d=d^(e>>16); g=g+d; e=e+f;
-                e=e^(f<<10); h=h+e; f=f+g;
-                f=f^(g>>4);  a=a+f; g=g+h;
-                g=g^(h<<8);  b=b+g; h=h+a;
-                h=h^(a>>9);  c=c+h; a=a+b;
+                a = a ^ (b << 11);
+                d = d + a;
+                b = b + c;
+
+                b = b ^ (c >> 2);
+                e = e + b;
+                c = c + d;
+
+                c = c ^ (d << 8);
+                f = f + c;
+                d = d + e;
+
+                d = d ^ (e >> 16);
+                g = g + d;
+                e = e + f;
+
+                e = e ^ (f << 10);
+                h = h + e;
+                f = f + g;
+
+                f = f ^ (g >> 4);
+                a = a + f;
+                g = g + h;
+
+                g = g ^ (h << 8);
+                b = b + g;
+                h = h + a;
+
+                h = h ^ (a >> 9);
+                c = c + h;
+                a = a + b;
             }}
         }
 
@@ -337,14 +360,37 @@ impl Isaac64Rng {
 
         macro_rules! mix {
             () => {{
-                a=a-e; f=f^(h>>9);  h=h+a;
-                b=b-f; g=g^(a<<9);  a=a+b;
-                c=c-g; h=h^(b>>23); b=b+c;
-                d=d-h; a=a^(c<<15); c=c+d;
-                e=e-a; b=b^(d>>14); d=d+e;
-                f=f-b; c=c^(e<<20); e=e+f;
-                g=g-c; d=d^(f>>17); f=f+g;
-                h=h-d; e=e^(g<<14); g=g+h;
+                a = a - e;
+                f = f ^ (h >> 9);
+                h = h + a;
+
+                b = b - f;
+                g = g ^ (a << 9);
+                a = a + b;
+
+                c = c - g;
+                h = h ^ (b >> 23);
+                b = b + c;
+
+                d = d - h;
+                a = a ^ (c << 15);
+                c = c + d;
+
+                e = e - a;
+                b = b ^ (d >> 14);
+                d = d + e;
+
+                f = f - b;
+                c = c ^ (e << 20);
+                e = e + f;
+
+                g = g - c;
+                d = d ^ (f >> 17);
+                f = f + g;
+
+                h = h - d;
+                e = e ^ (g << 14);
+                g = g + h;
             }}
         }