Makefile: Link tests against stuff like -lm.
[u/mdw/catacomb] / fibrand.c
index 44856e7..c926a1a 100644 (file)
--- a/fibrand.c
+++ b/fibrand.c
@@ -1,13 +1,13 @@
 /* -*-c-*-
  *
- * $Id: fibrand.c,v 1.1 1999/12/10 23:15:27 mdw Exp $
+ * $Id: fibrand.c,v 1.5 2004/04/08 01:36:15 mdw Exp $
  *
  * Fibonacci generator
  *
  * (c) 1999 Straylight/Edgeware
  */
 
-/*----- Licensing notice --------------------------------------------------* 
+/*----- Licensing notice --------------------------------------------------*
  *
  * This file is part of Catacomb.
  *
  * it under the terms of the GNU Library General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
- * 
+ *
  * Catacomb is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Library General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Library General Public
  * License along with Catacomb; if not, write to the Free
  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  * MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: fibrand.c,v $
- * Revision 1.1  1999/12/10 23:15:27  mdw
- * Noncryptographic random number generator.
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include <stdarg.h>
@@ -58,7 +50,7 @@
  * Returns:    Next output from generator.
  *
  * Use:                Steps the generator.  Returns
- *             %$x_{i - 24} + x_{i - 55} \bmod 2^{32}%$.
+ *             %$x_{i - 24} + x_{i - 55} \bmod 2^{32}$%.
  */
 
 uint32 fibrand_step(fibrand *f)
@@ -141,12 +133,12 @@ void fibrand_lcseed(fibrand *f, uint32 seed)
 uint32 fibrand_range(fibrand *f, uint32 m)
 {
   uint32 r = 0xffffffff - (0xffffffff % m);
-  uint x;
+  uint32 x;
 
   /* --- Now generate numbers until a good one comes along --- */
 
   do x = fibrand_step(f); while (x >= r);
-  return (x / (r / m));
+  return (x % m);
 }
 
 /*----- Generic interface -------------------------------------------------*/
@@ -231,7 +223,7 @@ static void gfill(grand *r, void *p, size_t sz)
 
 static const grand_ops gops = {
   "fibrand",
-  0,
+  0, 0,
   gmisc, gdestroy,
   gword, gbyte, gword, grange, gfill
 };