Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / tcoffee / t_coffee_source / random.c
diff --git a/website/archive/binaries/mac/src/tcoffee/t_coffee_source/random.c b/website/archive/binaries/mac/src/tcoffee/t_coffee_source/random.c
new file mode 100644 (file)
index 0000000..1baa3ee
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+*      
+*      Rand.c
+*      
+*      -       linear and additive congruential random number generators
+*              (see R. Sedgewick, Algorithms, Chapter 35)
+*
+*      Implementation: R. Fuchs, EMBL Data Library, 1991
+*      
+*/
+
+
+
+#define m1     10000
+#define m      100000000
+
+/* linear congruential method
+*      
+*      linrand() returns an unsigned long random number in the range 0 to r-1
+*/
+
+
+
+static unsigned long mult(unsigned long p, unsigned long q)
+{
+       unsigned long p1,p0,q1,q0;
+       
+       p1 = p/m1; p0 = p % m1;
+       q1 = q/m1; q0 = q % m1;
+       return (unsigned long)((((p0*q1 + p1*q0) % m1) * m1 + p0*q0) % m);
+}
+
+
+/* additive congruential method
+*      
+*      addrand() returns an unsigned long random number in the range 0 to r-1
+*      The random number generator is initialized by addrandinit()
+*/
+
+static unsigned long j;
+static unsigned long a[55];
+
+unsigned long addrand(unsigned long r)
+{
+int x,y;
+/*        fprintf(stdout,"\n j = %d",j);  */
+       j = (j + 1) % 55;
+/*        fprintf(stdout,"\n j = %d",j);  */
+       x = (j+23)%55;
+       y = (j+54)%55;
+       a[j] = (a[x] + a[y]) % m;
+/*     a[j] = (a[(j+23)%55] + a[(j+54)%55]) % m;  */
+/*        fprintf(stdout,"\n a[j] = %d",a[j]);     */
+       return( ((a[j] / m1) * r) / m1 );
+}
+
+void addrandinit(unsigned long s)
+{
+       a[0] = s;
+       j = 0;
+       do {
+               ++j;
+               a[j] = (mult(31,a[j-1]) + 1) % m;
+       } while (j<54);
+}
+/******************************COPYRIGHT NOTICE*******************************/
+/*© Centro de Regulacio Genomica */
+/*and */
+/*Cedric Notredame */
+/*Fri Feb 18 08:27:45 CET 2011 - Revision 596. */
+/*All rights reserved.*/
+/*This file is part of T-COFFEE.*/
+/**/
+/*    T-COFFEE is free software; you can redistribute it and/or modify*/
+/*    it under the terms of the GNU General Public License as published by*/
+/*    the Free Software Foundation; either version 2 of the License, or*/
+/*    (at your option) any later version.*/
+/**/
+/*    T-COFFEE 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 General Public License for more details.*/
+/**/
+/*    You should have received a copy of the GNU General Public License*/
+/*    along with Foobar; if not, write to the Free Software*/
+/*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/
+/*...............................................                                                                                      |*/
+/*  If you need some more information*/
+/*  cedric.notredame@europe.com*/
+/*...............................................                                                                                                                                     |*/
+/**/
+/**/
+/*     */
+/******************************COPYRIGHT NOTICE*******************************/