Simplify bitmask test/set from FORTRANish to actual C.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 2 Jun 2017 20:40:29 +0000 (16:40 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 2 Jun 2017 20:40:29 +0000 (16:40 -0400)
advent.h
misc.c

index 074836c402d603ab8db095ae389e8bb9b78bb2e9..631cce2e06820c0b56c2eca15a94fe5141453b64 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -55,7 +55,7 @@ extern void CARRY(long,long);
 extern void DROP(long,long);
 extern long ATDWRF(long);
 extern long SETBIT(long);
-extern long TSTBIT(long,long);
+extern bool TSTBIT(long,int);
 extern long RNDVOC(long,long);
 extern void BUG(long);
 extern void MAPLIN(FILE *);
diff --git a/misc.c b/misc.c
index 365d7c88eb21ffba77f6e4f715195c6c7820d81f..7dfa74298e79c5264884520329fd7f4e9bc6d43d 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -631,26 +631,14 @@ L2:       AT=I;
 /*  Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value,
  *  randrange, RNDVOC, BUG) */
 
-long SETBIT(long BIT) {
-long I, IND;
-
+long SETBIT(long bit) {
 /*  Returns 2**bit for use in constructing bit-masks. */
-
-       IND=1;
-       if(BIT <= 0)return(IND);
-       for (I=1; I<=BIT; I++) {
-       IND=IND+IND;
-       } /* end loop */
-       return(IND);
+    2 << bit;
 }
 
-
-
-long TSTBIT(long MASK, long BIT) {
-
+bool TSTBIT(long mask, int bit) {
 /*  Returns true if the specified bit is set in the mask. */
-
-       return(MOD(MASK/SETBIT(BIT),2) != 0);
+    return((mask & (1 << bit)) != 0);
 }
 
 void set_seed(long seedval)