LAPACK 3.12.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
dlarnd.f
Go to the documentation of this file.
1*> \brief \b DLARND
2*
3* =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6* http://www.netlib.org/lapack/explore-html/
7*
8* Definition:
9* ===========
10*
11* DOUBLE PRECISION FUNCTION DLARND( IDIST, ISEED )
12*
13* .. Scalar Arguments ..
14* INTEGER IDIST
15* ..
16* .. Array Arguments ..
17* INTEGER ISEED( 4 )
18* ..
19*
20*
21*> \par Purpose:
22* =============
23*>
24*> \verbatim
25*>
26*> DLARND returns a random real number from a uniform or normal
27*> distribution.
28*> \endverbatim
29*
30* Arguments:
31* ==========
32*
33*> \param[in] IDIST
34*> \verbatim
35*> IDIST is INTEGER
36*> Specifies the distribution of the random numbers:
37*> = 1: uniform (0,1)
38*> = 2: uniform (-1,1)
39*> = 3: normal (0,1)
40*> \endverbatim
41*>
42*> \param[in,out] ISEED
43*> \verbatim
44*> ISEED is INTEGER array, dimension (4)
45*> On entry, the seed of the random number generator; the array
46*> elements must be between 0 and 4095, and ISEED(4) must be
47*> odd.
48*> On exit, the seed is updated.
49*> \endverbatim
50*
51* Authors:
52* ========
53*
54*> \author Univ. of Tennessee
55*> \author Univ. of California Berkeley
56*> \author Univ. of Colorado Denver
57*> \author NAG Ltd.
58*
59*> \ingroup double_matgen
60*
61*> \par Further Details:
62* =====================
63*>
64*> \verbatim
65*>
66*> This routine calls the auxiliary routine DLARAN to generate a random
67*> real number from a uniform (0,1) distribution. The Box-Muller method
68*> is used to transform numbers from a uniform to a normal distribution.
69*> \endverbatim
70*>
71* =====================================================================
72 DOUBLE PRECISION FUNCTION dlarnd( IDIST, ISEED )
73*
74* -- LAPACK auxiliary routine --
75* -- LAPACK is a software package provided by Univ. of Tennessee, --
76* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
77*
78* .. Scalar Arguments ..
79 INTEGER idist
80* ..
81* .. Array Arguments ..
82 INTEGER iseed( 4 )
83* ..
84*
85* =====================================================================
86*
87* .. Parameters ..
88 DOUBLE PRECISION one, two
89 parameter( one = 1.0d+0, two = 2.0d+0 )
90 DOUBLE PRECISION twopi
91 parameter( twopi = 6.28318530717958647692528676655900576839d+0 )
92* ..
93* .. Local Scalars ..
94 DOUBLE PRECISION t1, t2
95* ..
96* .. External Functions ..
97 DOUBLE PRECISION dlaran
98 EXTERNAL dlaran
99* ..
100* .. Intrinsic Functions ..
101 INTRINSIC cos, log, sqrt
102* ..
103* .. Executable Statements ..
104*
105* Generate a real random number from a uniform (0,1) distribution
106*
107 t1 = dlaran( iseed )
108*
109 IF( idist.EQ.1 ) THEN
110*
111* uniform (0,1)
112*
113 dlarnd = t1
114 ELSE IF( idist.EQ.2 ) THEN
115*
116* uniform (-1,1)
117*
118 dlarnd = two*t1 - one
119 ELSE IF( idist.EQ.3 ) THEN
120*
121* normal (0,1)
122*
123 t2 = dlaran( iseed )
124 dlarnd = sqrt( -two*log( t1 ) )*cos( twopi*t2 )
125 END IF
126 RETURN
127*
128* End of DLARND
129*
130 END
double precision function dlaran(iseed)
DLARAN
Definition dlaran.f:67
double precision function dlarnd(idist, iseed)
DLARND
Definition dlarnd.f:73