⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlaran.c

📁 SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems
💻 C
字号:
/*  -- translated by f2c (version 19940927).   You must link the resulting object file with the libraries:	-lf2c -lm   (in that order)*/#include "f2c.h"doublereal dlaran_(integer *iseed){    /* System generated locals */    doublereal ret_val;    /* Local variables */    static integer it1, it2, it3, it4;/*  -- LAPACK auxiliary routine (version 2.0) --          Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,          Courant Institute, Argonne National Lab, and Rice University          February 29, 1992       Purpose       =======       DLARAN returns a random real number from a uniform (0,1)       distribution.       Arguments       =========       ISEED   (input/output) INTEGER array, dimension (4)               On entry, the seed of the random number generator; the array               elements must be between 0 and 4095, and ISEED(4) must be               odd.               On exit, the seed is updated.       Further Details       ===============       This routine uses a multiplicative congruential method with modulus       2**48 and multiplier 33952834046453 (see G.S.Fishman,       'Multiplicative congruential random number generators with modulus       2**b: an exhaustive analysis for b = 32 and a partial analysis for       b = 48', Math. Comp. 189, pp 331-344, 1990).       48-bit integers are stored in 4 integer array elements with 12 bits       per element. Hence the routine is portable across machines with       integers of 32 bits or more.       =====================================================================          multiply the seed by the multiplier modulo 2**48          Parameter adjustments */    --iseed;    /* Function Body */    it4 = iseed[4] * 2549;    it3 = it4 / 4096;    it4 -= it3 << 12;    it3 = it3 + iseed[3] * 2549 + iseed[4] * 2508;    it2 = it3 / 4096;    it3 -= it2 << 12;    it2 = it2 + iseed[2] * 2549 + iseed[3] * 2508 + iseed[4] * 322;    it1 = it2 / 4096;    it2 -= it1 << 12;    it1 = it1 + iseed[1] * 2549 + iseed[2] * 2508 + iseed[3] * 322 + iseed[4] 	    * 494;    it1 %= 4096;/*     return updated seed */    iseed[1] = it1;    iseed[2] = it2;    iseed[3] = it3;    iseed[4] = it4;/*     convert 48-bit integer to a real number in the interval (0,1) */    ret_val = ((doublereal) it1 + ((doublereal) it2 + ((doublereal) it3 + (	    doublereal) it4 * 2.44140625e-4) * 2.44140625e-4) * 2.44140625e-4)	     * 2.44140625e-4;    return ret_val;/*     End of DLARAN */} /* dlaran_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -