43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * =======================================================================================
 | 
						|
 *
 | 
						|
 *   Author:   Jan Eitzinger (je), jan.eitzinger@fau.de
 | 
						|
 *   Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
 | 
						|
 *
 | 
						|
 *   This file is part of MD-Bench.
 | 
						|
 *
 | 
						|
 *   MD-Bench is free software: you can redistribute it and/or modify it
 | 
						|
 *   under the terms of the GNU Lesser General Public License as published
 | 
						|
 *   by the Free Software Foundation, either version 3 of the License, or
 | 
						|
 *   (at your option) any later version.
 | 
						|
 *
 | 
						|
 *   MD-Bench 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 Lesser General Public License for more
 | 
						|
 *   details.
 | 
						|
 *
 | 
						|
 *   You should have received a copy of the GNU Lesser General Public License along
 | 
						|
 *   with MD-Bench.  If not, see <https://www.gnu.org/licenses/>.
 | 
						|
 * =======================================================================================
 | 
						|
 */
 | 
						|
#include <util.h>
 | 
						|
 | 
						|
/* Park/Miller RNG w/out MASKING, so as to be like f90s version */
 | 
						|
#define IA 16807
 | 
						|
#define IM 2147483647
 | 
						|
#define AM (1.0/IM)
 | 
						|
#define IQ 127773
 | 
						|
#define IR 2836
 | 
						|
#define MASK 123459876
 | 
						|
 | 
						|
double myrandom(int* idum)
 | 
						|
{
 | 
						|
    int k= (*idum) / IQ;
 | 
						|
    double ans;
 | 
						|
 | 
						|
    *idum = IA * (*idum - k * IQ) - IR * k;
 | 
						|
    if(*idum < 0) *idum += IM;
 | 
						|
    ans = AM * (*idum);
 | 
						|
    return ans;
 | 
						|
}
 |